diff --git a/gluon/gluon-alfred/files/lib/gluon/upgrade/alfred/invariant/010-enable-alfred b/gluon/gluon-alfred/files/lib/gluon/upgrade/500-enable-alfred similarity index 100% rename from gluon/gluon-alfred/files/lib/gluon/upgrade/alfred/invariant/010-enable-alfred rename to gluon/gluon-alfred/files/lib/gluon/upgrade/500-enable-alfred diff --git a/gluon/gluon-authorized-keys/files/lib/gluon/upgrade/authorized-keys/invariant/010-authorized-keys b/gluon/gluon-authorized-keys/files/lib/gluon/upgrade/100-authorized-keys similarity index 100% rename from gluon/gluon-authorized-keys/files/lib/gluon/upgrade/authorized-keys/invariant/010-authorized-keys rename to gluon/gluon-authorized-keys/files/lib/gluon/upgrade/100-authorized-keys diff --git a/gluon/gluon-autoupdater/files/lib/gluon/upgrade/autoupdater/invariant/010-autoupdater b/gluon/gluon-autoupdater/files/lib/gluon/upgrade/500-autoupdater similarity index 100% rename from gluon/gluon-autoupdater/files/lib/gluon/upgrade/autoupdater/invariant/010-autoupdater rename to gluon/gluon-autoupdater/files/lib/gluon/upgrade/500-autoupdater diff --git a/gluon/gluon-core/files/etc/uci-defaults/zzz-gluon-upgrade b/gluon/gluon-core/files/etc/uci-defaults/zzz-gluon-upgrade index 3db5cab..a12ce78 100755 --- a/gluon/gluon-core/files/etc/uci-defaults/zzz-gluon-upgrade +++ b/gluon/gluon-core/files/etc/uci-defaults/zzz-gluon-upgrade @@ -1,67 +1,5 @@ #!/bin/sh - -UPGRADE_DIR=/lib/gluon/upgrade -VERSION_DIR=/lib/gluon/version - - -if [ -x /lib/gluon/legacy/legacy-upgrade ] && /lib/gluon/legacy/legacy-upgrade; then - HAS_LEGACY=1 -else - HAS_LEGACY= -fi - -mkdir -p "$VERSION_DIR" - - -version_of() { - opkg status "gluon-$1" | awk '/^Version: / { print $2 }' -} - -oldversion_of() { - cat "$VERSION_DIR"/"$1" 2>/dev/null -} - -do_dir() { - [ -d "$1" ] || return - - local s - for s in "$1"/*; do "$s"; done -} - -do_component() { - local component="$1" - local version="$(version_of "$component")" - [ "$version" ] || continue - - ( - cd "$component" - - local oldversion="$(oldversion_of "$component")" - if [ -z "$oldversion" ]; then - if [ "$HAS_LEGACY" ]; then - do_dir legacy - else - do_dir initial - fi - fi - - do_dir invariant - - echo "$version" > "$VERSION_DIR"/"$component" - ) -} - - -cd "$UPGRADE_DIR" - -do_component core - -for component in *; do - [ "$component" != 'core' ] || continue - do_component "$component" +for script in /lib/gluon/upgrade/*; do + "$script" done - -if [ "$HAS_LEGACY" ]; then - /lib/gluon/legacy/legacy-upgrade-late -fi diff --git a/gluon/gluon-core/files/lib/gluon/upgrade/001-upgrade b/gluon/gluon-core/files/lib/gluon/upgrade/001-upgrade new file mode 100755 index 0000000..6caba14 --- /dev/null +++ b/gluon/gluon-core/files/lib/gluon/upgrade/001-upgrade @@ -0,0 +1,10 @@ +#!/usr/bin/lua + +local fs = require 'luci.fs' +local sysconfig = require 'gluon.sysconfig' + + +if fs.isfile('/lib/gluon/version/core') and not sysconfig.gluon_version then + -- This isn't an initial upgrade, so set gluon_version + sysconfig.gluon_version = '' +end diff --git a/gluon/gluon-core/files/lib/gluon/upgrade/010-primary-mac b/gluon/gluon-core/files/lib/gluon/upgrade/010-primary-mac new file mode 100755 index 0000000..aa5e873 --- /dev/null +++ b/gluon/gluon-core/files/lib/gluon/upgrade/010-primary-mac @@ -0,0 +1,16 @@ +#!/usr/bin/lua + +local sysconfig = require 'gluon.sysconfig' +local platform = require 'gluon.platform' + +local fs = require 'luci.fs' +local util = require 'luci.util' + + +if not sysconfig.primary_mac then + if platform.match('ar71xx', 'generic', {'tl-wdr3600', 'tl-wdr4300'}) then + sysconfig.primary_mac = util.trim(fs.readfile('/sys/class/ieee80211/phy1/macaddress')) + else + sysconfig.primary_mac = util.trim(fs.readfile('/sys/class/ieee80211/phy0/macaddress')) + end +end diff --git a/gluon/gluon-core/files/lib/gluon/upgrade/020-interfaces b/gluon/gluon-core/files/lib/gluon/upgrade/020-interfaces new file mode 100755 index 0000000..077f77b --- /dev/null +++ b/gluon/gluon-core/files/lib/gluon/upgrade/020-interfaces @@ -0,0 +1,36 @@ +#!/usr/bin/lua + +local sysconfig = require 'gluon.sysconfig' +local gluon_util = require 'gluon.util' +local platform = require 'gluon.platform' + +local uci = require('luci.model.uci').cursor() + + +if not (sysconfig.lan_ifname or sysconfig.wan_ifname) then + local function iface_exists(name) + return (gluon_util.exec('ip', 'link', 'show', 'dev', (name:gsub('%..*$', ''))) == 0) + end + + + local lan_ifname = uci:get('network', 'lan', 'ifname') + local wan_ifname = uci:get('network', 'wan', 'ifname') + + if platform.match('ar71xx', 'generic', {'cpe510', 'nanostation-m', 'nanostation-m-xw'}) then + lan_ifname, wan_ifname = wan_ifname, lan_ifname + end + + if wan_ifname and iface_exists(wan_ifname) then + sysconfig.wan_ifname = wan_ifname + sysconfig.lan_ifname = lan_ifname + else + sysconfig.wan_ifname = lan_ifname + end + + + uci:delete('network', 'lan') + uci:delete('network', 'wan') + + uci:save('network') + uci:commit('network') +end diff --git a/gluon/gluon-core/files/lib/gluon/upgrade/030-system b/gluon/gluon-core/files/lib/gluon/upgrade/030-system new file mode 100755 index 0000000..b31ba42 --- /dev/null +++ b/gluon/gluon-core/files/lib/gluon/upgrade/030-system @@ -0,0 +1,18 @@ +#!/usr/bin/lua + +local sysconfig = require 'gluon.sysconfig' + +-- Initial +if not sysconfig.gluon_version then + local site = require 'gluon.site_config' + local util = require 'gluon.util' + local uci = require('luci.model.uci').cursor() + + local system = uci:get_first('system', 'system') + + uci:set('system', system, 'hostname', site.hostname_prefix .. '-' .. util.node_id()) + uci:set('system', system, 'timezone', site.timezone) + + uci:save('system') + uci:commit('system') +end diff --git a/gluon/gluon-core/files/lib/gluon/upgrade/core/invariant/010-dnsmasq b/gluon/gluon-core/files/lib/gluon/upgrade/100-dnsmasq similarity index 100% rename from gluon/gluon-core/files/lib/gluon/upgrade/core/invariant/010-dnsmasq rename to gluon/gluon-core/files/lib/gluon/upgrade/100-dnsmasq diff --git a/gluon/gluon-core/files/lib/gluon/upgrade/core/invariant/011-network b/gluon/gluon-core/files/lib/gluon/upgrade/110-network similarity index 100% rename from gluon/gluon-core/files/lib/gluon/upgrade/core/invariant/011-network rename to gluon/gluon-core/files/lib/gluon/upgrade/110-network diff --git a/gluon/gluon-core/files/lib/gluon/upgrade/core/invariant/012-ntp-servers b/gluon/gluon-core/files/lib/gluon/upgrade/120-ntp-servers similarity index 100% rename from gluon/gluon-core/files/lib/gluon/upgrade/core/invariant/012-ntp-servers rename to gluon/gluon-core/files/lib/gluon/upgrade/120-ntp-servers diff --git a/gluon/gluon-core/files/lib/gluon/upgrade/core/invariant/013-reboot-on-oom b/gluon/gluon-core/files/lib/gluon/upgrade/130-reboot-on-oom similarity index 100% rename from gluon/gluon-core/files/lib/gluon/upgrade/core/invariant/013-reboot-on-oom rename to gluon/gluon-core/files/lib/gluon/upgrade/130-reboot-on-oom diff --git a/gluon/gluon-core/files/lib/gluon/upgrade/core/invariant/014-firewall-rules b/gluon/gluon-core/files/lib/gluon/upgrade/140-firewall-rules similarity index 100% rename from gluon/gluon-core/files/lib/gluon/upgrade/core/invariant/014-firewall-rules rename to gluon/gluon-core/files/lib/gluon/upgrade/140-firewall-rules diff --git a/gluon/gluon-core/files/lib/gluon/upgrade/200-wireless b/gluon/gluon-core/files/lib/gluon/upgrade/200-wireless new file mode 100755 index 0000000..219e505 --- /dev/null +++ b/gluon/gluon-core/files/lib/gluon/upgrade/200-wireless @@ -0,0 +1,12 @@ +#!/usr/bin/lua + +local sysconfig = require 'gluon.sysconfig' + +-- Initial +if not sysconfig.gluon_version then + local uci = require('luci.model.uci').cursor() + + uci:delete_all('wireless', 'wifi-iface') + uci:save('wireless') + uci:commit('wireless') +end diff --git a/gluon/gluon-core/files/lib/gluon/upgrade/999-version b/gluon/gluon-core/files/lib/gluon/upgrade/999-version new file mode 100755 index 0000000..62f0820 --- /dev/null +++ b/gluon/gluon-core/files/lib/gluon/upgrade/999-version @@ -0,0 +1,11 @@ +#!/usr/bin/lua + +local sysconfig = require 'gluon.sysconfig' + +local fs = require 'luci.fs' +local util = require 'luci.util' + + +-- Save the Gluon version in the sysconfig so we know which version we +-- upgraded from after the next upgrade +sysconfig.gluon_version = util.trim(fs.readfile('/lib/gluon/gluon-version')) diff --git a/gluon/gluon-core/files/lib/gluon/upgrade/core/initial/001-sysconfig b/gluon/gluon-core/files/lib/gluon/upgrade/core/initial/001-sysconfig deleted file mode 100755 index 8181be6..0000000 --- a/gluon/gluon-core/files/lib/gluon/upgrade/core/initial/001-sysconfig +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/lua - -local sysconfig = require 'gluon.sysconfig' -local gluon_util = require 'gluon.util' -local platform = require 'gluon.platform' - -local fs = require 'luci.fs' -local uci = require('luci.model.uci').cursor() -local util = require 'luci.util' - - -if platform.match('ar71xx', 'generic', {'tl-wdr3600', 'tl-wdr4300'}) then - sysconfig.primary_mac = util.trim(fs.readfile('/sys/class/ieee80211/phy1/macaddress')) -else - sysconfig.primary_mac = util.trim(fs.readfile('/sys/class/ieee80211/phy0/macaddress')) -end - - -local function iface_exists(name) - return (gluon_util.exec('ip', 'link', 'show', 'dev', (name:gsub('%..*$', ''))) == 0) -end - - -local lan_ifname = uci:get('network', 'lan', 'ifname') -local wan_ifname = uci:get('network', 'wan', 'ifname') - - -if platform.match('ar71xx', 'generic', {'cpe510', 'nanostation-m', 'nanostation-m-xw'}) then - lan_ifname, wan_ifname = wan_ifname, lan_ifname -end - - -if wan_ifname and iface_exists(wan_ifname) then - sysconfig.wan_ifname = wan_ifname - sysconfig.lan_ifname = lan_ifname -else - sysconfig.wan_ifname = lan_ifname -end diff --git a/gluon/gluon-core/files/lib/gluon/upgrade/core/initial/010-gluon-system b/gluon/gluon-core/files/lib/gluon/upgrade/core/initial/010-gluon-system deleted file mode 100755 index bf5d781..0000000 --- a/gluon/gluon-core/files/lib/gluon/upgrade/core/initial/010-gluon-system +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/lua - -local site = require 'gluon.site_config' -local util = require 'gluon.util' -local uci = require 'luci.model.uci' - -local c = uci.cursor() -local system = c:get_first('system', 'system') - -c:set('system', system, 'hostname', site.hostname_prefix .. '-' .. util.node_id()) -c:set('system', system, 'timezone', site.timezone) - -c:save('system') -c:commit('system') diff --git a/gluon/gluon-core/files/lib/gluon/upgrade/core/initial/011-gluon-network b/gluon/gluon-core/files/lib/gluon/upgrade/core/initial/011-gluon-network deleted file mode 100755 index 64fd283..0000000 --- a/gluon/gluon-core/files/lib/gluon/upgrade/core/initial/011-gluon-network +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/lua - -local uci = require('luci.model.uci').cursor() - -uci:delete('network', 'lan') -uci:delete('network', 'wan') - -uci:save('network') -uci:commit('network') diff --git a/gluon/gluon-core/files/lib/gluon/upgrade/core/initial/020-wireless b/gluon/gluon-core/files/lib/gluon/upgrade/core/initial/020-wireless deleted file mode 100755 index bf4af39..0000000 --- a/gluon/gluon-core/files/lib/gluon/upgrade/core/initial/020-wireless +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/lua - -local uci = require('luci.model.uci').cursor() - -uci:delete_all('wireless', 'wifi-iface') -uci:save('wireless') -uci:commit('wireless') diff --git a/gluon/gluon-core/files/lib/upgrade/keep.d/gluon b/gluon/gluon-core/files/lib/upgrade/keep.d/gluon index 41c6bef..bc82c77 100644 --- a/gluon/gluon-core/files/lib/upgrade/keep.d/gluon +++ b/gluon/gluon-core/files/lib/upgrade/keep.d/gluon @@ -1,3 +1 @@ -/lib/gluon/version/ - /lib/gluon/core/sysconfig/ diff --git a/gluon/gluon-legacy/files/lib/gluon/legacy/legacy-upgrade b/gluon/gluon-legacy/files/lib/gluon/legacy/legacy-upgrade deleted file mode 100755 index 2751760..0000000 --- a/gluon/gluon-legacy/files/lib/gluon/legacy/legacy-upgrade +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/lua - -local site = require 'gluon.site_config' - -local ret = 1 - -for _, file in ipairs(site.legacy.version_files) do - if os.remove(file) then - ret = 0 - end -end - -os.exit(ret) diff --git a/gluon/gluon-legacy/files/lib/gluon/legacy/legacy-upgrade-late b/gluon/gluon-legacy/files/lib/gluon/legacy/legacy-upgrade-late deleted file mode 100755 index 1e79d82..0000000 --- a/gluon/gluon-legacy/files/lib/gluon/legacy/legacy-upgrade-late +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/lua - -local site = require 'gluon.site_config' - - -for _, file in ipairs(site.legacy.old_files) do - os.remove(file) -end diff --git a/gluon/gluon-legacy/files/lib/gluon/upgrade/000-legacy b/gluon/gluon-legacy/files/lib/gluon/upgrade/000-legacy new file mode 100755 index 0000000..7843667 --- /dev/null +++ b/gluon/gluon-legacy/files/lib/gluon/upgrade/000-legacy @@ -0,0 +1,11 @@ +#!/usr/bin/lua + +local site = require 'gluon.site_config' +local sysconfig = require 'gluon.sysconfig' + +for _, file in ipairs(site.legacy.version_files) do + if os.remove(file) then + -- Set version being upgraded from to 'legacy' + sysconfig.gluon_version = 'legacy' + end +end diff --git a/gluon/gluon-legacy/files/lib/gluon/upgrade/019-legacy-interfaces b/gluon/gluon-legacy/files/lib/gluon/upgrade/019-legacy-interfaces new file mode 100755 index 0000000..b48e42b --- /dev/null +++ b/gluon/gluon-legacy/files/lib/gluon/upgrade/019-legacy-interfaces @@ -0,0 +1,40 @@ +#!/usr/bin/lua + +local gluon_util = require 'gluon.util' +local platform = require 'gluon.platform' +local site = require 'gluon.site_config' +local sysconfig = require 'gluon.sysconfig' + +local uci = require('luci.model.uci').cursor() +local util = require 'luci.util' + + +if sysconfig.gluon_version == 'legacy' then + local function iface_exists(name) + return (gluon_util.exec('ip', 'link', 'show', 'dev', (name:gsub('%..*$', ''))) == 0) + end + + local function remove_bat0(iface) + return util.trim(string.gsub(' ' .. iface .. ' ', ' bat0 ', ' ')) + end + + + local lan_ifname = remove_bat0(uci:get('network', site.legacy.mesh_ifname, 'ifname')) + local wan_ifname = uci:get('network', 'wan', 'ifname') + + if wan_ifname and iface_exists(wan_ifname) then + sysconfig.wan_ifname = wan_ifname + sysconfig.lan_ifname = lan_ifname + else + sysconfig.wan_ifname = lan_ifname + end + + + uci:delete('network', site.legacy.mesh_ifname) + uci:delete('network', 'wan') + + uci:save('network') + uci:commit('network') +end + + diff --git a/gluon/gluon-legacy/files/lib/gluon/upgrade/210-legacy-wireless b/gluon/gluon-legacy/files/lib/gluon/upgrade/210-legacy-wireless new file mode 100755 index 0000000..36da063 --- /dev/null +++ b/gluon/gluon-legacy/files/lib/gluon/upgrade/210-legacy-wireless @@ -0,0 +1,24 @@ +#!/usr/bin/lua + +local site = require 'gluon.site_config' +local sysconfig = require 'gluon.sysconfig' + +local uci = require('luci.model.uci').cursor() + + +if sysconfig.gluon_version == 'legacy' then + function delete_legacy_iface(iface) + for _, wifi in pairs(site.legacy.wifi_names) do + if wifi == iface['.name'] then + return true + end + end + + return false + end + + uci:delete_all('wireless', 'wifi-iface', delete_legacy_iface) + + uci:save('wireless') + uci:commit('wireless') +end diff --git a/gluon/gluon-legacy/files/lib/gluon/upgrade/290-legacy-setup-mode b/gluon/gluon-legacy/files/lib/gluon/upgrade/290-legacy-setup-mode new file mode 100755 index 0000000..0b97e12 --- /dev/null +++ b/gluon/gluon-legacy/files/lib/gluon/upgrade/290-legacy-setup-mode @@ -0,0 +1,22 @@ +#!/usr/bin/lua + +local site = require 'gluon.site_config' +local sysconfig = require 'gluon.sysconfig' + +local uci = require('luci.model.uci').cursor() + + +if sysconfig.gluon_version == 'legacy' then + for _, config in ipairs(site.legacy.config_mode_configs) do + local old = uci:get_first(config, 'wizard', 'configured') + if old == '1' then + local setup_mode = uci:get_first('gluon-setup-mode', 'setup_mode') + uci:set('gluon-setup-mode', setup_mode, 'configured', '1') + + uci:save('gluon-setup-mode') + uci:commit('gluon-setup-mode') + + break + end + end +end diff --git a/gluon/gluon-legacy/files/lib/gluon/upgrade/290-legacy-simple-tc b/gluon/gluon-legacy/files/lib/gluon/upgrade/290-legacy-simple-tc new file mode 100755 index 0000000..c67afe1 --- /dev/null +++ b/gluon/gluon-legacy/files/lib/gluon/upgrade/290-legacy-simple-tc @@ -0,0 +1,29 @@ +#!/usr/bin/lua + +local site = require 'gluon.site_config' +local sysconfig = require 'gluon.sysconfig' + +local uci = require('luci.model.uci').cursor() + + +if sysconfig.gluon_version == 'legacy' then + for _, config in ipairs(site.legacy.tc_configs) do + local s = uci:get_first(config, 'bandwidth') + if s then + old = uci:get_all(config, s) + uci:section('gluon-simple-tc', 'interface', 'mesh_vpn', + { + ifname = 'mesh-vpn', + enabled = old.enabled, + limit_ingress = old.downstream, + limit_egress = old.upstream, + } + ) + + uci:save('gluon-simple-tc') + uci:commit('gluon-simple-tc') + + break + end + end +end diff --git a/gluon/gluon-legacy/files/lib/gluon/upgrade/390-legacy-mesh-vpn-fastd b/gluon/gluon-legacy/files/lib/gluon/upgrade/390-legacy-mesh-vpn-fastd new file mode 100755 index 0000000..468a35a --- /dev/null +++ b/gluon/gluon-legacy/files/lib/gluon/upgrade/390-legacy-mesh-vpn-fastd @@ -0,0 +1,37 @@ +#!/usr/bin/lua + +local site = require 'gluon.site_config' +local sysconfig = require 'gluon.sysconfig' + +local uci = require('luci.model.uci').cursor() + + +if sysconfig.gluon_version == 'legacy' then + local secret + local enabled + + + for _, config in ipairs(site.legacy.fastd_configs) do + if not secret then + local s = uci:get_all('fastd', config) + if s then + secret = s.secret + enabled = s.enabled + end + end + + uci:delete('fastd', config) + end + + if secret then + uci:section('fastd', 'fastd', 'mesh_vpn', + { + secret = secret, + enabled = enabled, + } + ) + end + + uci:save('fastd') + uci:commit('fastd') +end diff --git a/gluon/gluon-legacy/files/lib/gluon/upgrade/990-legacy-late b/gluon/gluon-legacy/files/lib/gluon/upgrade/990-legacy-late new file mode 100755 index 0000000..efb6b67 --- /dev/null +++ b/gluon/gluon-legacy/files/lib/gluon/upgrade/990-legacy-late @@ -0,0 +1,11 @@ +#!/usr/bin/lua + +local site = require 'gluon.site_config' +local sysconfig = require 'gluon.sysconfig' + + +if sysconfig.gluon_version == 'legacy' then + for _, file in ipairs(site.legacy.old_files) do + os.remove(file) + end +end diff --git a/gluon/gluon-legacy/files/lib/gluon/upgrade/core/legacy/001-sysconfig b/gluon/gluon-legacy/files/lib/gluon/upgrade/core/legacy/001-sysconfig deleted file mode 100755 index 769309f..0000000 --- a/gluon/gluon-legacy/files/lib/gluon/upgrade/core/legacy/001-sysconfig +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/lua - -local sysconfig = require 'gluon.sysconfig' -local gluon_util = require 'gluon.util' -local platform = require 'gluon.platform' - -local fs = require 'luci.fs' -local uci = require('luci.model.uci').cursor() -local util = require 'luci.util' - - -if platform.match('ar71xx', 'generic', {'tl-wdr3600', 'tl-wdr4300'}) then - sysconfig.primary_mac = util.trim(fs.readfile('/sys/class/ieee80211/phy1/macaddress')) -else - sysconfig.primary_mac = util.trim(fs.readfile('/sys/class/ieee80211/phy0/macaddress')) -end - - -local function iface_exists(name) - return (gluon_util.exec('ip', 'link', 'show', 'dev', (name:gsub('%..*$', ''))) == 0) -end - -local function remove_bat0(iface) - return util.trim(string.gsub(' ' .. iface .. ' ', ' bat0 ', ' ')) -end - - -local lan_ifname = remove_bat0(uci:get('network', site.legacy.mesh_ifname, 'ifname')) -local wan_ifname = uci:get('network', 'wan', 'ifname') - - -if wan_ifname and iface_exists(wan_ifname) then - sysconfig.wan_ifname = wan_ifname - sysconfig.lan_ifname = lan_ifname -else - sysconfig.wan_ifname = lan_ifname -end diff --git a/gluon/gluon-legacy/files/lib/gluon/upgrade/core/legacy/020-wireless b/gluon/gluon-legacy/files/lib/gluon/upgrade/core/legacy/020-wireless deleted file mode 100755 index f6f9335..0000000 --- a/gluon/gluon-legacy/files/lib/gluon/upgrade/core/legacy/020-wireless +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/lua - - -local site = require 'gluon.site_config' -local uci = require 'luci.model.uci' - - -local c = uci.cursor() - - -function delete_legacy_iface(iface) - for _, wifi in pairs(site.legacy.wifi_names) do - if wifi == iface['.name'] then - return true - end - end - - return false -end - -c:delete_all('wireless', 'wifi-iface', delete_legacy_iface) - -c:save('wireless') -c:commit('wireless') diff --git a/gluon/gluon-legacy/files/lib/gluon/upgrade/lock-password/legacy/010-lock-password b/gluon/gluon-legacy/files/lib/gluon/upgrade/lock-password/legacy/010-lock-password deleted file mode 100755 index ce6d59a..0000000 --- a/gluon/gluon-legacy/files/lib/gluon/upgrade/lock-password/legacy/010-lock-password +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - - -has_root_pwd() { - local pwd=$([ -f "$1" ] && cat "$1") - pwd="${pwd#*root:}" - pwd="${pwd%%:*}" - - test -n "${pwd#[\!x]}" -} - - -has_root_pwd /etc/passwd || has_root_pwd /etc/shadow || passwd -l root diff --git a/gluon/gluon-legacy/files/lib/gluon/upgrade/mesh-batman-adv-core/legacy/010-mesh b/gluon/gluon-legacy/files/lib/gluon/upgrade/mesh-batman-adv-core/legacy/010-mesh deleted file mode 100755 index 45f27d9..0000000 --- a/gluon/gluon-legacy/files/lib/gluon/upgrade/mesh-batman-adv-core/legacy/010-mesh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/lua - - -local site = require 'gluon.site_config' -local uci = require 'luci.model.uci' - -local c = uci.cursor() - - -local s = c:get_all('network', site.legacy.mesh_ifname) -c:delete('network', site.legacy.mesh_ifname) - -s.auto = nil -s.accept_ra = nil -s.defaultroute = nil -s.proto = 'dhcpv6' -s.reqprefix = 'no' - -c:section('network', 'interface', 'client', s) - -c:save('network') -c:commit('network') diff --git a/gluon/gluon-legacy/files/lib/gluon/upgrade/mesh-vpn-fastd/legacy/010-reset-fastd-config b/gluon/gluon-legacy/files/lib/gluon/upgrade/mesh-vpn-fastd/legacy/010-reset-fastd-config deleted file mode 100755 index 730feea..0000000 --- a/gluon/gluon-legacy/files/lib/gluon/upgrade/mesh-vpn-fastd/legacy/010-reset-fastd-config +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/lua - -local site = require 'gluon.site_config' -local uci = require 'luci.model.uci' - -local c = uci.cursor() - - -local secret -local enabled - - -for _, config in ipairs(site.legacy.fastd_configs) do - if not secret then - local s = c:get_all('fastd', config) - if s then - secret = s.secret - enabled = s.enabled - end - end - - c:delete('fastd', config) -end - -if secret then - c:section('fastd', 'fastd', 'mesh_vpn', - { - secret = secret, - enabled = enabled, - } - ) -end - -c:save('fastd') -c:commit('fastd') diff --git a/gluon/gluon-legacy/files/lib/gluon/upgrade/setup-mode/legacy/010-migrate-configured b/gluon/gluon-legacy/files/lib/gluon/upgrade/setup-mode/legacy/010-migrate-configured deleted file mode 100755 index f4a5957..0000000 --- a/gluon/gluon-legacy/files/lib/gluon/upgrade/setup-mode/legacy/010-migrate-configured +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/lua - -local site = require 'gluon.site_config' -local uci = require 'luci.model.uci' - -local c = uci.cursor() - - -for _, config in ipairs(site.legacy.config_mode_configs) do - local old = c:get_first(config, 'wizard', 'configured') - if old == '1' then - local setup_mode = c:get_first('gluon-setup-mode', 'setup_mode') - c:set('gluon-setup-mode', setup_mode, 'configured', '1') - - c:save('gluon-setup-mode') - c:commit('gluon-setup-mode') - - break - end -end diff --git a/gluon/gluon-legacy/files/lib/gluon/upgrade/simple-tc/legacy/010-migrate-tc b/gluon/gluon-legacy/files/lib/gluon/upgrade/simple-tc/legacy/010-migrate-tc deleted file mode 100755 index 39dd5f5..0000000 --- a/gluon/gluon-legacy/files/lib/gluon/upgrade/simple-tc/legacy/010-migrate-tc +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/lua - -local site = require 'gluon.site_config' -local uci = require 'luci.model.uci' - -local c = uci.cursor() - - -for _, config in ipairs(site.legacy.tc_configs) do - local s = c:get_first(config, 'bandwidth') - if s then - old = c:get_all(config, s) - c:section('gluon-simple-tc', 'interface', 'mesh_vpn', - { - ifname = 'mesh-vpn', - enabled = old.enabled, - limit_ingress = old.downstream, - limit_egress = old.upstream, - } - ) - - c:save('gluon-simple-tc') - c:commit('gluon-simple-tc') - - break - end -end diff --git a/gluon/gluon-lock-password/files/lib/gluon/upgrade/100-lock-password b/gluon/gluon-lock-password/files/lib/gluon/upgrade/100-lock-password new file mode 100755 index 0000000..3204f63 --- /dev/null +++ b/gluon/gluon-lock-password/files/lib/gluon/upgrade/100-lock-password @@ -0,0 +1,13 @@ +#!/bin/sh + +has_root_pwd() { + local pwd + + pwd=$([ -f "$1" ] && cat "$1") + pwd="${pwd#*root:}" + pwd="${pwd%%:*}" + + test -n "${pwd}" +} + +has_root_pwd /etc/shadow || passwd -l root diff --git a/gluon/gluon-lock-password/files/lib/gluon/upgrade/lock-password/initial/010-lock-password b/gluon/gluon-lock-password/files/lib/gluon/upgrade/lock-password/initial/010-lock-password deleted file mode 100755 index 6e67fc4..0000000 --- a/gluon/gluon-lock-password/files/lib/gluon/upgrade/lock-password/initial/010-lock-password +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -passwd -l root diff --git a/gluon/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/mesh-batman-adv-core/invariant/010-wan b/gluon/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/300-gluon-mesh-batman-adv-core-wan similarity index 100% rename from gluon/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/mesh-batman-adv-core/invariant/010-wan rename to gluon/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/300-gluon-mesh-batman-adv-core-wan diff --git a/gluon/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/mesh-batman-adv-core/invariant/011-mesh b/gluon/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/310-gluon-mesh-batman-adv-core-mesh similarity index 100% rename from gluon/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/mesh-batman-adv-core/invariant/011-mesh rename to gluon/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/310-gluon-mesh-batman-adv-core-mesh diff --git a/gluon/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/mesh-batman-adv-core/invariant/020-wireless b/gluon/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/320-gluon-mesh-batman-adv-core-wireless similarity index 100% rename from gluon/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/mesh-batman-adv-core/invariant/020-wireless rename to gluon/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/320-gluon-mesh-batman-adv-core-wireless diff --git a/gluon/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/mesh-batman-adv-core/invariant/030-mesh-on-wan b/gluon/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/330-gluon-mesh-batman-adv-core-mesh-on-wan similarity index 100% rename from gluon/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/mesh-batman-adv-core/invariant/030-mesh-on-wan rename to gluon/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/330-gluon-mesh-batman-adv-core-mesh-on-wan diff --git a/gluon/gluon-mesh-vpn-fastd/files/lib/gluon/upgrade/mesh-vpn-fastd/invariant/010-mesh-vpn-fastd b/gluon/gluon-mesh-vpn-fastd/files/lib/gluon/upgrade/400-mesh-vpn-fastd similarity index 63% rename from gluon/gluon-mesh-vpn-fastd/files/lib/gluon/upgrade/mesh-vpn-fastd/invariant/010-mesh-vpn-fastd rename to gluon/gluon-mesh-vpn-fastd/files/lib/gluon/upgrade/400-mesh-vpn-fastd index dcd14c3..0585f5a 100755 --- a/gluon/gluon-mesh-vpn-fastd/files/lib/gluon/upgrade/mesh-vpn-fastd/invariant/010-mesh-vpn-fastd +++ b/gluon/gluon-mesh-vpn-fastd/files/lib/gluon/upgrade/400-mesh-vpn-fastd @@ -4,9 +4,7 @@ local site = require 'gluon.site_config' local users = require 'gluon.users' local util = require 'gluon.util' -local uci = require 'luci.model.uci' - -local c = uci.cursor() +local uci = require('luci.model.uci').cursor() -- The previously used user is removed, we need root privileges to use the packet_mark option @@ -16,23 +14,30 @@ users.remove_user('gluon-fastd') users.add_group('gluon-fastd', 800) -c:section('fastd', 'fastd', 'mesh_vpn', +local enabled = uci:get('fastd', 'mesh_vpn', 'enabled') +if not enabled then + enabled = site.fastd_mesh_vpn.enabled and 1 or 0 +end + + +uci:section('fastd', 'fastd', 'mesh_vpn', { + enabled = enabled, group = 'gluon-fastd', syslog_level = 'verbose', interface = 'mesh-vpn', mode = 'tap', mtu = site.fastd_mesh_vpn.mtu, - secure_handshakes = '1', + secure_handshakes = 1, method = site.fastd_mesh_vpn.methods, packet_mark = 1, status_socket = '/var/run/fastd.mesh_vpn.socket', } ) -c:delete('fastd', 'mesh_vpn', 'user') +uci:delete('fastd', 'mesh_vpn', 'user') -c:delete('fastd', 'mesh_vpn_backbone') -c:section('fastd', 'peer_group', 'mesh_vpn_backbone', +uci:delete('fastd', 'mesh_vpn_backbone') +uci:section('fastd', 'peer_group', 'mesh_vpn_backbone', { enabled = 1, net = 'mesh_vpn', @@ -40,14 +45,14 @@ c:section('fastd', 'peer_group', 'mesh_vpn_backbone', } ) -c:delete_all('fastd', 'peer', +uci:delete_all('fastd', 'peer', function(peer) return peer.net == 'mesh_vpn' and peer.group == 'mesh_vpn_backbone' end ) for name, config in pairs(site.fastd_mesh_vpn.backbone.peers) do - c:section('fastd', 'peer', 'mesh_vpn_backbone_peer_' .. name, + uci:section('fastd', 'peer', 'mesh_vpn_backbone_peer_' .. name, { enabled = 1, net = 'mesh_vpn', @@ -58,11 +63,11 @@ for name, config in pairs(site.fastd_mesh_vpn.backbone.peers) do ) end -c:save('fastd') -c:commit('fastd') +uci:save('fastd') +uci:commit('fastd') -c:section('network', 'interface', 'mesh_vpn', +uci:section('network', 'interface', 'mesh_vpn', { ifname = 'mesh-vpn', proto = 'batadv', @@ -72,11 +77,11 @@ c:section('network', 'interface', 'mesh_vpn', } ) -c:save('network') -c:commit('network') +uci:save('network') +uci:commit('network') -c:section('firewall', 'include', 'mesh_vpn_dns', +uci:section('firewall', 'include', 'mesh_vpn_dns', { type = 'restore', path = '/lib/gluon/mesh-vpn-fastd/iptables.rules', @@ -84,5 +89,5 @@ c:section('firewall', 'include', 'mesh_vpn_dns', } ) -c:save('firewall') -c:commit('firewall') +uci:save('firewall') +uci:commit('firewall') diff --git a/gluon/gluon-mesh-vpn-fastd/files/lib/gluon/upgrade/mesh-vpn-fastd/invariant/020-secret-generate b/gluon/gluon-mesh-vpn-fastd/files/lib/gluon/upgrade/410-mesh-vpn-fastd-generate-secret similarity index 100% rename from gluon/gluon-mesh-vpn-fastd/files/lib/gluon/upgrade/mesh-vpn-fastd/invariant/020-secret-generate rename to gluon/gluon-mesh-vpn-fastd/files/lib/gluon/upgrade/410-mesh-vpn-fastd-generate-secret diff --git a/gluon/gluon-mesh-vpn-fastd/files/lib/gluon/upgrade/mesh-vpn-fastd/initial/010-mesh-vpn-fastd b/gluon/gluon-mesh-vpn-fastd/files/lib/gluon/upgrade/mesh-vpn-fastd/initial/010-mesh-vpn-fastd deleted file mode 100755 index 4beb714..0000000 --- a/gluon/gluon-mesh-vpn-fastd/files/lib/gluon/upgrade/mesh-vpn-fastd/initial/010-mesh-vpn-fastd +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/lua - -local site = require 'gluon.site_config' -local uci = require 'luci.model.uci' -local c = uci.cursor() - -c:section('fastd', 'fastd', 'mesh_vpn', - { - enabled = site.fastd_mesh_vpn.enabled and 1 or 0 - } -) - -c:save('fastd') -c:commit('fastd') diff --git a/gluon/gluon-next-node/files/lib/gluon/upgrade/next-node/invariant/010-next-node b/gluon/gluon-next-node/files/lib/gluon/upgrade/400-next-node similarity index 100% rename from gluon/gluon-next-node/files/lib/gluon/upgrade/next-node/invariant/010-next-node rename to gluon/gluon-next-node/files/lib/gluon/upgrade/400-next-node diff --git a/gluon/gluon-node-info/files/lib/gluon/upgrade/node-info/invariant/001-node-system b/gluon/gluon-node-info/files/lib/gluon/upgrade/500-node-info-system similarity index 100% rename from gluon/gluon-node-info/files/lib/gluon/upgrade/node-info/invariant/001-node-system rename to gluon/gluon-node-info/files/lib/gluon/upgrade/500-node-info-system diff --git a/gluon/gluon-node-info/files/lib/gluon/upgrade/node-info/invariant/010-node-role b/gluon/gluon-node-info/files/lib/gluon/upgrade/510-node-info-role similarity index 100% rename from gluon/gluon-node-info/files/lib/gluon/upgrade/node-info/invariant/010-node-role rename to gluon/gluon-node-info/files/lib/gluon/upgrade/510-node-info-role diff --git a/gluon/gluon-radvd/files/lib/gluon/upgrade/radvd/invariant/10-radvd-user b/gluon/gluon-radvd/files/lib/gluon/upgrade/500-radvd-remove-user similarity index 100% rename from gluon/gluon-radvd/files/lib/gluon/upgrade/radvd/invariant/10-radvd-user rename to gluon/gluon-radvd/files/lib/gluon/upgrade/500-radvd-remove-user diff --git a/gluon/gluon-setup-mode/files/lib/gluon/upgrade/setup-mode/invariant/005-setup-mode b/gluon/gluon-setup-mode/files/lib/gluon/upgrade/300-setup-mode similarity index 100% rename from gluon/gluon-setup-mode/files/lib/gluon/upgrade/setup-mode/invariant/005-setup-mode rename to gluon/gluon-setup-mode/files/lib/gluon/upgrade/300-setup-mode diff --git a/gluon/gluon-setup-mode/files/lib/gluon/upgrade/setup-mode/invariant/010-setup-mode-migrate b/gluon/gluon-setup-mode/files/lib/gluon/upgrade/310-setup-mode-migrate similarity index 100% rename from gluon/gluon-setup-mode/files/lib/gluon/upgrade/setup-mode/invariant/010-setup-mode-migrate rename to gluon/gluon-setup-mode/files/lib/gluon/upgrade/310-setup-mode-migrate diff --git a/gluon/gluon-setup-mode/files/lib/gluon/upgrade/setup-mode/invariant/011-setup-ifname b/gluon/gluon-setup-mode/files/lib/gluon/upgrade/320-setup-ifname similarity index 100% rename from gluon/gluon-setup-mode/files/lib/gluon/upgrade/setup-mode/invariant/011-setup-ifname rename to gluon/gluon-setup-mode/files/lib/gluon/upgrade/320-setup-ifname diff --git a/gluon/gluon-simple-tc/files/lib/gluon/upgrade/simple-tc/invariant/010-site-defaults b/gluon/gluon-simple-tc/files/lib/gluon/upgrade/300-simple-tc-site-defaults similarity index 100% rename from gluon/gluon-simple-tc/files/lib/gluon/upgrade/simple-tc/invariant/010-site-defaults rename to gluon/gluon-simple-tc/files/lib/gluon/upgrade/300-simple-tc-site-defaults diff --git a/gluon/gluon-status-page/files/lib/gluon/upgrade/status-page/invariant/010-status-page b/gluon/gluon-status-page/files/lib/gluon/upgrade/500-status-page similarity index 100% rename from gluon/gluon-status-page/files/lib/gluon/upgrade/status-page/invariant/010-status-page rename to gluon/gluon-status-page/files/lib/gluon/upgrade/500-status-page