From 744df67d49188d45430047c2e77389d7071bc0f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= Date: Tue, 24 May 2022 10:14:57 +0200 Subject: [PATCH] cleanup cm --- package/gluon-static-ip/Makefile | 13 -- package/gluon-static-ip/check_site.lua | 8 - .../files/etc/config/gluon-static-ip | 0 .../luasrc/lib/gluon/upgrade/540-static-ip | 212 ------------------ package/gluon-web-static-ip/Makefile | 12 - package/gluon-web-static-ip/i18n/de.po | 69 ------ .../i18n/gluon-web-static-ip.pot | 57 ----- .../config-mode/controller/admin/staticip.lua | 3 - .../config-mode/model/admin/staticip.lua | 149 ------------ 9 files changed, 523 deletions(-) delete mode 100644 package/gluon-static-ip/Makefile delete mode 100644 package/gluon-static-ip/check_site.lua delete mode 100644 package/gluon-static-ip/files/etc/config/gluon-static-ip delete mode 100755 package/gluon-static-ip/luasrc/lib/gluon/upgrade/540-static-ip delete mode 100644 package/gluon-web-static-ip/Makefile delete mode 100644 package/gluon-web-static-ip/i18n/de.po delete mode 100644 package/gluon-web-static-ip/i18n/gluon-web-static-ip.pot delete mode 100644 package/gluon-web-static-ip/luasrc/lib/gluon/config-mode/controller/admin/staticip.lua delete mode 100644 package/gluon-web-static-ip/luasrc/lib/gluon/config-mode/model/admin/staticip.lua diff --git a/package/gluon-static-ip/Makefile b/package/gluon-static-ip/Makefile deleted file mode 100644 index 3c48feca..00000000 --- a/package/gluon-static-ip/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -include $(TOPDIR)/rules.mk - -PKG_NAME:=gluon-static-ip -PKG_VERSION:=1 - -include ../gluon.mk - -define Package/gluon-static-ip - TITLE:=Static IP assignment and configuration for gluon - DEPENDS:=+gluon-core +luci-lib-ip -endef - -$(eval $(call BuildPackageGluon,gluon-static-ip)) diff --git a/package/gluon-static-ip/check_site.lua b/package/gluon-static-ip/check_site.lua deleted file mode 100644 index 534e1822..00000000 --- a/package/gluon-static-ip/check_site.lua +++ /dev/null @@ -1,8 +0,0 @@ -if need_string({'node_prefix4'}, false) then -- optional - need_number({'node_prefix4_range'}, true) - need_boolean({'node_prefix4_temporary'}, false) -end - -need_string({'node_prefix6'}, true) -- always required -need_number({'node_prefix6_range'}, false) -need_boolean({'node_prefix6_temporary'}, false) diff --git a/package/gluon-static-ip/files/etc/config/gluon-static-ip b/package/gluon-static-ip/files/etc/config/gluon-static-ip deleted file mode 100644 index e69de29b..00000000 diff --git a/package/gluon-static-ip/luasrc/lib/gluon/upgrade/540-static-ip b/package/gluon-static-ip/luasrc/lib/gluon/upgrade/540-static-ip deleted file mode 100755 index 1ea73e06..00000000 --- a/package/gluon-static-ip/luasrc/lib/gluon/upgrade/540-static-ip +++ /dev/null @@ -1,212 +0,0 @@ -#!/usr/bin/lua - -local uci = require('simple-uci').cursor() -local site = require 'gluon.site' -local wireless = require 'gluon.wireless' -local ip = require 'luci.ip' -- luci-lib-ip -local util = require 'gluon.util' - -function hex2bin(str) - local map = { - ['0'] = '0000', - ['1'] = '0001', - ['2'] = '0010', - ['3'] = '0011', - ['4'] = '0100', - ['5'] = '0101', - ['6'] = '0110', - ['7'] = '0111', - ['8'] = '1000', - ['9'] = '1001', - ['A'] = '1010', - ['B'] = '1011', - ['C'] = '1100', - ['D'] = '1101', - ['E'] = '1110', - ['F'] = '1111', - } - return str:gsub('[0-9A-F]', map) -end --- since we have a limit of 32 bit integers we.. uhm... do some hex2bin and then convert it byte by byte to a hex ipv6 block string --- (the ip lib is in c and handles this stuff just fine) -function ipnum(macaddr, prefixOverflow, hex) - local binaryMac = hex2bin(macaddr:gsub(':', ''):upper()):sub(-prefixOverflow) - - if not hex then - return tonumber(binaryMac, 2) - end - - -- pad with 0s until we have block sized packets - while string.len(binaryMac) % 16 ~= 0 do - binaryMac = '0' .. binaryMac - end - - local out = '' - - for i=0,string.len(binaryMac)/16-1 do - if out ~= '' then - out = out .. ':' - end - out = out .. string.format("%02x", tonumber(binaryMac:sub(1+i*16,(i+1)*16), 2)) - end - - return out -end - -local IPV4_PREFIX_MAX = 32 -local IPV6_PREFIX_MAX = 128 - -local function static_ip(name, ifname, macaddr, actually_use) - -- actually_use = if ip should be applied to interface or not - -- if set and actually_use=false then it will be removed - - local static4 = uci:get('gluon-static-ip', name, 'ip4') - local static6 = uci:get('gluon-static-ip', name, 'ip6') - - if site.prefix4() then - if not static4 and site.node_prefix4() and name ~= 'loopback' then - local tmp4 = ip.new(site.node_prefix4()) - - -- magic that turns mac into random number - local ipnum = ipnum(macaddr, IPV4_PREFIX_MAX - site.node_prefix4_range()) - - -- the rare case where we get 0 or 1 as our mac based number - if ipnum < 2 then - ipnum = 2 - end - - static4 = tmp4:add(ipnum):string() - end - end - - if site.prefix6() then - if not static6 and site.node_prefix6() and (site.tmpIp6Everywhere() or name == 'loopback') then - local tmp6 = ip.new(site.node_prefix6()) - - -- magic that turns mac into random number - local ipnum = ipnum(macaddr, IPV6_PREFIX_MAX - site.node_prefix6_range(64), true) - - -- the rare case where we get 0 or 1 as our mac based number - if tonumber(ipnum:gsub(':', ''), 16) < 2 then - ipnum = 2 - end - - static6 = tmp6:add('::' .. ipnum):string() - end - end - - uci:section('gluon-static-ip', 'interface', name, { - ip4 = static4, - ip6 = static6, - }) - - if actually_use then - -- we have to set proto to static as otherwise we won't have the ip assigned - -- TODO: maybe modify the protos instead to allow reading static ips and using them? - -- NOTE: wan also uses dhcp/static directly - - if site.prefix4() and static4 then - local ip4 = ip.new(static4) - if not ip4 or not ip4:is4() then - print('E: ' .. name .. ' has invalid ip4 ' .. static4) - return - end - - uci:set('network', name, 'ipaddr', ip4:string()) - elseif name ~= 'loopback' then - if uci:get('network', name, 'ipaddr') then - uci:del('network', name, 'ipaddr') - end - - if uci:get('network', name, 'netmask') then - uci:del('network', name, 'netmask') - end - end - - if site.prefix6() and static6 then - local ip6 = ip.new(static6) - if not ip6 or not ip6:is6() then - print('E: ' .. name .. ' has invalid ip6 ' .. static6) - return - end - - uci:set('network', name, 'ip6addr', ip6:string()) - else - if uci:get('network', name, 'ip6addr') then - uci:del('network', name, 'ip6addr') - end - end - else - if uci:get('network', name, 'ip6addr') ~= nil then - uci:del('network', name, 'ip6addr') - end - if uci:get('network', name, 'ipaddr') ~= nil then - uci:del('network', name, 'ipaddr') - end - end -end - -wireless.foreach_radio(uci, function(radio, index, config) - local function do_config(type) - net = type .. radio['.name'] - - use = uci:get('wireless', net, 'disabled') ~= '1' - static_ip(net, uci:get('wireless', net, 'ifname'), uci:get('wireless', net, 'macaddr'), use) - end - - do_config('mesh_') - if uci:get('network', 'ibss_' .. radio['.name'], 'proto') then - do_config('ibss_') - end -end) - -local function apply_network(name, use, mac) - if not uci:get('network', name, 'proto') then - print('warn: non-existent network ' .. name) - return - end - - not_disabled = uci:get('network', name, 'disabled') ~= '1' - if use == nil then - use = not_disabled - end - macaddr = uci:get('network', name, 'macaddr') - if not macaddr then - macaddr = util.generate_mac(mac) - uci:set('network', name, 'macaddr', macaddr) - end - static_ip(name, uci:get('network', name, 'ifname'), macaddr, use) -end - -if pcall(function() require 'gluon.mesh-vpn' end) then - local vpn_core = require 'gluon.mesh-vpn' - - apply_network('mesh_vpn', vpn_core.enabled(), 7) -end - -local uplink_mesh = not uci:get_bool('network', 'mesh_uplink', 'disabled') -apply_network('mesh_uplink', uplink_mesh, 10) - -apply_network('loopback', true, 12) - -local other_mesh = not uci:get_bool('network', 'mesh_other', 'disabled') -apply_network('mesh_other', other_mesh, 11) - -local mesh_interfaces = util.get_role_interfaces(uci, 'mesh') -local uplink_interfaces = util.get_role_interfaces(uci, 'uplink') -local client_interfaces = util.get_role_interfaces(uci, 'client') - -local mesh_interfaces_other = {} - -for _, iface in ipairs(mesh_interfaces) do - if not util.contains(uplink_interfaces, iface) and not util.contains(client_interfaces, iface) then - table.insert(mesh_interfaces_other, iface) - end -end - --- for index, intf in ipairs(mesh_interfaces_other) do --- apply_network('mesh_' .. intf, true, 12 + index) --- end - -uci:save('gluon-static-ip') -uci:save('network') diff --git a/package/gluon-web-static-ip/Makefile b/package/gluon-web-static-ip/Makefile deleted file mode 100644 index 40fe64ff..00000000 --- a/package/gluon-web-static-ip/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -include $(TOPDIR)/rules.mk - -PKG_NAME:=gluon-web-static-ip - -include ../gluon.mk - -define Package/gluon-web-static-ip - DEPENDS:=+gluon-web-admin +gluon-static-ip - TITLE:=UI for managing static IPs -endef - -$(eval $(call BuildPackageGluon,gluon-web-static-ip)) diff --git a/package/gluon-web-static-ip/i18n/de.po b/package/gluon-web-static-ip/i18n/de.po deleted file mode 100644 index 26f5c839..00000000 --- a/package/gluon-web-static-ip/i18n/de.po +++ /dev/null @@ -1,69 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2021-12-19 10:29+0100\n" -"Last-Translator: Maciej Krüger \n" -"Language-Team: German\n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.0\n" - -msgid "Static IPs" -msgstr "Statische IPs" - -msgid "Configure the IPv4 addresses of your node." -msgstr "Konfiguriere die IPv4 Addressen deines Knotens." - -msgid "Configure the IPv6 addresses of your node." -msgstr "Konfiguriere die IPv6 Addressen deines Knotens." - -msgid "enabled" -msgstr "aktiviert" - -msgid "disabled" -msgstr "deaktiviert" - -msgid "" -"The address %s for \"%s\" is an address in the temporary address range %s.
" -"It should be replaced by a properly assigned address as soon as possible." -msgstr "" -"Die Addresse %s für \"%s\" ist eine Addresse aus dem temporären " -"Addressbereich %s.
Sie sollte umgehend mit einer korrekt zugewiesenen " -"Addresse ersetzt werden." - -msgid "" -"The address %s for \"%s\" is an address in the temporary address range %s.
" -"If you are planning to use this interface, you will need to replace this " -"address with a properly assigned one." -msgstr "" -"Die Addresse %s für \"%s\" ist eine Addresse aus dem temporären " -"Addressbereich %s.
Wenn du planst dieses Interface zu verwenden, solltest du " -"diese Addresse mit einer korrekt zugewiesenen Addresse ersetzen." - -msgid "IPv4 for %s (%s)" -msgstr "IPv4 für %s (%s)" - -msgid "IPv6 for %s (%s)" -msgstr "IPv6 für %s (%s)" - -msgid "IBSS (legacy) Mesh on %s" -msgstr "IBSS (veraltet) Mesh auf %s" - -msgid "Mesh on %s" -msgstr "Mesh auf %s" - -msgid "Mesh VPN" -msgstr "Mesh VPN" - -msgid "Mesh on WAN" -msgstr "Mesh auf WAN" - -msgid "Mesh on LAN" -msgstr "Mesh auf LAN" - -msgid "this node" -msgstr "diesen Knoten" diff --git a/package/gluon-web-static-ip/i18n/gluon-web-static-ip.pot b/package/gluon-web-static-ip/i18n/gluon-web-static-ip.pot deleted file mode 100644 index e2069578..00000000 --- a/package/gluon-web-static-ip/i18n/gluon-web-static-ip.pot +++ /dev/null @@ -1,57 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.0\n" - -msgid "Static IPs" -msgstr "" - -msgid "Configure the IPv4 addresses of your node." -msgstr "" - -msgid "Configure the IPv6 addresses of your node." -msgstr "" - -msgid "enabled" -msgstr "" - -msgid "disabled" -msgstr "" - -msgid "The address %s for \"%s\" is an address in the temporary address range %s.
It should be replaced by a properly assigned address as soon as possible." -msgstr "" - -msgid "The address %s for \"%s\" is an address in the temporary address range %s.
If you are planning to use this interface, you will need to replace this address with a properly assigned one." -msgstr "" - -msgid "IPv4 for %s (%s)" -msgstr "" - -msgid "IPv6 for %s (%s)" -msgstr "" - -msgid "IBSS (legacy) Mesh on %s" -msgstr "" - -msgid "Mesh on %s" -msgstr "" - -msgid "Mesh VPN" -msgstr "" - -msgid "Mesh on WAN" -msgstr "" - -msgid "Mesh on LAN" -msgstr "" - -msgid "this node" -msgstr "" diff --git a/package/gluon-web-static-ip/luasrc/lib/gluon/config-mode/controller/admin/staticip.lua b/package/gluon-web-static-ip/luasrc/lib/gluon/config-mode/controller/admin/staticip.lua deleted file mode 100644 index b1a29a35..00000000 --- a/package/gluon-web-static-ip/luasrc/lib/gluon/config-mode/controller/admin/staticip.lua +++ /dev/null @@ -1,3 +0,0 @@ -package 'gluon-web-static-ip' - -entry({"admin", "staticip"}, model("admin/staticip"), _("Static IPs"), 30) diff --git a/package/gluon-web-static-ip/luasrc/lib/gluon/config-mode/model/admin/staticip.lua b/package/gluon-web-static-ip/luasrc/lib/gluon/config-mode/model/admin/staticip.lua deleted file mode 100644 index 932b25db..00000000 --- a/package/gluon-web-static-ip/luasrc/lib/gluon/config-mode/model/admin/staticip.lua +++ /dev/null @@ -1,149 +0,0 @@ -local uci = require("simple-uci").cursor() -local wireless = require 'gluon.wireless' -local ip = require 'luci.ip' -local site = require 'gluon.site' -local sysconfig = require 'gluon.sysconfig' -local util = require 'gluon.util' - -local mesh_interfaces = util.get_role_interfaces(uci, 'mesh') -local uplink_interfaces = util.get_role_interfaces(uci, 'uplink') - -local mesh_interfaces_uplink = {} -local mesh_interfaces_other = {} -for _, iface in ipairs(mesh_interfaces) do - if util.contains(uplink_interfaces, iface) then - table.insert(mesh_interfaces_uplink, iface) - else - table.insert(mesh_interfaces_other, iface) - end -end - -local f = Form(translate("Static IPs")) - -local s4 = site.prefix4() and f:section(Section, nil, translate( - 'Configure the IPv4 addresses of your node.' -)) - -local s6 = site.prefix6() and f:section(Section, nil, translate( - 'Configure the IPv6 addresses of your node.' -)) - -local function translate_format(str, ...) - return string.format(translate(str), ...) -end - -local function intf_setting(intf, desc, enabled) - local status = enabled and translate("enabled") or translate("disabled") - - if site.prefix4() and intf ~= 'loopback' then - local v4addr = uci:get('gluon-static-ip', intf, 'ip4') - - if site.node_prefix4() and v4addr and site.node_prefix4_temporary() then - local tmp = ip.new(site.node_prefix4(), site.node_prefix4_range()) - local isTmp = tmp:contains(ip.new(v4addr):host()) - - if isTmp then - local w = Warning() - if enabled then - w:setcontent(translate_format('The address %s for "%s" is an address in the temporary address range %s.
It should be replaced by a properly assigned address as soon as possible.', - v4addr, desc, tmp:string())) - else - w:setcontent(translate_format('The address %s for "%s" is an address in the temporary address range %s.
If you are planning to use this interface, you will need to replace this address with a properly assigned one.', - v4addr, desc, tmp:string())) - end - s4:append(w) - end - end - - local v4 = s4:option(Value, intf .. '_ip4', translate_format("IPv4 for %s (%s)", desc, status), translate("IPv4 CIDR (e.g. 1.2.3.4/12)")) - -- TODO: datatype = "ip4cidr" - v4.datatype = "maxlength(32)" - v4.default = v4addr - v4.required = site.node_prefix4() - - function v4:write(data) - -- TODO: validate via datatype - if data == '' and not site.node_prefix4() then - data = null - end - - if data and (not ip.new(data) or not ip.new(data):is4()) then - error('Not a valid IPv4 for ' .. intf) - end - - uci:set("gluon-static-ip", intf, "ip4", data) - end - end - - if site.prefix6() and (intf == 'loopback' or site.tmpIp6Everywhere(false)) then - local v6addr = uci:get('gluon-static-ip', intf, 'ip6') - - if site.node_prefix6() and v6addr and site.node_prefix6_temporary() then - local tmp = ip.new(site.node_prefix6(), site.node_prefix6_range(64)) - local isTmp = tmp:contains(ip.new(v6addr):host()) - - if isTmp then - local w = Warning() - if enabled then - w:setcontent(translate_format('The address %s for "%s" is an address in the temporary address range %s.
It should be replaced by a properly assigned address as soon as possible.', - v6addr, desc, tmp:string())) - else - w:setcontent(translate_format('The address %s for "%s" is an address in the temporary address range %s.
If you are planning to use this interface, you will need to replace this address with a properly assigned one.', - v6addr, desc, tmp:string())) - end - s6:append(w) - end - end - - local v6 = s6:option(Value, intf .. '_ip6', translate_format("IPv6 for %s (%s)", desc, status), translate("IPv6 CIDR (e.g. aa:bb:cc:dd:ee::ff/64)")) - -- TODO: datatype = "ip6cidr" - v6.datatype = "maxlength(132)" - v6.default = v6addr - - function v6:write(data) - -- TODO: validate via datatype - if data == '' and (not site.node_prefix6() or (not site.tmpIp6Everywhere(false) or intf ~= 'loopback')) then - data = null - end - - if data and (not ip.new(data) or not ip.new(data):is6()) then - error('Not a valid IPv6 for ' .. intf) - end - - uci:set("gluon-static-ip", intf, "ip6", data) - end - end -end - -intf_setting('loopback', translate('this node'), true) - -wireless.foreach_radio(uci, function(radio, index, config) - local function do_conf(type, desc) - local net = type .. radio['.name'] - intf_setting(net, desc, not uci:get_bool('wireless', net, 'disabled')) - end - - if uci:get('network', 'ibss_' .. radio['.name'], 'proto') then - do_conf('ibss_', translate_format('IBSS (legacy) Mesh on %s', radio['.name'])) - end - do_conf('mesh_', translate_format('Mesh on %s', radio['.name'])) -end) - -if pcall(function() require 'gluon.mesh-vpn' end) then - local vpn_core = require 'gluon.mesh-vpn' - - intf_setting('mesh_vpn', 'Mesh VPN', vpn_core.enabled()) -end - -local wan_mesh = not uci:get_bool('network', 'mesh_wan', 'disabled') -intf_setting('mesh_uplink', 'Mesh on WAN', #mesh_interfaces_uplink) - -if sysconfig.lan_ifname then - intf_setting('mesh_other', 'Mesh on LAN', #mesh_interfaces_other) -end - -function f:write() - uci:save("gluon-static-ip") -end - -return f