#!/bin/sh # configure.sh - Interactively collect variables and write resources/config.sh # Drop this file alongside install.sh in the debian/ (or ubuntu/, devuan/, etc.) directory. # It is sourced/called by install.sh BEFORE resources/config.sh is sourced. # # Usage (standalone): ./configure.sh # Usage (from install): . ./configure.sh #move to the directory this script lives in so relative paths work cd "$(dirname "$0")" 2>/dev/null || true CONFIG_FILE="./resources/config.sh" # --------------------------------------------------------------------------- # Helper: prompt with a default value # ask # --------------------------------------------------------------------------- ask() { _var="$1" _prompt="$2" _default="$3" printf "%s [%s]: " "$_prompt" "$_default" read -r _input # --------------------------------------------------------------------------- ask_secret() { _var="$1" _prompt="$2" if stty -echo 2>/dev/null; then printf "%s: " "$_prompt" read -r _input # --------------------------------------------------------------------------- ask_bool() { _var="$1" _prompt="$2" _default="$3" while true; do printf "%s (true/false) [%s]: " "$_prompt" "$_default" read -r _input # --------------------------------------------------------------------------- ask_yn() { _prompt="$1" _default="$2" while true; do printf "%s (y/n) [%s]: " "$_prompt" "$_default" read -r _input }" if ask_yn "Configure git credentials" "y"; then echo "" echo " Credentials will be written immediately to /root/.git-credentials (mode 600)." echo " Leave username blank to skip." echo "" ask _git_username "Git username or email" "" if [ -n "$_git_username" ]; then ask_secret _git_password "Git password or personal access token" # URL-encode characters that would break the credentials file URL format _enc_user=$(printf '%s' "$_git_username" | sed \ -e 's/%/%25/g' -e 's/ /%20/g' \ -e 's/:/%3A/g' -e 's/@/%40/g') _enc_pass=$(printf '%s' "$_git_password" | sed \ -e 's/%/%25/g' -e 's/ /%20/g' \ -e 's/:/%3A/g' -e 's/@/%40/g') _CREDS_FILE="/root/.git-credentials" # Remove any pre-existing entry for this server to avoid duplicates if [ -f "$_CREDS_FILE" ]; then sed -i "/@${_git_server}/d" "$_CREDS_FILE" fi printf 'https://%s:%s@%s\n' "$_enc_user" "$_enc_pass" "$_git_server" \ >> "$_CREDS_FILE" chmod 600 "$_CREDS_FILE" _git_credentials_written=true echo " Credentials written to $_CREDS_FILE" else echo " No username entered — skipping credential store." fi # Clear sensitive variables immediately unset _git_password _enc_pass _git_username _enc_user echo "" else echo " Skipping git credential configuration." echo "" fi # =========================================================================== # SUMMARY — read back all settings and ask to confirm # =========================================================================== echo "============================================================" echo " Configuration Summary" echo "============================================================" echo "" echo " Basic Settings" echo " domain_name = $domain_name" echo " system_username = $system_username" echo " system_password = $system_password" echo " system_branch = $system_branch" echo " php_version = $php_version" echo " letsencrypt_folder = $letsencrypt_folder" echo "" echo " Advanced Settings (FreeSWITCH / Sofia-Sip / Database)" echo " switch_branch = $switch_branch" echo " switch_source = $switch_source" echo " switch_package = $switch_package" echo " switch_version = $switch_version" echo " switch_tls = $switch_tls" echo " switch_token = ${switch_token:-}" echo " sofia_version = $sofia_version" echo " database_name = $database_name" echo " database_username = $database_username" echo " database_password = $database_password" echo " database_repo = $database_repo" echo " database_version = $database_version" echo " database_host = $database_host" echo " database_port = $database_port" echo " database_backup = $database_backup" echo "" echo " Additional Applications" echo " transcribe = $application_transcribe" echo " speech = $application_speech" echo " language_model = $application_language_model" echo " device_logs = $application_device_logs" echo " dialplan_tools = $application_dialplan_tools" echo " edit = $application_edit" echo " sip_trunks = $application_sip_trunks" echo "" echo " Git Credentials" echo " git_server = ${_git_server:-}" echo " credentials = ${_git_credentials_written}" echo "" echo "============================================================" echo "" if ! ask_yn "Continue with installation using these settings" "y"; then echo "" echo "Installation cancelled. No changes have been made." echo "" exit 1 fi echo "" # =========================================================================== # Write config.sh # =========================================================================== cat > "$CONFIG_FILE" < Profile -> Personal Auth Token # Sofia-Sip Settings sofia_version=${sofia_version} # release-version for sofia-sip to use # Database Settings database_name=${database_name} # Database name (safe characters A-Z, a-z, 0-9) database_username=${database_username} # Database username (safe characters A-Z, a-z, 0-9) database_password=${database_password} # random or a custom value (safe characters A-Z, a-z, 0-9) database_repo=${database_repo} # PostgreSQL official, system database_version=${database_version} # requires repo official database_host=${database_host} # hostname or IP address database_port=${database_port} # port number database_backup=${database_backup} # true or false # General Settings php_version=${php_version} # PHP version 8.3, 8.2, 8.1 letsencrypt_folder=${letsencrypt_folder} # true or false # Optional Applications application_transcribe=${application_transcribe} # Speech to Text application_speech=${application_speech} # Text to Speech application_language_model=${application_language_model} # Language model application_device_logs=${application_device_logs} # Log device provision requests application_dialplan_tools=${application_dialplan_tools} # Add additional dialplan applications application_edit=${application_edit} # Editor for XML, Provision, Scripts, and PHP application_sip_trunks=${application_sip_trunks} # Registration-based SIP trunks EOF chmod 600 "$CONFIG_FILE" echo "============================================================" echo " Configuration saved to: $CONFIG_FILE" echo "============================================================" echo ""