diff options
author | Stan Grishin <stangri@melmac.net> | 2021-03-10 04:32:00 +0000 |
---|---|---|
committer | Stan Grishin <stangri@melmac.net> | 2021-03-14 02:34:01 +0000 |
commit | d35cdc9dcc0e95e360a94a7b1c87df198768ac64 (patch) | |
tree | f34c44768bd89690bb81f3d9915a6b2d140c7638 /applications/luci-app-vpnbypass/htdocs/luci-static/resources/view/vpnbypass | |
parent | 2516852100eb6b115c0ad90883dfc5cfda16e076 (diff) |
luci-app-vpnbypass: transition to client-side rendering
Signed-off-by: Stan Grishin <stangri@melmac.net>
Diffstat (limited to 'applications/luci-app-vpnbypass/htdocs/luci-static/resources/view/vpnbypass')
-rw-r--r-- | applications/luci-app-vpnbypass/htdocs/luci-static/resources/view/vpnbypass/overview.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/applications/luci-app-vpnbypass/htdocs/luci-static/resources/view/vpnbypass/overview.js b/applications/luci-app-vpnbypass/htdocs/luci-static/resources/view/vpnbypass/overview.js new file mode 100644 index 0000000000..b2d5d1f775 --- /dev/null +++ b/applications/luci-app-vpnbypass/htdocs/luci-static/resources/view/vpnbypass/overview.js @@ -0,0 +1,62 @@ +// Copyright 2021 Stan Grishin (stangri@melmac.net) +// Many thanks to [@vsviridov](https://github.com/vsviridov) for help with transition to JS + +'use strict'; +'require form'; +'require uci'; +'require view'; +'require vpnbypass.widgets as widgets'; + +var pkg = { + get Name() { return 'vpnbypass'; }, + get URL() { return 'https://docs.openwrt.melmac.net/' + pkg.Name + '/'; } +}; + +return view.extend({ + load: function () { + return Promise.all([ + uci.load(pkg.Name), + uci.load('dhcp') + ]); + }, + + render: function (data) { + + var m, d, s, o; + + m = new form.Map(pkg.Name, _('VPN Bypass')); + + s = m.section(form.NamedSection, 'config', pkg.Name); + + o = s.option(widgets.Status, '', _('Service Status')); + + o = s.option(widgets.Buttons, '', _('Service Control')); + + o = s.option(form.DynamicList, 'localport', _('Local Ports to Bypass'), _('Local ports to trigger VPN Bypass.')); + o.datatype = 'portrange'; + o.addremove = false; + o.optional = false; + + o = s.option(form.DynamicList, 'remoteport', _('Remote Ports to Bypass'), _('Remote ports to trigger VPN Bypass.')); + o.datatype = 'portrange'; + o.addremove = false; + o.optional = false; + + o = s.option(form.DynamicList, 'localsubnet', _('Local IP Addresses to Bypass'), _('Local IP addresses or subnets with direct internet access.')); + o.datatype = 'ip4addr'; + o.addremove = false; + o.optional = false; + + o = s.option(form.DynamicList, 'remotesubnet', _('Remote IP Addresses to Bypass'), _('Remote IP addresses or subnets which will be accessed directly.')); + o.datatype = 'ip4addr'; + o.addremove = false; + o.optional = false; + + d = new form.Map('dhcp'); + s = d.section(form.TypedSection, 'dnsmasq'); + s.anonymous = true; + o = s.option(form.DynamicList, 'ipset', _('Domains to Bypass'), _('Domains to be accessed directly, see %sREADME%s for syntax.').format('<a href="' + pkg.URL + '#bypass-domains-formatsyntax" target="_blank" rel="noreferrer noopener">', '</a>')); + + return Promise.all([m.render(), d.render()]); + } +}); |