From 1679e49c2c77c87f1368fd2b4164c8cd641c6baa Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 23 Jan 2015 05:51:13 +0100 Subject: [PATCH] gluon-legacy: convert gluon-core legacy scripts to invariant scripts This also fixes a long-broken legacy upgrade script which would leave the sysconfig variable lan_ifname unset and the LAN ports unusable. --- .../gluon/upgrade/core/invariant/000-legacy | 11 +++++ .../core/invariant/019-legacy-interfaces | 40 +++++++++++++++++++ .../core/invariant/210-legacy-wireless | 24 +++++++++++ .../gluon/upgrade/core/legacy/001-sysconfig | 37 ----------------- .../gluon/upgrade/core/legacy/020-wireless | 24 ----------- .../mesh-batman-adv-core/legacy/010-mesh | 22 ---------- 6 files changed, 75 insertions(+), 83 deletions(-) create mode 100755 gluon/gluon-legacy/files/lib/gluon/upgrade/core/invariant/000-legacy create mode 100755 gluon/gluon-legacy/files/lib/gluon/upgrade/core/invariant/019-legacy-interfaces create mode 100755 gluon/gluon-legacy/files/lib/gluon/upgrade/core/invariant/210-legacy-wireless delete mode 100755 gluon/gluon-legacy/files/lib/gluon/upgrade/core/legacy/001-sysconfig delete mode 100755 gluon/gluon-legacy/files/lib/gluon/upgrade/core/legacy/020-wireless delete mode 100755 gluon/gluon-legacy/files/lib/gluon/upgrade/mesh-batman-adv-core/legacy/010-mesh diff --git a/gluon/gluon-legacy/files/lib/gluon/upgrade/core/invariant/000-legacy b/gluon/gluon-legacy/files/lib/gluon/upgrade/core/invariant/000-legacy new file mode 100755 index 0000000..7843667 --- /dev/null +++ b/gluon/gluon-legacy/files/lib/gluon/upgrade/core/invariant/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/core/invariant/019-legacy-interfaces b/gluon/gluon-legacy/files/lib/gluon/upgrade/core/invariant/019-legacy-interfaces new file mode 100755 index 0000000..b48e42b --- /dev/null +++ b/gluon/gluon-legacy/files/lib/gluon/upgrade/core/invariant/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/core/invariant/210-legacy-wireless b/gluon/gluon-legacy/files/lib/gluon/upgrade/core/invariant/210-legacy-wireless new file mode 100755 index 0000000..36da063 --- /dev/null +++ b/gluon/gluon-legacy/files/lib/gluon/upgrade/core/invariant/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/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/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')