From a34f260a2e1956f8fc5090ff60a8c925a05ff517 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Sat, 7 Sep 2019 10:36:32 -0700 Subject: luci-app-vpnbypass: better start/stop controls, create entry in the VPN menu if it exists Signed-off-by: Stan Grishin --- .../luasrc/model/cbi/vpnbypass.lua | 47 +++++++++++++++++----- 1 file changed, 36 insertions(+), 11 deletions(-) (limited to 'applications/luci-app-vpnbypass/luasrc/model/cbi') diff --git a/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua b/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua index 6545154c2c..95971fab1b 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 ") .. [[]] .. translate("README") .. [[ ]] .. translate("for syntax")) +function d.on_after_commit(map) + sys.init.restart("dnsmasq") +end return m, d -- cgit v1.2.3