121 lines
4.3 KiB
Bash
121 lines
4.3 KiB
Bash
#!/bin/bash
|
|
|
|
CONFIG_PATH="./agent.toml"
|
|
BACKUP_PATH="./default.toml"
|
|
|
|
if [ ! -w "$(dirname "$CONFIG_PATH")" ]; then
|
|
echo "Error: No write permission to $(dirname "$CONFIG_PATH"). Please run this script as a user with appropriate permissions."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -f "$CONFIG_PATH" ]; then
|
|
mv "$CONFIG_PATH" "$BACKUP_PATH"
|
|
if [ $? -eq 0 ]; then
|
|
echo "Moved $CONFIG_PATH to $BACKUP_PATH."
|
|
else
|
|
echo "Error: Unable to move $CONFIG_PATH to $BACKUP_PATH."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Warning: $CONFIG_PATH does not exist. A new configuration file will be created."
|
|
fi
|
|
|
|
declare -A config_defaults=(
|
|
["internal_timestamp"]="10"
|
|
["management_address"]="127.0.0.1"
|
|
["management_port"]="9090"
|
|
["refresh_interval"]="5"
|
|
["polling_interval"]="50"
|
|
["control_channel_timeout"]="15"
|
|
["data_channel_timeout"]="15"
|
|
["file_transfer_timeout"]="15"
|
|
)
|
|
|
|
prompt_input() {
|
|
local prompt_message="$1"
|
|
local default_value="$2"
|
|
local key="$3"
|
|
local input
|
|
while true; do
|
|
read -p "$prompt_message [Default: $default_value]: " input
|
|
input="${input:-$default_value}"
|
|
if validate_input "$key" "$input"; then
|
|
echo "$input"
|
|
return
|
|
else
|
|
echo "Invalid input, please re-enter." >&2
|
|
fi
|
|
done
|
|
}
|
|
|
|
validate_input() {
|
|
local key="$1"
|
|
local value="$2"
|
|
case "$key" in
|
|
internal_timestamp|management_port|refresh_interval|polling_interval|control_channel_timeout|data_channel_timeout|file_transfer_timeout)
|
|
if [[ "$value" =~ ^[0-9]+$ ]]; then
|
|
return 0
|
|
fi
|
|
;;
|
|
management_address)
|
|
if [[ "$value" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then
|
|
IFS='.' read -r -a octets <<< "$value"
|
|
for octet in "${octets[@]}"; do
|
|
if (( octet < 0 || octet > 255 )); then
|
|
return 1
|
|
fi
|
|
done
|
|
return 0
|
|
fi
|
|
;;
|
|
*)
|
|
return 1
|
|
;;
|
|
esac
|
|
return 1
|
|
}
|
|
|
|
{
|
|
echo "[Config]"
|
|
|
|
internal_timestamp_default="${config_defaults["internal_timestamp"]}"
|
|
internal_timestamp=$(prompt_input "Please enter internal_timestamp (milliseconds)" "$internal_timestamp_default" "internal_timestamp")
|
|
echo "internal_timestamp = $internal_timestamp"
|
|
|
|
management_address_default="${config_defaults["management_address"]}"
|
|
management_address=$(prompt_input "Please enter management_address (IP address)" "$management_address_default" "management_address")
|
|
echo "management_address = \"$management_address\""
|
|
|
|
management_port_default="${config_defaults["management_port"]}"
|
|
management_port=$(prompt_input "Please enter management_port (port)" "$management_port_default" "management_port")
|
|
echo "management_port = $management_port"
|
|
|
|
refresh_interval_default="${config_defaults["refresh_interval"]}"
|
|
refresh_interval=$(prompt_input "Please enter refresh_interval (seconds)" "$refresh_interval_default" "refresh_interval")
|
|
echo "refresh_interval = $refresh_interval"
|
|
|
|
polling_interval_default="${config_defaults["polling_interval"]}"
|
|
polling_interval=$(prompt_input "Please enter polling_interval (milliseconds)" "$polling_interval_default" "polling_interval")
|
|
echo "polling_interval = $polling_interval"
|
|
|
|
control_channel_timeout_default="${config_defaults["control_channel_timeout"]}"
|
|
control_channel_timeout=$(prompt_input "Please enter control_channel_timeout (seconds)" "$control_channel_timeout_default" "control_channel_timeout")
|
|
echo "control_channel_timeout = $control_channel_timeout"
|
|
|
|
data_channel_timeout_default="${config_defaults["data_channel_timeout"]}"
|
|
data_channel_timeout=$(prompt_input "Please enter data_channel_timeout (seconds)" "$data_channel_timeout_default" "data_channel_timeout")
|
|
echo "data_channel_timeout = $data_channel_timeout"
|
|
|
|
file_transfer_timeout_default="${config_defaults["file_transfer_timeout"]}"
|
|
file_transfer_timeout=$(prompt_input "Please enter file_transfer_timeout (seconds)" "$file_transfer_timeout_default" "file_transfer_timeout")
|
|
echo "file_transfer_timeout = $file_transfer_timeout"
|
|
|
|
} > "$CONFIG_PATH"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "Initialization completed"
|
|
else
|
|
echo "Error: Could not create $CONFIG_PATH."
|
|
exit 1
|
|
fi
|