diff options
Diffstat (limited to 'applications/luci-app-travelmate/luasrc')
15 files changed, 0 insertions, 1473 deletions
diff --git a/applications/luci-app-travelmate/luasrc/controller/travelmate.lua b/applications/luci-app-travelmate/luasrc/controller/travelmate.lua deleted file mode 100644 index fda9db16b..000000000 --- a/applications/luci-app-travelmate/luasrc/controller/travelmate.lua +++ /dev/null @@ -1,69 +0,0 @@ --- Copyright 2017-2019 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -module("luci.controller.travelmate", package.seeall) - -local sys = require("luci.sys") -local util = require("luci.util") -local http = require("luci.http") -local i18n = require("luci.i18n") -local json = require("luci.jsonc") -local uci = require("luci.model.uci").cursor() - -function index() - if not nixio.fs.access("/etc/config/travelmate") then - return - end - - local e = entry({"admin", "services", "travelmate"}, firstchild(), _("Travelmate"), 40) - e.dependent = false - e.acl_depends = { "luci-app-travelmate" } - - entry({"admin", "services", "travelmate", "tab_from_cbi"}, cbi("travelmate/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true - entry({"admin", "services", "travelmate", "stations"}, template("travelmate/stations"), _("Wireless Stations"), 20).leaf = true - entry({"admin", "services", "travelmate", "log"}, template("travelmate/logread"), _("View Logfile"), 30).leaf = true - entry({"admin", "services", "travelmate", "advanced"}, firstchild(), _("Advanced"), 100) - entry({"admin", "services", "travelmate", "advanced", "configuration"}, form("travelmate/configuration_tab"), _("Edit Travelmate Configuration"), 110).leaf = true - entry({"admin", "services", "travelmate", "advanced", "cfg_wireless"}, form("travelmate/cfg_wireless_tab"), _("Edit Wireless Configuration"), 120).leaf = true - entry({"admin", "services", "travelmate", "advanced", "cfg_network"}, form("travelmate/cfg_network_tab"), _("Edit Network Configuration"), 130).leaf = true - entry({"admin", "services", "travelmate", "advanced", "cfg_firewall"}, form("travelmate/cfg_firewall_tab"), _("Edit Firewall Configuration"), 140).leaf = true - - entry({"admin", "services", "travelmate", "logread"}, call("logread"), nil).leaf = true - entry({"admin", "services", "travelmate", "status"}, call("status_update"), nil).leaf = true - entry({"admin", "services", "travelmate", "action"}, call("trm_action"), nil).leaf = true - entry({"admin", "services", "travelmate", "wifiscan"}, template("travelmate/wifi_scan")).leaf = true - entry({"admin", "services", "travelmate", "wifiadd"}, form("travelmate/wifi_add", {hideresetbtn=true, hidesavebtn=true})).leaf = true - entry({"admin", "services", "travelmate", "wifiedit"}, form("travelmate/wifi_edit", {hideresetbtn=true, hidesavebtn=true})).leaf = true - entry({"admin", "services", "travelmate", "wifidelete"}, form("travelmate/wifi_delete", {hideresetbtn=true, hidesavebtn=true})).leaf = true - entry({"admin", "services", "travelmate", "wifiorder"}, form("travelmate/wifi_order", {hideresetbtn=true, hidesavebtn=true})).leaf = true -end - -function trm_action(name) - if name == "do_restart" then - luci.sys.call("/etc/init.d/travelmate restart >/dev/null 2>&1") - end - luci.http.prepare_content("text/plain") - luci.http.write("0") -end - -function status_update() - local rt_file - local content - - rt_file = uci:get("travelmate", "global", "trm_rtfile") or "/tmp/trm_runtime.json" - - if nixio.fs.access(rt_file) then - content = json.parse(nixio.fs.readfile(rt_file) or "") - http.prepare_content("application/json") - http.write_json(content) - end -end - -function logread() - local content = util.trim(util.exec("logread -e 'travelmate-'")) or "" - - if content == "" then - content = "No travelmate related logs yet!" - end - http.write(content) -end diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua deleted file mode 100644 index 8597912b2..000000000 --- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua +++ /dev/null @@ -1,41 +0,0 @@ --- Copyright 2017-2018 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local util = require("luci.util") -local input = "/etc/config/firewall" - -if not fs.access(input) then - m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) - return m -end - -m = SimpleForm("input", nil) -m:append(Template("travelmate/travelmate_css")) -m.submit = translate("Save") -m.reset = false - -s = m:section(SimpleSection, nil, - translate("This form allows you to modify the content of the main firewall configuration file (/etc/config/firewall).")) - -f = s:option(TextValue, "data") -f.rows = 20 -f.rmempty = true - -function f.cfgvalue() - return fs.readfile(input) or "" -end - -function f.write(self, section, data) - return fs.writefile(input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") -end - -function f.remove(self, section, value) - return fs.writefile(input, "") -end - -function s.handle(self, state, data) - return true -end - -return m diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua deleted file mode 100644 index 36a32aefe..000000000 --- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua +++ /dev/null @@ -1,41 +0,0 @@ --- Copyright 2017-2018 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local util = require("luci.util") -local input = "/etc/config/network" - -if not fs.access(input) then - m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) - return m -end - -m = SimpleForm("input", nil) -m:append(Template("travelmate/travelmate_css")) -m.submit = translate("Save") -m.reset = false - -s = m:section(SimpleSection, nil, - translate("This form allows you to modify the content of the main network configuration file (/etc/config/network).")) - -f = s:option(TextValue, "data") -f.rows = 20 -f.rmempty = true - -function f.cfgvalue() - return fs.readfile(input) or "" -end - -function f.write(self, section, data) - return fs.writefile(input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") -end - -function f.remove(self, section, value) - return fs.writefile(input, "") -end - -function s.handle(self, state, data) - return true -end - -return m diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua deleted file mode 100644 index bb6205b9b..000000000 --- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua +++ /dev/null @@ -1,41 +0,0 @@ --- Copyright 2017-2018 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local util = require("luci.util") -local input = "/etc/config/wireless" - -if not fs.access(input) then - m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) - return m -end - -m = SimpleForm("input", nil) -m:append(Template("travelmate/travelmate_css")) -m.submit = translate("Save") -m.reset = false - -s = m:section(SimpleSection, nil, - translate("This form allows you to modify the content of the main wireless configuration file (/etc/config/wireless).")) - -f = s:option(TextValue, "data") -f.rows = 20 -f.rmempty = true - -function f.cfgvalue() - return fs.readfile(input) or "" -end - -function f.write(self, section, data) - return fs.writefile(input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") -end - -function f.remove(self, section, value) - return fs.writefile(input, "") -end - -function s.handle(self, state, data) - return true -end - -return m diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua deleted file mode 100644 index c9cc587ed..000000000 --- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua +++ /dev/null @@ -1,43 +0,0 @@ --- Copyright 2017-2018 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local util = require("luci.util") -local input = "/etc/config/travelmate" - -if not fs.access(input) then - m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) - m.reset = false - m.submit = false - return m -end - -m = SimpleForm("input", nil) -m:append(Template("travelmate/travelmate_css")) -m.submit = translate("Save") -m.reset = false - -s = m:section(SimpleSection, nil, - translate("This form allows you to modify the content of the main travelmate configuration file (/etc/config/travelmate).")) - -f = s:option(TextValue, "data") -f.rows = 20 -f.rmempty = true - -function f.cfgvalue() - return fs.readfile(input) or "" -end - -function f.write(self, section, data) - return fs.writefile(input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") -end - -function f.remove(self, section, value) - return fs.writefile(input, "") -end - -function s.handle(self, state, data) - return true -end - -return m diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua deleted file mode 100644 index cc38bd97e..000000000 --- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua +++ /dev/null @@ -1,153 +0,0 @@ --- Copyright 2017-2019 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local uci = require("luci.model.uci").cursor() -local util = require("luci.util") -local nw = require("luci.model.network").init() -local fw = require("luci.model.firewall").init() -local dump = util.ubus("network.interface", "dump", {}) -local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan" -local uplink = uci:get("network", trmiface) or "" - -m = Map("travelmate", translate("Travelmate"), - translate("Configuration of the travelmate package to to enable travel router functionality. ") - .. translatef("For further information " - .. "<a href=\"%s\" target=\"_blank\">" - .. "see online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md")) -m:chain("network") -m:chain("firewall") - --- Interface Wizard - -if uplink == "" then - ds = m:section(NamedSection, "global", "travelmate", translate("Interface Wizard")) - o = ds:option(Value, "trm_iface", translate("Create Uplink interface"), - translate("Create a new wireless wan uplink interface, configure it to use dhcp and ") - .. translate("add it to the wan zone of the firewall. ") - .. translate("This step has only to be done once.")) - o.datatype = "and(uciname,rangelength(3,15))" - o.default = trmiface - o.rmempty = false - - function o.validate(self, value) - if value then - local nwnet = nw:get_network(value) - local zone = fw:get_zone("wan") - local fwnet = fw:get_zone_by_network(value) - if not nwnet then - nwnet = nw:add_network(value, { proto = "dhcp" }) - end - if zone and not fwnet then - fwnet = zone:add_network(value) - end - end - return value - end - return m -end - --- Main travelmate options - -s = m:section(NamedSection, "global", "travelmate") - -o1 = s:option(Flag, "trm_enabled", translate("Enable Travelmate")) -o1.default = o1.disabled -o1.rmempty = false - -o2 = s:option(Flag, "trm_captive", translate("Captive Portal Detection"), - translate("Check the internet availability, log captive portal redirections and keep the uplink connection 'alive'.")) -o2.default = o2.enabled -o2.rmempty = false - -o3 = s:option(Flag, "trm_netcheck", translate("Net Error Check"), - translate("Treat missing internet availability as an error.")) -o3:depends("trm_captive", 1) -o3.default = o3.disabled -o3.rmempty = false - -o4 = s:option(Flag, "trm_proactive", translate("ProActive Uplink Switch"), - translate("Proactively scan and switch to a higher prioritized uplink, despite of an already existing connection.")) -o4.default = o4.enabled -o4.rmempty = false - -o5 = s:option(Flag, "trm_autoadd", translate("Add Open Uplinks"), - translate("Automatically add open uplinks like hotel captive portals to your wireless config.")) -o5.default = o5.disabled -o5.rmempty = false - -o6 = s:option(ListValue, "trm_iface", translate("Uplink / Trigger interface"), - translate("Name of the used uplink interface.")) -if dump then - local i, v - for i, v in ipairs(dump.interface) do - if v.interface ~= "loopback" and v.interface ~= "lan" then - local device = v.l3_device or v.device or "-" - o6:value(v.interface, v.interface.. " (" ..device.. ")") - end - end -end -o6.default = trmiface -o6.rmempty = false - --- Runtime information - -ds = s:option(DummyValue, "_dummy") -ds.template = "travelmate/runtime" - --- Extra options - -e = m:section(NamedSection, "global", "travelmate", translate("Extra Options"), -translate("Options for further tweaking in case the defaults are not suitable for you.")) - -e1 = e:option(Flag, "trm_debug", translate("Enable Verbose Debug Logging")) -e1.default = e1.disabled -e1.rmempty = false - -e2 = e:option(Value, "trm_radio", translate("Radio Selection / Order"), - translate("Restrict travelmate to a single radio (e.g. 'radio1') or change the overall scanning order (e.g. 'radio1 radio2 radio0').")) -e2.rmempty = true - -e3 = e:option(Value, "trm_listexpiry", translate("List Auto Expiry"), - translate("Automatically resets the 'Faulty Stations' list after n minutes. Default is '0' which means no expiry.")) -e3.datatype = "range(0,300)" -e3.default = 0 -e3.rmempty = false - -e4 = e:option(Value, "trm_triggerdelay", translate("Trigger Delay"), - translate("Additional trigger delay in seconds before travelmate processing begins.")) -e4.datatype = "range(1,60)" -e4.default = 2 -e4.rmempty = false - -e5 = e:option(Value, "trm_maxretry", translate("Connection Limit"), - translate("Retry limit to connect to an uplink.")) -e5.default = 5 -e5.datatype = "range(1,10)" -e5.rmempty = false - -e6 = e:option(Value, "trm_minquality", translate("Signal Quality Threshold"), - translate("Minimum signal quality threshold as percent for conditional uplink (dis-) connections.")) -e6.default = 35 -e6.datatype = "range(20,80)" -e6.rmempty = false - -e7 = e:option(Value, "trm_maxwait", translate("Interface Timeout"), - translate("How long should travelmate wait for a successful wlan uplink connection.")) -e7.default = 30 -e7.datatype = "range(20,40)" -e7.rmempty = false - -e8 = e:option(Value, "trm_timeout", translate("Overall Timeout"), - translate("Overall retry timeout in seconds.")) -e8.default = 60 -e8.datatype = "range(30,300)" -e8.rmempty = false - -e10 = e:option(Value, "trm_scanbuffer", translate("Scan Buffer Size"), - translate("Buffer size in bytes to prepare nearby scan results.")) -e10.default = 1024 -e10.datatype = "range(512,4096)" -e10.optional = true - -return m diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua deleted file mode 100644 index 03c4f5bda..000000000 --- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua +++ /dev/null @@ -1,226 +0,0 @@ --- Copyright 2017-2019 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local uci = require("luci.model.uci").cursor() -local http = require("luci.http") -local util = require("luci.util") -local scripts = util.split(util.trim(util.exec("ls /etc/travelmate/*.login 2>/dev/null")), "\n", nil, true) or {} -local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan" -local encr_psk = {"psk", "psk2", "psk-mixed", "sae", "owe", "sae-mixed"} -local encr_wpa = {"wpa", "wpa2", "wpa-mixed"} - -m = SimpleForm("add", translate("Add Wireless Uplink Configuration")) -m.submit = translate("Save") -m.cancel = translate("Back to overview") -m.reset = false - -function m.on_cancel() - http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations")) -end - -m.hidden = { - device = http.formvalue("device"), - ssid = http.formvalue("ssid"), - bssid = http.formvalue("bssid"), - description = http.formvalue("description"), - wep = tonumber(http.formvalue("wep")) or 0, - wpa_suites = http.formvalue("wpa_suites"), - wpa_version = tonumber(http.formvalue("wpa_version")) or 0 -} - -if m.hidden.wpa_version == 4 then - if string.find(m.hidden.description, "OWE") then - m.hidden.wpa_version = 5 - end -end - -if m.hidden.ssid == "" then - wssid = m:field(Value, "ssid", translate("SSID (hidden)")) -else - wssid = m:field(Value, "ssid", translate("SSID")) -end -wssid.datatype = "rangelength(1,32)" -wssid.default = m.hidden.ssid or "" - -nobssid = m:field(Flag, "no_bssid", translate("Ignore BSSID")) -if m.hidden.ssid == "" then - nobssid.default = nobssid.disabled -else - nobssid.default = nobssid.enabled -end - -bssid = m:field(Value, "bssid", translate("BSSID"), - translatef("The BSSID information '%s' is optional and only required for hidden networks", m.hidden.bssid or "")) -bssid:depends("no_bssid", 0) -bssid.datatype = "macaddr" -bssid.default = m.hidden.bssid or "" - -if m.hidden.wep == 1 then - encr = m:field(ListValue, "encryption", translate("Encryption")) - encr:value("wep", "WEP") - encr:value("wep+open", "WEP Open System") - encr:value("wep+mixed", "WEP mixed") - encr:value("wep+shared", "WEP Shared Key") - encr.default = "wep+open" - - wkey = m:field(Value, "key", translate("WEP-Passphrase")) - wkey.password = true - wkey.datatype = "wepkey" -elseif m.hidden.wpa_version > 0 then - if m.hidden.wpa_suites == "802.1X" then - encr = m:field(ListValue, "encryption", translate("Encryption")) - encr:value("wpa", "WPA Enterprise") - encr:value("wpa-mixed", "WPA/WPA2 Enterprise mixed") - encr:value("wpa2", "WPA2 Enterprise") - encr.default = encr_wpa[m.hidden.wpa_version] or "wpa2" - - ciph = m:field(ListValue, "cipher", translate("Cipher")) - ciph:value("auto", translate("Automatic")) - ciph:value("ccmp", translate("Force CCMP (AES)")) - ciph:value("tkip", translate("Force TKIP")) - ciph:value("tkip+ccmp", translate("Force TKIP and CCMP (AES)")) - ciph.default = "auto" - - eaptype = m:field(ListValue, "eap_type", translate("EAP-Method")) - eaptype:value("tls", "TLS") - eaptype:value("ttls", "TTLS") - eaptype:value("peap", "PEAP") - eaptype:value("fast", "FAST") - eaptype.default = "peap" - - authentication = m:field(ListValue, "auth", translate("Authentication")) - authentication:value("PAP") - authentication:value("CHAP") - authentication:value("MSCHAP") - authentication:value("MSCHAPV2") - authentication:value("EAP-GTC") - authentication:value("EAP-MD5") - authentication:value("EAP-MSCHAPV2") - authentication:value("EAP-TLS") - authentication:value("auth=PAP") - authentication:value("auth=MSCHAPV2") - authentication.default = "EAP-MSCHAPV2" - - ident = m:field(Value, "identity", translate("Identity")) - - wkey = m:field(Value, "password", translate("Password")) - wkey.password = true - wkey.datatype = "wpakey" - - cacert = m:field(Value, "ca_cert", translate("Path to CA-Certificate")) - cacert.rmempty = true - - clientcert = m:field(Value, "client_cert", translate("Path to Client-Certificate")) - clientcert:depends("eap_type","tls") - clientcert.rmempty = true - - privkey = m:field(Value, "priv_key", translate("Path to Private Key")) - privkey:depends("eap_type","tls") - privkey.rmempty = true - - privkeypwd = m:field(Value, "priv_key_pwd", translate("Password of Private Key")) - privkeypwd:depends("eap_type","tls") - privkeypwd.datatype = "wpakey" - privkeypwd.password = true - privkeypwd.rmempty = true - else - encr = m:field(ListValue, "encryption", translate("Encryption")) - encr:value("psk", "WPA-PSK") - encr:value("psk2", "WPA2-PSK") - encr:value("psk-mixed", "WPA/WPA2 mixed") - encr:value("sae", "WPA3-SAE") - encr:value("owe", "OWE (open network)") - encr:value("sae-mixed", "WPA2/WPA3 mixed") - encr.default = encr_psk[m.hidden.wpa_version] or "psk2" - - ciph = m:field(ListValue, "cipher", translate("Cipher")) - ciph:value("auto", translate("Automatic")) - ciph:value("ccmp", translate("Force CCMP (AES)")) - ciph:value("tkip", translate("Force TKIP")) - ciph:value("tkip+ccmp", translate("Force TKIP and CCMP (AES)")) - ciph:depends("encryption", "psk") - ciph:depends("encryption", "psk2") - ciph:depends("encryption", "psk-mixed") - ciph.default = "auto" - - wkey = m:field(Value, "key", translate("WPA-Passphrase")) - wkey.password = true - wkey.datatype = "wpakey" - wkey:depends("encryption", "psk") - wkey:depends("encryption", "psk2") - wkey:depends("encryption", "psk-mixed") - wkey:depends("encryption", "sae") - wkey:depends("encryption", "sae-mixed") - end -end - -local login_section = (m.hidden.device or "") .. "_" .. (m.hidden.ssid or "") .. "_" .. (m.hidden.bssid or "") -login_section = login_section:gsub("[^%w_]", "_") -local cmd = uci:get("travelmate", login_section, "command") -local cmd_args_default = uci:get("travelmate", login_section, "command_args") -cmd_list = m:field(ListValue, "cmdlist", translate("Auto Login Script"), - translate("External script reference which will be called for automated captive portal logins.")) -cmd_args = m:field(Value, "cmdargs", translate("Optional Arguments"), - translate("Space separated list of additional arguments passed to the Auto Login Script, i.e. username and password")) -for _, z in ipairs(scripts) do - cmd_list:value(z) - cmd_args:depends("cmdlist", z) -end -cmd_list:value("none") -cmd_list.default = cmd or "none" -cmd_args.default = cmd_args_default - -function wssid.write(self, section, value) - login_section = (m.hidden.device or "") .. "_" .. (wssid:formvalue(section) or "") .. "_" .. (bssid:formvalue(section) or "") - login_section = login_section:gsub("[^%w_]", "_") - newsection = uci:section("wireless", "wifi-iface", login_section, { - mode = "sta", - network = trmiface, - device = m.hidden.device, - ssid = wssid:formvalue(section), - bssid = bssid:formvalue(section), - disabled = "1" - }) - - if encr then - if string.find(encr:formvalue(section), '^wep') then - uci:set("wireless", newsection, "encryption", encr:formvalue(section)) - uci:set("wireless", newsection, "key", wkey:formvalue(section) or "") - elseif string.find(encr:formvalue(section), '^wpa') then - uci:set("wireless", newsection, "eap_type", eaptype:formvalue(section)) - uci:set("wireless", newsection, "auth", authentication:formvalue(section)) - uci:set("wireless", newsection, "identity", ident:formvalue(section) or "") - uci:set("wireless", newsection, "password", wkey:formvalue(section) or "") - uci:set("wireless", newsection, "ca_cert", cacert:formvalue(section) or "") - uci:set("wireless", newsection, "client_cert", clientcert:formvalue(section) or "") - uci:set("wireless", newsection, "priv_key", privkey:formvalue(section) or "") - uci:set("wireless", newsection, "priv_key_pwd", privkeypwd:formvalue(section) or "") - elseif encr:formvalue(section) ~= "owe" then - uci:set("wireless", newsection, "key", wkey:formvalue(section) or "") - end - if ciph and ciph:formvalue(section) and ciph:formvalue(section) ~= "auto" then - uci:set("wireless", newsection, "encryption", encr:formvalue(section) .. "+" .. ciph:formvalue(section)) - else - uci:set("wireless", newsection, "encryption", encr:formvalue(section)) - end - else - uci:set("wireless", newsection, "encryption", "none") - end - - if not uci:get("travelmate", login_section) and cmd_list:formvalue(section) ~= "none" then - uci:set("travelmate", login_section, "login") - end - if uci:get("travelmate", login_section) then - uci:set("travelmate", login_section, "command", cmd_list:formvalue(section)) - uci:set("travelmate", login_section, "command_args", cmd_args:formvalue(section)) - uci:save("travelmate") - uci:commit("travelmate") - end - uci:save("wireless") - uci:commit("wireless") - luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1") - http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations")) -end - -return m diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_delete.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_delete.lua deleted file mode 100644 index 0a7678f7e..000000000 --- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_delete.lua +++ /dev/null @@ -1,14 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local uci = require("luci.model.uci").cursor() -local http = require("luci.http") -local cfg = http.formvalue("cfg") - -if cfg ~= nil then - uci:delete("wireless", cfg) - uci:save("wireless") - uci:commit("wireless") - luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1") -end -http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations")) diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua deleted file mode 100644 index 066dccacf..000000000 --- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua +++ /dev/null @@ -1,207 +0,0 @@ --- Copyright 2017-2019 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local uci = require("luci.model.uci").cursor() -local http = require("luci.http") -local util = require("luci.util") -local scripts = util.split(util.trim(util.exec("ls /etc/travelmate/*.login 2>/dev/null")), "\n", nil, true) or {} - -m = SimpleForm("edit", translate("Edit Wireless Uplink Configuration")) -m.submit = translate("Save") -m.cancel = translate("Back to overview") -m.reset = false - -function m.on_cancel() - http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations")) -end - -m.hidden = { - cfg = http.formvalue("cfg") -} - -local s = uci:get_all("wireless", m.hidden.cfg) - -if s ~= nil then - wssid = m:field(Value, "ssid", translate("SSID")) - wssid.datatype = "rangelength(1,32)" - wssid.default = s.ssid or "" - - bssid = m:field(Value, "bssid", translate("BSSID")) - bssid.datatype = "macaddr" - bssid.default = s.bssid or "" - - if string.match(s.encryption, '%+') and not string.match(s.encryption, '^wep') then - s.pos = string.find(s.encryption, '%+') - s.cipher = string.sub(s.encryption, s.pos + 1) - s.encryption = string.sub(s.encryption, 0, s.pos - 1) - end - - if s.encryption and s.encryption ~= "none" then - if string.match(s.encryption, '^wep') then - encr = m:field(ListValue, "encryption", translate("Encryption")) - encr:value("wep", "WEP") - encr:value("wep+open", "WEP Open System") - encr:value("wep+mixed", "WEP mixed") - encr:value("wep+shared", "WEP Shared Key") - encr.default = s.encryption - - wkey = m:field(Value, "key", translate("Passphrase")) - wkey.datatype = "wepkey" - wkey.password = true - wkey.default = s.key - elseif string.match(s.encryption, '^wpa') then - encr = m:field(ListValue, "encryption", translate("Encryption")) - encr:value("wpa", "WPA Enterprise") - encr:value("wpa-mixed", "WPA/WPA2 Enterprise mixed") - encr:value("wpa2", "WPA2 Enterprise") - encr.default = s.encryption - - ciph = m:field(ListValue, "cipher", translate("Cipher")) - ciph:value("auto", translate("Automatic")) - ciph:value("ccmp", translate("Force CCMP (AES)")) - ciph:value("tkip", translate("Force TKIP")) - ciph:value("tkip+ccmp", translate("Force TKIP and CCMP (AES)")) - ciph.default = s.cipher - - eaptype = m:field(ListValue, "eap_type", translate("EAP-Method")) - eaptype:value("tls", "TLS") - eaptype:value("ttls", "TTLS") - eaptype:value("peap", "PEAP") - eaptype:value("fast", "FAST") - eaptype.default = s.eap_type or "peap" - - authentication = m:field(ListValue, "auth", translate("Authentication")) - authentication:value("PAP") - authentication:value("CHAP") - authentication:value("MSCHAP") - authentication:value("MSCHAPV2") - authentication:value("EAP-GTC") - authentication:value("EAP-MD5") - authentication:value("EAP-MSCHAPV2") - authentication:value("EAP-TLS") - authentication:value("auth=PAP") - authentication:value("auth=MSCHAPV2") - authentication.default = s.auth or "EAP-MSCHAPV2" - - ident = m:field(Value, "identity", translate("Identity")) - ident.default = s.identity or "" - - wkey = m:field(Value, "password", translate("Passphrase")) - wkey.datatype = "wpakey" - wkey.password = true - wkey.default = s.password - - cacert = m:field(Value, "ca_cert", translate("Path to CA-Certificate")) - cacert.rmempty = true - cacert.default = s.ca_cert or "" - - clientcert = m:field(Value, "client_cert", translate("Path to Client-Certificate")) - clientcert:depends("eap_type","tls") - clientcert.rmempty = true - clientcert.default = s.client_cert or "" - - privkey = m:field(Value, "priv_key", translate("Path to Private Key")) - privkey:depends("eap_type","tls") - privkey.rmempty = true - privkey.default = s.priv_key or "" - - privkeypwd = m:field(Value, "priv_key_pwd", translate("Password of Private Key")) - privkeypwd:depends("eap_type","tls") - privkeypwd.datatype = "wpakey" - privkeypwd.password = true - privkeypwd.rmempty = true - privkeypwd.default = s.priv_key_pwd or "" - else - encr = m:field(ListValue, "encryption", translate("Encryption")) - encr:value("psk", "WPA-PSK") - encr:value("psk2", "WPA2-PSK") - encr:value("psk-mixed", "WPA/WPA2 mixed") - encr:value("sae", "WPA3-SAE") - encr:value("owe", "OWE (open network)") - encr:value("sae-mixed", "WPA2/WPA3 mixed") - encr.default = s.encryption - - ciph = m:field(ListValue, "cipher", translate("Cipher")) - ciph:value("auto", translate("Automatic")) - ciph:value("ccmp", translate("Force CCMP (AES)")) - ciph:value("tkip", translate("Force TKIP")) - ciph:value("tkip+ccmp", translate("Force TKIP and CCMP (AES)")) - ciph:depends("encryption", "psk") - ciph:depends("encryption", "psk2") - ciph:depends("encryption", "psk-mixed") - ciph.default = s.cipher or "auto" - - wkey = m:field(Value, "key", translate("Passphrase")) - wkey.datatype = "wpakey" - wkey.password = true - wkey:depends("encryption", "psk") - wkey:depends("encryption", "psk2") - wkey:depends("encryption", "psk-mixed") - wkey:depends("encryption", "sae") - wkey:depends("encryption", "sae-mixed") - wkey.default = s.key - end - end -else - m.on_cancel() -end - -local login_section = (s.device or "") .. "_" .. (s.ssid or "") .. "_" .. (s.bssid or "") -login_section = login_section:gsub("[^%w_]", "_") -local cmd = uci:get("travelmate", login_section, "command") -local cmd_args_default = uci:get("travelmate", login_section, "command_args") -cmd_list = m:field(ListValue, "cmdlist", translate("Auto Login Script"), - translate("External script reference which will be called for automated captive portal logins.")) -cmd_args = m:field(Value, "cmdargs", translate("Optional Arguments"), - translate("Space separated list of additional arguments passed to the Auto Login Script, i.e. username and password")) -for _, z in ipairs(scripts) do - cmd_list:value(z) - cmd_args:depends("cmdlist", z) -end -cmd_list:value("none") -cmd_list.default = cmd or "none" -cmd_args.default = cmd_args_default - -function wssid.write(self, section, value) - uci:set("wireless", m.hidden.cfg, "ssid", wssid:formvalue(section)) - uci:set("wireless", m.hidden.cfg, "bssid", bssid:formvalue(section)) - if encr then - if string.find(encr:formvalue(section), '^wep') then - uci:set("wireless", m.hidden.cfg, "encryption", encr:formvalue(section)) - uci:set("wireless", m.hidden.cfg, "key", wkey:formvalue(section) or "") - elseif string.find(encr:formvalue(section), '^wpa') then - uci:set("wireless", m.hidden.cfg, "eap_type", eaptype:formvalue(section)) - uci:set("wireless", m.hidden.cfg, "auth", authentication:formvalue(section)) - uci:set("wireless", m.hidden.cfg, "identity", ident:formvalue(section) or "") - uci:set("wireless", m.hidden.cfg, "password", wkey:formvalue(section) or "") - uci:set("wireless", m.hidden.cfg, "ca_cert", cacert:formvalue(section) or "") - uci:set("wireless", m.hidden.cfg, "client_cert", clientcert:formvalue(section) or "") - uci:set("wireless", m.hidden.cfg, "priv_key", privkey:formvalue(section) or "") - uci:set("wireless", m.hidden.cfg, "priv_key_pwd", privkeypwd:formvalue(section) or "") - elseif encr:formvalue(section) ~= "owe" then - uci:set("wireless", m.hidden.cfg, "key", wkey:formvalue(section) or "") - end - if ciph and ciph:formvalue(section) and ciph:formvalue(section) ~= "auto" then - uci:set("wireless", m.hidden.cfg, "encryption", encr:formvalue(section) .. "+" .. ciph:formvalue(section)) - else - uci:set("wireless", m.hidden.cfg, "encryption", encr:formvalue(section)) - end - end - - if not uci:get("travelmate", login_section) and cmd_list:formvalue(section) ~= "none" then - uci:set("travelmate", login_section, "login") - end - if uci:get("travelmate", login_section) then - uci:set("travelmate", login_section, "command", cmd_list:formvalue(section)) - uci:set("travelmate", login_section, "command_args", cmd_args:formvalue(section)) - uci:save("travelmate") - uci:commit("travelmate") - end - uci:save("wireless") - uci:commit("wireless") - luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1") - m.on_cancel() -end - -return m diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_order.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_order.lua deleted file mode 100644 index 6eb4c7206..000000000 --- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_order.lua +++ /dev/null @@ -1,36 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local http = require("luci.http") -local cfg = http.formvalue("cfg") -local dir = http.formvalue("dir") -local uci = require("luci.model.uci").cursor() -local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan" - -if cfg ~= nil then - local section = "" - local idx = "" - local idx_change = "" - local changed = "" - uci:foreach("wireless", "wifi-iface", function(s) - local iface = s.network or "" - if iface == trmiface then - section = s['.name'] - if cfg == section then - idx = s['.index'] - else - idx_change = s['.index'] - end - if (dir == "up" and idx ~= "" and idx_change ~= "" and idx_change < idx) or - (dir == "down" and idx ~= "" and idx_change ~= "" and idx_change > idx) then - changed = uci:reorder("wireless", cfg, idx_change) - idx = "" - end - end - end) - if changed ~= "" then - uci:save("wireless") - uci:commit("wireless") - end -end -http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations")) diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm deleted file mode 100644 index 221f915f8..000000000 --- a/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm +++ /dev/null @@ -1,36 +0,0 @@ -<%# -Copyright 2017-2018 Dirk Brenken (dev@brenken.org) -This is free software, licensed under the Apache License, Version 2.0 --%> - -<%+header%> -<%+travelmate/travelmate_css%> - -<script type="text/javascript"> -//<![CDATA[ - function log_update() - { - XHR.poll(-1, '<%=luci.dispatcher.build_url("admin", "services", "travelmate", "logread")%>', null, - function(x) - { - if (!x) - { - return; - } - var view = document.getElementById("view_id"); - view.value = x.responseText; - view.scrollTop = view.scrollHeight; - }); - } - window.onload = log_update(); -//]]> -</script> - -<div class="cbi-map"> - <div class="cbi-section"> - <div class="cbi-section-descr"><%:The syslog output, pre-filtered for travelmate related messages only.%></div> - <textarea id="view_id" readonly="readonly" wrap="off" value=""></textarea> - </div> -</div> - -<%+footer%> diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm deleted file mode 100644 index d8625ff30..000000000 --- a/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm +++ /dev/null @@ -1,223 +0,0 @@ -<%# -Copyright 2017-2019 Dirk Brenken (dev@brenken.org) -This is free software, licensed under the Apache License, Version 2.0 --%> - -<%+travelmate/travelmate_css%> -<script type="text/javascript"> -//<![CDATA[ - function status_update(json) - { - var btn1 = document.getElementById("btn1"); - var view = document.getElementById("value_1"); - var input = json.data.travelmate_status; - - btn1.value = "<%:Restart%>"; - btn1.name = "do_restart"; - view.innerHTML = input || "-"; - view = document.getElementById("value_2"); - input = json.data.travelmate_version; - view.innerHTML = input || "-"; - view = document.getElementById("value_3"); - input = json.data.station_id; - view.innerHTML = input || "-"; - view = document.getElementById("value_4"); - input = json.data.station_interface; - view.innerHTML = input || "-"; - view = document.getElementById("value_5"); - input = json.data.faulty_stations; - view.innerHTML = input || "-"; - view = document.getElementById("value_6"); - input = json.data.wpa_capabilities; - view.innerHTML = input || "-"; - view = document.getElementById("value_7"); - input = json.data.last_rundate; - view.innerHTML = input || "-"; - } - - function btn_action(action) - { - var btn1 = document.getElementById("btn1"); - var btn1_running = document.getElementById("btn1_running"); - - btn1.disabled = true; - running(btn1_running, 1); - - new XHR.get('<%=luci.dispatcher.build_url("admin", "services", "travelmate")%>/action/' + action.name, null, - function(x) - { - if (!x) - { - return; - } - btn1.disabled = false; - running(btn1_running, 0); - }); - } - - function running(element, state) - { - if (state === 1) - { - var running_html = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" width="16" height="16" style="vertical-align:middle" />'; - element.innerHTML = running_html; - } - else - { - element.innerHTML = ''; - } - } - - function toggle_qrcode() { - var view = document.getElementById("qrcode"); - if (view.style.display === "none") { - view.style.display = "block"; - } else { - view.style.display = "none"; - } - } - - XHR.get('<%=luci.dispatcher.build_url("admin", "services", "travelmate", "status")%>', null, - function(x, json_info) - { - if (!x || !json_info) - { - return; - } - status_update(json_info) - }); - - XHR.poll(-1, '<%=luci.dispatcher.build_url("admin", "services", "travelmate", "status")%>', null, - function(x, json_info) - { - if (!x || !json_info) - { - return; - } - status_update(json_info) - }); -//]]> -</script> - -<h3><%:Runtime Information%></h3> -<div class="cbi-value" id="status_1"> - <label class="cbi-value-title" for="status_1"><%:Travelmate Status (Quality)%></label> - <div class="cbi-value-field"> - <span class="runtime" id="value_1">-</span> - </div> -</div> -<div class="cbi-value" id="status_2"> - <label class="cbi-value-title" for="status_2"><%:Travelmate Version%></label> - <div class="cbi-value-field"> - <span class="runtime" id="value_2">-</span> - </div> -</div> -<div class="cbi-value" id="status_3"> - <label class="cbi-value-title" for="status_3"><%:Station ID (RADIO/SSID/BSSID)%></label> - <div class="cbi-value-field"> - <span class="runtime" id="value_3">-</span> - </div> -</div> -<div class="cbi-value" id="status_4"> - <label class="cbi-value-title" for="status_4"><%:Station Interface%></label> - <div class="cbi-value-field"> - <span class="runtime" id="value_4">-</span> - </div> -</div> -<div class="cbi-value" id="status_5"> - <label class="cbi-value-title" for="status_5"><%:Faulty Stations%></label> - <div class="cbi-value-field"> - <span class="runtime" id="value_5">-</span> - </div> -</div> -<div class="cbi-value" id="status_6"> - <label class="cbi-value-title" for="status_6"><%:WPA Capabilities%></label> - <div class="cbi-value-field"> - <span class="runtime" id="value_6">-</span> - </div> -</div> -<div class="cbi-value" id="status_7"> - <label class="cbi-value-title" for="status_7"><%:Last Run%></label> - <div class="cbi-value-field"> - <span class="runtime" id="value_7">-</span> - </div> -</div> -<hr /> -<div class="cbi-value" id="button_1"> - <label class="cbi-value-title" for="button_1"><%:Restart Travelmate%></label> - <div class="cbi-value-field"> - <input class="cbi-button cbi-button-reset" id="btn1" type="button" name="do_restart" value="<%:Restart%>" onclick="btn_action(this)" /> - <span id="btn1_running" class="btn_running"></span> - </div> -</div> -<div class="cbi-value" id="button_2"> - <label class="cbi-value-title" for="button_2"><%:View AP QR-Codes%></label> - <div class="cbi-value-field"> - <input class="cbi-button cbi-button-apply" type="button" value="<%:Show/Hide QR-Codes%>" onclick="toggle_qrcode()" /> - </div> -</div> -<div class="cbi-value" style="margin-bottom: 0px"> - <span class="cbi-value" style="display: none" id="qrcode"> -<%- - local fs = require("nixio.fs") - local uci = require("luci.model.uci").cursor() - local qrcode - - uci:foreach("wireless", "wifi-iface", function(s) - local device = s.device or "" - local mode = s.mode or "" - local ssid = s.ssid or "" - local enc = s.encryption or "" - local key = s.key or "" - local hidden = s.hidden or "false" - local disabled = s.disabled or "" - local wep_slots = {s.key1 or "", s.key2 or "", s.key3 or "", s.key4 or ""} - - if device and mode == "ap" and disabled ~= "1" then - if string.match(enc, '^psk') then - enc = "WPA" - elseif string.match(enc, '^wep') then - enc = "WEP" - if tonumber(key) then - key = wep_slots[tonumber(key)] - end - elseif enc == "none" then - enc = "nopass" - key = "nokey" - else - enc = "" - end - - if hidden == "1" then - hidden = "true" - end - - if ssid and enc and key then - local e_ssid = string.gsub(ssid,"[\"\\';:,()&`|<> ]",[[\\\%1]]) - local e_key = string.gsub(key,"[\"\\';:,()&`|<> ]",[[\\\%1]]) - - if fs.access("/usr/bin/qrencode") then - qrcode = luci.sys.exec("/usr/bin/qrencode --inline --8bit --type=SVG --output=- 'WIFI:S:\"'" .. e_ssid .. "'\";T:'" .. enc .. "';P:\"'" .. e_key .. "'\";H:'" .. hidden .. "';'") --%> - <div class="qr-code"> - <%=qrcode%> - </div> - <div class="qr-code"> - <em><%:AP on %><%=device%><%: with SSID %>"<%=ssid%>"</em> - <hr /> - </div> -<%- - end - end - end - end) - if not qrcode then --%> - <div class="qr-code"> - <em><%:For QR-Code support please install package 'qrencode'!%></em> - </div> -<%- - end --%> - </span> -</div> diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm deleted file mode 100644 index e6d297cd9..000000000 --- a/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm +++ /dev/null @@ -1,154 +0,0 @@ -<%# -Copyright 2017-2019 Dirk Brenken (dev@brenken.org) -This is free software, licensed under the Apache License, Version 2.0 --%> - -<%- - local uci = require("luci.model.uci").cursor() - local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan" --%> - -<%+header%> - -<script type="text/javascript"> -//<![CDATA[ - function status_update(json) - { - var i; - var j; - var search; - var view; - var list; - var status = json.data.travelmate_status; - var faulty = json.data.faulty_stations; - - if (faulty) - { - var faulty_array = faulty.split(' '); - for (i = 0; i < faulty_array.length; i++) - { - for (j = 1; j <= 5; j++) - { - search = j + "_" + faulty_array[i]; - view = document.getElementById(search); - if (view) - { - view.setAttribute("name", "station_nok"); - view.setAttribute("style", "text-align: left !important; color: #a22; font-weight: bold"); - } - } - } - } - else - { - list = document.getElementsByName("station_nok"); - if (list.length > 0) - { - for (i = 0; i < list.length; i++) - { - list[i].removeAttribute("style"); - } - } - } - - if (status.startsWith("connected")) - { - for (i = 1; i <= 5; i++) - { - search = i + "_" + json.data.station_id; - view = document.getElementById(search); - if (view) - { - view.setAttribute("style", "text-align: left !important; color: #37c; font-weight: bold"); - } - } - } - else - { - list = document.getElementsByName("station_ok"); - if (list.length > 0) - { - for (i = 0; i < list.length; i++) - { - list[i].removeAttribute("style"); - } - } - } - } - - XHR.get('<%=luci.dispatcher.build_url("admin", "services", "travelmate", "status")%>', null, - function(x, json_info) - { - if (!x || !json_info) - { - return; - } - status_update(json_info) - }); - - XHR.poll(-1, '<%=luci.dispatcher.build_url("admin", "services", "travelmate", "status")%>', null, - function(x, json_info) - { - if (!x || !json_info) - { - return; - } - status_update(json_info) - }); -//]]> -</script> - -<div class="cbi-map"> - <div class="cbi-map-descr"> - <%=translatef("Provides an overview of all configured uplinks for the travelmate interface (%s). You can edit, remove or re-order/prioritize existing uplinks or scan for new ones. The currently used uplink is emphasized in blue, faulty stations in red.", trmiface)%> - </div> - - <div class="cbi-section"> - <div class="table cbi-section-table"> - <div class="tr cbi-section-table-titles"> - <div class="th left"><%:Device%></div> - <div class="th left"><%:SSID%></div> - <div class="th left"><%:BSSID%></div> - <div class="th left"><%:Encryption%></div> - <div class="th center"><%:Action%></div> - </div> - <%- uci:foreach("wireless", "wifi-iface", function(s) - local iface = s.network or "" - if iface == trmiface then - local section = s['.name'] or "" - local device = s.device or "-" - local ssid = s.ssid or "-" - local bssid = s.bssid or "-" - local encr = s.encryption or "-" - -%> - <div class="tr cbi-section-table-row cbi-rowstyle-1" name="station_ok" id="1_<%=device%>/<%=ssid%>/<%=bssid%>"> - <div class="td left" style="text-align: left !important" name="station_ok" id="2_<%=device%>/<%=ssid%>/<%=bssid%>"><%=device%></div> - <div class="td left" style="text-align: left !important" name="station_ok" id="3_<%=device%>/<%=ssid%>/<%=bssid%>"><%=ssid%></div> - <div class="td left" style="text-align: left !important" name="station_ok" id="4_<%=device%>/<%=ssid%>/<%=bssid%>"><%=bssid%></div> - <div class="td left" style="text-align: left !important" name="station_ok" id="5_<%=device%>/<%=ssid%>/<%=bssid%>"><%=encr%></div> - <div class="td middle cbi-section-actions"> - <div> - <input class="cbi-button cbi-button-up" type="button" value="<%:Up%>" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>&dir=up'" alt="<%:Move up%>" title="<%:Move up%>" /> - <input class="cbi-button cbi-button-down" type="button" value="<%:Down%>" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>&dir=down'" alt="<%:Move down%>" title="<%:Move down%>" /> - <input class="cbi-button cbi-button-edit" type="button" value="<%:Edit%>" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiedit')%>?cfg=<%=section%>'" title="<%:Edit this Uplink%>" /> - <input class="cbi-button cbi-button-remove" type="button" value="<%:Remove%>" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifidelete')%>?cfg=<%=section%>'" title="<%:Remove this Uplink%>" /> - </div> - </div> - </div> - <%- end; end) -%> - </div> - </div> - <div class="cbi-page-actions right"> - <%- uci:foreach("wireless", "wifi-device", function(s) - local device = s[".name"] - local hwmode = s.hwmode or "-" -%> - <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiscan')%>" method="post"> - <input type="hidden" name="device" value="<%=device%>" /> - <input type="hidden" name="token" value="<%=token%>" /> - <input type="submit" class="cbi-button cbi-button-action important" title="<%:Find and join network on%> <%=device%>" value="<%:Scan%> <%=device%> (<%=hwmode%>)" /> - </form> - <%- end) -%> - </div> -</div> - -<%+footer%> diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/travelmate_css.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/travelmate_css.htm deleted file mode 100644 index 36b008186..000000000 --- a/applications/luci-app-travelmate/luasrc/view/travelmate/travelmate_css.htm +++ /dev/null @@ -1,94 +0,0 @@ -<style type="text/css"> - textarea - { - width: 100% !important; - height: 450px !important; - border: 1px solid #cccccc; - padding: 5px; - font-size: 12px; - font-family: monospace; - resize: none; - white-space: pre; - overflow-wrap: normal; - overflow-x: scroll; - } - - select[readonly], - textarea[readonly] - { - width: 100% !important; - height: 450px !important; - border: 1px solid #cccccc; - padding: 5px; - font-size: 12px; - font-family: monospace; - resize: none; - pointer-events: auto; - cursor: auto; - } - - .table.cbi-section-table .th, - .table.cbi-section-table .td, - .cbi-section-table-cell, - .cbi-section-table-row, - .tr[data-title]::before - { - text-align: left !important; - vertical-align: top; - margin-left: 0px; - padding-left: 2px; - } - - .table.cbi-section-table .th - { - white-space: nowrap; - } - - .cbi-section-table-row > .cbi-value-field .cbi-input-select, - .table.cbi-section-table select - { - width: 70px; - } - - .item, - .add-item - { - white-space: nowrap; - width: 8.2em; - } - - .cbi-input-checkbox - { - height: 1em; - } - - .cbi-button - { - -webkit-appearance: menulist; - } - - .runtime - { - color: #37c; - font-weight: bold; - display: inline-block; - width: 100%; - padding-top: 0.5rem; - } - - .qr-code - { - border-bottom: 0px; - margin-bottom: 0px; - padding: 0.25em 0.6em; - text-align: left - } - - .button_running - { - display: inline-block; - width: 16px; - height: 16px; - margin: 0 5px; - } -</style> diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm deleted file mode 100644 index 491af1d92..000000000 --- a/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm +++ /dev/null @@ -1,95 +0,0 @@ -<%# -Copyright 2017-2020 Dirk Brenken (dev@brenken.org) -This is free software, licensed under the Apache License, Version 2.0 --%> - -<%- - local sys = require("luci.sys") - local utl = require("luci.util") - local xml = require("luci.xml") - local dev = luci.http.formvalue("device") - local ifn = utl.trim(sys.exec("/bin/ubus -S call network.wireless status 2>/dev/null | jsonfilter -l1 -e '@." .. dev .. ".interfaces[@.config.mode=\"sta\"].ifname' 2>/dev/null")) - local iw - - if ifn ~= "" then - iw = sys.wifi.getiwinfo(ifn) - else - iw = sys.wifi.getiwinfo(dev) - end - - if not iw then - luci.http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations")) - end - - function percent_wifi_signal(info) - local qc = info.quality or 0 - local qm = info.quality_max or 0 - if info.bssid and qc > 0 and qm > 0 then - return math.floor((100 / qm) * qc) - else - return 0 - end - end --%> - -<%+header%> - -<div class="cbi-map"> - <h3><%:Wireless Scan%></h3> - <div class="cbi-section"> - <div class="table cbi-section-table"> - <div class="tr cbi-section-table-titles"> - <div class="th left"><%:Uplink SSID%></div> - <div class="th left"><%:Uplink BSSID%></div> - <div class="th left"><%:Encryption%></div> - <div class="th left"><%:Signal strength%></div> - <div class="th center"><%:Action%></div> - </div> - <%- for i, net in ipairs(iw.scanlist or { }) do -%> - <div class="tr cbi-section-table-row cbi-rowstyle-1"> - <div class="td left" style="text-align: left !important"> - <%=net.ssid and xml.pcdata(net.ssid) or "<em>%s</em>" % translate("hidden")%> - </div> - <div class="td left" style="text-align: left !important"> - <%=net.bssid and xml.pcdata(net.bssid)%> - </div> - <div class="td left" style="text-align: left !important"> - <%=net.encryption.description%> - </div> - <div class="td left" style="text-align: left !important"> - <%=percent_wifi_signal(net)%> % - </div> - <div class="td cbi-section-actions"> - <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiadd')%>" method="post"> - <input type="hidden" name="token" value="<%=token%>"/> - <input type="hidden" name="device" value="<%=xml.pcdata(dev)%>"/> - <input type="hidden" name="ssid" value="<%=xml.pcdata(net.ssid)%>"/> - <input type="hidden" name="bssid" value="<%=xml.pcdata(net.bssid)%>"/> - <input type="hidden" name="description" value="<%=net.encryption.description%>"/> - <input type="hidden" name="wep" value="<%=net.encryption.wep and 1 or 0%>"/> - <%- if net.encryption.wpa then -%> - <input type="hidden" name="wpa_version" value="<%=net.encryption.wpa%>"/> - <%- for _, v in ipairs(net.encryption.auth_suites) do -%> - <input type="hidden" name="wpa_suites" value="<%=v%>"/> - <%- end -%> - <%- end -%> - <input class="cbi-button cbi-button-apply" type="submit" value="<%:Add Uplink%>"/> - </form> - </div> - </div> - <%- end -%> - </div> - </div> - <div class="cbi-page-actions right"> - <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/stations')%>" method="get"> - <input class="cbi-button cbi-button-reset" type="submit" value="<%:Back to overview%>"/> - </form> - <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiscan')%>" method="post"> - <input type="hidden" name="token" value="<%=token%>"/> - <input type="hidden" name="device" value="<%=xml.pcdata(dev)%>"/> - <input class="cbi-button cbi-input-find" type="submit" value="<%:Repeat scan%>"/> - </form> - </div> -</div> - -<%+footer%> |