Begin work on creating simpleupdates
-New update system to handle automatic updates -work in progress
This commit is contained in:
1
simpleadmin/.rev
Normal file
1
simpleadmin/.rev
Normal file
@@ -0,0 +1 @@
|
|||||||
|
1
|
||||||
1
simplefirewall/.rev
Normal file
1
simplefirewall/.rev
Normal file
@@ -0,0 +1 @@
|
|||||||
|
1
|
||||||
88
simpleupdates/simpleupdated
Normal file
88
simpleupdates/simpleupdated
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Define the configuration and directories
|
||||||
|
CONFIG_FILE="/usrdata/simpleupdate/simpleupdate.conf"
|
||||||
|
GITUSER="iamromulan"
|
||||||
|
GITTREE="main"
|
||||||
|
DIRECTORIES=("simpleadmin" "socat-at-bridge" "simplefirewall" "tailscale" "ttyd")
|
||||||
|
BASE_URL="https://raw.githubusercontent.com/$GITUSER/quectel-rgmii-toolkit/$GITTREE"
|
||||||
|
|
||||||
|
# Wait for the system to fully start
|
||||||
|
sleep 60
|
||||||
|
# Load configuration
|
||||||
|
if [[ -f "$CONFIG_FILE" ]]; then
|
||||||
|
source "$CONFIG_FILE"
|
||||||
|
else
|
||||||
|
echo "Configuration file not found."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Function to check for updates
|
||||||
|
check_for_updates() {
|
||||||
|
echo "Checking for updates..."
|
||||||
|
for dir in "${DIRECTORIES[@]}"; do
|
||||||
|
local remote_rev=$(wget -qO- "$BASE_URL/$dir/.rev")
|
||||||
|
local local_rev_file="/usrdata/$dir/.rev"
|
||||||
|
|
||||||
|
if [[ ! -f "$local_rev_file" ]]; then
|
||||||
|
echo "No local revision file found for $dir, skipping."
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
local local_rev=$(cat "$local_rev_file")
|
||||||
|
|
||||||
|
if [[ "$remote_rev" -gt "$local_rev" ]]; then
|
||||||
|
echo "Update available for $dir, updating..."
|
||||||
|
wget -qO "/tmp/update_${dir}.sh" "$BASE_URL/simpleupdates/scripts/update_${dir}.sh"
|
||||||
|
chmod +x "/tmp/update_${dir}.sh"
|
||||||
|
"/tmp/update_${dir}.sh"
|
||||||
|
else
|
||||||
|
echo "$dir is up to date."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to wait and trigger updates based on scheduling
|
||||||
|
wait_to_update() {
|
||||||
|
echo "Waiting for the next update check according to schedule..."
|
||||||
|
while true; do
|
||||||
|
sleep 60 # Check every 60 seconds
|
||||||
|
local current_time=$(date "+%H:%M")
|
||||||
|
local current_day=$(date "+%a")
|
||||||
|
local current_date=$(date "+%d")
|
||||||
|
|
||||||
|
case $UPDATE_FREQUENCY in
|
||||||
|
daily)
|
||||||
|
if [[ "$current_time" == "$SCHEDULED_TIME" ]]; then
|
||||||
|
check_for_updates
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
weekly)
|
||||||
|
if [[ "$current_day" == "$WEEKLY_DAY" && "$current_time" == "$SCHEDULED_TIME" ]]; then
|
||||||
|
check_for_updates
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
monthly)
|
||||||
|
if [[ "$current_date" == "$MONTHLY_DATE" && "$current_time" == "$SCHEDULED_TIME" ]]; then
|
||||||
|
check_for_updates
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
none)
|
||||||
|
echo "Update checking is disabled by frequency setting."
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Main logic
|
||||||
|
if [[ "$CONF_ENABLED" == "no" ]]; then
|
||||||
|
echo "Updates are disabled in the configuration."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$CHECK_AT_BOOT" == "yes" ]]; then
|
||||||
|
check_for_updates
|
||||||
|
else
|
||||||
|
wait_to_update
|
||||||
|
fi
|
||||||
10
simpleupdates/systemd/simpleupdated.service
Normal file
10
simpleupdates/systemd/simpleupdated.service
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Simple Update Daemon
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usrdata/simpleupdates/simpleupdated
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
1
socat-at-bridge/.rev
Normal file
1
socat-at-bridge/.rev
Normal file
@@ -0,0 +1 @@
|
|||||||
|
1
|
||||||
1
tailscale/.rev
Normal file
1
tailscale/.rev
Normal file
@@ -0,0 +1 @@
|
|||||||
|
1
|
||||||
Reference in New Issue
Block a user