2019-09-07 17:36:32 +00:00
local readmeURL = " https://github.com/openwrt/packages/blob/master/net/vpnbypass/files/README.md "
local uci = require " luci.model.uci " . cursor ( )
local sys = require " luci.sys "
2019-10-18 14:14:16 +00:00
local util = require " luci.util "
2019-10-20 22:42:08 +00:00
local packageName = " vpnbypass "
local tmpfsVersion = tostring ( util.trim ( sys.exec ( " opkg list-installed " .. packageName .. " | awk '{print $3}' " ) ) )
if not tmpfsVersion or tmpfsVersion == " " then
2019-11-18 23:01:58 +00:00
tmpfsStatusCode = - 1
tmpfsVersion = " "
tmpfsStatus = packageName .. " " .. translate ( " is not installed or not found " )
2019-10-20 22:42:08 +00:00
else
2019-11-18 23:01:58 +00:00
tmpfsVersion = " [ " .. packageName .. " " .. tmpfsVersion .. " ] "
2019-09-07 17:36:32 +00:00
end
2019-10-20 22:42:08 +00:00
local tmpfsStatus = " Stopped "
if sys.call ( " iptables -t mangle -L | grep -q VPNBYPASS " ) == 0 then
tmpfsStatus = " Running "
2017-03-05 13:42:31 +00:00
end
2017-01-26 22:54:48 +00:00
2019-10-28 23:34:54 +00:00
m = Map ( " vpnbypass " , translate ( " VPN Bypass Settings " ) )
2019-10-20 22:42:08 +00:00
h = m : section ( NamedSection , " config " , packageName , translate ( " Service Status " ) .. tmpfsVersion )
ss = h : option ( DummyValue , " _dummy " , translate ( " Service Status " ) )
ss.template = packageName .. " /status "
ss.value = tmpfsStatus
buttons = h : option ( DummyValue , " _dummy " )
buttons.template = packageName .. " /buttons "
2019-09-07 17:36:32 +00:00
2019-10-20 22:42:08 +00:00
s = m : section ( NamedSection , " config " , " vpnbypass " , translate ( " VPN Bypass Rules " ) )
2017-01-26 22:54:48 +00:00
-- Local Ports
p1 = s : option ( DynamicList , " localport " , translate ( " Local Ports to Bypass " ) , translate ( " Local ports to trigger VPN Bypass " ) )
2017-02-17 04:16:56 +00:00
p1.datatype = " portrange "
2017-03-05 18:25:00 +00:00
-- p1.placeholder = "0-65535"
2017-03-05 13:42:31 +00:00
p1.addremove = false
p1.optional = false
2017-01-26 22:54:48 +00:00
-- Remote Ports
p2 = s : option ( DynamicList , " remoteport " , translate ( " Remote Ports to Bypass " ) , translate ( " Remote ports to trigger VPN Bypass " ) )
2017-02-17 04:16:56 +00:00
p2.datatype = " portrange "
2017-03-05 18:25:00 +00:00
-- p2.placeholder = "0-65535"
2017-03-05 13:42:31 +00:00
p2.addremove = false
p2.optional = false
2017-01-26 22:54:48 +00:00
-- Local Subnets
2017-02-17 04:16:56 +00:00
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 "
2019-09-07 17:36:32 +00:00
-- r1.placeholder = ip.new(m.uci:get("network", "lan", "ipaddr"), m.uci:get("network", "lan", "netmask"))
2017-03-05 13:42:31 +00:00
r1.addremove = false
r1.optional = false
2017-01-26 22:54:48 +00:00
-- Remote Subnets
2017-02-17 04:16:56 +00:00
r2 = s : option ( DynamicList , " remotesubnet " , translate ( " Remote IP Addresses to Bypass " ) , translate ( " Remote IP addresses or subnets which will be accessed directly (outside of the VPN tunnel) " ) )
r2.datatype = " ip4addr "
2017-03-05 18:25:00 +00:00
-- r2.placeholder = "0.0.0.0/0"
2017-03-05 13:42:31 +00:00
r2.addremove = false
r2.optional = false
2017-01-26 22:54:48 +00:00
-- Domains
2017-01-26 22:54:48 +00:00
d = Map ( " dhcp " )
s4 = d : section ( TypedSection , " dnsmasq " )
s4.anonymous = true
2017-02-15 01:19:11 +00:00
di = s4 : option ( DynamicList , " ipset " , translate ( " Domains to Bypass " ) ,
2019-11-18 23:01:58 +00:00
translate ( " Domains to be accessed directly (outside of the VPN tunnel), see " )
2017-03-05 13:42:31 +00:00
.. [[<a href="]] .. readmeURL .. [[#bypass-domains-formatsyntax" target="_blank">]]
2019-11-18 23:01:58 +00:00
.. translate ( " README " ) .. [[</a> ]] .. translate ( " for syntax " ) )
2019-09-07 17:36:32 +00:00
function d . on_after_commit ( map )
2019-10-18 14:14:16 +00:00
util.exec ( " /etc/init.d/dnsmasq restart >/dev/null 2>&1 " )
2019-09-07 17:36:32 +00:00
end
2017-01-26 22:54:48 +00:00
2017-01-26 22:54:48 +00:00
return m , d