diff --git a/package/gluon-luci-wifi-config/Makefile b/package/gluon-luci-wifi-config/Makefile new file mode 100644 index 00000000..2dd03f09 --- /dev/null +++ b/package/gluon-luci-wifi-config/Makefile @@ -0,0 +1,32 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=gluon-luci-wifi-config +PKG_VERSION:=0.1 +PKG_RELEASE:=1 + +PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) + +include $(INCLUDE_DIR)/package.mk + +define Package/gluon-luci-wifi-config + SECTION:=gluon + CATEGORY:=Gluon + DEPENDS:=+gluon-luci-admin + TITLE:=UI for Wifi Settings +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) +endef + +define Build/Configure +endef + +define Build/Compile +endef + +define Package/gluon-luci-wifi-config/install + $(CP) ./files/* $(1)/ +endef + +$(eval $(call BuildPackage,gluon-luci-wifi-config)) diff --git a/package/gluon-luci-wifi-config/files/usr/lib/lua/luci/controller/admin/wifi-config.lua b/package/gluon-luci-wifi-config/files/usr/lib/lua/luci/controller/admin/wifi-config.lua new file mode 100644 index 00000000..3bcb0007 --- /dev/null +++ b/package/gluon-luci-wifi-config/files/usr/lib/lua/luci/controller/admin/wifi-config.lua @@ -0,0 +1,5 @@ +module("luci.controller.admin.wifi-config", package.seeall) + +function index() + entry({"admin", "wifi-config"}, cbi("admin/wifi-config"), "WLAN", 20) +end diff --git a/package/gluon-luci-wifi-config/files/usr/lib/lua/luci/model/cbi/admin/wifi-config.lua b/package/gluon-luci-wifi-config/files/usr/lib/lua/luci/model/cbi/admin/wifi-config.lua new file mode 100644 index 00000000..d6559b51 --- /dev/null +++ b/package/gluon-luci-wifi-config/files/usr/lib/lua/luci/model/cbi/admin/wifi-config.lua @@ -0,0 +1,83 @@ +local f, s, o +local uci = luci.model.uci.cursor() + +--set the heading, button and stuff +f = SimpleForm("wifi", "WLAN-Config") +f.reset = false +f.template = "admin/expertmode" +f.submit = "Speichern" + +-- text, which describes what the package does to the user +s = f:section(SimpleSection, nil, [[ +In diesem Abschnitt hast du die Möglichkeit die SSIDs des Client- und des +Mesh-Netzes zu deaktivieren. Bitte lass die SSID des Mesh-Netzes aktiviert, +damit sich auch andere Knoten über dich mit dem Freifunk verbinden können. +]]) + +local radios = {} + +-- look for wifi interfaces and add them to the array +uci:foreach('wireless', 'wifi-device', +function(s) + table.insert(radios, s['.name']) +end +) + +--add a client and mesh checkbox for each interface +for index, radio in ipairs(radios) do + --get the hwmode to seperate 2.4GHz and 5Ghz radios + local hwmode = uci:get('wireless', radio, 'hwmode') + local p + + if hwmode == '11g' or hwmode == '11ng' then --if 2.4GHz + + p = f:section(SimpleSection, "2,4GHz-WLAN", nil) + + elseif hwmode == '11a' or hwmode == '11na' then --if 5GHz + + p = f:section(SimpleSection, "5GHz-WLAN", nil) + + end + + if p then + --box for the clientnet + o = p:option(Flag, 'clientbox' .. index, "Client-Netz aktivieren") + o.default = (uci:get_bool('wireless', 'client_' .. radio, "disabled")) and o.disabled or o.enabled + o.rmempty = false + --box for the meshnet + o = p:option(Flag, 'meshbox' .. index, "Mesh-Netz aktivieren") + o.default = (uci:get_bool('wireless', 'mesh_' .. radio, "disabled")) and o.disabled or o.enabled + o.rmempty = false + end + +end + +--if the save-button is pushed +function f.handle(self, state, data) + if state == FORM_VALID then + + for index, radio in ipairs(radios) do + + local clientdisabled = 0 + local meshdisabled = 0 + -- get the data from the boxes and invert it + if data["clientbox"..index] == '0' then + clientdisabled = 1 + end + -- write the data to the config file + uci:set('wireless', 'client_' .. radio, "disabled", clientdisabled) + + if data["meshbox"..index] == '0' then + meshdisabled = 1 + end + + uci:set('wireless', 'mesh_' .. radio, "disabled", meshdisabled) + + end + + uci:save('wireless') + uci:commit('wireless') + end +end + +return f