parent
							
								
									b76e1a9e48
								
							
						
					
					
						commit
						6fc1db3a70
					
				| @ -13,7 +13,7 @@ PKG_CONFIG_DEPENDS += $(GLUON_I18N_CONFIG) | |||||||
| define Package/gluon-luci-wifi-config | define Package/gluon-luci-wifi-config | ||||||
|   SECTION:=gluon |   SECTION:=gluon | ||||||
|   CATEGORY:=Gluon |   CATEGORY:=Gluon | ||||||
|   DEPENDS:=+gluon-luci-admin |   DEPENDS:=+gluon-luci-admin +libiwinfo-lua | ||||||
|   TITLE:=UI for Wifi Settings |   TITLE:=UI for Wifi Settings | ||||||
| endef | endef | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,13 +1,54 @@ | |||||||
| local f, s, o |  | ||||||
| local uci = luci.model.uci.cursor() | local uci = luci.model.uci.cursor() | ||||||
|  | local fs = require 'nixio.fs' | ||||||
| 
 | 
 | ||||||
| f = SimpleForm("wifi", translate("WLAN")) | 
 | ||||||
|  | local function find_phy_by_path(path) | ||||||
|  |   for phy in fs.glob("/sys/devices/" .. path .. "/ieee80211/phy*") do | ||||||
|  |     return phy:match("([^/]+)$") | ||||||
|  |   end | ||||||
|  | end | ||||||
|  | 
 | ||||||
|  | local function find_phy_by_macaddr(macaddr) | ||||||
|  |   local addr = macaddr:lower() | ||||||
|  |   for file in fs.glob("/sys/class/ieee80211/*/macaddress") do | ||||||
|  |     if luci.util.trim(fs.readfile(file)) == addr then | ||||||
|  |       return file:match("([^/]+)/macaddress$") | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
|  | 
 | ||||||
|  | local function txpower_list(iw) | ||||||
|  |   local list = iw.txpwrlist or { } | ||||||
|  |   local off  = tonumber(iw.txpower_offset) or 0 | ||||||
|  |   local new  = { } | ||||||
|  |   local prev = -1 | ||||||
|  |   local _, val | ||||||
|  |   for _, val in ipairs(list) do | ||||||
|  |     local dbm = val.dbm + off | ||||||
|  |     local mw  = math.floor(10 ^ (dbm / 10)) | ||||||
|  |     if mw ~= prev then | ||||||
|  |       prev = mw | ||||||
|  |       table.insert(new, { | ||||||
|  |                      display_dbm = dbm, | ||||||
|  |                      display_mw  = mw, | ||||||
|  |                      driver_dbm  = val.dbm, | ||||||
|  |       }) | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  |   return new | ||||||
|  | end | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | local f = SimpleForm("wifi", translate("WLAN")) | ||||||
| f.template = "admin/expertmode" | f.template = "admin/expertmode" | ||||||
| 
 | 
 | ||||||
| s = f:section(SimpleSection, nil, translate( | local s = f:section(SimpleSection, nil, translate( | ||||||
|                 "You can enable or disable your node's client and mesh network " |                 "You can enable or disable your node's client and mesh network " | ||||||
|                   .. "SSIDs here. Please don't disable the mesh network without " |                   .. "SSIDs here. Please don't disable the mesh network without " | ||||||
|                   .. "a good reason, so other nodes can mesh with yours." |                   .. "a good reason, so other nodes can mesh with yours.<br /><br />" | ||||||
|  |                   .. "It is also possible to configure the WLAN adapters transmission power " | ||||||
|  |                   .. "here. Please note that the transmission power values include the antenna gain " | ||||||
|  |                   .. "where available, but there are many devices for which the gain is unavailable or inaccurate." | ||||||
| )) | )) | ||||||
| 
 | 
 | ||||||
| local radios = {} | local radios = {} | ||||||
| @ -21,24 +62,56 @@ uci:foreach('wireless', 'wifi-device', | |||||||
| 
 | 
 | ||||||
| -- add a client and mesh checkbox for each interface | -- add a client and mesh checkbox for each interface | ||||||
| for _, radio in ipairs(radios) do | for _, radio in ipairs(radios) do | ||||||
|   local hwmode = uci:get('wireless', radio, 'hwmode') |   local config = uci:get_all('wireless', radio) | ||||||
|   local p |   local p | ||||||
| 
 | 
 | ||||||
|   if hwmode == '11g' or hwmode == '11ng' then |   if config.hwmode == '11g' or config.hwmode == '11ng' then | ||||||
|     p = f:section(SimpleSection, translate("2.4GHz WLAN")) |     p = f:section(SimpleSection, translate("2.4GHz WLAN")) | ||||||
|   elseif hwmode == '11a' or hwmode == '11na' then |   elseif config.hwmode == '11a' or config.hwmode == '11na' then | ||||||
|     p = f:section(SimpleSection, translate("5GHz WLAN")) |     p = f:section(SimpleSection, translate("5GHz WLAN")) | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   if p then |   if p then | ||||||
|  |     local o | ||||||
|  | 
 | ||||||
|     --box for the client network |     --box for the client network | ||||||
|     o = p:option(Flag, 'clientbox_' .. radio, translate("Enable client network")) |     o = p:option(Flag, radio .. '_client_enabled', translate("Enable client network")) | ||||||
|     o.default = uci:get_bool('wireless', 'client_' .. radio, "disabled") and o.disabled or o.enabled |     o.default = uci:get_bool('wireless', 'client_' .. radio, "disabled") and o.disabled or o.enabled | ||||||
|     o.rmempty = false |     o.rmempty = false | ||||||
|  | 
 | ||||||
|     --box for the mesh network |     --box for the mesh network | ||||||
|     o = p:option(Flag, 'meshbox_' .. radio, translate("Enable mesh network")) |     o = p:option(Flag, radio .. '_mesh_enabled', translate("Enable mesh network")) | ||||||
|     o.default = uci:get_bool('wireless', 'mesh_' .. radio, "disabled") and o.disabled or o.enabled |     o.default = uci:get_bool('wireless', 'mesh_' .. radio, "disabled") and o.disabled or o.enabled | ||||||
|     o.rmempty = false |     o.rmempty = false | ||||||
|  | 
 | ||||||
|  |     local phy | ||||||
|  | 
 | ||||||
|  |     if config.path then | ||||||
|  |       phy = find_phy_by_path(config.path) | ||||||
|  |     elseif config.macaddr then | ||||||
|  |       phy = find_phy_by_path(config.macaddr) | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     if phy then | ||||||
|  |       local iw = luci.sys.wifi.getiwinfo(phy) | ||||||
|  |       if iw then | ||||||
|  |         local txpowers = txpower_list(iw) | ||||||
|  | 
 | ||||||
|  |         if #txpowers > 1 then | ||||||
|  |           local tp = p:option(ListValue, radio .. '_txpower', translate("Transmission power")) | ||||||
|  |           tp.rmempty = true | ||||||
|  |           tp.default = uci:get('wireless', radio, 'txpower') or 'default' | ||||||
|  | 
 | ||||||
|  |           tp:value('default', translate("(default)")) | ||||||
|  | 
 | ||||||
|  |           table.sort(txpowers, function(a, b) return a.driver_dbm > b.driver_dbm end) | ||||||
|  | 
 | ||||||
|  |           for _, entry in ipairs(txpowers) do | ||||||
|  |             tp:value(entry.driver_dbm, "%i dBm (%i mW)" % {entry.display_dbm, entry.display_mw}) | ||||||
|  |           end | ||||||
|  |         end | ||||||
|  |       end | ||||||
|  |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
| end | end | ||||||
| @ -50,20 +123,25 @@ function f.handle(self, state, data) | |||||||
|     for _, radio in ipairs(radios) do |     for _, radio in ipairs(radios) do | ||||||
| 
 | 
 | ||||||
|       local clientdisabled = 0 |       local clientdisabled = 0 | ||||||
|       local meshdisabled = 0 |       if data[radio .. '_client_enabled'] == '0' then | ||||||
|       -- get and invert the data from the boxes |  | ||||||
|       if data["clientbox_"..radio] == '0' then |  | ||||||
|         clientdisabled = 1 |         clientdisabled = 1 | ||||||
|       end |       end | ||||||
|       -- write the data to the config file |  | ||||||
|       uci:set('wireless', 'client_' .. radio, "disabled", clientdisabled) |       uci:set('wireless', 'client_' .. radio, "disabled", clientdisabled) | ||||||
| 
 | 
 | ||||||
|       if data["meshbox_"..radio] == '0' then |       local meshdisabled = 0 | ||||||
|  |       if data[radio .. '_client_enabled'] == '0' then | ||||||
|         meshdisabled = 1 |         meshdisabled = 1 | ||||||
|       end |       end | ||||||
| 
 |  | ||||||
|       uci:set('wireless', 'mesh_' .. radio, "disabled", meshdisabled) |       uci:set('wireless', 'mesh_' .. radio, "disabled", meshdisabled) | ||||||
| 
 | 
 | ||||||
|  |       if data[radio .. '_txpower'] then | ||||||
|  |         if data[radio .. '_txpower'] == 'default' then | ||||||
|  |           uci:delete('wireless', radio, 'txpower') | ||||||
|  |         else | ||||||
|  |           uci:set('wireless', radio, 'txpower', data[radio .. '_txpower']) | ||||||
|  |         end | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     uci:save('wireless') |     uci:save('wireless') | ||||||
|  | |||||||
| @ -10,6 +10,9 @@ msgstr "" | |||||||
| "Content-Transfer-Encoding: 8bit\n" | "Content-Transfer-Encoding: 8bit\n" | ||||||
| "Plural-Forms: nplurals=2; plural=(n != 1);\n" | "Plural-Forms: nplurals=2; plural=(n != 1);\n" | ||||||
| 
 | 
 | ||||||
|  | msgid "(default)" | ||||||
|  | msgstr "(Standard)" | ||||||
|  | 
 | ||||||
| msgid "2.4GHz WLAN" | msgid "2.4GHz WLAN" | ||||||
| msgstr "2,4GHz-WLAN" | msgstr "2,4GHz-WLAN" | ||||||
| 
 | 
 | ||||||
| @ -22,11 +25,22 @@ msgstr "Client-Netz aktivieren" | |||||||
| msgid "Enable mesh network" | msgid "Enable mesh network" | ||||||
| msgstr "Mesh-Netz aktivieren" | msgstr "Mesh-Netz aktivieren" | ||||||
| 
 | 
 | ||||||
|  | msgid "Transmission power" | ||||||
|  | msgstr "Sendeleistung" | ||||||
|  | 
 | ||||||
| msgid "" | msgid "" | ||||||
| "You can enable or disable your node's client and mesh network SSIDs here. " | "You can enable or disable your node's client and mesh network SSIDs here. " | ||||||
| "Please don't disable the mesh network without a good reason, so other nodes " | "Please don't disable the mesh network without a good reason, so other nodes " | ||||||
| "can mesh with yours." | "can mesh with yours.<br /><br />It is also possible to configure the WLAN " | ||||||
|  | "adapters transmission power here. Please note that the transmission power " | ||||||
|  | "values include the antenna gain where available, but there are many devices " | ||||||
|  | "for which the gain is unavailable or inaccurate." | ||||||
| msgstr "" | msgstr "" | ||||||
| "In diesem Abschnitt hast du die Möglichkeit, die SSIDs des Client- und des " | "In diesem Abschnitt hast du die Möglichkeit, die SSIDs des Client- und " | ||||||
| "Mesh-Netzes zu aktivieren bzw. deaktivieren. Bitte lass die SSID des Mesh-" | "des Mesh-Netzes zu aktivieren bzw. deaktivieren. Bitte lass die SSID des " | ||||||
| "Netzes aktiviert, damit sich andere Knoten mit deinem verbinden können." | "Mesh-Netzes aktiviert, damit sich andere Knoten mit deinem verbinden " | ||||||
|  | "können.<br /><br />" | ||||||
|  | "Außerdem kann hier die Sendeleistung des WLAN-Adapters konfiguriert werden. " | ||||||
|  | "Wenn möglich, ist in den Werten der Sendeleistung der Antennengewinn " | ||||||
|  | "enthalten; diese Werte sind allerdings für viele Geräte nicht verfügbar oder " | ||||||
|  | "fehlerhaft." | ||||||
|  | |||||||
| @ -1,6 +1,9 @@ | |||||||
| msgid "" | msgid "" | ||||||
| msgstr "Content-Type: text/plain; charset=UTF-8" | msgstr "Content-Type: text/plain; charset=UTF-8" | ||||||
| 
 | 
 | ||||||
|  | msgid "(default)" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
| msgid "2.4GHz WLAN" | msgid "2.4GHz WLAN" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| @ -13,8 +16,14 @@ msgstr "" | |||||||
| msgid "Enable mesh network" | msgid "Enable mesh network" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
|  | msgid "Transmission power" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
| msgid "" | msgid "" | ||||||
| "You can enable or disable your node's client and mesh network SSIDs here. " | "You can enable or disable your node's client and mesh network SSIDs here. " | ||||||
| "Please don't disable the mesh network without a good reason, so other nodes " | "Please don't disable the mesh network without a good reason, so other nodes " | ||||||
| "can mesh with yours." | "can mesh with yours.<br /><br />It is also possible to configure the WLAN " | ||||||
|  | "adapters transmission power here. Please note that the transmission power " | ||||||
|  | "values include the antenna gain where available, but there are many devices " | ||||||
|  | "for which the gain is unavailable or inaccurate." | ||||||
| msgstr "" | msgstr "" | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user