fix(multi): Tor Shield API, ACL restart permission, menu moves
- Fix tor-shield/api.js: Use baseclass.extend() pattern correctly - Fix tor-shield ACL: Add missing 'restart' write permission - Fix secubox-app-tor: Disable conflicting default tor init in postinst - Move metablogizer menu from secubox/services to admin/services Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
fa5d573755
commit
5a9627a2d6
@ -1,30 +1,29 @@
|
||||
{
|
||||
"admin/secubox/services/metablogizer": {
|
||||
"admin/services/metablogizer": {
|
||||
"title": "MetaBlogizer",
|
||||
"order": 85,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "metablogizer/overview"
|
||||
"type": "firstchild"
|
||||
},
|
||||
"depends": {
|
||||
"acl": ["luci-app-metablogizer"],
|
||||
"uci": {"metablogizer": true}
|
||||
},
|
||||
"order": 85
|
||||
}
|
||||
},
|
||||
"admin/secubox/services/metablogizer/overview": {
|
||||
"admin/services/metablogizer/overview": {
|
||||
"title": "Sites",
|
||||
"order": 10,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "metablogizer/overview"
|
||||
},
|
||||
"order": 10
|
||||
}
|
||||
},
|
||||
"admin/secubox/services/metablogizer/settings": {
|
||||
"admin/services/metablogizer/settings": {
|
||||
"title": "Settings",
|
||||
"order": 20,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "metablogizer/settings"
|
||||
},
|
||||
"order": 20
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,12 +2,6 @@
|
||||
'require baseclass';
|
||||
'require rpc';
|
||||
|
||||
/**
|
||||
* Tor Shield API
|
||||
* Package: luci-app-tor
|
||||
* RPCD object: luci.tor-shield
|
||||
*/
|
||||
|
||||
var callStatus = rpc.declare({
|
||||
object: 'luci.tor-shield',
|
||||
method: 'status',
|
||||
@ -115,7 +109,6 @@ var callSaveSettings = rpc.declare({
|
||||
expect: { success: false }
|
||||
});
|
||||
|
||||
// Utility functions
|
||||
function formatBytes(bytes) {
|
||||
if (bytes === 0) return '0 B';
|
||||
var k = 1024;
|
||||
@ -156,31 +149,33 @@ function getCountryFlag(code) {
|
||||
|
||||
function getPresetIcon(icon) {
|
||||
switch (icon) {
|
||||
case 'shield': return '🛡';
|
||||
case 'target': return '🎯';
|
||||
case 'unlock': return '🔓';
|
||||
default: return '🛡';
|
||||
case 'shield': return '\uD83D\uDEE1';
|
||||
case 'target': return '\uD83C\uDFAF';
|
||||
case 'unlock': return '\uD83D\uDD13';
|
||||
default: return '\uD83D\uDEE1';
|
||||
}
|
||||
}
|
||||
|
||||
return baseclass.extend({
|
||||
getStatus: callStatus,
|
||||
enable: callEnable,
|
||||
disable: callDisable,
|
||||
restart: callRestart,
|
||||
getCircuits: callCircuits,
|
||||
newIdentity: callNewIdentity,
|
||||
checkLeaks: callCheckLeaks,
|
||||
getHiddenServices: callHiddenServices,
|
||||
addHiddenService: callAddHiddenService,
|
||||
removeHiddenService: callRemoveHiddenService,
|
||||
getExitIp: callExitIp,
|
||||
getBandwidth: callBandwidth,
|
||||
getPresets: callPresets,
|
||||
getBridges: callBridges,
|
||||
setBridges: callSetBridges,
|
||||
getSettings: callSettings,
|
||||
saveSettings: callSaveSettings,
|
||||
getStatus: function() { return callStatus(); },
|
||||
enable: function(preset) { return callEnable(preset); },
|
||||
disable: function() { return callDisable(); },
|
||||
restart: function() { return callRestart(); },
|
||||
getCircuits: function() { return callCircuits(); },
|
||||
newIdentity: function() { return callNewIdentity(); },
|
||||
checkLeaks: function() { return callCheckLeaks(); },
|
||||
getHiddenServices: function() { return callHiddenServices(); },
|
||||
addHiddenService: function(name, local_port, virtual_port) { return callAddHiddenService(name, local_port, virtual_port); },
|
||||
removeHiddenService: function(name) { return callRemoveHiddenService(name); },
|
||||
getExitIp: function() { return callExitIp(); },
|
||||
getBandwidth: function() { return callBandwidth(); },
|
||||
getPresets: function() { return callPresets(); },
|
||||
getBridges: function() { return callBridges(); },
|
||||
setBridges: function(enabled, type) { return callSetBridges(enabled, type); },
|
||||
getSettings: function() { return callSettings(); },
|
||||
saveSettings: function(mode, dns_over_tor, kill_switch, socks_port, trans_port, dns_port, exit_nodes, exclude_exit_nodes, strict_nodes) {
|
||||
return callSaveSettings(mode, dns_over_tor, kill_switch, socks_port, trans_port, dns_port, exit_nodes, exclude_exit_nodes, strict_nodes);
|
||||
},
|
||||
|
||||
formatBytes: formatBytes,
|
||||
formatRate: formatRate,
|
||||
@ -188,14 +183,12 @@ return baseclass.extend({
|
||||
getCountryFlag: getCountryFlag,
|
||||
getPresetIcon: getPresetIcon,
|
||||
|
||||
// Aggregate function for dashboard
|
||||
getDashboardData: function() {
|
||||
return Promise.all([
|
||||
callStatus(),
|
||||
callPresets(),
|
||||
callBandwidth()
|
||||
]).then(function(results) {
|
||||
// Handle RPC expect unwrapping - results may be array or object
|
||||
var presetsData = results[1] || [];
|
||||
var presets = Array.isArray(presetsData) ? presetsData : (presetsData.presets || []);
|
||||
|
||||
@ -207,14 +200,12 @@ return baseclass.extend({
|
||||
});
|
||||
},
|
||||
|
||||
// Get all data for monitoring
|
||||
getMonitoringData: function() {
|
||||
return Promise.all([
|
||||
callStatus(),
|
||||
callCircuits(),
|
||||
callBandwidth()
|
||||
]).then(function(results) {
|
||||
// Handle RPC expect unwrapping - results[1] may be array or object
|
||||
var circuitsData = results[1] || [];
|
||||
var circuits = Array.isArray(circuitsData) ? circuitsData : (circuitsData.circuits || []);
|
||||
|
||||
|
||||
@ -29,6 +29,7 @@
|
||||
"luci.tor-shield": [
|
||||
"enable",
|
||||
"disable",
|
||||
"restart",
|
||||
"new_identity",
|
||||
"check_leaks",
|
||||
"add_hidden_service",
|
||||
|
||||
@ -61,6 +61,11 @@ endef
|
||||
define Package/secubox-app-tor/postinst
|
||||
#!/bin/sh
|
||||
[ -n "$${IPKG_INSTROOT}" ] || {
|
||||
# Disable default tor init script to prevent conflicts
|
||||
if [ -x /etc/init.d/tor ]; then
|
||||
/etc/init.d/tor disable 2>/dev/null
|
||||
/etc/init.d/tor stop 2>/dev/null
|
||||
fi
|
||||
echo ""
|
||||
echo "SecuBox Tor Shield installed."
|
||||
echo ""
|
||||
|
||||
Loading…
Reference in New Issue
Block a user