Add gluon-legacy package with legacy upgrade scripts

This commit is contained in:
Matthias Schiffer 2014-02-22 08:27:51 +01:00
parent 9a07e83d4c
commit 99c2999331
15 changed files with 232 additions and 11 deletions

View File

@ -1,3 +1,3 @@
config wizard
option enabled '1'
option enabled '0'
option configured '0'

View File

@ -1,6 +0,0 @@
#!/bin/sh
OLD_CFG=/etc/config/config_mode
NEW_CFG=/etc/config/gluon-config-mode
[ -f $OLD_CFG ] && mv $OLD_CFG $NEW_CFG

View File

@ -5,6 +5,13 @@ 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"
@ -33,7 +40,11 @@ do_component() {
local oldversion="$(oldversion_of "$component")"
if [ -z "$oldversion" ]; then
do_dir initial
if [ "$HAS_LEGACY" ]; then
do_dir legacy
else
do_dir initial
fi
else
local v
@ -62,3 +73,7 @@ for component in *; do
[ "$component" != 'core' ] || continue
do_component "$component"
done
if [ "$HAS_LEGACY" ]; then
/lib/gluon/legacy/legacy-upgrade-late
fi

View File

@ -0,0 +1,36 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=gluon-legacy
PKG_VERSION:=1
PKG_RELEASE:=1.$(GLUON_CONFIG_VERSION)
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
include $(INCLUDE_DIR)/package.mk
define Package/gluon-legacy
SECTION:=gluon
CATEGORY:=Gluon
TITLE:=Legacy update scripts
DEPENDS:=+gluon-legacy
endef
define Package/gluon-legacy/description
Gluon community wifi mesh firmware framework: legacy update scripts
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
endef
define Build/Configure
endef
define Build/Compile
endef
define Package/gluon-legacy/install
$(GLUON_GENERATE) ./generate/* $(1)/
endef
$(eval $(call BuildPackage,gluon-legacy))

View File

@ -0,0 +1,12 @@
#!/bin/sh
RET=1
for file in @legacy.version_files@; do
if [ -e "$file" ]; then
rm "$file"
RET=0
fi
done
exit $RET

View File

@ -0,0 +1,3 @@
#!/bin/sh
rm -f @legacy.old_files@

View File

@ -0,0 +1,14 @@
#!/bin/sh
. /lib/functions.sh
for config in @legacy.config_mode_configs@; do
if [ "$(uci -q get "$config".configured)" = '1' ]; then
uci_set gluon-config-mode '@wizard[0]' 'configured' '1'
uci_commit gluon-config-mode
break
fi
done

View File

@ -0,0 +1,37 @@
#!/bin/sh
. /lib/gluon/functions/sysconfig.sh
. /lib/ar71xx.sh
get_primary_mac() {
case "$(ar71xx_board_name)" in
tl-wdr3600|tl-wdr4300)
cat /sys/class/ieee80211/phy1/macaddress
;;
*)
cat /sys/class/ieee80211/phy0/macaddress
;;
esac
}
iface_exists() {
local name="$1"
ip link show dev "${name//.*/}" >/dev/null 2>&1
}
remove_bat0() {
sed -r -e 's/(^| )bat0( |$)/ /g' -e 's/^ | $//g'
}
mesh_ifname="$(uci get 'network.@legacy.mesh_ifname@.ifname' | remove_bat0)"
wan_ifname="$(uci get network.wan.ifname | remove_bat0)"
if [ -n "$wan_ifname" ] && iface_exists "$wan_ifname"; then
[ -z "$mesh_ifname" ] || sysconfig_set lan_ifname "$mesh_ifname"
sysconfig_set wan_ifname "$wan_ifname"
else
sysconfig_set wan_ifname "$mesh_ifname"
fi
sysconfig_set primary_mac "$(get_primary_mac)"

View File

@ -0,0 +1,22 @@
#!/bin/sh
. /lib/functions.sh
. /lib/gluon/functions/sysconfig.sh
case "$(ar71xx_board_name)" in
tl-wr1043nd|\
tl-wdr3600|\
tl-wdr4300) # fix up duplicate mac addresses
local mainaddr=$(sysconfig primary_mac)
local oIFS="$IFS"; IFS=":"; set -- $mainaddr; IFS="$oIFS"
local b2mask=0x02
local wanaddr=$(printf "%02x:%s:%s:%02x:%s:%02x" $(( 0x$1 | $b2mask )) $2 $3 $(( (0x$4 + 1) % 0x100 )) $5 $(( (0x$6 + 1) % 0x100 )) )
uci_set network wan macaddr "$wanaddr"
;;
esac
uci_commit network

View File

@ -0,0 +1,19 @@
#!/bin/sh
. /lib/functions.sh
config_load wireless
delete_legacy_iface() {
local iface="$1"
for wifi in @legacy.wifi_names@; do
if [ "$wifi" = "$iface" ]; then
uci_remove wireless "$iface"
break
fi
done
}
config_foreach delete_legacy_iface 'wifi-iface'
uci_commit wireless

View File

@ -0,0 +1,13 @@
#!/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

View File

@ -0,0 +1,18 @@
#!/bin/sh
. /lib/functions.sh
. /lib/gluon/functions/sysconfig.sh
uci_rename network '@legacy.mesh_ifname@' 'client'
if [ "$(uci_get network client proto)" = 'none' ]; then
uci_remove network client auto
uci_remove network client accept_ra
uci_set network client proto 'dhcpv6'
uci_set network client reqprefix 'no'
fi
uci_commit network

View File

@ -0,0 +1,22 @@
#!/bin/sh
. /lib/functions.sh
SECRET=
for config in @legacy.fastd_configs@; do
if [ -z "$SECRET" ]; then
SECRET="$(uci_get fastd "$config" secret)"
fi
uci_remove fastd "$config"
done
if [ -n "$SECRET" ]; then
uci_add fastd fastd 'mesh_vpn'
uci_set fastd 'mesh_vpn' 'secret' "$SECRET"
fi
uci_commit fastd

View File

@ -0,0 +1,19 @@
#!/bin/sh
. /lib/functions.sh
for config in @legacy.tc_configs@; do
if uci -q get "$config" >/dev/null; then
uci_add gluon-simple-tc interface 'mesh_vpn'
uci_set gluon-simple-tc 'mesh_vpn' ifname 'mesh-vpn'
uci_set gluon-simple-tc 'mesh_vpn' enabled "$(uci get "$config".enabled)"
uci_set gluon-simple-tc 'mesh_vpn' limit_ingress "$(uci get "$config".downstream)"
uci_set gluon-simple-tc 'mesh_vpn' limit_egress "$(uci get "$config".upstream)"
uci_commit gluon-simple-tc
break
fi
done

View File

@ -25,9 +25,6 @@ add_user gluon-fastd 800
uci_add fastd fastd mesh_vpn
uci_remove fastd mesh_vpn config
uci_remove fastd mesh_vpn config_peer_dir
uci_set fastd mesh_vpn user 'gluon-fastd'
uci_set fastd mesh_vpn syslog_level 'verbose'
uci_set fastd mesh_vpn interface 'mesh-vpn'