diff --git a/profiles/templates/taiga/check-crashed/.calculate_directory b/profiles/templates/taiga/check-crashed/.calculate_directory index ae03782..c16b8b6 100644 --- a/profiles/templates/taiga/check-crashed/.calculate_directory +++ b/profiles/templates/taiga/check-crashed/.calculate_directory @@ -1 +1 @@ -# Calculate env=install ac_install_merge==on mergepkg(www-servers/nginx)!= append=skip +# Calculate env=install ac_install_merge==on mergepkg(www-servers/nginx)!= exists(/var/calculate/www/taiga/.node-live)!= append=skip diff --git a/profiles/templates/taiga/taiga/init.taiga b/profiles/templates/taiga/taiga/init.taiga index affe154..56ef477 100644 --- a/profiles/templates/taiga/taiga/init.taiga +++ b/profiles/templates/taiga/taiga/init.taiga @@ -1,4 +1,4 @@ -# Calculate path=/etc/init.d name=#-cut(1,.)-# chmod=755 comment=# +# Calculate path=/etc/init.d name=#-cut(1,.)-# chmod=755 comment=# exists(/var/calculate/www/taiga/.node-live)!= #!/sbin/openrc-run # Copyright 2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 diff --git a/profiles/templates/taiga/taiga/init.taiga-async b/profiles/templates/taiga/taiga/init.taiga-async index 3165ee2..fda3f5b 100644 --- a/profiles/templates/taiga/taiga/init.taiga-async +++ b/profiles/templates/taiga/taiga/init.taiga-async @@ -1,4 +1,4 @@ -# Calculate path=/etc/init.d name=#-cut(1,.)-# chmod=755 comment=# +# Calculate path=/etc/init.d name=#-cut(1,.)-# chmod=755 comment=# exists(/var/calculate/www/taiga/.node-live)!= #!/sbin/openrc-run # Copyright 2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 diff --git a/profiles/templates/taiga/taiga/init.taiga-events b/profiles/templates/taiga/taiga/init.taiga-events index c498d83..40a6e86 100644 --- a/profiles/templates/taiga/taiga/init.taiga-events +++ b/profiles/templates/taiga/taiga/init.taiga-events @@ -1,4 +1,4 @@ -# Calculate path=/etc/init.d name=#-cut(1,.)-# chmod=755 comment=# +# Calculate path=/etc/init.d name=#-cut(1,.)-# chmod=755 comment=# exists(/var/calculate/www/taiga/.node-live)!= #!/sbin/openrc-run # Copyright 2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 diff --git a/profiles/templates/taiga/taiga/init.taiga-protected b/profiles/templates/taiga/taiga/init.taiga-protected index c696a60..fe7aec2 100644 --- a/profiles/templates/taiga/taiga/init.taiga-protected +++ b/profiles/templates/taiga/taiga/init.taiga-protected @@ -1,4 +1,4 @@ -# Calculate path=/etc/init.d name=#-cut(1,.)-# chmod=755 comment=# +# Calculate path=/etc/init.d name=#-cut(1,.)-# chmod=755 comment=# exists(/var/calculate/www/taiga/.node-live)!= #!/sbin/openrc-run # Copyright 2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 diff --git a/profiles/templates/taiga/taiga/link.cl-setup b/profiles/templates/taiga/taiga/link.cl-setup index be50756..1e94a43 100644 --- a/profiles/templates/taiga/taiga/link.cl-setup +++ b/profiles/templates/taiga/taiga/link.cl-setup @@ -1 +1 @@ -# Calculate path=/usr/sbin name=#-cut(1,.)-# link=/var/db/repos/container/scripts/cl-setup-taiga.sh symbolic protected +# Calculate path=/usr/sbin name=#-cut(1,.)-# link=/var/db/repos/container/scripts/taiga/setup.sh symbolic protected diff --git a/profiles/templates/taiga/taiga/runlevel.taiga b/profiles/templates/taiga/taiga/runlevel.taiga new file mode 100644 index 0000000..cebee0f --- /dev/null +++ b/profiles/templates/taiga/taiga/runlevel.taiga @@ -0,0 +1 @@ +# Calculate path=/etc/runlevels/default name=#-cut(1,.)-# link=/etc/init.d/#-cut(1,.)-# protected symbolic exists(/var/calculate/www/taiga/.node-live)!= diff --git a/scripts/functions.sh b/scripts/functions.sh index f3e5e11..0a427b3 100644 --- a/scripts/functions.sh +++ b/scripts/functions.sh @@ -1,26 +1,3 @@ -# Read vars from /var/calculate/ini.env -get_ini(){ - all= - while IFS= read -r line - do - if [[ $line == *"["* ]] - then - line=${line#*[} - line=${line%%]*} - sec=$line - continue - fi - if [[ ${line:0:1} == '#' || $line == '' ]] - then - continue - fi - com=${sec}_${line// =/=}; - com=${com//= /=}; - all="$com; $all" - done < /var/calculate/ini.env - eval $all -} - # Clear stdin before reading clear_buf(){ while read -r -t 0 diff --git a/scripts/taiga-postgresql.sh b/scripts/taiga-postgresql.sh deleted file mode 100755 index fea62b8..0000000 --- a/scripts/taiga-postgresql.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -set -ueo pipefail -if [[ -e /var/lib/postgresql/12 ]] -then - exit -fi - -export PATH="/lib/rc/bin:$PATH" -source /var/db/repos/container/scripts/functions.sh -get_ini - -emerge --config =dev-db/postgresql-12.12 - -/etc/init.d/postgresql-12 start - -psql -U postgres -c "ALTER USER postgres WITH PASSWORD '$postgresql_postgres_password'" - -psql -U postgres -c "CREATE ROLE $postgresql_taiga_user WITH login" -psql -U postgres -c "CREATE DATABASE taiga OWNER taiga" -psql -U postgres -c "ALTER USER $postgresql_taiga_user WITH PASSWORD '$postgresql_taiga_password'" - -cl-core-setup -n postgresql -f -/etc/init.d/postgresql-12 restart diff --git a/scripts/taiga-rabbitmq.sh b/scripts/taiga-rabbitmq.sh deleted file mode 100755 index 9c42d11..0000000 --- a/scripts/taiga-rabbitmq.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -set -ueo pipefail - -if [[ -e /var/lib/rabbitmq/mnesia ]] -then - exit -fi - -export PATH="/lib/rc/bin:$PATH" -source /var/db/repos/container/scripts/functions.sh -get_ini - -/etc/init.d/rabbitmq start - -rabbitmqctl add_user $rabbitmq_taiga_user $rabbitmq_taiga_password -rabbitmqctl add_vhost taiga -rabbitmqctl set_permissions -p taiga $rabbitmq_taiga_user ".*" ".*" ".*" diff --git a/scripts/taiga-www-setup.sh b/scripts/taiga/config.sh similarity index 53% rename from scripts/taiga-www-setup.sh rename to scripts/taiga/config.sh index 6c85a8f..5f39760 100755 --- a/scripts/taiga-www-setup.sh +++ b/scripts/taiga/config.sh @@ -3,11 +3,11 @@ export PATH="/lib/rc/bin:$PATH" set -ueo pipefail -source /var/db/repos/container/scripts/functions.sh -get_ini +. /var/db/repos/container/scripts/functions.sh +. /var/db/repos/calculate/scripts/ini.sh regular(){ - if [[ ${taiga_public_register} == 'True' ]] + if [[ ${ini[taiga.public_register]} == 'True' ]] then local public_register='true' else @@ -15,43 +15,43 @@ regular(){ fi replace=( "taiga-back/settings/config.py" "" - "('USER':).*" "\1 '${postgresql_taiga_user}'," - "('PASSWORD':).*" "\1 '${postgresql_taiga_password}'," - "^.*(SECRET_KEY =).*" "\1 \"${taiga_secret_key}\"" - "^.*(TAIGA_SITES_SCHEME =).*" "\1 \"${taiga_protocol}\"" - "^.*(TAIGA_SITES_DOMAIN =).*" "\1 \"${taiga_taiga_sites_domain}\"" + "('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 '${taiga_from_email}'" - "^.*(EMAIL_USE_TLS =).*" "\1 ${taiga_smtp_tls}" - "^.*(EMAIL_USE_SSL =).*" "\1 ${taiga_smtp_ssl}" - "^.*(EMAIL_HOST =).*" "\1 '${taiga_smtp_host}'" - "^.*(EMAIL_PORT =).*" "\1 ${taiga_smtp_port}" - "^.*(EMAIL_HOST_USER =).*" "\1 '${taiga_smtp_user}'" - "^.*(EMAIL_HOST_PASSWORD =).*" "\1 '${taiga_smtp_password}'" - "(\"url\": \"amqp://).*(:5672/taiga\")" "\1${rabbitmq_taiga_user}:${rabbitmq_taiga_password}@localhost\2" - "^.*(CELERY_BROKER_URL =).*" "\1 \"amqp://${rabbitmq_taiga_user}:${rabbitmq_taiga_password}@localhost:5672/taiga\"" - "^.*(CELERY_TIMEZONE =).*" "\1 '${taiga_timezone}'" + "^.*(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 ${taiga_public_register}" - "^.*(USER_EMAIL_ALLOWED_DOMAINS =).*" "\1 $(arr_to_list $taiga_user_email_allowed_domains)" - "^.*(MAX_PRIVATE_PROJECTS_PER_USER =).*" "\1 ${taiga_max_private_projects_per_user}" - "^.*(MAX_PUBLIC_PROJECTS_PER_USER =).*" "\1 ${taiga_max_public_projects_per_user}" + "^.*(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 \"${taiga_protocol}://${taiga_taiga_sites_domain}/api/v1/\"," - "(\"eventsUrl\":).*" "\1 \"wss://${taiga_taiga_sites_domain}/events\"," - "(\"defaultLanguage\":).*" "\1 \"${taiga_language}\"," + "(\"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 \"${taiga_protocol}://${taiga_taiga_sites_domain}\"," + "(\"supportUrl\":).*" "\1 \"${ini[taiga.protocol]}://${ini[taiga.taiga_sites_domain]}\"," "(\"gravatar\":).*" "\1 false," "taiga-events/.env" "" - "^.*(RABBITMQ_URL=).*" "\1\"amqp://${rabbitmq_taiga_user}:${rabbitmq_taiga_password}@localhost:5672/taiga\"" - "^.*(SECRET=).*" "\1\"${taiga_secret_key}\"" + "^.*(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\"${taiga_secret_key}\"" + "^.*(SECRET_KEY=).*" "\1\"${ini[taiga.secret_key]}\"" ) } diff --git a/scripts/taiga-www-install.sh b/scripts/taiga/install.sh similarity index 95% rename from scripts/taiga-www-install.sh rename to scripts/taiga/install.sh index 36797e4..28c4bb4 100755 --- a/scripts/taiga-www-install.sh +++ b/scripts/taiga/install.sh @@ -8,8 +8,8 @@ then exit fi -source /var/db/repos/container/scripts/functions.sh -get_ini +. /var/db/repos/container/scripts/functions.sh +. /var/db/repos/calculate/scripts/ini.sh if [[ ! -e ~/.node-live ]] then @@ -67,7 +67,7 @@ install_taiga_events(){ einfo 'Install the required JavaScript dependencies' #source ~/.node-live/bin/activate npm install - npm audit fix + npm audit fix --force ebegin 'Create .env file based on the provided example' cp .env.example .env diff --git a/scripts/taiga-www-migrate.sh b/scripts/taiga/migrate.sh similarity index 74% rename from scripts/taiga-www-migrate.sh rename to scripts/taiga/migrate.sh index 8209a62..dd23da4 100755 --- a/scripts/taiga-www-migrate.sh +++ b/scripts/taiga/migrate.sh @@ -3,15 +3,15 @@ set -ueo pipefail export PATH="/lib/rc/bin:$PATH" -source /var/db/repos/container/scripts/functions.sh -get_ini +. /var/db/repos/container/scripts/functions.sh +. /var/db/repos/calculate/scripts/ini.sh if [[ $UID == 0 ]] then exit fi -data=$(PGPASSWORD=$postgresql_taiga_password psql -U $postgresql_taiga_user -d $postgresql_taiga_database -c '\dt' 2>/dev/null) +data=$(PGPASSWORD=${ini[postgresql.taiga_password]} psql -U ${ini[postgresql.taiga_user]} -d ${ini[postgresql.taiga_database]} -c '\dt' 2>/dev/null) if [[ -n $data ]] then diff --git a/scripts/taiga/postgresql.sh b/scripts/taiga/postgresql.sh new file mode 100755 index 0000000..8e16b73 --- /dev/null +++ b/scripts/taiga/postgresql.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +set -ueo pipefail +if [[ -e /var/lib/postgresql/12 ]] +then + exit +fi + +export PATH="/lib/rc/bin:$PATH" +. /var/db/repos/container/scripts/functions.sh +. /var/db/repos/calculate/scripts/ini.sh + +emerge --config =dev-db/postgresql-12.12 + +/etc/init.d/postgresql-12 start + +psql -U postgres -c "ALTER USER postgres WITH PASSWORD '${ini[postgresql.postgres_password]}'" + +psql -U postgres -c "CREATE ROLE ${ini[postgresql.taiga_user]} WITH login" +psql -U postgres -c "CREATE DATABASE taiga OWNER taiga" +psql -U postgres -c "ALTER USER ${ini[postgresql.taiga_user]} WITH PASSWORD '${ini[postgresql.taiga_password]}'" + +cl-core-setup -n postgresql -f +/etc/init.d/postgresql-12 restart diff --git a/scripts/taiga/rabbitmq.sh b/scripts/taiga/rabbitmq.sh new file mode 100755 index 0000000..8126669 --- /dev/null +++ b/scripts/taiga/rabbitmq.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +set -ueo pipefail + +if [[ -e /var/lib/rabbitmq/mnesia ]] +then + exit +fi + +export PATH="/lib/rc/bin:$PATH" +. /var/db/repos/container/scripts/functions.sh +. /var/db/repos/calculate/scripts/ini.sh + +/etc/init.d/rabbitmq start + +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/cl-setup-taiga.sh b/scripts/taiga/setup.sh similarity index 51% rename from scripts/cl-setup-taiga.sh rename to scripts/taiga/setup.sh index 58facf6..6d1f033 100755 --- a/scripts/cl-setup-taiga.sh +++ b/scripts/taiga/setup.sh @@ -10,20 +10,20 @@ then fi chown taiga:taiga /var/calculate/ini.env -su - taiga -c '/var/db/repos/container/scripts/taiga-www-install.sh' +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/postgresql.sh -/var/db/repos/container/scripts/taiga-rabbitmq.sh +/var/db/repos/container/scripts/taiga/rabbitmq.sh -/var/db/repos/container/scripts/taiga-www-setup.sh $show +/var/db/repos/container/scripts/taiga/config.sh $show -su - taiga -c '/var/db/repos/container/scripts/taiga-www-migrate.sh' +su - taiga -c '/var/db/repos/container/scripts/taiga/migrate.sh' if [[ ! -e /etc/runlevels/default/taiga ]] then - rc-update add taiga + cl-setup-system rc-update -u fi openrc @@ -32,3 +32,4 @@ if [[ -z $show ]] then einfo "To display configured options, run 'cl-setup show'." fi +