#!/bin/sh

export PATH=/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
UPDATE_TARBALL=update.tar.gz

echo "Update Script started"
pre_vers=`head -n 1 /etc/cabversion`

path=$PWD

rm -f /etc/factory/scripts.d/bondix/disable-bondingproxy.sh
rm -f /etc/factory/scripts.d/bondix/enable-bondingproxy.sh
rm -f /etc/factory/scripts.d/bondix/ipsec.inc
rm -f /etc/factory/scripts.d/bondix/tunnel-addroute.sh
rm -f /etc/factory/scripts.d/bondix/tunnel-connect.sh
rm -f /etc/factory/scripts.d/bondix/tunnel-delroute.sh
rm -f /etc/factory/scripts.d/bondix/tunnel-disconnect.sh
rm -f /home/config/.login
rm -f /home/config/bin/edit
rm -f /home/config/bin/globals.conf
rm -f /home/config/bin/help
rm -f /home/config/bin/list
rm -f /home/config/bin/passwd
rm -f /home/config/bin/password
rm -f /home/config/bin/ping
rm -f /home/config/bin/reboot
rm -f /home/config/bin/reset
rm -f /home/config/bin/show
rm -f /home/config/bin/traceroute
rm -f /home/config/bin/tracert
rm -f /home/config/bin/update
rm -f /lib/dhcpcd/dhcpcd-hooks/50-ntp.conf
rm -f /lib/modules/5.10.103/kernel/arch/arm/crypto/chacha-neon.ko
rm -f /lib/modules/5.10.103/kernel/arch/arm/crypto/poly1305-arm.ko
rm -f /lib/modules/5.10.103/kernel/crypto/crypto_engine.ko
rm -f /lib/modules/5.10.103/kernel/crypto/curve25519-generic.ko
rm -f /lib/modules/5.10.103/kernel/crypto/ecb.ko
rm -f /lib/modules/5.10.103/kernel/crypto/xts.ko
rm -f /lib/modules/5.10.103/kernel/drivers/char/tpm/tpm.ko
rm -f /lib/modules/5.10.103/kernel/drivers/char/tpm/tpm_i2c_atmel.ko
rm -f /lib/modules/5.10.103/kernel/drivers/char/tpm/tpm_tis_core.ko
rm -f /lib/modules/5.10.103/kernel/drivers/char/tpm/tpm_tis_spi.ko
rm -f /lib/modules/5.10.103/kernel/drivers/crypto/caam/caam.ko
rm -f /lib/modules/5.10.103/kernel/drivers/crypto/caam/caam_jr.ko
rm -f /lib/modules/5.10.103/kernel/drivers/crypto/caam/caamalg_desc.ko
rm -f /lib/modules/5.10.103/kernel/drivers/crypto/caam/caamhash_desc.ko
rm -f /lib/modules/5.10.103/kernel/drivers/crypto/caam/error.ko
rm -f /lib/modules/5.10.103/kernel/drivers/i2c/algos/i2c-algo-pca.ko
rm -f /lib/modules/5.10.103/kernel/drivers/i2c/algos/i2c-algo-pcf.ko
rm -f /lib/modules/5.10.103/kernel/drivers/input/serio/serport.ko
rm -f /lib/modules/5.10.103/kernel/drivers/misc/eeprom/eeprom_93cx6.ko
rm -f /lib/modules/5.10.103/kernel/drivers/modules/gpio/gpio.ko
rm -f /lib/modules/5.10.103/kernel/drivers/modules/pae/pae.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/bareudp.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/ethernet/freescale/enetc/fsl-enetc.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/ipvlan/ipvlan.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/ipvlan/ipvtap.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/mdio/mdio-i2c.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/mdio/mdio-netlink.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/pcs/pcs-lynx.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/phy/phylink.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/phy/sfp.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/tap.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/usb/asix.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/usb/cdc_ether.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/usb/cdc_mbim.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/usb/cdc_ncm.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/usb/huawei_cdc_ncm.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/usb/qmi_wwan.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/usb/sierra_net.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/usb/smsc75xx.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/usb/usbnet.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireguard/wireguard.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireless/intel/iwlwifi/mvm/iwlmvm.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireless/mediatek/mt76/mt76-usb.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireless/mediatek/mt76/mt76.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7663-usb-sdio-common.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7663u.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireless/mediatek/mt76/mt76x02-lib.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireless/mediatek/mt76/mt76x02-usb.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2u.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireless/mediatek/mt7601u/mt7601u.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireless/ralink/rt2x00/rt2800lib.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireless/ralink/rt2x00/rt2800usb.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00lib.ko
rm -f /lib/modules/5.10.103/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00usb.ko
rm -f /lib/modules/5.10.103/kernel/drivers/ptp/ptp-qoriq.ko
rm -f /lib/modules/5.10.103/kernel/drivers/tty/serial/sc16is7xx.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/class/cdc-acm.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/class/cdc-wdm.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/gadget/function/u_ether.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/gadget/function/usb_f_ecm.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/gadget/function/usb_f_ecm_subset.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/gadget/function/usb_f_mass_storage.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/gadget/function/usb_f_rndis.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/gadget/legacy/g_ether.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/gadget/legacy/g_mass_storage.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/gadget/libcomposite.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/serial/cp210x.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/serial/ftdi_sio.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/serial/option.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/serial/pl2303.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/serial/sierra.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/serial/usb-serial-simple.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/serial/usb_wwan.ko
rm -f /lib/modules/5.10.103/kernel/drivers/usb/serial/usbserial.ko
rm -f /lib/modules/5.10.103/kernel/fs/binfmt_misc.ko
rm -f /lib/modules/5.10.103/kernel/fs/configfs/configfs.ko
rm -f /lib/modules/5.10.103/kernel/kernel/configs.ko
rm -f /lib/modules/5.10.103/kernel/lib/crc-itu-t.ko
rm -f /lib/modules/5.10.103/kernel/lib/crc7.ko
rm -f /lib/modules/5.10.103/kernel/lib/crypto/libblake2s-generic.ko
rm -f /lib/modules/5.10.103/kernel/lib/crypto/libblake2s.ko
rm -f /lib/modules/5.10.103/kernel/lib/crypto/libchacha20poly1305.ko
rm -f /lib/modules/5.10.103/kernel/lib/crypto/libcurve25519-generic.ko
rm -f /lib/modules/5.10.103/kernel/lib/crypto/libcurve25519.ko
rm -f /lib/modules/5.10.103/kernel/lib/libcrc32c.ko
rm -f /lib/modules/5.10.103/kernel/net/batman-adv/batman-adv.ko
rm -f /lib/modules/5.10.103/kernel/net/ipv4/esp4_offload.ko
rm -f /lib/modules/5.10.103/kernel/net/ipv4/udp_tunnel.ko
rm -f /lib/modules/5.10.103/kernel/net/ipv6/ip6_udp_tunnel.ko
rm -f /lib/modules/5.10.103/kernel/net/netfilter/xt_TCPMSS.ko
rm -f /lib/modules/5.10.103/kernel/net/xfrm/xfrm_interface.ko
rm -f /lib/modules/5.10.103/modules.alias
rm -f /lib/modules/5.10.103/modules.alias.bin
rm -f /lib/modules/5.10.103/modules.builtin
rm -f /lib/modules/5.10.103/modules.builtin.bin
rm -f /lib/modules/5.10.103/modules.builtin.modinfo
rm -f /lib/modules/5.10.103/modules.dep
rm -f /lib/modules/5.10.103/modules.dep.bin
rm -f /lib/modules/5.10.103/modules.devname
rm -f /lib/modules/5.10.103/modules.order
rm -f /lib/modules/5.10.103/modules.softdep
rm -f /lib/modules/5.10.103/modules.symbols
rm -f /lib/modules/5.10.103/modules.symbols.bin
rm -f /sbin/ifcfg
rm -f /sbin/routef
rm -f /sbin/rtpr
rm -f /usr/bin/xmlwf
rm -f /usr/lib/libexpat.so.1.8.1
rm -f /usr/lib/libp11-kit.so.0.1.0
rm -f /usr/lib/libpcre.so.1.2.10
rm -f /usr/lib/libpcrecpp.so.0.0.1
rm -f /usr/lib/libpcreposix.so.0.0.6
rm -f /usr/lib/libz.so.1.2.11
rm -f /usr/lib/p11-kit/p11-kit-remote
rm -f /usr/lib/p11-kit/trust-extract-compat
#<REMOVE>
cd /
tar xzf ${path}/${UPDATE_TARBALL}

cd ${path}

## Update Kernel if present
if [ -r /root/apf6-linux.bin ]; then
	echo "Installing new kernel"
	mount -t ext4 /dev/mmcblk2p1 /mnt
	mv /root/apf6-linux.bin /mnt/

	for i in /root/imx6*.dtb; do
		if [ -r "$i" ]; then
			mv $i /mnt/
		fi
	done
	sync
	umount /mnt
fi

ldconfig

echo "Update finished."

post_vers=`head -n 1 /etc/cabversion`
echo "Updated from ${pre_vers} to ${post_vers}"

echo "The config file /etc/cablynx.conf was untouched."
echo "Please use the new config file in /etc/cablynx.conf.${post_vers#*: }"

