diff options
6 files changed, 232 insertions, 197 deletions
diff --git a/applications/luci-app-vpn-policy-routing/Makefile b/applications/luci-app-vpn-policy-routing/Makefile index c2af86cf2c..5b51fcc143 100644 --- a/applications/luci-app-vpn-policy-routing/Makefile +++ b/applications/luci-app-vpn-policy-routing/Makefile @@ -10,7 +10,7 @@ LUCI_TITLE:=VPN Policy-Based Routing Service Web UI LUCI_DESCRIPTION:=Provides Web UI for vpn-policy-routing service. LUCI_DEPENDS:=+luci-compat +luci-mod-admin-full +vpn-policy-routing LUCI_PKGARCH:=all -PKG_RELEASE:=69 +PKG_RELEASE:=70 include ../../luci.mk diff --git a/applications/luci-app-vpn-policy-routing/luasrc/controller/vpn-policy-routing.lua b/applications/luci-app-vpn-policy-routing/luasrc/controller/vpn-policy-routing.lua index 0c8c31e7b7..f4af659aad 100644 --- a/applications/luci-app-vpn-policy-routing/luasrc/controller/vpn-policy-routing.lua +++ b/applications/luci-app-vpn-policy-routing/luasrc/controller/vpn-policy-routing.lua @@ -12,7 +12,7 @@ function vpn_policy_routing_action(name) if name == "start" then luci.sys.init.start(packageName) elseif name == "action" then - luci.util.exec("/etc/init.d/" .. packageName .. " reload >/dev/null 2>&1") + luci.util.exec("/etc/init.d/" .. packageName .. " restart >/dev/null 2>&1") elseif name == "stop" then luci.sys.init.stop(packageName) elseif name == "enable" then diff --git a/applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua b/applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua index 95d42945eb..6259e82915 100644 --- a/applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua +++ b/applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua @@ -20,30 +20,36 @@ if ubusStatus and ubusStatus[packageName] and ubusStatus[packageName]["instances"]["main"]["data"] and ubusStatus[packageName]["instances"]["main"]["data"]["status"] and ubusStatus[packageName]["instances"]["main"]["data"]["status"][1] then - pkgGateways = ubusStatus[packageName]["instances"]["main"]["data"]["status"][1]["gateway"] - pkgGateways = pkgGateways and pkgGateways:gsub('\\n', '\n') - pkgGateways = pkgGateways and pkgGateways:gsub('\\033%[0;32m%[\\xe2\\x9c\\x93%]\\033%[0m', '✓') - pkgErrors = ubusStatus[packageName]["instances"]["main"]["data"]["status"][1]["error"] - pkgErrors = pkgErrors and pkgErrors:gsub('\\n', '\n') - pkgErrors = pkgErrors and pkgErrors:gsub('\\033%[0;31mERROR\\033%[0m: ', '') - pkgWarnings = ubusStatus[packageName]["instances"]["main"]["data"]["status"][1]["warning"] - pkgWarnings = pkgWarnings and pkgWarnings:gsub('\\n', '\n') - pkgWarnings = pkgWarnings and pkgWarnings:gsub('\\033%[0;33mWARNING\\033%[0m: ', '') - pkgMode = ubusStatus[packageName]["instances"]["main"]["data"]["status"][1]["mode"] + serviceGateways = ubusStatus[packageName]["instances"]["main"]["data"]["status"][1]["gateway"] + serviceGateways = serviceGateways and serviceGateways:gsub('\\n', '\n') + serviceGateways = serviceGateways and serviceGateways:gsub('\\033%[0;32m%[\\xe2\\x9c\\x93%]\\033%[0m', '✓') + serviceErrors = ubusStatus[packageName]["instances"]["main"]["data"]["status"][1]["error"] + serviceErrors = serviceErrors and serviceErrors:gsub('\\n', '\n') + serviceErrors = serviceErrors and serviceErrors:gsub('\\033%[0;31mERROR\\033%[0m: ', '') + serviceWarnings = ubusStatus[packageName]["instances"]["main"]["data"]["status"][1]["warning"] + serviceWarnings = serviceWarnings and serviceWarnings:gsub('\\n', '\n') + serviceWarnings = serviceWarnings and serviceWarnings:gsub('\\033%[0;33mWARNING\\033%[0m: ', '') + serviceMode = ubusStatus[packageName]["instances"]["main"]["data"]["status"][1]["mode"] end -local pkgVersion = tostring(util.trim(sys.exec("opkg list-installed " .. packageName .. " | awk '{print $3}'"))) -if not pkgVersion or pkgVersion == "" then - pkgVersion = "" - pkgStatus, pkgStatusLabel = "NotFound", packageName .. " " .. translate("is not installed or not found") +local serviceRunning, statusText = false, nil +local packageVersion = tostring(util.trim(sys.exec("opkg list-installed " .. packageName .. " | awk '{print $3}'"))) +if not packageVersion or packageVersion == "" then + packageVersion = "" + statusText = packageName .. " " .. translate("is not installed or not found") else - pkgVersion = " [" .. packageName .. " " .. pkgVersion .. "]" -end -local pkgStatus, pkgStatusLabel = "Stopped", translate("Stopped") + packageVersion = " [" .. packageName .. " " .. packageVersion .. "]" +end if sys.call("iptables -t mangle -L | grep -q VPR_PREROUTING") == 0 then - pkgStatus, pkgStatusLabel = "Running", translate("Running") - if pkgMode and pkgMode == "strict" then - pkgStatusLabel = pkgStatusLabel .. " " .. translate("(strict mode)") + serviceRunning = true + statusText = translate("Running") + if serviceMode and serviceMode == "strict" then + statusText = statusText .. " (" .. translate("strict mode") .. ")" + end +else + statusText = translate("Stopped") + if uci:get(packageName, "config", "enabled") ~= "1" then + statusText = statusText .. " (" .. translate("disabled") .. ")" end end @@ -74,8 +80,8 @@ if (type(lanIPAddr) == "table") then lanIPAddr = lanIPAddr[i] break end - lanIPAddr = string.match(lanIPAddr,"[0-9.]+") -end + lanIPAddr = lanIPAddr:match("[0-9.]+") +end if lanIPAddr and lanNetmask then laPlaceholder = ip.new(lanIPAddr .. "/" .. lanNetmask ) end @@ -114,27 +120,29 @@ end m = Map("vpn-policy-routing", translate("VPN and WAN Policy-Based Routing")) -h = m:section(NamedSection, "config", packageName, translate("Service Status") .. pkgVersion) +h = m:section(NamedSection, "config", packageName, translate("Service Status") .. packageVersion) status = h:option(DummyValue, "_dummy", translate("Service Status")) status.template = "vpn-policy-routing/status" -status.value = pkgStatusLabel -if pkgStatus:match("Running") and pkgGateways and pkgGateways ~= "" then +status.value = statusText +if serviceRunning and serviceGateways and serviceGateways ~= "" then gateways = h:option(DummyValue, "_dummy", translate("Service Gateways")) gateways.template = packageName .. "/status-gateways" - gateways.value = pkgGateways + gateways.value = serviceGateways end -if pkgErrors and pkgErrors ~= "" then +if serviceErrors and serviceErrors ~= "" then errors = h:option(DummyValue, "_dummy", translate("Service Errors")) errors.template = packageName .. "/status-textarea" - errors.value = pkgErrors + errors.value = serviceErrors end -if pkgWarnings and pkgWarnings ~= "" then +if serviceWarnings and serviceWarnings ~= "" then warnings = h:option(DummyValue, "_dummy", translate("Service Warnings")) warnings.template = packageName .. "/status-textarea" - warnings.value = pkgWarnings + warnings.value = serviceWarnings +end +if packageVersion ~= "" then + buttons = h:option(DummyValue, "_dummy") + buttons.template = packageName .. "/buttons" end -buttons = h:option(DummyValue, "_dummy") -buttons.template = packageName .. "/buttons" -- General Options config = m:section(NamedSection, "config", "vpn-policy-routing", translate("Configuration")) @@ -208,7 +216,7 @@ icmp:value("", translate("No Change")) icmp:value("wan", translate("WAN")) uci:foreach("network", "interface", function(s) local name=s['.name'] - if is_supported_interface(s) then icmp:value(name, string.upper(name)) end + if is_supported_interface(s) then icmp:value(name, name:upper()) end end) icmp.rmempty = true @@ -338,10 +346,10 @@ gw.rmempty = false uci:foreach("network", "interface", function(s) local name=s['.name'] if is_wan(name) then - gw:value(name, string.upper(name)) + gw:value(name, name:upper()) if not gw.default then gw.default = name end elseif is_supported_interface(s) then - gw:value(name, string.upper(name)) + gw:value(name, name:upper()) end end) @@ -351,7 +359,7 @@ dscp = m:section(NamedSection, "config", "vpn-policy-routing", translate("DSCP T uci:foreach("network", "interface", function(s) local name=s['.name'] if is_supported_interface(s) then - local x = dscp:option(Value, name .. "_dscp", string.upper(name) .. " " .. translate("DSCP Tag")) + local x = dscp:option(Value, name .. "_dscp", name:upper() .. " " .. translate("DSCP Tag")) x.rmempty = true x.datatype = "range(1,63)" end diff --git a/applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/buttons.htm b/applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/buttons.htm index a9c473c751..37a0b9a414 100644 --- a/applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/buttons.htm +++ b/applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/buttons.htm @@ -1,55 +1,77 @@ -<%# - Copyright 2019 Stan Grishin <stangri@melmac.net> --%> +<%# Copyright 2020 Stan Grishin <stangri@melmac.net> -%> + +<%+vpn-policy-routing/css%> +<%+vpn-policy-routing/js%> <%- local packageName = "vpn-policy-routing" - local enabledFlag = luci.model.uci.cursor():get(packageName, "config", "enabled") - if nixio.fs.access("/var/run/" .. packageName .. ".json") then - tmpfs = luci.jsonc.parse(luci.util.trim(luci.sys.exec("cat /var/run/" .. packageName .. ".json"))) - end - local pkgStatus, pkgStatusLabel = "Stopped", translate("Stopped") + local serviceRunning, serviceEnabled = false, false; if luci.sys.call("iptables -t mangle -L | grep -q VPR_PREROUTING") == 0 then - pkgStatus, pkgStatusLabel = "Running", translate("Running") + serviceRunning = true + end + if luci.model.uci.cursor():get(packageName, "config", "enabled") == "1" then + serviceEnabled = true end - if pkgStatus == "Stopped" then - btn_start_style = "cbi-button cbi-button-apply important" - btn_action_style = "cbi-button cbi-button-apply important" - btn_stop_style = "cbi-button cbi-button-reset -disabled" + + if serviceEnabled then + btn_start_status = true + btn_action_status = true + btn_stop_status = true + btn_enable_status = false + btn_disable_status = true else - btn_start_style = "cbi-button cbi-button-apply -disabled" - btn_action_style = "cbi-button cbi-button-apply important" - btn_stop_style = "cbi-button cbi-button-reset important" + btn_start_status = false + btn_action_status = false + btn_stop_status = false + btn_enable_status = true + btn_disable_status = false end - if enabledFlag ~= "1" then - btn_start_style = "cbi-button cbi-button-apply -disabled" - btn_action_style = "cbi-button cbi-button-apply -disabled" - btn_enable_style = "cbi-button cbi-button-apply important" - btn_disable_style = "cbi-button cbi-button-reset -disabled" + if serviceRunning then + btn_start_status = false + btn_action_status = true + btn_stop_status = true else - btn_enable_style = "cbi-button cbi-button-apply -disabled" - btn_disable_style = "cbi-button cbi-button-reset important" + btn_action_status = false + btn_stop_status = false end -%> -<%+vpn-policy-routing/css%> -<%+vpn-policy-routing/js%> - <div class="cbi-value"><label class="cbi-value-title">Service Control</label> <div class="cbi-value-field"> - <input type="button" class="<%=btn_start_style%>" id="btn_start" name="start" value="<%:Start%>" onclick="button_action(this)" /> + <input type="button" class="cbi-button cbi-button-apply" id="btn_start" name="start" value="<%:Start%>" + onclick="button_action(this)" /> <span id="btn_start_spinner" class="btn_spinner"></span> - <input type="button" class="<%=btn_action_style%>" id="btn_action" name="action" value="<%:Reload%>" onclick="button_action(this)" /> + <input type="button" class="cbi-button cbi-button-apply" id="btn_action" name="action" value="<%:Restart%>" + onclick="button_action(this)" /> <span id="btn_action_spinner" class="btn_spinner"></span> - <input type="button" class="<%=btn_stop_style%>" id="btn_stop" name="stop" value="<%:Stop%>" onclick="button_action(this)" /> + <input type="button" class="cbi-button cbi-button-reset" id="btn_stop" name="stop" value="<%:Stop%>" + onclick="button_action(this)" /> <span id="btn_stop_spinner" class="btn_spinner"></span> - <input type="button" class="<%=btn_enable_style%>" id="btn_enable" name="enable" value="<%:Enable%>" onclick="button_action(this)" /> + <input type="button" class="cbi-button cbi-button-apply" id="btn_enable" name="enable" value="<%:Enable%>" + onclick="button_action(this)" /> <span id="btn_enable_spinner" class="btn_spinner"></span> - <input type="button" class="<%=btn_disable_style%>" id="btn_disable" name="disable" value="<%:Disable%>" onclick="button_action(this)" /> + <input type="button" class="cbi-button cbi-button-reset" id="btn_disable" name="disable" value="<%:Disable%>" + onclick="button_action(this)" /> <span id="btn_disable_spinner" class="btn_spinner"></span> </div> </div> + +<%-if not btn_start_status then%> +<script type="text/javascript">document.getElementById("btn_start").disabled = true;</script> +<%-end%> +<%-if not btn_action_status then%> +<script type="text/javascript">document.getElementById("btn_action").disabled = true;</script> +<%-end%> +<%-if not btn_stop_status then%> +<script type="text/javascript">document.getElementById("btn_stop").disabled = true;</script> +<%-end%> +<%-if not btn_enable_status then%> +<script type="text/javascript">document.getElementById("btn_enable").disabled = true;</script> +<%-end%> +<%-if not btn_disable_status then%> +<script type="text/javascript">document.getElementById("btn_disable").disabled = true;</script> +<%-end%> diff --git a/applications/luci-app-vpn-policy-routing/po/templates/vpn-policy-routing.pot b/applications/luci-app-vpn-policy-routing/po/templates/vpn-policy-routing.pot index 27660193ce..09812ab6d4 100644 --- a/applications/luci-app-vpn-policy-routing/po/templates/vpn-policy-routing.pot +++ b/applications/luci-app-vpn-policy-routing/po/templates/vpn-policy-routing.pot @@ -1,55 +1,51 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:46 -msgid "(strict mode)" -msgstr "" - -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:202 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:210 msgid "" "Add an ip rule, not an iptables entry for policies with just the local " "address. Use with caution to manipulte policies priorities." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:182 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:190 msgid "Advanced Configuration" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:187 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:195 msgid "" "Allows to specify the list of interface names (in lower case) to be " "explicitly supported by the service. Can be useful if your OpenVPN tunnels " "have dev option other than tun* or tap*." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:190 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:198 msgid "" "Allows to specify the list of interface names (in lower case) to be ignored " "by the service. Can be useful if running both VPN server and VPN client on " "the router." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:198 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:206 msgid "Append" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:215 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:223 msgid "Append local IP Tables rules" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:218 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:226 msgid "Append remote IP Tables rules" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:145 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:153 msgid "Basic Configuration" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:193 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:201 msgid "Boot Time-out" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:326 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:334 msgid "Chain" msgstr "" @@ -57,11 +53,11 @@ msgstr "" msgid "Checkmark represents the default gateway. See the" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:277 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:285 msgid "Comment" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:260 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:268 msgid "" "Comment, interface and at least one other field are required. Multiple local " "and remote addresses/devices/domains and ports can be space separated. " @@ -69,103 +65,103 @@ msgid "" "fields are left blank." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:149 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:157 msgid "Condensed output" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:140 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:148 msgid "Configuration" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:147 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:155 msgid "Controls both system log and console output verbosity." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:361 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:369 msgid "Custom User File Includes" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:354 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:362 msgid "DSCP Tag" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:348 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:356 msgid "DSCP Tagging" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:206 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:214 msgid "Default ICMP Interface" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/buttons.htm:52 +#: applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/buttons.htm:57 msgid "Disable" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:164 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:174 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:178 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:203 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:239 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:243 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:250 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:254 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:172 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:182 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:186 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:211 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:247 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:251 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:258 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:262 msgid "Disabled" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:246 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:254 msgid "Display these protocols in protocol column in Web UI." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:156 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:164 msgid "Do not enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/buttons.htm:50 +#: applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/buttons.htm:54 msgid "Enable" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:179 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:204 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:240 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:244 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:251 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:255 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:271 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:369 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:187 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:212 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:248 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:252 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:259 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:263 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:279 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:377 msgid "Enabled" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:231 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:239 msgid "" "FW Mask used by the service. High mask is used to avoid conflict with SQM/" "QoS. Change with caution together with" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:206 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:214 msgid "Force the ICMP protocol interface." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:202 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:210 msgid "IP Rules Support" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:197 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:205 msgid "IPTables rule option" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:177 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:185 msgid "IPv6 Support" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:190 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:198 msgid "Ignored Interfaces" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:199 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:207 msgid "Insert" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:335 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:343 msgid "Interface" msgstr "" @@ -173,226 +169,224 @@ msgstr "" msgid "Loading" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:282 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:290 msgid "Local addresses / devices" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:289 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:297 msgid "Local ports" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:279 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:287 msgid "Name" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:207 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:215 msgid "No Change" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:147 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:155 msgid "Output verbosity" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:372 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:380 msgid "Path" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:161 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:171 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:169 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:179 msgid "Please check the" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:183 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:191 msgid "Please make sure to check the" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:260 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:268 msgid "Policies" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:306 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:314 msgid "Protocol" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:155 #: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:163 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:173 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:184 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:350 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:363 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:171 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:181 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:192 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:358 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:371 #: applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/status-gateways.htm:17 msgid "README" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/buttons.htm:42 -msgid "Reload" -msgstr "" - -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:294 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:302 msgid "Remote addresses / domains" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:299 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:307 msgid "Remote ports" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:361 +#: applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/buttons.htm:44 +msgid "Restart" +msgstr "" + +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:369 msgid "" "Run the following user files after setting up but before restarting DNSMASQ. " "See the" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:44 -#: applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/buttons.htm:13 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:45 msgid "Running" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:153 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:161 msgid "See the" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:197 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:205 msgid "Select Append for -A and Insert for -I." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:127 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:133 msgid "Service Errors" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:226 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:231 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:234 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:239 msgid "Service FW Mask" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:122 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:128 msgid "Service Gateways" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:117 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:118 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:123 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:124 msgid "Service Status" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:132 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:138 msgid "Service Warnings" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:348 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:356 msgid "" "Set DSCP tags (in range between 1 and 63) for specific interfaces. See the" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:249 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:257 msgid "Show Chain Column" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:238 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:246 msgid "Show Enable Column" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:242 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:250 msgid "Show Protocol Column" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:253 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:261 msgid "Show Up/Down Buttons" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:253 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:261 msgid "" "Shows the Up/Down buttons for policies, allowing you to move a policy up or " "down in the list." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:249 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:257 msgid "" "Shows the chain column for policies, allowing you to assign a PREROUTING, " "FORWARD, INPUT or OUTPUT chain to a policy." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:238 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:246 msgid "" "Shows the enable checkbox column for policies, allowing you to quickly " "enable/disable specific policy without deleting it." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:242 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:250 msgid "" "Shows the protocol column for policies, allowing you to assign a specific " "protocol to a policy." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:215 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:223 msgid "" "Special instructions to append iptables rules for local IPs/netmasks/devices." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:218 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:226 msgid "Special instructions to append iptables rules for remote IPs/netmasks." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/buttons.htm:40 +#: applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/buttons.htm:41 msgid "Start" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:226 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:234 msgid "" "Starting (WAN) FW Mark for marks used by the service. High starting mark is " "used to avoid conflict with SQM/QoS. Change with caution together with" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:221 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:229 msgid "Starting (WAN) Table ID number for tables created by the service." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/buttons.htm:44 +#: applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/buttons.htm:47 msgid "Stop" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:42 -#: applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/buttons.htm:11 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:50 msgid "Stopped" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:153 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:161 msgid "Strict enforcement" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:157 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:165 msgid "Strictly enforce policies when their gateway is down" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:187 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:195 msgid "Supported Interfaces" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:246 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:254 msgid "Supported Protocols" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:148 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:156 msgid "Suppress/No output" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:170 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:178 msgid "The ipset option for local policies" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:160 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:168 msgid "The ipset option for remote policies" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:193 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:201 msgid "" "Time (in seconds) for service to wait for WAN gateway discovery on boot." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:166 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:174 msgid "Use DNSMASQ ipset" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:165 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:175 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:173 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:183 msgid "Use ipset command" msgstr "" @@ -404,53 +398,61 @@ msgstr "" msgid "VPN Policy Routing" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:115 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:121 msgid "VPN and WAN Policy-Based Routing" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:150 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:158 msgid "Verbose output" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:208 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:216 msgid "WAN" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:226 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:231 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:234 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:239 msgid "WAN Table FW Mark" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:221 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:229 msgid "WAN Table ID" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:183 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:191 msgid "WARNING:" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:236 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:244 msgid "Web UI Configuration" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:185 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:193 msgid "" "before changing anything in this section! Change any of the settings below " "with extreme caution!" msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:163 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:173 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:171 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:181 msgid "before changing this option." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:155 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:350 -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:363 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:52 +msgid "disabled" +msgstr "" + +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:163 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:358 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:371 #: applications/luci-app-vpn-policy-routing/luasrc/view/vpn-policy-routing/status-gateways.htm:17 msgid "for details." msgstr "" -#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:38 +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:39 msgid "is not installed or not found" msgstr "" + +#: applications/luci-app-vpn-policy-routing/luasrc/model/cbi/vpn-policy-routing.lua:47 +msgid "strict mode" +msgstr "" diff --git a/applications/luci-app-vpn-policy-routing/root/etc/uci-defaults/40_luci-vpn-policy-routing b/applications/luci-app-vpn-policy-routing/root/etc/uci-defaults/40_luci-vpn-policy-routing new file mode 100644 index 0000000000..a1ecfcea24 --- /dev/null +++ b/applications/luci-app-vpn-policy-routing/root/etc/uci-defaults/40_luci-vpn-policy-routing @@ -0,0 +1,3 @@ +#!/bin/sh +rm -rf /var/luci-modulecache/; rm -f /var/luci-indexcache; +exit 0 |