From 709155b7bbe0337d079dfb2da7dac146e2d6bc0e Mon Sep 17 00:00:00 2001 From: colin Date: Sun, 21 Jan 2024 23:20:47 +0000 Subject: [PATCH] Update docker/headscale/start.sh --- docker/headscale/start.sh | 41 +++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/docker/headscale/start.sh b/docker/headscale/start.sh index 4d39d03..ca897ca 100644 --- a/docker/headscale/start.sh +++ b/docker/headscale/start.sh @@ -1,9 +1,21 @@ #!/bin/bash + replace_config_values() { local config_template="/etc/headscale/config-example.yaml" local config_output="/etc/headscale/config.yaml" + # Default values + local DEFAULT_SERVER_URL="http://127.0.0.1:8080" + local DEFAULT_LISTEN_ADDR="127.0.0.1:8080" + local DEFAULT_METRICS_LISTEN_ADDR="127.0.0.1:9090" + local DEFAULT_GRPC_LISTEN_ADDR="127.0.0.1:50443" + local DEFAULT_GRPC_ALLOW_INSECURE="false" + local DEFAULT_DB_TYPE="sqlite3" + local DEFAULT_DB_PATH="/var/lib/headscale/db.sqlite" + local DEFAULT_UNIX_SOCKET="/var/run/headscale/headscale.sock" + local DEFAULT_UNIX_SOCKET_PERMISSION="0770" + # Check if the output config file already exists if [[ -f "$config_output" ]]; then echo "$config_output already exists." @@ -16,13 +28,30 @@ replace_config_values() { return 1 fi - # Read the template and replace variables + # Function to replace or use default value + replace_or_default() { + local var_name=$1 + local default_value=$2 + local line=$3 + local var_value + eval var_value=\$$var_name + if [ -z "$var_value" ]; then + var_value=$default_value + fi + echo ${line/\$\{$var_name\}/$var_value} + } + + # Read the template and replace variables with defaults if not set while IFS= read -r line || [[ -n "$line" ]]; do - while [[ "$line" =~ \$\{([a-zA-Z_][a-zA-Z_0-9]*)\} ]]; do - var_name=${BASH_REMATCH[1]} - var_value=$(eval echo "\$$var_name") - line=${line//\$\{$var_name\}/$var_value} - done + line=$(replace_or_default "SERVER_URL" "$DEFAULT_SERVER_URL" "$line") + line=$(replace_or_default "LISTEN_ADDR" "$DEFAULT_LISTEN_ADDR" "$line") + line=$(replace_or_default "METRICS_LISTEN_ADDR" "$DEFAULT_METRICS_LISTEN_ADDR" "$line") + line=$(replace_or_default "GRPC_LISTEN_ADDR" "$DEFAULT_GRPC_LISTEN_ADDR" "$line") + line=$(replace_or_default "GRPC_ALLOW_INSECURE" "$DEFAULT_GRPC_ALLOW_INSECURE" "$line") + line=$(replace_or_default "DB_TYPE" "$DEFAULT_DB_TYPE" "$line") + line=$(replace_or_default "DB_PATH" "$DEFAULT_DB_PATH" "$line") + line=$(replace_or_default "UNIX_SOCKET" "$DEFAULT_UNIX_SOCKET" "$line") + line=$(replace_or_default "UNIX_SOCKET_PERMISSION" "$DEFAULT_UNIX_SOCKET_PERMISSION" "$line") echo "$line" done < "$config_template" > "$config_output"