106 lines
2.9 KiB
Bash
106 lines
2.9 KiB
Bash
#!/bin/bash
|
|
|
|
# Configuration file path
|
|
CONFIG_FILE="/usrdata/simpleupdate/simpleupdate.conf"
|
|
|
|
# Helper function to load and update the configuration
|
|
update_config() {
|
|
local key="$1"
|
|
local value="$2"
|
|
if grep -q "^$key=" "$CONFIG_FILE"; then
|
|
sed -i "s|^$key=.*|$key=$value|" "$CONFIG_FILE"
|
|
else
|
|
echo "$key=$value" >> "$CONFIG_FILE"
|
|
fi
|
|
}
|
|
|
|
# Display the current configuration status
|
|
status() {
|
|
echo "Current Configuration Status:"
|
|
if [[ -f "$CONFIG_FILE" ]]; then
|
|
while IFS= read -r line; do
|
|
echo "$line"
|
|
done < "$CONFIG_FILE"
|
|
else
|
|
echo "Configuration file not found."
|
|
fi
|
|
}
|
|
|
|
# Enable automatic updates
|
|
enable_updates() {
|
|
update_config "CONF_ENABLED" "yes"
|
|
echo "Automatic updates have been enabled."
|
|
}
|
|
|
|
# Disable automatic updates
|
|
disable_updates() {
|
|
update_config "CONF_ENABLED" "no"
|
|
echo "Automatic updates have been disabled."
|
|
}
|
|
|
|
# Manually start the update process
|
|
start_update() {
|
|
/usrdata/simpleupdate/simpleupdated &
|
|
echo "The update process has been started manually."
|
|
}
|
|
|
|
# Interactive setup for the update configuration
|
|
setup() {
|
|
read -p "Enable automatic updates? [yes/no]: " enable_updates
|
|
if [[ "$enable_updates" == "yes" ]]; then
|
|
enable_updates
|
|
else
|
|
disable_updates
|
|
fi
|
|
|
|
read -p "Check for updates at boot? [yes/no]: " check_boot
|
|
update_config "CHECK_AT_BOOT" "$check_boot"
|
|
|
|
read -p "Update frequency (none, daily, weekly, monthly): " frequency
|
|
update_config "UPDATE_FREQUENCY" "$frequency"
|
|
|
|
case $frequency in
|
|
daily)
|
|
read -p "Scheduled time (HH:MM in 24-hour format): " time
|
|
update_config "SCHEDULED_TIME" "$time"
|
|
;;
|
|
weekly)
|
|
echo "Please enter the day of the week."
|
|
read -p "Day (full name or abbreviation, e.g., Monday or Mon): " day_input
|
|
# Normalize input to abbreviated form
|
|
day_abbr=$(date -d "$day_input" +%a 2>/dev/null)
|
|
if [[ $? -ne 0 ]]; then
|
|
echo "Invalid day of the week. Please try again."
|
|
return 1
|
|
fi
|
|
update_config "WEEKLY_DAY" "$day_abbr"
|
|
read -p "Scheduled time (HH:MM in 24-hour format): " time
|
|
update_config "SCHEDULED_TIME" "$time"
|
|
;;
|
|
monthly)
|
|
read -p "Date of the month (1-31): " date
|
|
update_config "MONTHLY_DATE" "$date"
|
|
read -p "Scheduled time (HH:MM in 24-hour format): " time
|
|
update_config "SCHEDULED_TIME" "$time"
|
|
;;
|
|
*)
|
|
echo "No scheduling will be set."
|
|
;;
|
|
esac
|
|
|
|
echo "Update configuration has been set."
|
|
}
|
|
|
|
# Parse command-line arguments
|
|
case "$1" in
|
|
status) status ;;
|
|
enable) enable_updates ;;
|
|
disable) disable_updates ;;
|
|
start) start_update ;;
|
|
setup) setup ;;
|
|
*)
|
|
echo "Usage: $0 {status|enable|disable|start|setup}"
|
|
exit 1
|
|
;;
|
|
esac
|