64 lines
2.4 KiB
Fish
64 lines
2.4 KiB
Fish
#!/bin/env fish
|
|
begin
|
|
set -l domain sync
|
|
set -l dir (status dirname)
|
|
set -l source "$dir/docker-compose.overrides.yml"
|
|
source "$dir/../service.fish"
|
|
|
|
function installSW -V dir -V source
|
|
set -l root (getServiceRoot $argv)
|
|
initializeServiceInstallation $argv
|
|
|
|
sudo cp \
|
|
"$dir/"{docker-compose.{base,overrides}.yml,.dockerignore,Dockerfile,public-url.patch} \
|
|
"$root"
|
|
|
|
sudo cp -r "$dir/init" "$root"
|
|
installDockerService $argv
|
|
end
|
|
|
|
function configureSW -V dir -V domain
|
|
set -l overrides (getServiceOverrides $argv)
|
|
set -l envKey ".services.sync-server.environment"
|
|
set -l url https://$domain.nuth.ch/firefox
|
|
|
|
set databases sync SYNCSTORAGE \
|
|
token TOKENSERVER
|
|
|
|
for variable in masterSecret metricsSecret syncPW tokenPW
|
|
set $variable (nix-shell -p keepassxc --run "keepassxc-cli generate --length 64")
|
|
end
|
|
|
|
sudo SECRET="$masterSecret" yq -i "$envKey.SYNC_MASTER_SECRET = env(SECRET)" "$overrides"
|
|
sudo SECRET="$metricsSecret" yq -i "$envKey.SYNC_TOKENSERVER__FXA_METRICS_HASH_SECRET = env(SECRET)" "$overrides"
|
|
sudo URL=$url yq -i "$envKey.SYNC_PUBLIC_URL = env(URL)" "$overrides"
|
|
sudo URL=$url yq -i ".services.token-db.environment.SYNC_PUBLIC_URL = env(URL)" "$overrides"
|
|
configureDockerService $argv
|
|
|
|
for i in $(seq 1 2 (count $databases))
|
|
set -l prefix $databases[$i]
|
|
set -l section $databases[(math "$i + 1")]
|
|
set -l pwVar "$prefix""PW"
|
|
set -l pw $$pwVar
|
|
set -l dbEnv ".services.$prefix-db.environment"
|
|
set -l db (yq "$dbEnv.MARIADB_DATABASE" "$overrides")
|
|
set -l user (yq "$dbEnv.MARIADB_USER" "$overrides")
|
|
sudo PW=$pw yq -i "$dbEnv.MARIADB_PASSWORD = env(PW)" "$overrides"
|
|
sudo CONNECTION="mysql://$user:$pw@$prefix-db/$db" yq -i ".services.sync-server.environment.SYNC_"$section"__DATABASE_URL = env(CONNECTION)" "$overrides"
|
|
end
|
|
end
|
|
|
|
function getServiceServers -V domain
|
|
printf "$domain" ""
|
|
end
|
|
|
|
function getServiceLocations -V domain
|
|
printf "%s\0" "sync-server" /firefox/ "Firefox Sync"
|
|
end
|
|
|
|
function getServiceLocationConfig -a domain s location -V service -V flood
|
|
getServiceDefaultProxy $argv --path "/"
|
|
end
|
|
|
|
runInstaller --force $argv
|
|
end
|