summaryrefslogtreecommitdiffhomepage
path: root/protocols/luci-proto-ncm
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/luci-proto-ncm')
-rw-r--r--protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js123
-rw-r--r--protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua110
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"
-