Files
simple-sshd/scripts/update_config_params.sh
2025-04-07 15:50:54 +12:00

95 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
# update_config_params.sh
# This script updates configuration parameters in preferences.xml and Prefs.java
# based on values defined in env.txt
set -e # Exit on error
# Change to the project root directory
cd "$(dirname "$0")/.."
PROJECT_ROOT=$(pwd)
# Source the environment variables
source "$PROJECT_ROOT/env.txt"
echo "Updating configuration parameters..."
# Paths to the target files
PREFS_XML="$PROJECT_ROOT/app/src/main/res/xml/preferences.xml"
# Detect Prefs.java path dynamically (supports any package name)
PREFS_JAVA=$(find "$PROJECT_ROOT/app/src/main/java" -type f -name "Prefs.java" | head -n 1)
if [ ! -f "$PREFS_JAVA" ]; then
echo "Error: Prefs.java not found!"
exit 1
fi
echo "Prefs.java found at: $PREFS_JAVA"
# Update defaultValue attributes in preferences.xml
update_xml_default() {
local key=$1
local value=$2
# Экранируем слеши и кавычки
value=$(printf '%s\n' "$value" | sed -e 's/[\/&]/\\&/g' -e 's/"/\\"/g')
perl -0777 -i -pe "
s{
(<[^>]*android:key=\"$key\"[^>]*android:defaultValue=\")
[^\"]*
(\")
}{\${1}$value\${2}}xg
" "$PREFS_XML"
}
# Update default values in Prefs.java
update_java_default() {
local key=$1
local value=$2
if [ "$value" == "true" ] || [ "$value" == "false" ]; then
sed -i "s/getBoolean(\"$key\", [^)]*)/getBoolean(\"$key\", $value)/g" "$PREFS_JAVA"
elif [[ "$value" =~ ^[0-9]+$ ]]; then
sed -i "s/Integer\.parseInt(pref\.getString(\"$key\", \"[^\"]*\"))/Integer.parseInt(pref.getString(\"$key\", \"$value\"))/g" "$PREFS_JAVA"
else
escaped_value=$(printf '%s\n' "$value" | sed -e 's/[\/&]/\\&/g')
sed -i "s|getString(\"$key\", \"[^\"]*\")|getString(\"$key\", \"$escaped_value\")|g" "$PREFS_JAVA"
fi
}
# Update all configuration parameters
echo "Updating startup preferences..."
update_xml_default "onboot" "$DEFAULT_ONBOOT"
update_xml_default "onopen" "$DEFAULT_ONOPEN"
update_xml_default "foreground" "$DEFAULT_FOREGROUND"
update_java_default "onboot" "$DEFAULT_ONBOOT"
update_java_default "onopen" "$DEFAULT_ONOPEN"
update_java_default "foreground" "$DEFAULT_FOREGROUND"
echo "Updating Dropbear settings..."
update_xml_default "port" "$DEFAULT_PORT"
update_xml_default "sshserverpassword" "$DEFAULT_SSH_SERVER_PASSWORD"
update_xml_default "rsyncbuffer" "$DEFAULT_RSYNCBUFFER"
update_xml_default "extra" "$DEFAULT_EXTRA"
update_xml_default "env" "$DEFAULT_ENV"
update_java_default "port" "$DEFAULT_PORT"
update_java_default "sshserverpassword" "$DEFAULT_SSH_SERVER_PASSWORD"
update_java_default "rsyncbuffer" "$DEFAULT_RSYNCBUFFER"
update_java_default "extra" "$DEFAULT_EXTRA"
update_java_default "env" "$DEFAULT_ENV"
echo "Updating paths..."
update_xml_default "path" "$DEFAULT_PATH"
update_xml_default "home" "$DEFAULT_HOME"
update_xml_default "shell" "$DEFAULT_SHELL"
update_java_default "path" "$DEFAULT_PATH"
update_java_default "home" "$DEFAULT_HOME"
update_java_default "shell" "$DEFAULT_SHELL"
echo "Configuration parameters updated successfully!"