#!/bin/ash clean_distfeeds() { # Define the list of items to comment out items_to_comment=" src/gz openwrt_core https://downloads.openwrt.org/releases/22.03.5/targets/sdx75/generic/packages src/gz openwrt_qtiagm https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtiagm src/gz openwrt_qtiargs https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtiargs src/gz openwrt_qtiaudio https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtiaudio src/gz openwrt_qtiaudioprop https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtiaudioprop src/gz openwrt_qtibsp https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtibsp src/gz openwrt_qtibspprop https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtibspprop src/gz openwrt_qtibt https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtibt src/gz openwrt_qtibtprop https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtibtprop src/gz openwrt_qticore https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qticore src/gz openwrt_qticoreinternal https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qticoreinternal src/gz openwrt_qticoreprop https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qticoreprop src/gz openwrt_qtictainternal https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtictainternal src/gz openwrt_qtidata https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtidata src/gz openwrt_qtidatainternal https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtidatainternal src/gz openwrt_qtidataprop https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtidataprop src/gz openwrt_qtiipq https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtiipq src/gz openwrt_qtiipqezmesh https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtiipqezmesh src/gz openwrt_qtiipqprop https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtiipqprop src/gz openwrt_qtilocation https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtilocation src/gz openwrt_qtilocationinternal https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtilocationinternal src/gz openwrt_qtilocationprop https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtilocationprop src/gz openwrt_qtimsdcprop https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtimsdcprop src/gz openwrt_qtinternal https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtinternal src/gz openwrt_qtipal https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtipal src/gz openwrt_qtiperfprop https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtiperfprop src/gz openwrt_qtippatprop https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtippatprop src/gz openwrt_qtiquectel https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtiquectel src/gz openwrt_qtiquectelprop https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtiquectelprop src/gz openwrt_qtirilprop https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtirilprop src/gz openwrt_qtisecurity https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtisecurity src/gz openwrt_qtisecurityinternal https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtisecurityinternal src/gz openwrt_qtisecurityprop https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtisecurityprop src/gz openwrt_qtisensorsinternal https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtisensorsinternal src/gz openwrt_qtisensorsprop https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtisensorsprop src/gz openwrt_qtissdk https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtissdk src/gz openwrt_qtissmgr https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtissmgr src/gz openwrt_qtissmgrprop https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtissmgrprop src/gz openwrt_qtiwlan https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtiwlan src/gz openwrt_qtiwlanprop https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/qtiwlanprop " # Define the list of items to ensure are uncommented items_to_keep=" src/gz openwrt_base https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/base src/gz openwrt_luci https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/luci src/gz openwrt_packages https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/packages src/gz openwrt_routing https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/routing src/gz openwrt_telephony https://downloads.openwrt.org/releases/22.03.5/packages/aarch64_cortex-a53/telephony/ " # Input file to process INPUT_FILE="/etc/opkg/distfeeds.conf" # Backup the original file cp "$INPUT_FILE" "${INPUT_FILE}.bak" # Create a temporary file for the modified content TEMP_FILE="${INPUT_FILE}.tmp" # Process the file line by line while IFS= read -r line || [ -n "$line" ]; do # Remove malformed lines if [ -z "$line" ] || ! echo "$line" | grep -qE '^src/gz '; then continue fi # Check if the line should be commented out for item in $items_to_comment; do if [ "$line" = "$item" ] || [ "$line" = "# $item" ]; then echo "# $item" >> "$TEMP_FILE" continue 2 fi done # Check if the line should be uncommented for item in $items_to_keep; do if [ "$line" = "# $item" ] || [ "$line" = "$item" ]; then echo "$item" >> "$TEMP_FILE" continue 2 fi done # Preserve other lines as is echo "$line" >> "$TEMP_FILE" done < "$INPUT_FILE" # Ensure all items_to_keep are present and uncommented for item in $items_to_keep; do if ! grep -qx "$item" "$TEMP_FILE"; then echo "$item" >> "$TEMP_FILE" fi done # Replace the original file with the modified one mv "$TEMP_FILE" "$INPUT_FILE" echo "Processed '$INPUT_FILE'. Backup saved as '${INPUT_FILE}.bak'." } repo_iamromulanSDXPINN_check() { # Define the repository and key details STABLE_REPO_LINE="src/gz iamromulan-SDXPINN-repo https://raw.githubusercontent.com/iamromulan/quectel-rgmii-toolkit/SDXPINN/opkg-feed" DEV_REPO_LINE="src/gz iamromulan-SDXPINN-repo https://raw.githubusercontent.com/iamromulan/quectel-rgmii-toolkit/development-SDXPINN/opkg-feed" FEEDS_FILE="/etc/opkg/customfeeds.conf" PUBLIC_KEY_URL="https://raw.githubusercontent.com/iamromulan/quectel-rgmii-toolkit/SDXPINN/opkg-feed/iamromulan-SDXPINN-repo.key" TMP_KEY="/tmp/iamromulan-SDXPINN-repo.key" KEYS_DIR="/etc/opkg/keys" # Remove duplicate and development repo lines if grep -q "iamromulan-SDXPINN-repo" "$FEEDS_FILE"; then echo "Cleaning up duplicate or development repo entries in $FEEDS_FILE." sed -i "/iamromulan-SDXPINN-repo/d" "$FEEDS_FILE" fi # Add the stable repository to customfeeds.conf echo "Adding stable repository to $FEEDS_FILE." echo "$STABLE_REPO_LINE" >> "$FEEDS_FILE" || { echo "Error: Could not add repository to $FEEDS_FILE." return 1 } # Download the key temporarily for verification curl -fsSL "$PUBLIC_KEY_URL" -o "$TMP_KEY" || { echo "Error: Failed to download public key from $PUBLIC_KEY_URL." return 1 } # Check if the key already exists in /etc/opkg/keys/ local key_installed=0 for key in "$KEYS_DIR"/*; do if cmp -s "$TMP_KEY" "$key"; then echo "Public key already installed: $(basename "$key")." key_installed=1 break fi done # If the key is not installed, add it if [ "$key_installed" -eq 0 ]; then echo "Installing public key..." opkg-key add "$TMP_KEY" || { echo "Error: Failed to add public key." rm -f "$TMP_KEY" return 1 } echo "Public key installed successfully." fi # Clean up temporary key file rm -f "$TMP_KEY" return 0 } # Begin Patch Process echo -e "\e[92mBegining sdxpinn-patch process...\e[0m" echo -e "\e[92mEnsuring distfeeds is clean of any non-working sources and has stock OpenWRT ones...\e[0m" clean_distfeeds echo -e "\e[92mEnsuring iamromulan's SDXPINN repo is listed in customfeeds and public key is installed...\e[0m" repo_iamromulanSDXPINN_check echo -e "\e[92miamromulan's SDXPINN repo source and key is installed.\e[0m" echo -e "\e[92msdxpinn-patch process complete.\e[0m" exit 0