luci-app-travelmate: sync with 1.4.10 2967/head
authorDirk Brenken <dev@brenken.org>
Tue, 6 Aug 2019 09:42:04 +0000 (11:42 +0200)
committerDirk Brenken <dev@brenken.org>
Tue, 6 Aug 2019 14:01:53 +0000 (16:01 +0200)
* wifi add/edit: add a select box to reference an external script
  for automated captive portal logins
* fix a visual issue with material theme

Signed-off-by: Dirk Brenken <dev@brenken.org>
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua
applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm
applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm

index 83011e9dd5fcdbbedddadf30d92590f5b5747ec4..2c2625dbcaed65ce9901aa84488ffa1fcce7a967 100644 (file)
@@ -1,9 +1,11 @@
--- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
+-- 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"}
 local encr_wpa = {"wpa", "wpa2", "wpa-mixed"}
@@ -135,6 +137,17 @@ elseif (tonumber(m.hidden.wpa_version) or 0) > 0 then
        end
 end
 
+local login_section = (m.hidden.ssid or "") .. (m.hidden.bssid or "")
+login_section = login_section.lower(login_section:gsub("[^%w_]", "_"))
+local cmd = uci:get("travelmate", login_section, "command")
+cmd_list = m:field(ListValue, "cmdlist", translate("Auto Login Script"),
+       translate("External script reference which will be called for automated captive portal logins."))
+cmd_list:value("none")
+for _, z in ipairs(scripts) do
+       cmd_list:value(z)
+end
+cmd_list.default = cmd or "none"
+
 function wssid.write(self, section, value)
        newsection = uci:section("wireless", "wifi-iface", nil, {
                mode     = "sta",
@@ -174,6 +187,16 @@ function wssid.write(self, section, value)
        else
                uci:set("wireless", newsection, "encryption", "none")
        end
+       local login_section = (wssid:formvalue(section) or "") .. (bssid:formvalue(section) or "")
+       login_section = login_section.lower(login_section:gsub("[^%w_]", "_"))
+       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: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")
index dae358ae034b5c51e42c4518a130d0e1bf481ab2..c2c809cbccb45096792ba19b66e8bb104e7079f4 100644 (file)
@@ -1,9 +1,11 @@
 -- 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 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")
@@ -19,6 +21,7 @@ m.hidden = {
 }
 
 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)"
@@ -126,6 +129,17 @@ if s ~= nil then
                wkey.password = true
                wkey.default = s.key or s.password
        end
+
+       local login_section = (s.ssid or "") .. (s.bssid or "")
+       login_section = login_section.lower(login_section:gsub("[^%w_]", "_"))
+       local cmd = uci:get("travelmate", login_section, "command")
+       cmd_list = m:field(ListValue, "cmdlist", translate("Auto Login Script"),
+               translate("External script reference which will be called for automated captive portal logins."))
+       cmd_list:value("none")
+       for _, z in ipairs(scripts) do
+               cmd_list:value(z)
+       end
+       cmd_list.default = cmd or "none"
 else
        m.on_cancel()
 end
@@ -160,6 +174,16 @@ function wssid.write(self, section, value)
                        uci:set("wireless", m.hidden.cfg, "priv_key_pwd", privkeypwd:formvalue(section) or "")
                end
        end
+       local login_section = (wssid:formvalue(section) or "") .. (bssid:formvalue(section) or "")
+       login_section = login_section.lower(login_section:gsub("[^%w_]", "_"))
+       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: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")
index 0e78803d0641ca0e56f9073c2abdf9b15811a7b7..5c28966339e1e821d76a2d3bb062e2d449cb318e 100644 (file)
@@ -34,7 +34,7 @@ This is free software, licensed under the Apache License, Version 2.0
                                        if (view)
                                        {
                                                view.setAttribute("name", "station_nok");
-                                               view.setAttribute("style", "color: #a22; font-weight: bold");
+                                               view.setAttribute("style", "text-align: left !important; color: #a22; font-weight: bold");
                                        }
                                }
                        }
@@ -59,7 +59,7 @@ This is free software, licensed under the Apache License, Version 2.0
                                view   = document.getElementById(search);
                                if (view)
                                {
-                                       view.setAttribute("style", "color: #37c; font-weight: bold");
+                                       view.setAttribute("style", "text-align: left !important; color: #37c; font-weight: bold");
                                }
                        }
                }
@@ -122,10 +122,10 @@ This is free software, licensed under the Apache License, Version 2.0
                                                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" name="station_ok" id="2_<%=device%>/<%=ssid%>/<%=bssid%>"><%=device%></div>
-                               <div class="td left" name="station_ok" id="3_<%=device%>/<%=ssid%>/<%=bssid%>"><%=ssid%></div>
-                               <div class="td left" name="station_ok" id="4_<%=device%>/<%=ssid%>/<%=bssid%>"><%=bssid%></div>
-                               <div class="td left" name="station_ok" id="5_<%=device%>/<%=ssid%>/<%=bssid%>"><%=encr%></div>
+                               <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%>&amp;dir=up'" alt="<%:Move up%>" title="<%:Move up%>" />
index 67568f179e19887248da00a1b5d9f50f7eb08abf..86846a57104f10d88d9d161460a37a3ea89ed248 100644 (file)
@@ -52,16 +52,16 @@ This is free software, licensed under the Apache License, Version 2.0
                        </div>
                        <%- for i, net in ipairs(iw.scanlist or { }) do -%>
                        <div class="tr cbi-section-table-row cbi-rowstyle-1">
-                               <div class="td left">
+                               <div class="td left" style="text-align: left !important">
                                        <%=net.ssid and utl.pcdata(net.ssid) or "<em>%s</em>" % translate("hidden")%>
                                </div>
-                               <div class="td left">
+                               <div class="td left" style="text-align: left !important">
                                        <%=net.bssid and utl.pcdata(net.bssid)%>
                                </div>
-                               <div class="td left">
+                               <div class="td left" style="text-align: left !important">
                                        <%=format_wifi_encryption(net.encryption)%>
                                </div>
-                               <div class="td left">
+                               <div class="td left" style="text-align: left !important">
                                        <%=percent_wifi_signal(net)%> %
                                </div>
                                <div class="td cbi-section-actions">