diff options
Diffstat (limited to 'applications/luci-app-travelmate/luasrc/model/cbi')
9 files changed, 86 insertions, 55 deletions
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 index 009ed805db..e5a048fa88 100644 --- 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 @@ -12,6 +12,7 @@ end m = SimpleForm("input", nil) m:append(Template("travelmate/config_css")) +m.submit = translate("Save") m.reset = false s = m:section(SimpleSection, nil, 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 index 4d43637d9c..0096d6a8c2 100644 --- 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 @@ -12,6 +12,7 @@ end m = SimpleForm("input", nil) m:append(Template("travelmate/config_css")) +m.submit = translate("Save") m.reset = false s = m:section(SimpleSection, nil, 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 index a025c1379f..7ef9920a08 100644 --- 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 @@ -12,6 +12,7 @@ end m = SimpleForm("input", nil) m:append(Template("travelmate/config_css")) +m.submit = translate("Save") m.reset = false s = m:section(SimpleSection, nil, 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 index 4233da6ac7..8a20ab9cce 100644 --- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua +++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua @@ -14,6 +14,7 @@ end m = SimpleForm("input", nil) m:append(Template("travelmate/config_css")) +m.submit = translate("Save") m.reset = false s = m:section(SimpleSection, nil, 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 index 64ab880c4d..add52317b4 100644 --- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua +++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua @@ -4,8 +4,8 @@ local fs = require("nixio.fs") local uci = require("luci.model.uci").cursor() local json = require("luci.jsonc") -local nw = require("luci.model.network").init() -local fw = require("luci.model.firewall").init() +local nw = require("luci.model.network").init() +local fw = require("luci.model.firewall").init() local trmiface = uci.get("travelmate", "global", "trm_iface") or "trm_wwan" local trminput = uci.get("travelmate", "global", "trm_rtfile") or "/tmp/trm_runtime.json" local uplink = uci.get("network", trmiface) or "" @@ -18,7 +18,7 @@ m = Map("travelmate", translate("Travelmate"), .. "see online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md")) function m.on_after_commit(self) - luci.sys.call("/etc/init.d/travelmate restart >/dev/null 2>&1") + luci.sys.call("env -i /etc/init.d/travelmate restart >/dev/null 2>&1") luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate")) end @@ -27,43 +27,38 @@ s = m:section(NamedSection, "global", "travelmate") -- Interface Wizard if uplink == "" then - dv = s:option(DummyValue, "nil", translate("Interface Wizard")) + dv = s:option(DummyValue, "", translate("Interface Wizard")) dv.template = "cbi/nullsection" - o = s:option(Value, "trm_iface", translate("Uplink interface")) + o = s:option(Value, "", translate("Uplink interface")) o.datatype = "and(uciname,rangelength(3,15))" - o.default = "trm_wwan" + o.default = trmiface o.rmempty = false - function o.validate(self, value) - iface = value - return iface - end - - function o.write(self, section, value) - uci:set("travelmate", section, "trm_iface", iface) - uci:save("travelmate") - uci:commit("travelmate") - end - - btn = s:option(Button, "", translate("Create Uplink Interface"), + btn = s:option(Button, "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. This step has only to be done once.")) btn.inputtitle = translate("Add Interface") btn.inputstyle = "apply" btn.disabled = false - function btn.write() - local net = nw:add_network(iface, { proto = "dhcp" }) - if net then - nw:save("network") - nw:commit("network") - local zone = fw:get_zone_by_network("wan") - if zone then - zone:add_network(iface) - fw:save("firewall") - fw:commit("firewall") - luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1") + function btn.write(self, section, value) + local iface = o:formvalue(section) + if iface then + uci:set("travelmate", section, "trm_iface", iface) + uci:save("travelmate") + uci:commit("travelmate") + local net = nw:add_network(iface, { proto = "dhcp" }) + if net then + nw:save("network") + nw:commit("network") + local zone = fw:get_zone_by_network("wan") + if zone then + zone:add_network(iface) + fw:save("firewall") + fw:commit("firewall") + end end + luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1") end luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate")) end @@ -77,14 +72,24 @@ o1.default = o1.disabled o1.rmempty = false o2 = s:option(Flag, "trm_automatic", translate("Enable 'automatic' mode"), - translate("Keep travelmate in an active state.")) + translate("Keep travelmate in an active state. Check every n seconds the connection status, i.e. the uplink availability.")) o2.default = o2.enabled o2.rmempty = false +btn = s:option(Button, "", translate("Manual Rescan")) +btn:depends("trm_automatic", "") +btn.inputtitle = translate("Rescan") +btn.inputstyle = "find" +btn.disabled = false +function btn.write() + luci.sys.call("env -i /etc/init.d/travelmate start >/dev/null 2>&1") + luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate")) +end + o3 = s:option(Value, "trm_iface", translate("Uplink / Trigger interface"), - translate("Name of the uplink interface that triggers travelmate processing.")) + translate("Name of the uplink interface that triggers travelmate processing in 'manual' mode.")) o3.datatype = "and(uciname,rangelength(3,15))" -o3.default = "trm_wwan" +o3.default = trmiface o3.rmempty = false o4 = s:option(Value, "trm_triggerdelay", translate("Trigger delay"), @@ -159,6 +164,7 @@ translate("Options for further tweaking in case the defaults are not suitable fo e1 = e:option(Value, "trm_radio", translate("Radio selection"), translate("Restrict travelmate to a dedicated radio, e.g. 'radio0'")) +e1.datatype = "and(uciname,rangelength(6,6))" e1.rmempty = true e2 = e:option(Value, "trm_maxretry", translate("Connection Limit"), @@ -176,7 +182,7 @@ e3.rmempty = false e4 = e:option(Value, "trm_timeout", translate("Overall Timeout"), translate("Timeout in seconds between retries in 'automatic' mode")) e4.default = 60 -e4.datatype = "range(5,300)" +e4.datatype = "range(60,300)" e4.rmempty = false 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 index 979307e001..dcfa17c8b5 100644 --- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua +++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua @@ -7,6 +7,7 @@ local http = require("luci.http") local trmiface = uci.get("travelmate", "global", "trm_iface") or "trm_wwan" m = SimpleForm("add", translate("Add Wireless Uplink Configuration")) +m.submit = translate("Save") m.cancel = translate("Back to overview") m.reset = false @@ -18,7 +19,7 @@ m.hidden = { device = http.formvalue("device"), ssid = http.formvalue("ssid"), wep = http.formvalue("wep"), - wpa_suites = http.formvalue("wpa_suites"), + wpa_suites = http.formvalue("wpa_suites"), wpa_version = http.formvalue("wpa_version") } @@ -45,11 +46,11 @@ end function wssid.write(self, section, value) newsection = uci:section("wireless", "wifi-iface", nil, { - mode = "sta", - network = trmiface, - device = m.hidden.device, - ssid = wssid:formvalue(section), - disabled = "1" + mode = "sta", + network = trmiface, + device = m.hidden.device, + ssid = wssid:formvalue(section), + disabled = "1" }) if (tonumber(m.hidden.wep) or 0) == 1 then uci:set("wireless", newsection, "encryption", "wep-open") 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 index 97ec1ca3ca..0c3cc1865b 100644 --- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_delete.lua +++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_delete.lua @@ -10,5 +10,4 @@ if cfg ~= nil then uci:save("wireless") uci:commit("wireless") 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 index 0bae98460f..c60ff22c4d 100644 --- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua +++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua @@ -6,6 +6,7 @@ local uci = require("luci.model.uci").cursor() local http = require("luci.http") m = SimpleForm("edit", translate("Edit Wireless Uplink Configuration")) +m.submit = translate("Save") m.cancel = translate("Back to overview") m.reset = false @@ -21,11 +22,15 @@ local s = uci:get_all("wireless", m.hidden.cfg) if s ~= nil then wssid = m:field(Value, "ssid", translate("SSID")) wssid.default = s.ssid - + wssid.datatype = "rangelength(1,32)" if s.encryption and s.key then wkey = m:field(Value, "key", translatef("Passphrase (%s)", s.encryption)) + elseif s.encryption and s.password then + wkey = m:field(Value, "password", translatef("Passphrase (%s)", s.encryption)) + end + if s.encryption and (s.key or s.password) then wkey.password = true - wkey.default = s.key + wkey.default = s.key or s.password if s.encryption == "wep" then wkey.datatype = "wepkey" else @@ -33,17 +38,19 @@ if s ~= nil then end end else - http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations")) + m.on_cancel() end function wssid.write(self, section, value) uci:set("wireless", m.hidden.cfg, "ssid", wssid:formvalue(section)) if s.encryption and s.key then uci:set("wireless", m.hidden.cfg, "key", wkey:formvalue(section)) + elseif s.encryption and s.password then + uci:set("wireless", m.hidden.cfg, "password", wkey:formvalue(section)) end uci:save("wireless") uci:commit("wireless") - http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations")) + 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 index 5734841030..6eb4c72063 100644 --- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_order.lua +++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_order.lua @@ -1,22 +1,36 @@ -- 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") -local pos = http.formvalue("pos") 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 - if dir == "up" then - pos = pos - 1 - uci:reorder("wireless", cfg, pos) - elseif dir == "down" then - pos = pos + 1 - uci:reorder("wireless", cfg, pos) + 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 - uci:save("wireless") - uci:commit("wireless") end - http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations")) |