Update docker/headscale/start.sh
This commit is contained in:
parent
a38bd75474
commit
709155b7bb
|
@ -1,9 +1,21 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
replace_config_values() {
|
replace_config_values() {
|
||||||
local config_template="/etc/headscale/config-example.yaml"
|
local config_template="/etc/headscale/config-example.yaml"
|
||||||
local config_output="/etc/headscale/config.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
|
# Check if the output config file already exists
|
||||||
if [[ -f "$config_output" ]]; then
|
if [[ -f "$config_output" ]]; then
|
||||||
echo "$config_output already exists."
|
echo "$config_output already exists."
|
||||||
|
@ -16,13 +28,30 @@ replace_config_values() {
|
||||||
return 1
|
return 1
|
||||||
fi
|
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 IFS= read -r line || [[ -n "$line" ]]; do
|
||||||
while [[ "$line" =~ \$\{([a-zA-Z_][a-zA-Z_0-9]*)\} ]]; do
|
line=$(replace_or_default "SERVER_URL" "$DEFAULT_SERVER_URL" "$line")
|
||||||
var_name=${BASH_REMATCH[1]}
|
line=$(replace_or_default "LISTEN_ADDR" "$DEFAULT_LISTEN_ADDR" "$line")
|
||||||
var_value=$(eval echo "\$$var_name")
|
line=$(replace_or_default "METRICS_LISTEN_ADDR" "$DEFAULT_METRICS_LISTEN_ADDR" "$line")
|
||||||
line=${line//\$\{$var_name\}/$var_value}
|
line=$(replace_or_default "GRPC_LISTEN_ADDR" "$DEFAULT_GRPC_LISTEN_ADDR" "$line")
|
||||||
done
|
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"
|
echo "$line"
|
||||||
done < "$config_template" > "$config_output"
|
done < "$config_template" > "$config_output"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue