diff options
Diffstat (limited to 'protocols/luci-proto-ncm')
-rw-r--r-- | protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js | 123 | ||||
-rw-r--r-- | protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua | 110 |
2 files changed, 123 insertions, 110 deletions
diff --git a/protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js b/protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js new file mode 100644 index 0000000000..3ab6c01d61 --- /dev/null +++ b/protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js @@ -0,0 +1,123 @@ +'use strict'; +'require rpc'; +'require form'; +'require network'; + +var callFileList = rpc.declare({ + object: 'file', + method: 'list', + params: [ 'path' ], + expect: { entries: [] }, + filter: function(list, params) { + var rv = []; + for (var i = 0; i < list.length; i++) + if (list[i].name.match(/^ttyUSB/) || list[i].name.match(/^cdc-wdm/)) + rv.push(params.path + list[i].name); + return rv.sort(); + } +}); + +network.registerPatternVirtual(/^ncm-.+$/); +network.registerErrorCode('CONFIGURE_FAILED', _('Configuration failed')); +network.registerErrorCode('DISCONNECT_FAILED', _('Disconnection attempt failed')); +network.registerErrorCode('FINALIZE_FAILED', _('Finalizing failed')); +network.registerErrorCode('GETINFO_FAILED', _('Modem information query failed')); +network.registerErrorCode('INITIALIZE_FAILED', _('Initialization failure')); +network.registerErrorCode('SETMODE_FAILED', _('Setting operation mode failed')); +network.registerErrorCode('UNSUPPORTED_MODEM', _('Unsupported modem')); + +return network.registerProtocol('ncm', { + getI18n: function() { + return _('NCM'); + }, + + getIfname: function() { + return this._ubus('l3_device') || 'wan'; + }, + + getOpkgPackage: function() { + return 'comgt-ncm'; + }, + + isFloating: function() { + return true; + }, + + isVirtual: function() { + return true; + }, + + getDevices: function() { + return null; + }, + + containsDevice: function(ifname) { + return (network.getIfnameOf(ifname) == this.getIfname()); + }, + + renderFormOptions: function(s) { + var o; + + o = s.taboption('general', form.Value, 'device', _('Modem device')); + o.rmempty = false; + o.load = function(section_id) { + return callFileList('/dev/').then(L.bind(function(devices) { + for (var i = 0; i < devices.length; i++) + this.value(devices[i]); + return form.Value.prototype.load.apply(this, [section_id]); + }, this)); + }; + + o = s.taboption('general', form.Value, 'service', _('Service Type')); + o.value('', _('Modem default')); + o.value('preferlte', _('Prefer LTE')); + o.value('preferumts', _('Prefer UMTS')); + o.value('lte', 'LTE'); + o.value('umts', 'UMTS/GPRS'); + o.value('gsm', _('GPRS only')); + o.value('auto', _('auto')); + + o = s.taboption('general', form.ListValue, 'pdptype', _('IP Protocol')); + o.default = 'IP'; + o.value('IP', _('IPv4')); + o.value('IPV4V6', _('IPv4+IPv6')); + o.value('IPV6', _('IPv6')); + + s.taboption('general', form.Value, 'apn', _('APN')); + s.taboption('general', form.Value, 'pincode', _('PIN')); + s.taboption('general', form.Value, 'username', _('PAP/CHAP username')); + + o = s.taboption('general', form.Value, 'password', _('PAP/CHAP password')); + o.password = true; + + o = s.taboption('general', form.Value, 'dialnumber', _('Dial number')); + o.placeholder = '*99***1#'; + + if (L.hasSystemFeature('ipv6')) { + o = s.taboption('advanced', form.ListValue, 'ipv6', _('Obtain IPv6-Address')); + o.value('auto', _('Automatic')); + o.value('0', _('Disabled')); + o.value('1', _('Manual')); + o.default = 'auto'; + } + + o = s.taboption('advanced', form.Value, 'delay', _('Modem init timeout'), _('Maximum amount of seconds to wait for the modem to become ready')); + o.placeholder = '10'; + o.datatype = 'min(1)'; + + o = s.taboption('advanced', form.Flag, 'defaultroute', _('Default gateway'), _('If unchecked, no default route is configured')); + o.default = o.enabled; + + o = s.taboption('advanced', form.Value, 'metric', _('Use gateway metric')); + o.placeholder = '0'; + o.datatype = 'uinteger'; + o.depends('defaultroute', '1'); + + o = s.taboption('advanced', form.Flag, 'peerdns', _('Use DNS servers advertised by peer'), _('If unchecked, the advertised DNS server addresses are ignored')); + o.default = o.enabled; + + o = s.taboption('advanced', form.DynamicList, 'dns', _('Use custom DNS servers')); + o.depends('peerdns', '0'); + o.datatype = 'ipaddr'; + } +}); diff --git a/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua b/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua deleted file mode 100644 index 3fe4ef33aa..0000000000 --- a/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua +++ /dev/null @@ -1,110 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - -Copyright 2015 Cezary Jackiewicz <cezary.jackiewicz@gmail.com> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 -]]-- - -local map, section, net = ... - -local device, apn, service, pincode, username, password, dialnum -local ipv6, delay, defaultroute, metric, peerdns, dns - - -device = section:taboption("general", Value, "device", translate("Modem device")) -device.rmempty = false - -local dev -for dev in nixio.fs.glob("/dev/ttyUSB*") do - device:value(dev) -end -for dev in nixio.fs.glob("/dev/cdc-wdm*") do - device:value(dev) -end - -mode = section:taboption("general", Value, "mode", translate("Service Type")) -mode:value("", translate("Modem default")) -mode:value("preferlte", translate("Prefer LTE")) -mode:value("preferumts", translate("Prefer UMTS")) -mode:value("lte", "LTE") -mode:value("umts", "UMTS/GPRS") -mode:value("gsm", translate("GPRS only")) -mode:value("auto", translate("auto")) - - -mode = section:taboption("general", Value, "pdptype", translate("IP Protocol")) -mode.default = "IP" -mode:value("IP", translate("IPv4")) -mode:value("IPV4V6", translate("IPv4+IPv6")) -mode:value("IPV6", translate("IPv6")) - - -apn = section:taboption("general", Value, "apn", translate("APN")) - - -pincode = section:taboption("general", Value, "pincode", translate("PIN")) - - -username = section:taboption("general", Value, "username", translate("PAP/CHAP username")) - - -password = section:taboption("general", Value, "password", translate("PAP/CHAP password")) -password.password = true - - -dialnum = section:taboption("general", Value, "dialnum", translate("Dial number")) -dialnum.placeholder = "*99#" - - -if luci.model.network:has_ipv6() then - - ipv6 = section:taboption("advanced", ListValue, "ipv6") - ipv6:value("auto", translate("Automatic")) - ipv6:value("0", translate("Disabled")) - ipv6:value("1", translate("Manual")) - ipv6.default = "auto" - -end - - -delay = section:taboption("advanced", Value, "delay", - translate("Modem init timeout"), - translate("Maximum amount of seconds to wait for the modem to become ready")) - -delay.placeholder = "10" -delay.datatype = "min(1)" - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -peerdns = section:taboption("advanced", Flag, "peerdns", - translate("Use DNS servers advertised by peer"), - translate("If unchecked, the advertised DNS server addresses are ignored")) - -peerdns.default = peerdns.enabled - - -dns = section:taboption("advanced", DynamicList, "dns", - translate("Use custom DNS servers")) - -dns:depends("peerdns", "") -dns.datatype = "ipaddr" -dns.cast = "string" - |