From d35cdc9dcc0e95e360a94a7b1c87df198768ac64 Mon Sep 17 00:00:00 2001 From: Stan Grishin Date: Wed, 10 Mar 2021 04:32:00 +0000 Subject: luci-app-vpnbypass: transition to client-side rendering Signed-off-by: Stan Grishin --- .../resources/view/vpnbypass/overview.js | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 applications/luci-app-vpnbypass/htdocs/luci-static/resources/view/vpnbypass/overview.js (limited to 'applications/luci-app-vpnbypass/htdocs/luci-static/resources/view/vpnbypass') 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('', '')); + + return Promise.all([m.render(), d.render()]); + } +}); -- cgit v1.2.3