|
|
|
@ -1,23 +1,42 @@
|
|
|
|
#!/bin/sh
|
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
# RMxxx RGMII Toolkit
|
|
|
|
|
|
|
|
# Author: iamromulan
|
|
|
|
|
|
|
|
# Description: Toolkit for Quectel RMxxx Series modems
|
|
|
|
|
|
|
|
# Repository: https://github.com/iamromulan
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
# Environment Configuration
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
|
|
|
|
# Define toolkit paths
|
|
|
|
# Define toolkit paths
|
|
|
|
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin:/usrdata/root/bin
|
|
|
|
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin:/usrdata/root/bin
|
|
|
|
# Define Gitea repository paths
|
|
|
|
|
|
|
|
|
|
|
|
# Define Gitea repository configuration
|
|
|
|
GITEA_HOST="code.060070.xyz"
|
|
|
|
GITEA_HOST="code.060070.xyz"
|
|
|
|
GITUSER="sky"
|
|
|
|
GITUSER="sky"
|
|
|
|
REPONAME="simple-admin"
|
|
|
|
REPONAME="simple-admin"
|
|
|
|
GITTREE="main"
|
|
|
|
GITTREE="beta"
|
|
|
|
GITMAINTREE="main"
|
|
|
|
GITMAINTREE="beta"
|
|
|
|
GITDEVTREE="dev"
|
|
|
|
GITDEVTREE="dev"
|
|
|
|
|
|
|
|
|
|
|
|
# Construct Gitea URLs
|
|
|
|
# Construct Gitea URLs
|
|
|
|
# Gitea 的 raw 文件 URL 格式为: https://[host]/[user]/[repo]/raw/branch/[branch]/[file]
|
|
|
|
# Format: https://[host]/[user]/[repo]/raw/branch/[branch]/[file]
|
|
|
|
GITROOT="https://$GITEA_HOST/$GITUSER/$REPONAME/raw/branch/$GITTREE"
|
|
|
|
GITROOT="https://$GITEA_HOST/$GITUSER/$REPONAME/raw/branch/$GITTREE"
|
|
|
|
GITROOTMAIN="https://$GITEA_HOST/$GITUSER/$REPONAME/raw/branch/$GITMAINTREE"
|
|
|
|
GITROOTMAIN="https://$GITEA_HOST/$GITUSER/$REPONAME/raw/branch/$GITMAINTREE"
|
|
|
|
GITROOTDEV="https://$GITEA_HOST/$GITUSER/$REPONAME/raw/branch/$GITDEVTREE"
|
|
|
|
GITROOTDEV="https://$GITEA_HOST/$GITUSER/$REPONAME/raw/branch/$GITDEVTREE"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
# Directory Configuration
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# System directories
|
|
|
|
TMP_DIR="/tmp"
|
|
|
|
TMP_DIR="/tmp"
|
|
|
|
USRDATA_DIR="/usrdata"
|
|
|
|
USRDATA_DIR="/usrdata"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Application directories
|
|
|
|
SOCAT_AT_DIR="/usrdata/socat-at-bridge"
|
|
|
|
SOCAT_AT_DIR="/usrdata/socat-at-bridge"
|
|
|
|
SOCAT_AT_SYSD_DIR="/usrdata/socat-at-bridge/systemd_units"
|
|
|
|
SOCAT_AT_SYSD_DIR="/usrdata/socat-at-bridge/systemd_units"
|
|
|
|
SIMPLE_ADMIN_DIR="/usrdata/simpleadmin"
|
|
|
|
SIMPLE_ADMIN_DIR="/usrdata/simpleadmin"
|
|
|
|
@ -26,9 +45,16 @@ SIMPLE_FIREWALL_SCRIPT="$SIMPLE_FIREWALL_DIR/simplefirewall.sh"
|
|
|
|
SIMPLE_FIREWALL_SYSTEMD_DIR="$SIMPLE_FIREWALL_DIR/systemd"
|
|
|
|
SIMPLE_FIREWALL_SYSTEMD_DIR="$SIMPLE_FIREWALL_DIR/systemd"
|
|
|
|
TAILSCALE_DIR="/usrdata/tailscale"
|
|
|
|
TAILSCALE_DIR="/usrdata/tailscale"
|
|
|
|
TAILSCALE_SYSD_DIR="/usrdata/tailscale/systemd"
|
|
|
|
TAILSCALE_SYSD_DIR="/usrdata/tailscale/systemd"
|
|
|
|
# AT Command Script Variables and Functions
|
|
|
|
LIGHTTPD_DIR="/usrdata/lighttpd"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# AT Command configuration
|
|
|
|
DEVICE_FILE="/dev/smd7"
|
|
|
|
DEVICE_FILE="/dev/smd7"
|
|
|
|
TIMEOUT=4 # Set a timeout for the response
|
|
|
|
TIMEOUT=4 # Set a timeout for the response
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
# Basic Utility Functions
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
|
|
|
|
# Function to remount file system as read-write
|
|
|
|
# Function to remount file system as read-write
|
|
|
|
remount_rw() {
|
|
|
|
remount_rw() {
|
|
|
|
mount -o remount,rw /
|
|
|
|
mount -o remount,rw /
|
|
|
|
@ -39,7 +65,11 @@ remount_ro() {
|
|
|
|
mount -o remount,ro /
|
|
|
|
mount -o remount,ro /
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# Basic AT commands without socat bridge for fast responce commands only
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
# AT Command Functions
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Basic AT commands without socat bridge for fast response commands only
|
|
|
|
start_listening() {
|
|
|
|
start_listening() {
|
|
|
|
cat "$DEVICE_FILE" > /tmp/device_readout &
|
|
|
|
cat "$DEVICE_FILE" > /tmp/device_readout &
|
|
|
|
CAT_PID=$!
|
|
|
|
CAT_PID=$!
|
|
|
|
@ -110,6 +140,10 @@ send_at_commands() {
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
# Installation and Package Management Functions
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
|
|
|
|
# Check for existing Entware/opkg installation, install if not installed
|
|
|
|
# Check for existing Entware/opkg installation, install if not installed
|
|
|
|
ensure_entware_installed() {
|
|
|
|
ensure_entware_installed() {
|
|
|
|
remount_rw
|
|
|
|
remount_rw
|
|
|
|
@ -185,7 +219,7 @@ ensure_entware_installed() {
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#Uninstall Entware if the Users chooses
|
|
|
|
# Uninstall Entware if the Users chooses
|
|
|
|
uninstall_entware() {
|
|
|
|
uninstall_entware() {
|
|
|
|
echo -e '\033[31mInfo: Starting Entware/OPKG uninstallation...\033[0m'
|
|
|
|
echo -e '\033[31mInfo: Starting Entware/OPKG uninstallation...\033[0m'
|
|
|
|
|
|
|
|
|
|
|
|
@ -218,7 +252,239 @@ uninstall_entware() {
|
|
|
|
echo -e '\033[32mInfo: Entware/OPKG has been uninstalled successfully.\033[0m'
|
|
|
|
echo -e '\033[32mInfo: Entware/OPKG has been uninstalled successfully.\033[0m'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# function to configure the fetures of simplefirewall
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
# System Service and Configuration Functions
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Function to manage Daily Reboot Timer
|
|
|
|
|
|
|
|
manage_reboot_timer() {
|
|
|
|
|
|
|
|
# Remount root filesystem as read-write
|
|
|
|
|
|
|
|
mount -o remount,rw /
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Check if the rebootmodem service, timer, or trigger already exists
|
|
|
|
|
|
|
|
if [ -f /lib/systemd/system/rebootmodem.service ] || [ -f /lib/systemd/system/rebootmodem.timer ] || [ -f /lib/systemd/system/rebootmodem-trigger.service ]; then
|
|
|
|
|
|
|
|
echo -e "\e[1;32mThe rebootmodem service/timer/trigger is already installed.\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[1;32m1) Change\e[0m" # Green
|
|
|
|
|
|
|
|
echo -e "\e[1;31m2) Remove\e[0m" # Red
|
|
|
|
|
|
|
|
read -p "Enter your choice (1 for Change, 2 for Remove): " reboot_choice
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case $reboot_choice in
|
|
|
|
|
|
|
|
2)
|
|
|
|
|
|
|
|
# Stop and disable timer and trigger service by removing symlinks
|
|
|
|
|
|
|
|
systemctl stop rebootmodem.timer
|
|
|
|
|
|
|
|
systemctl stop rebootmodem-trigger.service
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Remove symbolic links and files
|
|
|
|
|
|
|
|
rm -f /lib/systemd/system/multi-user.target.wants/rebootmodem-trigger.service
|
|
|
|
|
|
|
|
rm -f /lib/systemd/system/rebootmodem.service
|
|
|
|
|
|
|
|
rm -f /lib/systemd/system/rebootmodem.timer
|
|
|
|
|
|
|
|
rm -f /lib/systemd/system/rebootmodem-trigger.service
|
|
|
|
|
|
|
|
rm -f "$USRDATA_DIR/reboot_modem.sh"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Reload systemd to apply changes
|
|
|
|
|
|
|
|
systemctl daemon-reload
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
echo -e "\e[1;32mRebootmodem service, timer, trigger, and script removed successfully.\e[0m"
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
1)
|
|
|
|
|
|
|
|
printf "Enter the new time for daily reboot (24-hour format in Coordinated Universal Time, HH:MM): "
|
|
|
|
|
|
|
|
read new_time
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Validate the new time format using grep
|
|
|
|
|
|
|
|
if ! echo "$new_time" | grep -qE '^([01]?[0-9]|2[0-3]):[0-5][0-9]$'; then
|
|
|
|
|
|
|
|
echo "Invalid time format. Exiting."
|
|
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
# Remove old symlinks and script
|
|
|
|
|
|
|
|
rm -f /lib/systemd/system/multi-user.target.wants/rebootmodem-trigger.service
|
|
|
|
|
|
|
|
rm -f "$USRDATA_DIR/reboot_modem.sh"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Set the user time to the new time and recreate the service, timer, trigger, and script
|
|
|
|
|
|
|
|
user_time=$new_time
|
|
|
|
|
|
|
|
create_service_and_timer
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
|
|
|
|
|
|
|
echo -e "\e[1;31mInvalid choice. Exiting.\e[0m"
|
|
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
printf "Enter the time for daily reboot (24-hour format in UTC, HH:MM): "
|
|
|
|
|
|
|
|
read user_time
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Validate the time format using grep
|
|
|
|
|
|
|
|
if ! echo "$user_time" | grep -qE '^([01]?[0-9]|2[0-3]):[0-5][0-9]$'; then
|
|
|
|
|
|
|
|
echo "Invalid time format. Exiting."
|
|
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
create_service_and_timer
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Remount root filesystem as read-only
|
|
|
|
|
|
|
|
mount -o remount,ro /
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Function to create systemd service and timer files
|
|
|
|
|
|
|
|
create_service_and_timer() {
|
|
|
|
|
|
|
|
remount_rw
|
|
|
|
|
|
|
|
# Define the path for the modem reboot script
|
|
|
|
|
|
|
|
MODEM_REBOOT_SCRIPT="$USRDATA_DIR/reboot_modem.sh"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create the modem reboot script
|
|
|
|
|
|
|
|
echo "#!/bin/sh
|
|
|
|
|
|
|
|
/bin/echo -e 'AT+CFUN=1,1 \r' > /dev/smd7" > "$MODEM_REBOOT_SCRIPT"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Make the script executable
|
|
|
|
|
|
|
|
chmod +x "$MODEM_REBOOT_SCRIPT"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create the systemd service file for reboot
|
|
|
|
|
|
|
|
echo "[Unit]
|
|
|
|
|
|
|
|
Description=Reboot Modem Daily
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Service]
|
|
|
|
|
|
|
|
Type=oneshot
|
|
|
|
|
|
|
|
ExecStart=/bin/sh /usrdata/reboot_modem.sh
|
|
|
|
|
|
|
|
Restart=no
|
|
|
|
|
|
|
|
RemainAfterExit=no" > /lib/systemd/system/rebootmodem.service
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create the systemd timer file with the user-specified time
|
|
|
|
|
|
|
|
echo "[Unit]
|
|
|
|
|
|
|
|
Description=Starts rebootmodem.service daily at the specified time
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Timer]
|
|
|
|
|
|
|
|
OnCalendar=*-*-* $user_time:00
|
|
|
|
|
|
|
|
Persistent=false" > /lib/systemd/system/rebootmodem.timer
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create a trigger service that starts the timer at boot
|
|
|
|
|
|
|
|
echo "[Unit]
|
|
|
|
|
|
|
|
Description=Trigger the rebootmodem timer at boot
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Service]
|
|
|
|
|
|
|
|
Type=oneshot
|
|
|
|
|
|
|
|
ExecStart=/bin/systemctl start rebootmodem.timer
|
|
|
|
|
|
|
|
RemainAfterExit=yes" > /lib/systemd/system/rebootmodem-trigger.service
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create symbolic links for the trigger service in the wanted directory
|
|
|
|
|
|
|
|
ln -sf /lib/systemd/system/rebootmodem-trigger.service /lib/systemd/system/multi-user.target.wants/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Reload systemd to recognize the new timer and trigger service
|
|
|
|
|
|
|
|
systemctl daemon-reload
|
|
|
|
|
|
|
|
sleep 2s
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Start the trigger service, which will start the timer
|
|
|
|
|
|
|
|
systemctl start rebootmodem-trigger.service
|
|
|
|
|
|
|
|
remount_ro
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Confirmation
|
|
|
|
|
|
|
|
echo -e "\e[1;32mRebootmodem-trigger service created and started successfully.\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[1;32mReboot schedule set successfully. The modem will reboot daily at $user_time UTC.\e[0m"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Function to manage CFUN fix
|
|
|
|
|
|
|
|
manage_cfun_fix() {
|
|
|
|
|
|
|
|
cfun_service_path="/lib/systemd/system/cfunfix.service"
|
|
|
|
|
|
|
|
cfun_fix_script="/usrdata/cfun_fix.sh"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mount -o remount,rw /
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if [ -f "$cfun_service_path" ]; then
|
|
|
|
|
|
|
|
echo -e "\e[1;32mThe CFUN fix is already installed. Do you want to remove it?\e[0m" # Green
|
|
|
|
|
|
|
|
echo -e "\e[1;32m1) Yes\e[0m" # Green
|
|
|
|
|
|
|
|
echo -e "\e[1;31m2) No\e[0m" # Red
|
|
|
|
|
|
|
|
read -p "Enter your choice: " choice
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if [ "$choice" = "1" ]; then
|
|
|
|
|
|
|
|
echo "Removing CFUN fix..."
|
|
|
|
|
|
|
|
systemctl stop cfunfix.service
|
|
|
|
|
|
|
|
rm -f /lib/systemd/system/multi-user.target.wants/cfunfix.service
|
|
|
|
|
|
|
|
rm -f "$cfun_service_path"
|
|
|
|
|
|
|
|
rm -f "$cfun_fix_script"
|
|
|
|
|
|
|
|
systemctl daemon-reload
|
|
|
|
|
|
|
|
echo "CFUN fix has been removed."
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
echo "Returning to main menu..."
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
echo -e "\e[1;32mInstalling CFUN fix...\e[0m"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create the CFUN fix script
|
|
|
|
|
|
|
|
echo "#!/bin/sh
|
|
|
|
|
|
|
|
/bin/echo -e 'AT+CFUN=1 \r' > /dev/smd7" > "$cfun_fix_script"
|
|
|
|
|
|
|
|
chmod +x "$cfun_fix_script"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create the systemd service file to execute the CFUN fix script at boot
|
|
|
|
|
|
|
|
echo "[Unit]
|
|
|
|
|
|
|
|
Description=CFUN Fix Service
|
|
|
|
|
|
|
|
After=network.target
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Service]
|
|
|
|
|
|
|
|
Type=oneshot
|
|
|
|
|
|
|
|
ExecStart=$cfun_fix_script
|
|
|
|
|
|
|
|
RemainAfterExit=yes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Install]
|
|
|
|
|
|
|
|
WantedBy=multi-user.target" > "$cfun_service_path"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ln -sf "$cfun_service_path" "/lib/systemd/system/multi-user.target.wants/"
|
|
|
|
|
|
|
|
systemctl daemon-reload
|
|
|
|
|
|
|
|
mount -o remount,ro /
|
|
|
|
|
|
|
|
echo -e "\e[1;32mCFUN fix has been installed and will execute at every boot.\e[0m"
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
# SimpleAdmin Functions
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Function to set SimpleAdmin password
|
|
|
|
|
|
|
|
set_simpleadmin_passwd(){
|
|
|
|
|
|
|
|
ensure_entware_installed
|
|
|
|
|
|
|
|
opkg update
|
|
|
|
|
|
|
|
opkg install libaprutil
|
|
|
|
|
|
|
|
wget -O /usrdata/root/bin/htpasswd $GITROOT/simpleadmin/htpasswd && chmod +x /usrdata/root/bin/htpasswd
|
|
|
|
|
|
|
|
wget -O /usrdata/root/bin/simplepasswd $GITROOT/simpleadmin/simplepasswd && chmod +x /usrdata/root/bin/simplepasswd
|
|
|
|
|
|
|
|
echo -e "\e[1;32mTo change your simpleadmin (admin) password in the future...\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[1;32mIn the console type simplepasswd and press enter\e[0m"
|
|
|
|
|
|
|
|
/usrdata/root/bin/simplepasswd
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Function to set root password
|
|
|
|
|
|
|
|
set_root_passwd() {
|
|
|
|
|
|
|
|
echo -e "\e[1;31mPlease set the root/console password.\e[0m"
|
|
|
|
|
|
|
|
/opt/bin/passwd
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Function to install/update Simple Admin
|
|
|
|
|
|
|
|
install_simple_admin() {
|
|
|
|
|
|
|
|
echo -e "\e[1;32mInstalling Simpleadmin 2.0\e[0m"
|
|
|
|
|
|
|
|
ensure_entware_installed
|
|
|
|
|
|
|
|
echo -e "\e[1;31m2) Installing Simpleadmin 2.0\e[0m"
|
|
|
|
|
|
|
|
mkdir /usrdata/simpleupdates > /dev/null 2>&1
|
|
|
|
|
|
|
|
mkdir /usrdata/simpleupdates/scripts > /dev/null 2>&1
|
|
|
|
|
|
|
|
wget -O /usrdata/simpleupdates/scripts/update_socat-at-bridge.sh $GITROOT/simpleupdates/scripts/update_socat-at-bridge.sh && chmod +x /usrdata/simpleupdates/scripts/update_socat-at-bridge.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32mInstalling/updating dependency: socat-at-bridge\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[1;32mPlease Wait....\e[0m"
|
|
|
|
|
|
|
|
/usrdata/simpleupdates/scripts/update_socat-at-bridge.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32m Dependency: socat-at-bridge has been updated/installed.\e[0m"
|
|
|
|
|
|
|
|
sleep 1
|
|
|
|
|
|
|
|
wget -O /usrdata/simpleupdates/scripts/update_simplefirewall.sh $GITROOT/simpleupdates/scripts/update_simplefirewall.sh && chmod +x /usrdata/simpleupdates/scripts/update_simplefirewall.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32mInstalling/updating dependency: simplefirewall\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[1;32mPlease Wait....\e[0m"
|
|
|
|
|
|
|
|
/usrdata/simpleupdates/scripts/update_simplefirewall.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32m Dependency: simplefirewall has been updated/installed.\e[0m"
|
|
|
|
|
|
|
|
sleep 1
|
|
|
|
|
|
|
|
set_simpleadmin_passwd
|
|
|
|
|
|
|
|
wget -O /usrdata/simpleupdates/scripts/update_simpleadmin.sh $GITROOT/simpleupdates/scripts/update_simpleadmin.sh && chmod +x /usrdata/simpleupdates/scripts/update_simpleadmin.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32mInstalling/updating: Simpleadmin content\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[1;32mPlease Wait....\e[0m"
|
|
|
|
|
|
|
|
/usrdata/simpleupdates/scripts/update_simpleadmin.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32mSimpleadmin content has been updated/installed.\e[0m"
|
|
|
|
|
|
|
|
sleep 1
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Function to configure Simple Firewall
|
|
|
|
configure_simple_firewall() {
|
|
|
|
configure_simple_firewall() {
|
|
|
|
if [ ! -f "$SIMPLE_FIREWALL_SCRIPT" ]; then
|
|
|
|
if [ ! -f "$SIMPLE_FIREWALL_SCRIPT" ]; then
|
|
|
|
echo -e "\033[0;31mSimplefirewall is not installed, would you like to install it?\033[0m"
|
|
|
|
echo -e "\033[0;31mSimplefirewall is not installed, would you like to install it?\033[0m"
|
|
|
|
@ -310,52 +576,6 @@ configure_simple_firewall() {
|
|
|
|
echo -e "\e[1;32mFirewall configuration updated.\e[0m"
|
|
|
|
echo -e "\e[1;32mFirewall configuration updated.\e[0m"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
set_simpleadmin_passwd(){
|
|
|
|
|
|
|
|
ensure_entware_installed
|
|
|
|
|
|
|
|
opkg update
|
|
|
|
|
|
|
|
opkg install libaprutil
|
|
|
|
|
|
|
|
wget -O /usrdata/root/bin/htpasswd $GITROOT/simpleadmin/htpasswd && chmod +x /usrdata/root/bin/htpasswd
|
|
|
|
|
|
|
|
wget -O /usrdata/root/bin/simplepasswd $GITROOT/simpleadmin/simplepasswd && chmod +x /usrdata/root/bin/simplepasswd
|
|
|
|
|
|
|
|
echo -e "\e[1;32mTo change your simpleadmin (admin) password in the future...\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[1;32mIn the console type simplepasswd and press enter\e[0m"
|
|
|
|
|
|
|
|
/usrdata/root/bin/simplepasswd
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set_root_passwd() {
|
|
|
|
|
|
|
|
echo -e "\e[1;31mPlease set the root/console password.\e[0m"
|
|
|
|
|
|
|
|
/opt/bin/passwd
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Function to install/update Simple Admin
|
|
|
|
|
|
|
|
install_simple_admin() {
|
|
|
|
|
|
|
|
echo -e "\e[1;32mInstalling Simpleadmin 2.0\e[0m"
|
|
|
|
|
|
|
|
ensure_entware_installed
|
|
|
|
|
|
|
|
echo -e "\e[1;31m2) Installing Simpleadmin 2.0\e[0m"
|
|
|
|
|
|
|
|
mkdir /usrdata/simpleupdates > /dev/null 2>&1
|
|
|
|
|
|
|
|
mkdir /usrdata/simpleupdates/scripts > /dev/null 2>&1
|
|
|
|
|
|
|
|
wget -O /usrdata/simpleupdates/scripts/update_socat-at-bridge.sh $GITROOT/simpleupdates/scripts/update_socat-at-bridge.sh && chmod +x /usrdata/simpleupdates/scripts/update_socat-at-bridge.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32mInstalling/updating dependency: socat-at-bridge\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[1;32mPlease Wait....\e[0m"
|
|
|
|
|
|
|
|
/usrdata/simpleupdates/scripts/update_socat-at-bridge.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32m Dependency: socat-at-bridge has been updated/installed.\e[0m"
|
|
|
|
|
|
|
|
sleep 1
|
|
|
|
|
|
|
|
wget -O /usrdata/simpleupdates/scripts/update_simplefirewall.sh $GITROOT/simpleupdates/scripts/update_simplefirewall.sh && chmod +x /usrdata/simpleupdates/scripts/update_simplefirewall.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32mInstalling/updating dependency: simplefirewall\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[1;32mPlease Wait....\e[0m"
|
|
|
|
|
|
|
|
/usrdata/simpleupdates/scripts/update_simplefirewall.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32m Dependency: simplefirewall has been updated/installed.\e[0m"
|
|
|
|
|
|
|
|
sleep 1
|
|
|
|
|
|
|
|
set_simpleadmin_passwd
|
|
|
|
|
|
|
|
wget -O /usrdata/simpleupdates/scripts/update_simpleadmin.sh $GITROOT/simpleupdates/scripts/update_simpleadmin.sh && chmod +x /usrdata/simpleupdates/scripts/update_simpleadmin.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32mInstalling/updating: Simpleadmin content\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[1;32mPlease Wait....\e[0m"
|
|
|
|
|
|
|
|
/usrdata/simpleupdates/scripts/update_simpleadmin.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32mSimpleadmin content has been updated/installed.\e[0m"
|
|
|
|
|
|
|
|
sleep 1
|
|
|
|
|
|
|
|
break
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Function to Uninstall Simpleadmin and dependencies
|
|
|
|
# Function to Uninstall Simpleadmin and dependencies
|
|
|
|
uninstall_simpleadmin_components() {
|
|
|
|
uninstall_simpleadmin_components() {
|
|
|
|
echo -e "\e[1;32mStarting the uninstallation process for Simpleadmin components.\e[0m"
|
|
|
|
echo -e "\e[1;32mStarting the uninstallation process for Simpleadmin components.\e[0m"
|
|
|
|
@ -452,6 +672,10 @@ uninstall_simpleadmin_components() {
|
|
|
|
echo "Uninstallation process completed."
|
|
|
|
echo "Uninstallation process completed."
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
# Tailscale Management Functions
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
|
|
|
|
# Function for Tailscale Submenu
|
|
|
|
# Function for Tailscale Submenu
|
|
|
|
tailscale_menu() {
|
|
|
|
tailscale_menu() {
|
|
|
|
while true; do
|
|
|
|
while true; do
|
|
|
|
@ -472,7 +696,7 @@ tailscale_menu() {
|
|
|
|
done
|
|
|
|
done
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# Function to install, update, or remove Tailscale
|
|
|
|
# Function to install or update Tailscale
|
|
|
|
install_update_tailscale() {
|
|
|
|
install_update_tailscale() {
|
|
|
|
echo -e "\e[1;31m2) Installing tailscale from the $GITTREE branch\e[0m"
|
|
|
|
echo -e "\e[1;31m2) Installing tailscale from the $GITTREE branch\e[0m"
|
|
|
|
ensure_entware_installed
|
|
|
|
ensure_entware_installed
|
|
|
|
@ -568,184 +792,11 @@ configure_tailscale() {
|
|
|
|
done
|
|
|
|
done
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# Function to manage Daily Reboot Timer
|
|
|
|
#####################################################################
|
|
|
|
manage_reboot_timer() {
|
|
|
|
# Tool Installation Functions
|
|
|
|
# Remount root filesystem as read-write
|
|
|
|
#####################################################################
|
|
|
|
mount -o remount,rw /
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Check if the rebootmodem service, timer, or trigger already exists
|
|
|
|
|
|
|
|
if [ -f /lib/systemd/system/rebootmodem.service ] || [ -f /lib/systemd/system/rebootmodem.timer ] || [ -f /lib/systemd/system/rebootmodem-trigger.service ]; then
|
|
|
|
|
|
|
|
echo -e "\e[1;32mThe rebootmodem service/timer/trigger is already installed.\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[1;32m1) Change\e[0m" # Green
|
|
|
|
|
|
|
|
echo -e "\e[1;31m2) Remove\e[0m" # Red
|
|
|
|
|
|
|
|
read -p "Enter your choice (1 for Change, 2 for Remove): " reboot_choice
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case $reboot_choice in
|
|
|
|
|
|
|
|
2)
|
|
|
|
|
|
|
|
# Stop and disable timer and trigger service by removing symlinks
|
|
|
|
|
|
|
|
systemctl stop rebootmodem.timer
|
|
|
|
|
|
|
|
systemctl stop rebootmodem-trigger.service
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Remove symbolic links and files
|
|
|
|
|
|
|
|
rm -f /lib/systemd/system/multi-user.target.wants/rebootmodem-trigger.service
|
|
|
|
|
|
|
|
rm -f /lib/systemd/system/rebootmodem.service
|
|
|
|
|
|
|
|
rm -f /lib/systemd/system/rebootmodem.timer
|
|
|
|
|
|
|
|
rm -f /lib/systemd/system/rebootmodem-trigger.service
|
|
|
|
|
|
|
|
rm -f "$USRDATA_DIR/reboot_modem.sh"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Reload systemd to apply changes
|
|
|
|
|
|
|
|
systemctl daemon-reload
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
echo -e "\e[1;32mRebootmodem service, timer, trigger, and script removed successfully.\e[0m"
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
1)
|
|
|
|
|
|
|
|
printf "Enter the new time for daily reboot (24-hour format in Coordinated Universal Time, HH:MM): "
|
|
|
|
|
|
|
|
read new_time
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Validate the new time format using grep
|
|
|
|
|
|
|
|
if ! echo "$new_time" | grep -qE '^([01]?[0-9]|2[0-3]):[0-5][0-9]$'; then
|
|
|
|
|
|
|
|
echo "Invalid time format. Exiting."
|
|
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
# Remove old symlinks and script
|
|
|
|
|
|
|
|
rm -f /lib/systemd/system/multi-user.target.wants/rebootmodem-trigger.service
|
|
|
|
|
|
|
|
rm -f "$USRDATA_DIR/reboot_modem.sh"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Set the user time to the new time and recreate the service, timer, trigger, and script
|
|
|
|
|
|
|
|
user_time=$new_time
|
|
|
|
|
|
|
|
create_service_and_timer
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
|
|
|
|
|
|
|
echo -e "\e[1;31mInvalid choice. Exiting.\e[0m"
|
|
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
printf "Enter the time for daily reboot (24-hour format in UTC, HH:MM): "
|
|
|
|
|
|
|
|
read user_time
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Validate the time format using grep
|
|
|
|
|
|
|
|
if ! echo "$user_time" | grep -qE '^([01]?[0-9]|2[0-3]):[0-5][0-9]$'; then
|
|
|
|
|
|
|
|
echo "Invalid time format. Exiting."
|
|
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
create_service_and_timer
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Remount root filesystem as read-only
|
|
|
|
|
|
|
|
mount -o remount,ro /
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Function to create systemd service and timer files with the user-specified time for the reboot timer
|
|
|
|
|
|
|
|
create_service_and_timer() {
|
|
|
|
|
|
|
|
remount_rw
|
|
|
|
|
|
|
|
# Define the path for the modem reboot script
|
|
|
|
|
|
|
|
MODEM_REBOOT_SCRIPT="$USRDATA_DIR/reboot_modem.sh"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create the modem reboot script
|
|
|
|
|
|
|
|
echo "#!/bin/sh
|
|
|
|
|
|
|
|
/bin/echo -e 'AT+CFUN=1,1 \r' > /dev/smd7" > "$MODEM_REBOOT_SCRIPT"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Make the script executable
|
|
|
|
|
|
|
|
chmod +x "$MODEM_REBOOT_SCRIPT"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create the systemd service file for reboot
|
|
|
|
|
|
|
|
echo "[Unit]
|
|
|
|
|
|
|
|
Description=Reboot Modem Daily
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Service]
|
|
|
|
|
|
|
|
Type=oneshot
|
|
|
|
|
|
|
|
ExecStart=/bin/sh /usrdata/reboot_modem.sh
|
|
|
|
|
|
|
|
Restart=no
|
|
|
|
|
|
|
|
RemainAfterExit=no" > /lib/systemd/system/rebootmodem.service
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create the systemd timer file with the user-specified time
|
|
|
|
|
|
|
|
echo "[Unit]
|
|
|
|
|
|
|
|
Description=Starts rebootmodem.service daily at the specified time
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Timer]
|
|
|
|
|
|
|
|
OnCalendar=*-*-* $user_time:00
|
|
|
|
|
|
|
|
Persistent=false" > /lib/systemd/system/rebootmodem.timer
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create a trigger service that starts the timer at boot
|
|
|
|
|
|
|
|
echo "[Unit]
|
|
|
|
|
|
|
|
Description=Trigger the rebootmodem timer at boot
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Service]
|
|
|
|
|
|
|
|
Type=oneshot
|
|
|
|
|
|
|
|
ExecStart=/bin/systemctl start rebootmodem.timer
|
|
|
|
|
|
|
|
RemainAfterExit=yes" > /lib/systemd/system/rebootmodem-trigger.service
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create symbolic links for the trigger service in the wanted directory
|
|
|
|
|
|
|
|
ln -sf /lib/systemd/system/rebootmodem-trigger.service /lib/systemd/system/multi-user.target.wants/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Reload systemd to recognize the new timer and trigger service
|
|
|
|
|
|
|
|
systemctl daemon-reload
|
|
|
|
|
|
|
|
sleep 2s
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Start the trigger service, which will start the timer
|
|
|
|
|
|
|
|
systemctl start rebootmodem-trigger.service
|
|
|
|
|
|
|
|
remount_ro
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Confirmation
|
|
|
|
|
|
|
|
echo -e "\e[1;32mRebootmodem-trigger service created and started successfully.\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[1;32mReboot schedule set successfully. The modem will reboot daily at $user_time UTC.\e[0m"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
manage_cfun_fix() {
|
|
|
|
|
|
|
|
cfun_service_path="/lib/systemd/system/cfunfix.service"
|
|
|
|
|
|
|
|
cfun_fix_script="/usrdata/cfun_fix.sh"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mount -o remount,rw /
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if [ -f "$cfun_service_path" ]; then
|
|
|
|
|
|
|
|
echo -e "\e[1;32mThe CFUN fix is already installed. Do you want to remove it?\e[0m" # Green
|
|
|
|
|
|
|
|
echo -e "\e[1;32m1) Yes\e[0m" # Green
|
|
|
|
|
|
|
|
echo -e "\e[1;31m2) No\e[0m" # Red
|
|
|
|
|
|
|
|
read -p "Enter your choice: " choice
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if [ "$choice" = "1" ]; then
|
|
|
|
|
|
|
|
echo "Removing CFUN fix..."
|
|
|
|
|
|
|
|
systemctl stop cfunfix.service
|
|
|
|
|
|
|
|
rm -f /lib/systemd/system/multi-user.target.wants/cfunfix.service
|
|
|
|
|
|
|
|
rm -f "$cfun_service_path"
|
|
|
|
|
|
|
|
rm -f "$cfun_fix_script"
|
|
|
|
|
|
|
|
systemctl daemon-reload
|
|
|
|
|
|
|
|
echo "CFUN fix has been removed."
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
echo "Returning to main menu..."
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
echo -e "\e[1;32mInstalling CFUN fix...\e[0m"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create the CFUN fix script
|
|
|
|
|
|
|
|
echo "#!/bin/sh
|
|
|
|
|
|
|
|
/bin/echo -e 'AT+CFUN=1 \r' > /dev/smd7" > "$cfun_fix_script"
|
|
|
|
|
|
|
|
chmod +x "$cfun_fix_script"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create the systemd service file to execute the CFUN fix script at boot
|
|
|
|
|
|
|
|
echo "[Unit]
|
|
|
|
|
|
|
|
Description=CFUN Fix Service
|
|
|
|
|
|
|
|
After=network.target
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Service]
|
|
|
|
|
|
|
|
Type=oneshot
|
|
|
|
|
|
|
|
ExecStart=$cfun_fix_script
|
|
|
|
|
|
|
|
RemainAfterExit=yes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Install]
|
|
|
|
|
|
|
|
WantedBy=multi-user.target" > "$cfun_service_path"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ln -sf "$cfun_service_path" "/lib/systemd/system/multi-user.target.wants/"
|
|
|
|
|
|
|
|
systemctl daemon-reload
|
|
|
|
|
|
|
|
mount -o remount,ro /
|
|
|
|
|
|
|
|
echo -e "\e[1;32mCFUN fix has been installed and will execute at every boot.\e[0m"
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Function to install OpenSSH Server
|
|
|
|
install_sshd() {
|
|
|
|
install_sshd() {
|
|
|
|
if [ -d "/usrdata/sshd" ]; then
|
|
|
|
if [ -d "/usrdata/sshd" ]; then
|
|
|
|
echo -e "\e[1;31mSSHD is currently installed.\e[0m"
|
|
|
|
echo -e "\e[1;31mSSHD is currently installed.\e[0m"
|
|
|
|
@ -757,6 +808,14 @@ install_sshd() {
|
|
|
|
case $sshd_choice in
|
|
|
|
case $sshd_choice in
|
|
|
|
1)
|
|
|
|
1)
|
|
|
|
echo -e "\e[1;31m2) Installing sshd from the $GITTREE branch\e[0m"
|
|
|
|
echo -e "\e[1;31m2) Installing sshd from the $GITTREE branch\e[0m"
|
|
|
|
|
|
|
|
ensure_entware_installed
|
|
|
|
|
|
|
|
mkdir /usrdata/simpleupdates > /dev/null 2>&1
|
|
|
|
|
|
|
|
mkdir /usrdata/simpleupdates/scripts > /dev/null 2>&1
|
|
|
|
|
|
|
|
wget -O /usrdata/simpleupdates/scripts/update_sshd.sh $GITROOT/simpleupdates/scripts/update_sshd.sh && chmod +x /usrdata/simpleupdates/scripts/update_sshd.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32mUpdating: SSHd\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[1;32mPlease Wait....\e[0m"
|
|
|
|
|
|
|
|
/usrdata/simpleupdates/scripts/update_sshd.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32m SSHd has been updated.\e[0m"
|
|
|
|
;;
|
|
|
|
;;
|
|
|
|
2)
|
|
|
|
2)
|
|
|
|
echo -e "\e[1;31mUninstalling SSHD...\e[0m"
|
|
|
|
echo -e "\e[1;31mUninstalling SSHD...\e[0m"
|
|
|
|
@ -773,133 +832,19 @@ install_sshd() {
|
|
|
|
esac
|
|
|
|
esac
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# Proceed with installation or updating if not uninstalling
|
|
|
|
# Proceed with installation if not installed
|
|
|
|
ensure_entware_installed
|
|
|
|
ensure_entware_installed
|
|
|
|
mkdir /usrdata/simpleupdates > /dev/null 2>&1
|
|
|
|
mkdir /usrdata/simpleupdates > /dev/null 2>&1
|
|
|
|
mkdir /usrdata/simpleupdates/scripts > /dev/null 2>&1
|
|
|
|
mkdir /usrdata/simpleupdates/scripts > /dev/null 2>&1
|
|
|
|
wget -O /usrdata/simpleupdates/scripts/update_sshd.sh $GITROOT/simpleupdates/scripts/update_sshd.sh && chmod +x /usrdata/simpleupdates/scripts/update_sshd.sh
|
|
|
|
wget -O /usrdata/simpleupdates/scripts/update_sshd.sh $GITROOT/simpleupdates/scripts/update_sshd.sh && chmod +x /usrdata/simpleupdates/scripts/update_sshd.sh
|
|
|
|
echo -e "\e[1;32mInstalling/updating: SSHd\e[0m"
|
|
|
|
echo -e "\e[1;32mInstalling: SSHd\e[0m"
|
|
|
|
echo -e "\e[1;32mPlease Wait....\e[0m"
|
|
|
|
echo -e "\e[1;32mPlease Wait....\e[0m"
|
|
|
|
/usrdata/simpleupdates/scripts/update_sshd.sh
|
|
|
|
/usrdata/simpleupdates/scripts/update_sshd.sh
|
|
|
|
echo -e "\e[1;32m SSHd has been updated/installed.\e[0m"
|
|
|
|
echo -e "\e[1;32m SSHd has been installed.\e[0m"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Function to install Speedtest CLI
|
|
|
|
# Main menu
|
|
|
|
install_speedtest_cli() {
|
|
|
|
|
|
|
|
|
|
|
|
ARCH=$(uname -a)
|
|
|
|
|
|
|
|
if echo "$ARCH" | grep -q "aarch64"; then
|
|
|
|
|
|
|
|
cd /tmp && wget -O RM55x_rcPCIe_toolkit.sh https://raw.githubusercontent.com/iamromulan/quectel-rgmii-toolkit/SDXPINN/RM55x_rcPCIe_toolkit.sh && chmod +x RM55x_rcPCIe_toolkit.sh && ./RM55x_rcPCIe_toolkit.sh && cd /
|
|
|
|
|
|
|
|
exit 0
|
|
|
|
|
|
|
|
elif echo "$ARCH" | grep -q "armv7l"; then
|
|
|
|
|
|
|
|
# Continue if architecture is armv7l
|
|
|
|
|
|
|
|
echo "Architecture is armv7l, continuing..."
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
uname -a
|
|
|
|
|
|
|
|
echo "Unsupported architecture."
|
|
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while true; do
|
|
|
|
|
|
|
|
echo "//////////////////////////////////////////////////////////////////";
|
|
|
|
|
|
|
|
echo "// //";
|
|
|
|
|
|
|
|
echo "// //";
|
|
|
|
|
|
|
|
echo "// :'######::'####:'##::::'##:'########::'##:::::::'########: //";
|
|
|
|
|
|
|
|
echo "// '##... ##:. ##:: ###::'###: ##.... ##: ##::::::: ##.....:: //";
|
|
|
|
|
|
|
|
echo "// ##:::..::: ##:: ####'####: ##:::: ##: ##::::::: ##::::::: //";
|
|
|
|
|
|
|
|
echo "// . ######::: ##:: ## ### ##: ########:: ##::::::: ######::: //";
|
|
|
|
|
|
|
|
echo "// :..... ##:: ##:: ##. #: ##: ##.....::: ##::::::: ##...:::: //";
|
|
|
|
|
|
|
|
echo "// '##::: ##:: ##:: ##:.:: ##: ##:::::::: ##::::::: ##::::::: //";
|
|
|
|
|
|
|
|
echo "// . ######::'####: ##:::: ##: ##:::::::: ########: ########: //";
|
|
|
|
|
|
|
|
echo "// :......:::....::..:::::..::..:::::::::........::........:: //";
|
|
|
|
|
|
|
|
echo "// :::'###::::'########::'##::::'##:'####:'##::: ##: //";
|
|
|
|
|
|
|
|
echo "// ::'## ##::: ##.... ##: ###::'###:. ##:: ###:: ##: //";
|
|
|
|
|
|
|
|
echo "// :'##:. ##:: ##:::: ##: ####'####:: ##:: ####: ##: //";
|
|
|
|
|
|
|
|
echo "// '##:::. ##: ##:::: ##: ## ### ##:: ##:: ## ## ##: //";
|
|
|
|
|
|
|
|
echo "// #########: ##:::: ##: ##. #: ##:: ##:: ##. ####: //";
|
|
|
|
|
|
|
|
echo "// ##.... ##: ##:::: ##: ##:.:: ##:: ##:: ##:. ###: //";
|
|
|
|
|
|
|
|
echo "// ##:::: ##: ########:: ##:::: ##:'####: ##::. ##: //";
|
|
|
|
|
|
|
|
echo "// ..:::::..::........:::..:::::..::....::..::::..:: //";
|
|
|
|
|
|
|
|
echo "// //";
|
|
|
|
|
|
|
|
echo "// By iamromulan //";
|
|
|
|
|
|
|
|
echo "//////////////////////////////////////////////////////////////////";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
echo -e "\e[92m"
|
|
|
|
|
|
|
|
echo "Welcome to iamromulan's RGMII Toolkit script for Quectel RMxxx Series modems!"
|
|
|
|
|
|
|
|
echo "Visit https://github.com/iamromulan for more!"
|
|
|
|
|
|
|
|
echo -e "\e[0m"
|
|
|
|
|
|
|
|
echo "Select an option:"
|
|
|
|
|
|
|
|
echo -e "\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[96m1) Send AT Commands\e[0m" # Cyan
|
|
|
|
|
|
|
|
echo -e "\e[93m2) Install Simple Admin\e[0m" # Yellow
|
|
|
|
|
|
|
|
echo -e "\e[95m3) Set Simpleadmin (admin) password\e[0m" # Light Purple
|
|
|
|
|
|
|
|
echo -e "\e[94m4) Set Console/ttyd (root) password\e[0m" # Light Blue
|
|
|
|
|
|
|
|
echo -e "\e[91m5) Uninstall Simple Admin\e[0m" # Light Red
|
|
|
|
|
|
|
|
echo -e "\e[95m6) Simple Firewall Management\e[0m" # Light Purple
|
|
|
|
|
|
|
|
echo -e "\e[94m7) Tailscale Management\e[0m" # Light Blue
|
|
|
|
|
|
|
|
echo -e "\e[92m8) Install/Change or remove Daily Reboot Timer\e[0m" # Light Green
|
|
|
|
|
|
|
|
echo -e "\e[96m9) Install/Uninstall CFUN 0 Fix\e[0m" # Cyan (repeated color for additional options)
|
|
|
|
|
|
|
|
echo -e "\e[91m10) Uninstall Entware/OPKG\e[0m" # Light Red
|
|
|
|
|
|
|
|
echo -e "\e[92m11) Install Speedtest.net CLI app (speedtest command)\e[0m" # Light Green
|
|
|
|
|
|
|
|
echo -e "\e[92m12) Install Fast.com CLI app (fast command)(tops out at 40Mbps)\e[0m" # Light Green
|
|
|
|
|
|
|
|
echo -e "\e[92m13) Install OpenSSH Server\e[0m" # Light Green
|
|
|
|
|
|
|
|
echo -e "\e[93m14) Exit\e[0m" # Yellow (repeated color for exit option)
|
|
|
|
|
|
|
|
read -p "Enter your choice: " choice
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case $choice in
|
|
|
|
|
|
|
|
1)
|
|
|
|
|
|
|
|
send_at_commands
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
2)
|
|
|
|
|
|
|
|
install_simple_admin
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
3) set_simpleadmin_passwd
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
4)
|
|
|
|
|
|
|
|
set_root_passwd
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
5)
|
|
|
|
|
|
|
|
uninstall_simpleadmin_components
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
6)
|
|
|
|
|
|
|
|
configure_simple_firewall
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7)
|
|
|
|
|
|
|
|
tailscale_menu
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
8)
|
|
|
|
|
|
|
|
manage_reboot_timer
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
9)
|
|
|
|
|
|
|
|
manage_cfun_fix
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
10)
|
|
|
|
|
|
|
|
echo -e "\033[31mAre you sure you want to uninstall entware?\033[0m"
|
|
|
|
|
|
|
|
echo -e "\033[31m1) Yes\033[0m"
|
|
|
|
|
|
|
|
echo -e "\033[31m2) No\033[0m"
|
|
|
|
|
|
|
|
read -p "Select an option (1 or 2): " user_choice
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case $user_choice in
|
|
|
|
|
|
|
|
1)
|
|
|
|
|
|
|
|
# If yes, uninstall existing entware
|
|
|
|
|
|
|
|
echo -e "\033[31mUninstalling existing entware...\033[0m"
|
|
|
|
|
|
|
|
uninstall_entware # Assuming uninstall_entware is a defined function or command
|
|
|
|
|
|
|
|
echo -e "\033[31mEntware has been uninstalled.\033[0m"
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
2)
|
|
|
|
|
|
|
|
# If no, exit the script
|
|
|
|
|
|
|
|
echo -e "\033[31mUninstallation cancelled.\033[0m"
|
|
|
|
|
|
|
|
exit # Use 'exit' to terminate the script outside a loop
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
|
|
|
|
|
|
|
# Handle invalid input
|
|
|
|
|
|
|
|
echo -e "\033[31mInvalid option. Please select 1 or 2.\033[0m"
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11)
|
|
|
|
|
|
|
|
ensure_entware_installed
|
|
|
|
ensure_entware_installed
|
|
|
|
echo -e "\e[1;32mInstalling Speedtest.net CLI (speedtest command)\e[0m"
|
|
|
|
echo -e "\e[1;32mInstalling Speedtest.net CLI (speedtest command)\e[0m"
|
|
|
|
remount_rw
|
|
|
|
remount_rw
|
|
|
|
@ -918,8 +863,10 @@ echo "//////////////////////////////////////////////////////////////////";
|
|
|
|
echo -e "\e[1;32mNote that it will not work unless you login to the root account first\e[0m"
|
|
|
|
echo -e "\e[1;32mNote that it will not work unless you login to the root account first\e[0m"
|
|
|
|
echo -e "\e[1;32mNormaly only an issue in adb, ttyd and ssh you are forced to login\e[0m"
|
|
|
|
echo -e "\e[1;32mNormaly only an issue in adb, ttyd and ssh you are forced to login\e[0m"
|
|
|
|
echo -e "\e[1;32mIf in adb just type login and then try to run the speedtest command\e[0m"
|
|
|
|
echo -e "\e[1;32mIf in adb just type login and then try to run the speedtest command\e[0m"
|
|
|
|
;;
|
|
|
|
}
|
|
|
|
12)
|
|
|
|
|
|
|
|
|
|
|
|
# Function to install Fast.com CLI
|
|
|
|
|
|
|
|
install_fast_cli() {
|
|
|
|
echo -e "\e[1;32mInstalling fast.com CLI (fast command)\e[0m"
|
|
|
|
echo -e "\e[1;32mInstalling fast.com CLI (fast command)\e[0m"
|
|
|
|
remount_rw
|
|
|
|
remount_rw
|
|
|
|
mkdir /usrdata/root
|
|
|
|
mkdir /usrdata/root
|
|
|
|
@ -932,10 +879,151 @@ echo "//////////////////////////////////////////////////////////////////";
|
|
|
|
echo -e "\e[1;32mFast.com CLI (speedtest command) installed!!\e[0m"
|
|
|
|
echo -e "\e[1;32mFast.com CLI (speedtest command) installed!!\e[0m"
|
|
|
|
echo -e "\e[1;32mTry running the command 'fast'\e[0m"
|
|
|
|
echo -e "\e[1;32mTry running the command 'fast'\e[0m"
|
|
|
|
echo -e "\e[1;32mThe fast.com test tops out at 40Mbps on the modem\e[0m"
|
|
|
|
echo -e "\e[1;32mThe fast.com test tops out at 40Mbps on the modem\e[0m"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
# AT Command Bridge Functions
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Function to install/update AT command socat bridge
|
|
|
|
|
|
|
|
install_update_at_socat() {
|
|
|
|
|
|
|
|
local current_dir=$(pwd)
|
|
|
|
|
|
|
|
ensure_entware_installed
|
|
|
|
|
|
|
|
mkdir /usrdata/simpleupdates > /dev/null 2>&1
|
|
|
|
|
|
|
|
mkdir /usrdata/simpleupdates/scripts > /dev/null 2>&1
|
|
|
|
|
|
|
|
wget -O /usrdata/simpleupdates/scripts/update_socat-at-bridge.sh $GITROOT/simpleupdates/scripts/update_socat-at-bridge.sh && chmod +x /usrdata/simpleupdates/scripts/update_socat-at-bridge.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32mInstalling/updating: AT Socat Bridge\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[1;32mPlease Wait....\e[0m"
|
|
|
|
|
|
|
|
/usrdata/simpleupdates/scripts/update_socat-at-bridge.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32mAT Socat Bridge has been updated/installed.\e[0m"
|
|
|
|
|
|
|
|
cd "$current_dir"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
# Firewall Functions
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Function to install Simple Firewall
|
|
|
|
|
|
|
|
install_simple_firewall() {
|
|
|
|
|
|
|
|
ensure_entware_installed
|
|
|
|
|
|
|
|
mkdir /usrdata/simpleupdates > /dev/null 2>&1
|
|
|
|
|
|
|
|
mkdir /usrdata/simpleupdates/scripts > /dev/null 2>&1
|
|
|
|
|
|
|
|
wget -O /usrdata/simpleupdates/scripts/update_simplefirewall.sh $GITROOT/simpleupdates/scripts/update_simplefirewall.sh && chmod +x /usrdata/simpleupdates/scripts/update_simplefirewall.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32mInstalling/updating: Simple Firewall\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[1;32mPlease Wait....\e[0m"
|
|
|
|
|
|
|
|
/usrdata/simpleupdates/scripts/update_simplefirewall.sh
|
|
|
|
|
|
|
|
echo -e "\e[1;32mSimple Firewall has been updated/installed.\e[0m"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
# Main Menu and Program Flow
|
|
|
|
|
|
|
|
#####################################################################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Check system architecture and proceed accordingly
|
|
|
|
|
|
|
|
check_architecture() {
|
|
|
|
|
|
|
|
ARCH=$(uname -a)
|
|
|
|
|
|
|
|
if echo "$ARCH" | grep -q "aarch64"; then
|
|
|
|
|
|
|
|
cd /tmp && wget -O RM55x_rcPCIe_toolkit.sh https://raw.githubusercontent.com/iamromulan/quectel-rgmii-toolkit/SDXPINN/RM55x_rcPCIe_toolkit.sh && chmod +x RM55x_rcPCIe_toolkit.sh && ./RM55x_rcPCIe_toolkit.sh && cd /
|
|
|
|
|
|
|
|
exit 0
|
|
|
|
|
|
|
|
elif echo "$ARCH" | grep -q "armv7l"; then
|
|
|
|
|
|
|
|
# Continue if architecture is armv7l
|
|
|
|
|
|
|
|
echo "Architecture is armv7l, continuing..."
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
uname -a
|
|
|
|
|
|
|
|
echo "Unsupported architecture."
|
|
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Display the main menu
|
|
|
|
|
|
|
|
display_main_menu() {
|
|
|
|
|
|
|
|
echo "//////////////////////////////////////////////////////////////////"
|
|
|
|
|
|
|
|
echo "// //"
|
|
|
|
|
|
|
|
echo "// //"
|
|
|
|
|
|
|
|
echo "// :'######::'####:'##::::'##:'########::'##:::::::'########: //"
|
|
|
|
|
|
|
|
echo "// '##... ##:. ##:: ###::'###: ##.... ##: ##::::::: ##.....:: //"
|
|
|
|
|
|
|
|
echo "// ##:::..::: ##:: ####'####: ##:::: ##: ##::::::: ##::::::: //"
|
|
|
|
|
|
|
|
echo "// . ######::: ##:: ## ### ##: ########:: ##::::::: ######::: //"
|
|
|
|
|
|
|
|
echo "// :..... ##:: ##:: ##. #: ##: ##.....::: ##::::::: ##...:::: //"
|
|
|
|
|
|
|
|
echo "// '##::: ##:: ##:: ##:.:: ##: ##:::::::: ##::::::: ##::::::: //"
|
|
|
|
|
|
|
|
echo "// . ######::'####: ##:::: ##: ##:::::::: ########: ########: //"
|
|
|
|
|
|
|
|
echo "// :......:::....::..:::::..::..:::::::::........::........:: //"
|
|
|
|
|
|
|
|
echo "// :::'###::::'########::'##::::'##:'####:'##::: ##: //"
|
|
|
|
|
|
|
|
echo "// ::'## ##::: ##.... ##: ###::'###:. ##:: ###:: ##: //"
|
|
|
|
|
|
|
|
echo "// :'##:. ##:: ##:::: ##: ####'####:: ##:: ####: ##: //"
|
|
|
|
|
|
|
|
echo "// '##:::. ##: ##:::: ##: ## ### ##:: ##:: ## ## ##: //"
|
|
|
|
|
|
|
|
echo "// #########: ##:::: ##: ##. #: ##:: ##:: ##. ####: //"
|
|
|
|
|
|
|
|
echo "// ##.... ##: ##:::: ##: ##:.:: ##:: ##:: ##:. ###: //"
|
|
|
|
|
|
|
|
echo "// ##:::: ##: ########:: ##:::: ##:'####: ##::. ##: //"
|
|
|
|
|
|
|
|
echo "// ..:::::..::........:::..:::::..::....::..::::..:: //"
|
|
|
|
|
|
|
|
echo "// //"
|
|
|
|
|
|
|
|
echo "// By iamromulan //"
|
|
|
|
|
|
|
|
echo "//////////////////////////////////////////////////////////////////"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
echo -e "\e[92m"
|
|
|
|
|
|
|
|
echo "Welcome to iamromulan's RGMII Toolkit script for Quectel RMxxx Series modems!"
|
|
|
|
|
|
|
|
echo "Visit https://github.com/iamromulan for more!"
|
|
|
|
|
|
|
|
echo -e "\e[0m"
|
|
|
|
|
|
|
|
echo "Select an option:"
|
|
|
|
|
|
|
|
echo -e "\e[0m"
|
|
|
|
|
|
|
|
echo -e "\e[96m1) Send AT Commands\e[0m" # Cyan
|
|
|
|
|
|
|
|
echo -e "\e[93m2) Install Simple Admin\e[0m" # Yellow
|
|
|
|
|
|
|
|
echo -e "\e[95m3) Set Simpleadmin (admin) password\e[0m" # Light Purple
|
|
|
|
|
|
|
|
echo -e "\e[94m4) Set Console/ttyd (root) password\e[0m" # Light Blue
|
|
|
|
|
|
|
|
echo -e "\e[91m5) Uninstall Simple Admin\e[0m" # Light Red
|
|
|
|
|
|
|
|
echo -e "\e[95m6) Simple Firewall Management\e[0m" # Light Purple
|
|
|
|
|
|
|
|
echo -e "\e[94m7) Tailscale Management\e[0m" # Light Blue
|
|
|
|
|
|
|
|
echo -e "\e[92m8) Install/Change or remove Daily Reboot Timer\e[0m" # Light Green
|
|
|
|
|
|
|
|
echo -e "\e[96m9) Install/Uninstall CFUN 0 Fix\e[0m" # Cyan
|
|
|
|
|
|
|
|
echo -e "\e[91m10) Uninstall Entware/OPKG\e[0m" # Light Red
|
|
|
|
|
|
|
|
echo -e "\e[92m11) Install Speedtest.net CLI app (speedtest command)\e[0m" # Light Green
|
|
|
|
|
|
|
|
echo -e "\e[92m12) Install Fast.com CLI app (fast command)(tops out at 40Mbps)\e[0m" # Light Green
|
|
|
|
|
|
|
|
echo -e "\e[92m13) Install OpenSSH Server\e[0m" # Light Green
|
|
|
|
|
|
|
|
echo -e "\e[93m14) Exit\e[0m" # Yellow
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Main program loop
|
|
|
|
|
|
|
|
main() {
|
|
|
|
|
|
|
|
check_architecture
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while true; do
|
|
|
|
|
|
|
|
display_main_menu
|
|
|
|
|
|
|
|
read -p "Enter your choice: " choice
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case $choice in
|
|
|
|
|
|
|
|
1) send_at_commands;;
|
|
|
|
|
|
|
|
2) install_simple_admin;;
|
|
|
|
|
|
|
|
3) set_simpleadmin_passwd;;
|
|
|
|
|
|
|
|
4) set_root_passwd;;
|
|
|
|
|
|
|
|
5) uninstall_simpleadmin_components;;
|
|
|
|
|
|
|
|
6) configure_simple_firewall;;
|
|
|
|
|
|
|
|
7) tailscale_menu;;
|
|
|
|
|
|
|
|
8) manage_reboot_timer;;
|
|
|
|
|
|
|
|
9) manage_cfun_fix;;
|
|
|
|
|
|
|
|
10)
|
|
|
|
|
|
|
|
echo -e "\033[31mAre you sure you want to uninstall entware?\033[0m"
|
|
|
|
|
|
|
|
echo -e "\033[31m1) Yes\033[0m"
|
|
|
|
|
|
|
|
echo -e "\033[31m2) No\033[0m"
|
|
|
|
|
|
|
|
read -p "Select an option (1 or 2): " user_choice
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case $user_choice in
|
|
|
|
|
|
|
|
1)
|
|
|
|
|
|
|
|
echo -e "\033[31mUninstalling existing entware...\033[0m"
|
|
|
|
|
|
|
|
uninstall_entware
|
|
|
|
|
|
|
|
echo -e "\033[31mEntware has been uninstalled.\033[0m"
|
|
|
|
;;
|
|
|
|
;;
|
|
|
|
13)
|
|
|
|
2)
|
|
|
|
install_sshd
|
|
|
|
echo -e "\033[31mUninstallation cancelled.\033[0m"
|
|
|
|
|
|
|
|
exit
|
|
|
|
;;
|
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
|
|
|
|
|
|
|
echo -e "\033[31mInvalid option. Please select 1 or 2.\033[0m"
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
11) install_speedtest_cli;;
|
|
|
|
|
|
|
|
12) install_fast_cli;;
|
|
|
|
|
|
|
|
13) install_sshd;;
|
|
|
|
14)
|
|
|
|
14)
|
|
|
|
echo -e "\e[1;32mGoodbye!\e[0m"
|
|
|
|
echo -e "\e[1;32mGoodbye!\e[0m"
|
|
|
|
break
|
|
|
|
break
|
|
|
|
@ -944,4 +1032,8 @@ echo "//////////////////////////////////////////////////////////////////";
|
|
|
|
echo -e "\e[1;31mInvalid option\e[0m"
|
|
|
|
echo -e "\e[1;31mInvalid option\e[0m"
|
|
|
|
;;
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
done
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Start the program
|
|
|
|
|
|
|
|
main
|