--- /dev/null
+#
+# Copyright (C) 2020 Michele Primavera
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LuCI Support for ser2net
+LUCI_DEPENDS:=+ser2net
+
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
--- /dev/null
+'use strict';
+'require form';
+
+return L.view.extend({
+ render: function() {
+ var m, s, o;
+
+ m = new form.Map('ser2net', 'ser2net');
+
+ s = m.section(form.TypedSection, "led", _("LED redirect"));
+ s.anonymous = false;
+ s.addremove = true;
+
+ o = s.option(form.Value, "driver", _("Driver"), _("The driver required for the device."));
+ o.rmempty = false;
+ o.default = "sysfs";
+
+ o = s.option(form.Value, "device", _("Device"), _("The device itself."));
+ o.rmempty = false;
+ o.default = "duckbill:red:rs485";
+
+ o = s.option(form.Value, "driver", _("Duration"), _("Blink duration."));
+ o.rmempty = false;
+ o.default = 20;
+
+ o = s.option(form.Value, "state", _("State"));
+ o.rmempty = false;
+ o.default = 1;
+
+ return m.render();
+ }
+});
--- /dev/null
+'use strict';
+'require form';
+
+return L.view.extend({
+ render: function() {
+ var m, s, o;
+
+ m = new form.Map('ser2net', 'ser2net');
+
+ s = m.section(form.TypedSection, "proxy", _("Proxies"));
+ s.anonymous = true;
+ s.addremove = true;
+
+ o = s.option(form.Flag, "enabled", _("Enabled"));
+ o.rmempty = false;
+
+ o = s.option(form.Value, "port", _("Service port"), _("The TCP port to listen on."));
+ o.rmempty = false;
+ o.default = 5000;
+
+ o = s.option(form.ListValue, "protocol", _("Protocol"), _("The protocol to listen to."));
+ o.rmempty = false;
+ o.value("raw", _("Raw"));
+ o.value("rawlp", _("Rawlp"));
+ o.value("telnet", _("Telnet"));
+ o.value("off", _("Off"));
+ o.default = "raw";
+
+ o = s.option(form.Value, "timeout", _("Timeout"), _("The amount of seconds of inactivity before a disconnect occurs.<br/>A value of zero means wait indefinitely."));
+ o.rmempty = false;
+ o.default = 0;
+
+ o = s.option(form.Value, "device", _("Device"), _("The name of the device to connect to.<br/>This must be in the form of /dev/<device>."));
+ o.rmempty = false;
+ o.default = "/dev/ttyUSB0";
+
+ o = s.option(form.ListValue, "baudrate", _("Baud rate"), _("The speed the device port should operate at."));
+ o.rmempty = false;
+ o.value(300);
+ o.value(1200);
+ o.value(2400);
+ o.value(4800);
+ o.value(9600);
+ o.value(19200);
+ o.value(38400);
+ o.value(57600);
+ o.value(115200);
+ o.default = 9600;
+
+ o = s.option(form.ListValue, "databits", _("Data bits"));
+ o.rmempty = false;
+ o.value(8);
+ o.value(7);
+ o.default = 8;
+
+ o = s.option(form.ListValue, "parity", _("Parity"));
+ o.rmempty = false;
+ o.value("none", _("None"));
+ o.value("even", _("Even"));
+ o.value("odd", _("Odd"));
+ o.default = "none";
+
+ o = s.option(form.ListValue, "stopbits", _("Stop bits"));
+ o.rmempty = false;
+ o.value(1);
+ o.value(2);
+ o.default = 1;
+
+ s.option(form.Flag, "rtscts", _("Use RTS and CTS lines"));
+ s.option(form.Flag, "local", _("Ignore modem control signals"));
+ s.option(form.Flag, "remctl", _("Allow the RFC 2217 protocol"));
+ s.option(form.DynamicList, "options", _("Extra options"));
+ s.option(form.Value, "led_tx", _("TX LED configuration"));
+ s.option(form.Value, "led_rx", _("RX LED configuration"));
+
+ return m.render();
+ }
+});
--- /dev/null
+'use strict';
+'require form';
+
+return L.view.extend({
+ render: function() {
+ var m, s, o;
+
+ m = new form.Map('ser2net', 'ser2net');
+
+ //ser2net
+ s = m.section(form.TypedSection, "ser2net", _("Global switch"));
+ s.anonymous = true;
+
+ o = s.option(form.Flag, "enabled", _("Enabled"));
+ o.rmempty = false;
+
+ //controlport
+ s = m.section(form.TypedSection, "controlport", _("Control port"));
+ s.anonymous = true;
+
+ o = s.option(form.Flag, "enabled", _("Enabled"));
+ o.rmempty = false;
+
+ o = s.option(form.Value, "host", _("Binding address"), _("The network to listen from."));
+ o.rmempty = false;
+ o.default = "localhost";
+
+ o = s.option(form.Value, "port", _("Control port"), _("The TCP port to listen on."));
+ o.rmempty = false;
+ o.default = 2000;
+
+ //default
+ s = m.section(form.TypedSection, "default", _("Default settings"));
+ s.anonymous = true;
+
+ o = s.option(form.ListValue, "speed", _("Baud rate"), _("The speed the device port should operate at."));
+ o.rmempty = false;
+ o.value(300);
+ o.value(1200);
+ o.value(2400);
+ o.value(4800);
+ o.value(9600);
+ o.value(19200);
+ o.value(38400);
+ o.value(57600);
+ o.value(115200);
+ o.default = 9600;
+
+ o = s.option(form.ListValue, "databits", _("Data bits"));
+ o.rmempty = false;
+ o.value(8);
+ o.value(7);
+ o.default = 8;
+
+ o = s.option(form.ListValue, "parity", _("Parity"));
+ o.rmempty = false;
+ o.value("none", _("None"));
+ o.value("even", _("Even"));
+ o.value("odd", _("Odd"));
+ o.default = "none";
+
+ o = s.option(form.ListValue, "stopbits", _("Stop bits"));
+ o.rmempty = false;
+ o.value(1);
+ o.value(2);
+ o.default = 1;
+
+ s.option(form.Flag, "rtscts", _("Use RTS and CTS lines"));
+ s.option(form.Flag, "local", _("Ignore modem control signals"));
+ s.option(form.Flag, "remctl", _("Allow the RFC 2217 protocol"));
+
+ return m.render();
+ }
+});
--- /dev/null
+module("luci.controller.ser2net", package.seeall)
+
+function index()
+ if not nixio.fs.access("/etc/config/ser2net") then
+ return
+ end
+
+ entry({"admin", "services", "ser2net"}, firstchild(), "ser2net").dependent = true
+ entry({"admin", "services", "ser2net", "settings"}, view("ser2net/settings"), _("Settings"), 1).leaf = false
+ entry({"admin", "services", "ser2net", "proxies"}, view("ser2net/proxies"), _("Proxies"), 2).leaf = false
+ entry({"admin", "services", "ser2net", "leds"}, view("ser2net/leds"), _("LEDs"), 3).leaf = false
+end
--- /dev/null
+{
+ "luci-app-ser2net": {
+ "description": "Grant access to LuCI app ser2net",
+ "write": {
+ "uci": [ "ser2net" ]
+ }
+ }
+}