luci-app-vpnbypass: better start/stop controls, create entry in the VPN menu if it exists
Signed-off-by: Stan Grishin <stangri@melmac.net>
This commit is contained in:
parent
ae8ddb0ca6
commit
676e5b7450
3 changed files with 45 additions and 17 deletions
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (c) 2017 Stan Grishin (stangri@melmac.net)
|
# Copyright 2017-2019 Stan Grishin (stangri@melmac.net)
|
||||||
# This is free software, licensed under the GNU General Public License v3.
|
# This is free software, licensed under the GNU General Public License v3.
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
@ -8,9 +8,9 @@ PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
|
||||||
|
|
||||||
LUCI_TITLE:=VPN Bypass Web UI
|
LUCI_TITLE:=VPN Bypass Web UI
|
||||||
LUCI_DESCRIPTION:=Provides Web UI for VPNBypass service.
|
LUCI_DESCRIPTION:=Provides Web UI for VPNBypass service.
|
||||||
LUCI_DEPENDS:=+luci +vpnbypass
|
LUCI_DEPENDS:=+luci-mod-admin-full +vpnbypass
|
||||||
LUCI_PKGARCH:=all
|
LUCI_PKGARCH:=all
|
||||||
PKG_RELEASE:=4
|
PKG_RELEASE:=9
|
||||||
|
|
||||||
include ../../luci.mk
|
include ../../luci.mk
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
module("luci.controller.vpnbypass", package.seeall)
|
module("luci.controller.vpnbypass", package.seeall)
|
||||||
function index()
|
function index()
|
||||||
if not nixio.fs.access("/etc/config/vpnbypass") then
|
if nixio.fs.access("/etc/config/vpnbypass") then
|
||||||
return
|
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
|
end
|
||||||
entry({"admin", "services", "vpnbypass"}, cbi("vpnbypass"), _("VPN Bypass"))
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,17 +1,39 @@
|
||||||
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"))
|
m = Map("vpnbypass", translate("VPN Bypass Settings"))
|
||||||
s = m:section(NamedSection, "config", "vpnbypass")
|
|
||||||
|
|
||||||
-- General options
|
h = m:section(NamedSection, "config", "vpnbypass", translate("Service Status"))
|
||||||
e = s:option(Flag, "enabled", translate("Start VPNBypass service"))
|
local packageName = "vpnbypass"
|
||||||
e.rmempty = false
|
local uci = require "luci.model.uci".cursor()
|
||||||
function e.write(self, section, value)
|
local sys = require "luci.sys"
|
||||||
if value ~= "1" then
|
local http = require "luci.http"
|
||||||
luci.sys.init.stop("vpnbypass")
|
local dispatcher = require "luci.dispatcher"
|
||||||
end
|
en = h:option(Button, "__toggle")
|
||||||
return Flag.write(self, section, value)
|
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
|
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
|
||||||
|
http.redirect(dispatcher.build_url("admin/services/" .. packageName))
|
||||||
|
end
|
||||||
|
|
||||||
|
s = m:section(NamedSection, "config", "vpnbypass", translate("VPN Bypass Rules"))
|
||||||
|
|
||||||
-- Local Ports
|
-- Local Ports
|
||||||
p1 = s:option(DynamicList, "localport", translate("Local Ports to Bypass"), translate("Local ports to trigger VPN Bypass"))
|
p1 = s:option(DynamicList, "localport", translate("Local Ports to Bypass"), translate("Local ports to trigger VPN Bypass"))
|
||||||
|
@ -30,7 +52,7 @@ p2.optional = false
|
||||||
-- Local Subnets
|
-- 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 = 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.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.addremove = false
|
||||||
r1.optional = 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("Domains to be accessed directly (outside of the VPN tunnel), see ")
|
||||||
.. [[<a href="]] .. readmeURL .. [[#bypass-domains-formatsyntax" target="_blank">]]
|
.. [[<a href="]] .. readmeURL .. [[#bypass-domains-formatsyntax" target="_blank">]]
|
||||||
.. translate("README") .. [[</a> ]] .. translate("for syntax"))
|
.. translate("README") .. [[</a> ]] .. translate("for syntax"))
|
||||||
|
function d.on_after_commit(map)
|
||||||
|
sys.init.restart("dnsmasq")
|
||||||
|
end
|
||||||
|
|
||||||
return m, d
|
return m, d
|
||||||
|
|
Loading…
Reference in a new issue