diff --git a/scripts/taiga/config.sh b/scripts/taiga/config.sh index ffdc4db..054ea1a 100755 --- a/scripts/taiga/config.sh +++ b/scripts/taiga/config.sh @@ -2,183 +2,69 @@ export PATH="/lib/rc/bin:$PATH" set -ueo pipefail - . /var/db/repos/container/scripts/functions.sh . /var/db/repos/calculate/scripts/ini.sh -regular() { - if [[ ${ini[taiga.public_register]} == 'True' ]] - then - local public_register='true' - else - local public_register='false' - fi - replace=( - "taiga-back/settings/config.py" "" - "('USER':).*" "\1 '${ini[postgresql.taiga_user]}'," - "('PASSWORD':).*" "\1 '${ini[postgresql.taiga_password]}'," - "^.*(SECRET_KEY =).*" "\1 \"${ini[taiga.secret_key]}\"" - "^.*(TAIGA_SITES_SCHEME =).*" "\1 \"${ini[taiga.protocol]}\"" - "^.*(TAIGA_SITES_DOMAIN =).*" "\1 \"${ini[taiga.taiga_sites_domain]}\"" - "^.*(MEDIA_ROOT =).*" "\1 '/var/calculate/www/taiga/taiga-back/media'" - "^.*(DEFAULT_FROM_EMAIL =).*" "\1 '${ini[taiga.from_email]}'" - "^.*(EMAIL_USE_TLS =).*" "\1 ${ini[taiga.smtp_tls]}" - "^.*(EMAIL_USE_SSL =).*" "\1 ${ini[taiga.smtp_ssl]}" - "^.*(EMAIL_HOST =).*" "\1 '${ini[taiga.smtp_host]}'" - "^.*(EMAIL_PORT =).*" "\1 ${ini[taiga.smtp_port]}" - "^.*(EMAIL_HOST_USER =).*" "\1 '${ini[taiga.smtp_user]}'" - "^.*(EMAIL_HOST_PASSWORD =).*" "\1 '${ini[taiga.smtp_password]}'" - "(\"url\": \"amqp://).*(:5672/taiga\")" "\1${ini[rabbitmq.taiga_user]}:${ini[rabbitmq.taiga_password]}@localhost\2" - "^.*(CELERY_BROKER_URL =).*" "\1 \"amqp://${ini[rabbitmq.taiga_user]}:${ini[rabbitmq.taiga_password]}@localhost:5672/taiga\"" - "^.*(CELERY_TIMEZONE =).*" "\1 '${ini[taiga.timezone]}'" - "^.*(ENABLE_TELEMETRY =).*" "\1 False" - "^.*(PUBLIC_REGISTER_ENABLED =).*" "\1 ${ini[taiga.public_register]}" - "^.*(USER_EMAIL_ALLOWED_DOMAINS =).*" "\1 $(arr_to_list ${ini[taiga.user_email_allowed_domains]})" - "^.*(MAX_PRIVATE_PROJECTS_PER_USER =).*" "\1 ${ini[taiga.max_private_projects_per_user]}" - "^.*(MAX_PUBLIC_PROJECTS_PER_USER =).*" "\1 ${ini[taiga.max_public_projects_per_user]}" - - "taiga-front-dist/dist/conf.json" "" - "(\"api\":).*" "\1 \"${ini[taiga.protocol]}://${ini[taiga.taiga_sites_domain]}/api/v1/\"," - "(\"eventsUrl\":).*" "\1 \"wss://${ini[taiga.taiga_sites_domain]}/events\"," - "(\"defaultLanguage\":).*" "\1 \"${ini[taiga.language]}\"," - "(\"publicRegisterEnabled\":).*" "\1 ${public_register}," - "(\"feedbackEnabled\":).*" "\1 false," - "(\"supportUrl\":).*" "\1 \"${ini[taiga.protocol]}://${ini[taiga.taiga_sites_domain]}\"," - "(\"gravatar\":).*" "\1 false," - - "taiga-events/.env" "" - "^.*(RABBITMQ_URL=).*" "\1\"amqp://${ini[rabbitmq.taiga_user]}:${ini[rabbitmq.taiga_password]}@localhost:5672/taiga\"" - "^.*(SECRET=).*" "\1\"${ini[taiga.secret_key]}\"" - - "taiga-protected/.env" "" - "^.*(SECRET_KEY=).*" "\1\"${ini[taiga.secret_key]}\"" - ) -} - -check_conf() { - conf= - for (( i=0; i < ${#replace[@]}; i += 2 )) - do - from=${replace[$i]} - to=${replace[$i+1]} - - if [[ $to == '' ]] - then - conf=$from - continue - fi - if [[ ! -e $conf ]] - then - eerror "~/taiga/$conf not found." - exit 2 - fi - - grep -qE "$from" $conf || exit 1 - done -} - -check_show() { - conf= - for (( i=0; i < ${#replace[@]}; i += 2 )) - do - from=${replace[$i]} - to=${replace[$i+1]} - if [[ $to == '' ]] - then - conf=$from - echo "$conf" - continue - fi - - err=0 - - grep -qE "$from" $conf || err=1 - - if [[ $err == 0 ]] - then - einfo $from - else - eerror $from || true - fi - eend $err || true - done -} +cd /var/calculate/www/taiga configure_conf() { - conf= - for (( i=0; i < ${#replace[@]}; i += 2 )) - do - from=${replace[$i]} - to=${replace[$i+1]} - - if [[ $to == '' ]] - then - if [[ $conf != '' ]] - then - eend - fi - conf=$from - ebegin $conf - continue - fi - - sed -i -E "s|$from|$to|g" $conf + local config=$1 + einfo "Setting up $config ..." + test -f $config.old || cp $config $config.old + for (( i=0; i < ${#replace[@]}; i += 2 )); do + var=${replace[$i]} + val=${replace[$i+1]} + grep -qE "$var" $config || eerror "Parametr '$var' is not found." + + sed -i -E "s|^(\s*)(['\"]?)(${var})(['\"]?)(\s*)([:=])(\s*)?.*$|\1\2\3\4\5\6\7${val}|g" \ + $config done eend } - -show_conf() { - conf= - for (( i=0; i < ${#replace[@]}; i += 2 )) - do - from=${replace[$i]} - to=${replace[$i+1]} - - if [[ $to == '' ]] - then - conf=$from - echo '#-------------------------------------------------------------------------' - echo " $conf" - echo '#-------------------------------------------------------------------------' - continue - fi - - grep -E "$from" $conf - done -} - -check_homedir() { - homedir=/var/calculate/www/taiga - if [[ -d $homedir ]] - then - cd $homedir - else - eerror "Missing directory $homedir!" - exit 1 - fi -} - -regular - -check_homedir - -ebegin 'Checking Custom Variables' -`check_conf` || { - if [[ $? == 1 ]] - then - check_show # отобразим несоответствия - exit 1 - fi - exit -} -eend - -einfo 'Setting up configuration files' -configure_conf - -if [[ $# == 1 && $1 == 'show' ]] -then - einfo 'Customized parameters:' - show_conf -fi - +[[ ${ini[taiga.public_register]} == 'True' ]] && public_register='true' || public_register='false' +replace=( + USER \'${ini[postgresql.taiga_user]}\', + PASSWORD \'${ini[postgresql.taiga_password]}\', + SECRET_KEY \"${ini[taiga.secret_key]}\" + TAIGA_SITES_SCHEME \"${ini[taiga.protocol]}\" + TAIGA_SITES_DOMAIN \"${ini[taiga.taiga_sites_domain]}\" + MEDIA_ROOT '/var/calculate/www/taiga/taiga-back/media' + DEFAULT_FROM_EMAIL \'${ini[taiga.from_email]}\' + EMAIL_USE_TLS ${ini[taiga.smtp_tls]} + EMAIL_USE_SSL ${ini[taiga.smtp_ssl]} + EMAIL_HOST \'${ini[taiga.smtp_host]}\' + EMAIL_PORT ${ini[taiga.smtp_port]} + EMAIL_HOST_USER \'${ini[taiga.smtp_user]}\' + EMAIL_HOST_PASSWORD \'${ini[taiga.smtp_password]}\' + url \"amqp://${ini[rabbitmq.taiga_user]}:${ini[rabbitmq.taiga_password]}@localhost:5672/taiga\" + CELERY_BROKER_URL \"amqp://${ini[rabbitmq.taiga_user]}:${ini[rabbitmq.taiga_password]}@localhost:5672/taiga\" + CELERY_TIMEZONE \'${ini[taiga.timezone]}\' + ENABLE_TELEMETRY False + PUBLIC_REGISTER_ENABLED ${ini[taiga.public_register]} + USER_EMAIL_ALLOWED_DOMAINS $(arr_to_list ${ini[taiga.user_email_allowed_domains]}) + MAX_PRIVATE_PROJECTS_PER_USER ${ini[taiga.max_private_projects_per_user]} + MAX_PUBLIC_PROJECTS_PER_USER ${ini[taiga.max_public_projects_per_user]} +) +configure_conf taiga-back/settings/config.py + +replace=( + api \"${ini[taiga.protocol]}://${ini[taiga.taiga_sites_domain]}/api/v1/\", + eventsUrl \"wss://${ini[taiga.taiga_sites_domain]}/events\", + defaultLanguage \"${ini[taiga.language]}\", + publicRegisterEnabled ${public_register}, + feedbackEnabled false, + supportUrl \"${ini[taiga.protocol]}://${ini[taiga.taiga_sites_domain]}\", + gravatar false, +) +configure_conf taiga-front-dist/dist/conf.json + +replace=( + RABBITMQ_URL \"amqp://${ini[rabbitmq.taiga_user]}:${ini[rabbitmq.taiga_password]}@localhost:5672/taiga\" + SECRET \"${ini[taiga.secret_key]}\" +) +configure_conf taiga-events/.env + +replace=( + SECRET_KEY \"${ini[taiga.secret_key]}\" +) +configure_conf taiga-protected/.env diff --git a/scripts/taiga/migrate.sh b/scripts/taiga/migrate.sh index 31a9aa6..34abb4d 100755 --- a/scripts/taiga/migrate.sh +++ b/scripts/taiga/migrate.sh @@ -10,7 +10,7 @@ export PATH="/lib/rc/bin:$PATH" data=$(PGPASSWORD=${ini[postgresql.taiga_password]} psql -U ${ini[postgresql.taiga_user]} -d ${ini[postgresql.taiga_database]} -c '\dt' 2>/dev/null) -if [[ -e $data ]]; then +if [[ -z $data ]]; then cd ~ cd taiga-back source .venv/bin/activate @@ -23,4 +23,3 @@ if [[ -e $data ]]; then DJANGO_SETTINGS_MODULE=settings.config python manage.py compilemessages DJANGO_SETTINGS_MODULE=settings.config python manage.py collectstatic --noinput fi - diff --git a/scripts/taiga/postgresql.sh b/scripts/taiga/postgresql.sh index 5bea77b..d5c685c 100755 --- a/scripts/taiga/postgresql.sh +++ b/scripts/taiga/postgresql.sh @@ -31,4 +31,3 @@ psql -U postgres -c "ALTER USER ${ini[postgresql.taiga_user]} WITH PASSWORD '${i cl-core-setup -n postgresql -f /etc/init.d/postgresql-$(pgver slot) restart - diff --git a/scripts/taiga/rabbitmq.sh b/scripts/taiga/rabbitmq.sh index 81c76ad..c31df8d 100755 --- a/scripts/taiga/rabbitmq.sh +++ b/scripts/taiga/rabbitmq.sh @@ -14,4 +14,3 @@ export PATH="/lib/rc/bin:$PATH" rabbitmqctl add_user ${ini[rabbitmq.taiga_user]} ${ini[rabbitmq.taiga_password]} rabbitmqctl add_vhost taiga rabbitmqctl set_permissions -p taiga ${ini[rabbitmq.taiga_user]} ".*" ".*" ".*" - diff --git a/scripts/taiga/setup.sh b/scripts/taiga/setup.sh index 742833d..df3db31 100755 --- a/scripts/taiga/setup.sh +++ b/scripts/taiga/setup.sh @@ -4,29 +4,19 @@ set -ueo pipefail export PATH="/lib/rc/bin:$PATH" - -echo "Taiga setup" - . /var/db/repos/calculate/scripts/ini.sh +echo "Taiga setup" chown taiga: /var/calculate/ini.env - su - taiga -c '/var/db/repos/container/scripts/taiga/install.sh' - /var/db/repos/container/scripts/taiga/postgresql.sh - /var/db/repos/container/scripts/taiga/rabbitmq.sh - /var/db/repos/container/scripts/taiga/config.sh - su - taiga -c '/var/db/repos/container/scripts/taiga/migrate.sh' if [[ ! -e /etc/runlevels/default/taiga ]]; then cl-setup-system rc-update -u fi - openrc - -echo "All is done! Open the link ${ini[taiga.protocol]}://${ini[taiga.taiga_sites_domain]} on your browser." - +echo -e "\nAll is done! Open the link ${ini[taiga.protocol]}://${ini[taiga.taiga_sites_domain]} on your browser."