16314: Clean up long bool expressions.
[arvados.git] / tools / arvbox / lib / arvbox / docker / service / sso / run-service
1 #!/bin/bash
2 # Copyright (C) The Arvados Authors. All rights reserved.
3 #
4 # SPDX-License-Identifier: AGPL-3.0
5
6 exec 2>&1
7 set -ex -o pipefail
8
9 . /usr/local/lib/arvbox/common.sh
10
11 cd /usr/src/sso
12 if test -s /var/lib/arvados/sso_rails_env ; then
13   export RAILS_ENV=$(cat /var/lib/arvados/sso_rails_env)
14 else
15   export RAILS_ENV=development
16 fi
17
18 run_bundler --without=development
19 bundle exec passenger-config build-native-support
20 bundle exec passenger-config install-standalone-runtime
21
22 if test "$1" = "--only-deps" ; then
23     exit
24 fi
25
26 set -u
27
28 uuid_prefix=$(cat /var/lib/arvados/api_uuid_prefix)
29
30 if ! test -s /var/lib/arvados/sso_secret_token ; then
31   ruby -e 'puts rand(2**400).to_s(36)' > /var/lib/arvados/sso_secret_token
32 fi
33 secret_token=$(cat /var/lib/arvados/sso_secret_token)
34
35 openssl verify -CAfile $root_cert $server_cert
36
37 cat >config/application.yml <<EOF
38 $RAILS_ENV:
39   uuid_prefix: $uuid_prefix
40   secret_token: $secret_token
41   default_link_url: "http://$localip"
42   allow_account_registration: true
43 EOF
44
45 (cd config && /usr/local/lib/arvbox/yml_override.py application.yml)
46
47 if ! test -f /var/lib/arvados/sso_database_pw ; then
48     ruby -e 'puts rand(2**128).to_s(36)' > /var/lib/arvados/sso_database_pw
49 fi
50 database_pw=$(cat /var/lib/arvados/sso_database_pw)
51
52 if ! (psql postgres -c "\du" | grep "^ arvados_sso ") >/dev/null ; then
53     psql postgres -c "create user arvados_sso with password '$database_pw'"
54     psql postgres -c "ALTER USER arvados_sso CREATEDB;"
55 fi
56
57 sed "s/password:.*/password: $database_pw/" <config/database.yml.example >config/database.yml
58
59 if ! test -f /var/lib/arvados/sso_database_setup ; then
60    bundle exec rake db:setup
61
62    app_secret=$(cat /var/lib/arvados/sso_app_secret)
63
64    bundle exec rails console <<EOF
65 c = Client.new
66 c.name = "joshid"
67 c.app_id = "arvados-server"
68 c.app_secret = "$app_secret"
69 c.save!
70 EOF
71
72    touch /var/lib/arvados/sso_database_setup
73 fi
74
75 rm -rf tmp
76 mkdir -p tmp/cache
77
78 bundle exec rake assets:precompile
79 bundle exec rake db:migrate
80
81 set +u
82 if test "$1" = "--only-setup" ; then
83     exit
84 fi
85
86 exec bundle exec passenger start --port=${services[sso]} \
87      --ssl --ssl-certificate=/var/lib/arvados/server-cert-${localip}.pem \
88      --ssl-certificate-key=/var/lib/arvados/server-cert-${localip}.key