summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-vpnbypass/luasrc
diff options
context:
space:
mode:
authorStan Grishin <stangri@melmac.net>2019-09-07 10:36:32 -0700
committerStan Grishin <stangri@melmac.net>2019-09-07 10:36:32 -0700
commita34f260a2e1956f8fc5090ff60a8c925a05ff517 (patch)
treee546a5f80d3164af6eb7e0dd8efdc23b689d806d /applications/luci-app-vpnbypass/luasrc
parent204293a7669490608a85ba765b697959c1ed169f (diff)
luci-app-vpnbypass: better start/stop controls, create entry in the VPN menu if it exists
Signed-off-by: Stan Grishin <stangri@melmac.net>
Diffstat (limited to 'applications/luci-app-vpnbypass/luasrc')
-rw-r--r--applications/luci-app-vpnbypass/luasrc/controller/vpnbypass.lua9
-rw-r--r--applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua47
2 files changed, 42 insertions, 14 deletions
diff --git a/applications/luci-app-vpnbypass/luasrc/controller/vpnbypass.lua b/applications/luci-app-vpnbypass/luasrc/controller/vpnbypass.lua
index ed6f4f4da..56221e043 100644
--- a/applications/luci-app-vpnbypass/luasrc/controller/vpnbypass.lua
+++ b/applications/luci-app-vpnbypass/luasrc/controller/vpnbypass.lua
@@ -1,7 +1,10 @@
module("luci.controller.vpnbypass", package.seeall)
function index()
- if not nixio.fs.access("/etc/config/vpnbypass") then
- return
+ if nixio.fs.access("/etc/config/vpnbypass") then
+ if luci.dispatcher.lookup("admin/vpn") then
+ entry({"admin", "vpn", "vpnbypass"}, cbi("vpnbypass"), _("VPN Bypass"))
+ else
+ entry({"admin", "services", "vpnbypass"}, cbi("vpnbypass"), _("VPN Bypass"))
+ end
end
- entry({"admin", "services", "vpnbypass"}, cbi("vpnbypass"), _("VPN Bypass"))
end
diff --git a/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua b/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua
index 6545154c2..95971fab1 100644
--- a/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua
+++ b/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua
@@ -1,18 +1,40 @@
-readmeURL = "https://github.com/openwrt/packages/blob/master/net/vpnbypass/files/README.md"
+local readmeURL = "https://github.com/openwrt/packages/blob/master/net/vpnbypass/files/README.md"
m = Map("vpnbypass", translate("VPN Bypass Settings"))
-s = m:section(NamedSection, "config", "vpnbypass")
-
--- General options
-e = s:option(Flag, "enabled", translate("Start VPNBypass service"))
-e.rmempty = false
-function e.write(self, section, value)
- if value ~= "1" then
- luci.sys.init.stop("vpnbypass")
+
+h = m:section(NamedSection, "config", "vpnbypass", translate("Service Status"))
+local packageName = "vpnbypass"
+local uci = require "luci.model.uci".cursor()
+local sys = require "luci.sys"
+local http = require "luci.http"
+local dispatcher = require "luci.dispatcher"
+en = h:option(Button, "__toggle")
+if enabledFlag ~= "1" then
+ en.title = translate("Service is disabled/stopped")
+ en.inputtitle = translate("Enable/Start")
+ en.inputstyle = "apply important"
+else
+ en.title = translate("Service is enabled/started")
+ en.inputtitle = translate("Stop/Disable")
+ en.inputstyle = "reset important"
+end
+function en.write()
+ enabledFlag = enabledFlag == "1" and "0" or "1"
+ uci:set(packageName, "config", "enabled", enabledFlag)
+ uci:save(packageName)
+ uci:commit(packageName)
+ if enabledFlag == "0" then
+ sys.init.stop(packageName)
+ sys.init.disable(packageName)
+ else
+ sys.init.enable(packageName)
+ sys.init.start(packageName)
end
- return Flag.write(self, section, value)
+ http.redirect(dispatcher.build_url("admin/services/" .. packageName))
end
+s = m:section(NamedSection, "config", "vpnbypass", translate("VPN Bypass Rules"))
+
-- Local Ports
p1 = s:option(DynamicList, "localport", translate("Local Ports to Bypass"), translate("Local ports to trigger VPN Bypass"))
p1.datatype = "portrange"
@@ -30,7 +52,7 @@ p2.optional = false
-- Local Subnets
r1 = s:option(DynamicList, "localsubnet", translate("Local IP Addresses to Bypass"), translate("Local IP addresses or subnets with direct internet access (outside of the VPN tunnel)"))
r1.datatype = "ip4addr"
--- r1.placeholder = luci.ip.new(m.uci:get("network", "lan", "ipaddr"), m.uci:get("network", "lan", "netmask"))
+-- r1.placeholder = ip.new(m.uci:get("network", "lan", "ipaddr"), m.uci:get("network", "lan", "netmask"))
r1.addremove = false
r1.optional = false
@@ -49,5 +71,8 @@ di = s4:option(DynamicList, "ipset", translate("Domains to Bypass"),
translate("Domains to be accessed directly (outside of the VPN tunnel), see ")
.. [[<a href="]] .. readmeURL .. [[#bypass-domains-formatsyntax" target="_blank">]]
.. translate("README") .. [[</a> ]] .. translate("for syntax"))
+function d.on_after_commit(map)
+ sys.init.restart("dnsmasq")
+end
return m, d