diff --git a/files/etc/cron.boot/reinstall-packages b/files/etc/cron.boot/reinstall-packages index 270bf522..a50c5026 100755 --- a/files/etc/cron.boot/reinstall-packages +++ b/files/etc/cron.boot/reinstall-packages @@ -41,6 +41,17 @@ local package_store = "/etc/package_store" local package_catalog = package_store .. "/catalog.json" if nixio.fs.stat(package_catalog) then + -- Make sure we can contact the package server before proceeding. + -- We'll wait a few minutes before going ahead anyway + for i = 1,5 + do + if os.execute("ping -q -c 1 -W 5 downloads.arednmesh.org > /dev/null 2>&1") == 0 then + break + end + print("Failed to contact package server - retry in 60 seconds") + nixio.nanosleep(60, 0) + end + os.execute("opkg update") local catalog = luci.jsonc.parse(io.open(package_catalog):read("*a")) for ipkg, state in pairs(catalog.installed) @@ -56,4 +67,5 @@ if nixio.fs.stat(package_catalog) then end end +-- Don't do this again os.remove("/etc/cron.boot/reinstall-packages") diff --git a/files/etc/permpkg b/files/etc/permpkg index 3e2167c3..3526939d 100644 --- a/files/etc/permpkg +++ b/files/etc/permpkg @@ -1,79 +1,142 @@ +ath10k-board-qca9887 +ath10k-board-qca988x +ath10k-firmware-qca4019-ct +ath10k-firmware-qca9887-ct +ath10k-firmware-qca988x-ct base-files -bridge busybox +ca-bundle +curl dnsmasq dropbear -firewall -hotplug2 -ip +ethtool +firewall4 +fstools +fwtool +getrandom +hostapd-common iperf3 -nftables iw iwinfo +jansson4 jshn +jsonfilter kernel kmod-ath +kmod-ath10k-ct +kmod-ath10k-ct-smallbuffers kmod-ath9k kmod-ath9k-common kmod-cfg80211 -kmod-crypto-aes -kmod-crypto-arc4 -kmod-crypto-core +kmod-crypto-aead +kmod-crypto-ccm +kmod-crypto-cmac +kmod-crypto-crc32c +kmod-crypto-ctr +kmod-crypto-gcm +kmod-crypto-gf128 +kmod-crypto-ghash +kmod-crypto-hash +kmod-crypto-hmac +kmod-crypto-manager +kmod-crypto-null +kmod-crypto-rng +kmod-crypto-seqiv +kmod-crypto-sha256 kmod-gpio-button-hotplug -kmod-ipt-conntrack -kmod-ipt-core -kmod-ipt-ipopt -kmod-ipt-nat -kmod-ipt-nathelper +kmod-hwmon-core +kmod-ipip +kmod-iptunnel +kmod-iptunnel4 kmod-leds-gpio -kmod-ledtrig-default-on -kmod-ledtrig-netdev -kmod-ledtrig-timer -kmod-ledtrig-usbdev -kmod-lib-crc-ccitt +kmod-ledtrig-gpio +kmod-lib-crc32c kmod-mac80211 +kmod-nf-conntrack +kmod-nf-flow +kmod-nf-log +kmod-nf-nat +kmod-nf-reject +kmod-nfnetlink +kmod-nft-core +kmod-nft-fib +kmod-nft-nat +kmod-nft-offload kmod-nls-base kmod-tun kmod-usb-core -kmod-usb-ohci -kmod-usb-uhci -kmod-usb2 -kmod-wdt-ath79 -libblobmsg-json +kmod-usb-dwc3 +kmod-usb-dwc3-qcom +libblobmsg-json20220515 libc -libgcc -libip4tc -libiwinfo -libjson -liblzo -libnl-tiny -libpcap +libcurl4 +libgcc1 +libiwinfo-data +libiwinfo-lua +libiwinfo20210430 +libjson-c5 +libjson-script20220515 +liblua5.1.5 +liblucihttp-lua +liblucihttp0 +liblzo2 +libmbedtls12 +libmnl0 +libnftnl11 +libnl-tiny1 libpthread librt -libubox -libubus -libuci -libxtables +libubox20220515 +libubus-lua +libubus20220601 +libuci-lua +libuci20130104 +libuclient20201210 +libucode20220812 +libxtables12 +logd +lua +luasocket +luci-lib-base +luci-lib-ip +luci-lib-jsonc +luci-lib-nixio mtd netifd +nftables-json olsrd olsrd-mod-arprefresh olsrd-mod-dot-draw olsrd-mod-dyn-gw -olsrd-mod-httpinfo +olsrd-mod-jsoninfo olsrd-mod-nameservice -olsrd-mod-secure olsrd-mod-txtinfo olsrd-mod-watchdog +openwrt-keyring opkg -ssidident +procd +prometheus-exporter +rpcd +rpcd-mod-file +rpcd-mod-luci +rssileds swconfig -tcpdump-mini +ubi-utils uboot-envtools +ubox ubus ubusd uci +uclient-fetch +ucode +ucode-mod-fs +ucode-mod-ubus +ucode-mod-uci uhttpd +urandom-seed +urngd +usign vtun +wireless-regdb wpad-mini zlib diff --git a/files/usr/lib/lua/aredn/html.lua b/files/usr/lib/lua/aredn/html.lua index 340245df..af304228 100644 --- a/files/usr/lib/lua/aredn/html.lua +++ b/files/usr/lib/lua/aredn/html.lua @@ -72,6 +72,15 @@ function html.alert_banner() if not aredn.hardware.supported() then html.print("
!!!! UNSUPPORTED DEVICE !!!!
") end + local f = io.open("/etc/cron.boot/reinstall-packages") + if f then + f:close() + f = io.open("/etc/package_store/catalog.json") + if f then + f:close() + html.print("
Packages are being reinstalled in the background. This can take a few minutes.
") + end + end html.print("") end diff --git a/files/www/cgi-bin/admin b/files/www/cgi-bin/admin index d6b1226e..75ab656b 100755 --- a/files/www/cgi-bin/admin +++ b/files/www/cgi-bin/admin @@ -613,7 +613,12 @@ function record_package(op, ipkg, file) nixio.fs.remove(package_store .. "/" .. ipkg .. ".ipk") catalog.installed[ipkg] = nil end - write_all(package_catalog, luci.jsonc.stringify(catalog)) + os.remove(package_catalog) + for _,_ in pairs(catalog.installed) + do + write_all(package_catalog, luci.jsonc.stringify(catalog)) + break + end end -- upload package