123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- 'use strict';
- 'require form';
- 'require view';
- 'require uci';
- 'require fs';
- 'require network';
- 'require tools.widgets as widgets';
- return view.extend({
- load: function() {
- return Promise.all([
- uci.load('basicstation')
- ]);
- },
- render: function(data) {
- var m, s, o;
- /* General Settings */
- m = new form.Map('basicstation', _('General Settings'));
-
- /* Station Identity */
- s = m.section(form.NamedSection, 'station', 'station',
- _('Station Identity'));
- o = s.option(widgets.DeviceSelect, 'idGenIf',
- _('Interface for station ID generation'),
- _('Station ID is derived from the MAC address of the chosen interface'));
- o.filter = function(section_id, value) {
- var dev = this.devices.filter(function(dev) { return dev.getName() == value })[0];
- return (dev && dev.getMAC() != null && dev.getMAC() != '00:00:00:00:00:00');
- }
- o.nobridges = true;
- o.novirtual = true;
- o.noaliases = true;
- o.default = 'eth0';
- o.write = function(sid, value) {
- var path = "/sys/class/net/" + value + "/address";
- uci.set('basicstation', sid, 'idGenIf', value);
- uci.set('basicstation', sid, 'routerid', path);
- }
- o = s.option(form.Value, 'stationid', _('Station ID'),
- _('Click save and apply to generate station ID'));
- o.readonly = true;
- /* Authentication */
- s = m.section(form.NamedSection, 'auth', 'auth',
- _('Authentication'));
- o = s.option(form.ListValue, 'cred', _('Credentials'),
- _('Credentials for LNS (TC) or CUPS (CUPS)'));
- o.value('tc', _('TC'));
- o.value('cups', _('CUPS'));
- o.default = 'tc';
- o = s.option(form.ListValue, 'mode', _('Authentication mode'),
- _('Authentication mode for server connection'));
- o.value('no', _('No Authentication'));
- o.value('server', _('TLS Server Authentication'));
- o.value('serverAndClient', _('TLS Server and Client Authentication'));
- o.value('serverAndClientToken', _('TLS Server Authentication and Client Token'));
- o.default = 'no';
- o = s.option(form.Value, 'addr', _('Server address'));
- o.optional = false;
- o.rmempty = false;
- o.placeholder = 'eu1.cloud.thethings.network';
- o = s.option(form.Value, 'port', _('Port'));
- o.optional = false;
- o.rmempty = false;
- o.datatype = 'uinteger';
- o.placeholder = '8887';
- o = s.option(form.Value, 'token', _('Authorization token'));
- o.optional = false;
- o.rmempty = false;
- o.depends({ mode: 'serverAndClientToken' });
- o = s.option(form.Value, 'key', _('Private station key'));
- o.optional = false;
- o.rmempty = false;
- o.depends({ mode: 'serverAndClient' });
- o = s.option(form.FileUpload, 'crt', _('Private station certificate'));
- o.optional = false;
- o.rmempty = false;
- o.depends({ mode: "serverAndClient" });
- o = s.option(form.FileUpload, 'trust', _('CA certificate'));
- o.optional = false;
- o.rmempty = false;
- o.depends({ mode: "no", "!reverse": true });
-
- /* Radio Configuration */
- s = m.section(form.NamedSection, 'sx130x', 'sx130x',
- _('Radio Configuration'));
- o = s.option(form.ListValue, 'comif', _('Communication interface'),
- _('Currently only USB devices are supported'));
- o.value('usb', 'USB');
- o.default = 'usb';
- o = s.option(form.Value, 'devpath', _('Device path'),
- _('Device path of the LoRaWAN concentrator card'));
- o.optional = false;
- o.rmempty = false;
- o.placeholder = '/dev/ttyACM0';
- o = s.option(form.Flag, 'pps', _('PPS'),
- _('PPS (pulse per second) provided by GPS device or other source'));
- o.default = false
- o = s.option(form.Flag, 'public', _('Public network'),
- _('Public or private LoRaWAN network'));
- o.default = true;
- o = s.option(form.ListValue, 'clksrc', _('Clock source'),
- _('Radio to provide clock to Basicstation'));
- o.value('0', 'Radio 0');
- o.value('1', 'Radio 1');
- o.default = '0';
- var options = uci.sections('basicstation', 'rfconf');
- o = s.option(form.ListValue, 'radio0', _('Radio 0'),
- _('RF configuration for Radio 0'));
- for (var i = 0; i < options.length; i++) {
- var value = options[i]['.name'];
- o.value(value);
- }
- o.default = 'rfconf0';
- o = s.option(form.ListValue, 'radio1', _('Radio 1'),
- _('RF configuration for Radio 1'));
- for (var i = 0; i < options.length; i++) {
- var value = options[i]['.name'];
- o.value(value);
- }
- o.default = 'rfconf1';
-
- /* Logging */
- s = m.section(form.NamedSection, 'station','station',
- _('Logging'));
- o = s.option(form.ListValue, 'logLevel', _('Level'),
- _('Level to which messages are to be logged'));
- o.value('XDEBUG', 'xdebug');
- o.value('DEBUG', 'debug');
- o.value('VERBOSE', 'verbose');
- o.value('INFO', 'info');
- o.value('NOTICE', 'notice');
- o.value('WARNING', 'warning');
- o.value('ERROR', 'error');
- o.value('CRITICAL', 'critical');
- o.default = 'DEBUG';
- o = s.option(form.Value, 'logSize', _('Size'),
- _('Maximum size of log file in MB'));
- o.value('1');
- o.value('2');
- o.value('3');
- o.value('4');
- o.default = '1';
- o.datatype = 'range(1,10)';
- o = s.option(form.Value, 'logRotate', _('Rotate'),
- _('Number of old log files to be kept'));
- o.value('1');
- o.value('2');
- o.value('3');
- o.value('4');
- o.default = '1';
- o.datatype = 'range(1, 10)';
-
- return m.render();
- },
- });
|