From 96ef2e0de97f7a99ac64ae3a1f18c5f976a78bac Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Mon, 28 Jun 2021 15:32:27 +0200 Subject: [PATCH] Add ynh_add_config --- check_process | 14 ++----- conf/hub_config | 4 +- conf/settings.py | 10 ++--- conf/uwsgi.ini | 2 +- doc/screenshots/BigScreenshot.png | Bin 0 -> 52698 bytes scripts/install | 44 +++++----------------- scripts/upgrade | 60 +++--------------------------- 7 files changed, 28 insertions(+), 106 deletions(-) create mode 100644 doc/screenshots/BigScreenshot.png diff --git a/check_process b/check_process index f34e813..470ce69 100644 --- a/check_process +++ b/check_process @@ -1,15 +1,10 @@ -# See here for more informations -# https://github.com/YunoHost/package_check#syntax-check_process-file - -# Move this file from check_process.default to check_process when you have filled it. - ;; Test complet ; Manifest - domain="domain.tld" (DOMAIN) - path="/path" (PATH) - admin="john" (USER) + domain="domain.tld" + path="/path" + admin="john" password="randompass" - is_public=1 (PUBLIC|public=1|private=0) + is_public=1 github_account="myaccount" github_token="myoauthtoken" ; Checks @@ -23,7 +18,6 @@ upgrade=1 from_commit=cef22ac5634565cecd2d8545229efe3fe79d85bc backup_restore=1 multi_instance=1 - port_already_use=0 change_url=1 ;;; Options Email= diff --git a/conf/hub_config b/conf/hub_config index 289ab03..99df3d0 100644 --- a/conf/hub_config +++ b/conf/hub_config @@ -1,4 +1,4 @@ github.com: -- user: __GITHUBUSER__ - oauth_token: __GITHUBTOKEN__ +- user: __GITHUB_ACCOUNT__ + oauth_token: __GITHUB_TOKEN__ protocol: https diff --git a/conf/settings.py b/conf/settings.py index e15e977..1d8ced6 100644 --- a/conf/settings.py +++ b/conf/settings.py @@ -42,7 +42,7 @@ from logging.handlers import SysLogHandler DEBUG = False ADMINS = ( - ('__ADMIN__', '__ADMINMAIL__'), + ('__ADMIN__', '__ADMIN_MAIL__'), ) MANAGERS = ADMINS @@ -52,9 +52,9 @@ DATABASES = { # Use "postgresql" or "mysql". "ENGINE": "django.db.backends.postgresql", # Database name. - "NAME": "__NAME__", + "NAME": "__APP__", # Database user. - "USER": "__NAME__", + "USER": "__APP__", # Name of role to alter to set parameters in PostgreSQL, # use in case role name is different than user used for authentication. # "ALTER_ROLE": "weblate", @@ -221,8 +221,8 @@ TEMPLATES = [ # GitHub username and token for sending pull requests. # Please see the documentation for more details. -GITHUB_USERNAME = "__GITHUBUSER__" -GITHUB_TOKEN = "__GITHUBTOKEN__" +GITHUB_USERNAME = "__GITHUB_ACCOUNT__" +GITHUB_TOKEN = "__GITHUB_TOKEN__" # GitLab username and token for sending merge requests. # Please see the documentation for more details. diff --git a/conf/uwsgi.ini b/conf/uwsgi.ini index 31a67b9..3a9e12f 100644 --- a/conf/uwsgi.ini +++ b/conf/uwsgi.ini @@ -5,7 +5,7 @@ protocol = uwsgi socket = /var/run/__APP__/socket # http://uwsgi-docs.readthedocs.io/en/latest/Nginx.html#hosting-multiple-apps-in-the-same-process-aka-managing-script-name-and-path-info -mount = __PATH__=__FINALPATH__/venv/lib/__PYTHONPATH__/site-packages/weblate/wsgi.py +mount = __PATH__=__FINALPATH__/venv/lib/__WEBLATE_PYPATH__/site-packages/weblate/wsgi.py # Add path to Weblate checkout if you did not install # Weblate by pip diff --git a/doc/screenshots/BigScreenshot.png b/doc/screenshots/BigScreenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..b2bf4d991e261063b132b94c5b2c3788eb2d5c14 GIT binary patch literal 52698 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 h0vI3)!Hf!YImR%_b7x(&)q6lDd%F6$taD0e0su "$final_path/.bashrc" eval "$(hub alias -s /bin/bash)" @@ -147,25 +145,10 @@ db_pwd=$(ynh_app_setting_get --app="$app" --key=psqlpwd) admin_mail=$(ynh_user_get_info --username="$admin" --key=mail) key=$(ynh_string_random --length=50) redis_db=$(ynh_redis_get_free_db) - +path_url="${path_url%/}" settings="$final_path/venv/lib/$weblate_pypath/site-packages/weblate/settings.py" -cp "../conf/settings.py" "$settings" -ynh_replace_string --match_string="__NAME__" --replace_string="$app" --target_file="$settings" -ynh_replace_string --match_string="__DB_PWD__" --replace_string="$db_pwd" --target_file="$settings" -ynh_replace_string --match_string="__ADMIN__" --replace_string="$admin" --target_file="$settings" -ynh_replace_string --match_string="__ADMINMAIL__" --replace_string="$admin_mail" --target_file="$settings" -ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file="$settings" -ynh_replace_string --match_string="__KEY__" --replace_string="$key" --target_file="$settings" -ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path" --target_file="$settings" -ynh_replace_string --match_string="__GITHUBUSER__" --replace_string="$github_account" --target_file="$settings" -ynh_replace_string --match_string="__GITHUBTOKEN__" --replace_string="$github_token" --target_file="$settings" -ynh_replace_string --match_string="__REDIS_DB__" --replace_string="$redis_db" --target_file="$settings" -ynh_replace_string --match_string="__PYTHONPATH__" --replace_string="$weblate_pypath" --target_file="$settings" -ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="$settings" - -# remove last "/" of $path_url -ynh_replace_string --match_string="__PATHURL__" --replace_string="${path_url%/}" --target_file="$settings" +ynh_add_config --template="../conf/settings.py" --destination="$settings" ynh_app_setting_set --app="$app" --key=redis_db --value="$redis_db" @@ -211,16 +194,9 @@ ynh_store_file_checksum --file="$settings" #================================================= ynh_script_progression --message="Configure uwsgi..." - finaluwsgiini="/etc/uwsgi/apps-available/$app.ini" -cp ../conf/uwsgi.ini "$finaluwsgiini" -ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path" --target_file="$finaluwsgiini" -ynh_replace_string --match_string="__PATH__" --replace_string="$path_url" --target_file="$finaluwsgiini" -ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="$finaluwsgiini" -ynh_replace_string --match_string="__PYTHONPATH__" --replace_string="$weblate_pypath" --target_file="$finaluwsgiini" - -ynh_store_file_checksum --file="$finaluwsgiini" +ynh_add_config --template="../conf/uwsgi.ini" --destination="$finaluwsgiini" #================================================= # SETUP SYSTEMD @@ -235,10 +211,8 @@ ynh_add_systemd_config --service="$app" --template="weblate.service" ynh_script_progression --message="Configure celery..." celeryconf="$final_path/celery-weblate" -cp ../conf/celery-weblate "$celeryconf" -ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="$celeryconf" -ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path" --target_file="$celeryconf" +ynh_add_config --template="../conf/celery-weblate" --destination="$celeryconf" ynh_add_systemd_config --service="$app-celery" --template="celery-weblate.service" @@ -276,9 +250,7 @@ yunohost service add "$app-celery" --log "/var/log/$app/weblate-celery-w1.log" #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Configuring SSOwat..." - - +ynh_script_progression --message="Configuring permissions..." # Make app public if necessary if [ "$is_public" -eq 1 ] @@ -312,4 +284,8 @@ If you facing an issue or want to improve this app, please open a new issue in t ynh_send_readme_to_admin "$message" "$admin" +#================================================= +# END OF SCRIPT +#================================================= + ynh_script_progression --message="Installation of $app completed" --last diff --git a/scripts/upgrade b/scripts/upgrade index 9763411..7e59937 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -58,15 +58,6 @@ fi #================================================= ynh_script_progression --message="Ensuring downward compatibility..." -# Fix is_public as a boolean value -if [ "$is_public" = "Yes" ]; then - ynh_app_setting_set --app=$app --key=is_public --value=1 - is_public=1 -elif [ "$is_public" = "No" ]; then - ynh_app_setting_set --app=$app --key=is_public --value=0 - is_public=0 -fi - if [[ -d "$final_path/bin/" ]] then ynh_secure_remove --file="$final_path/bin/" @@ -122,9 +113,7 @@ ynh_system_user_create --username="$app" --home_dir="$final_path" --use_shell ynh_script_progression --message="Configure hub..." mkdir -p "$final_path/.config/" -cp ../conf/hub_config "$final_path/.config/hub" -ynh_replace_string --match_string="__GITHUBUSER__" --replace_string="$github_account" --target_file="$final_path/.config/hub" -ynh_replace_string --match_string="__GITHUBTOKEN__" --replace_string="$github_token" --target_file="$final_path/.config/hub" +ynh_add_config --template="../conf/hub_config" --destination="$final_path/.config/hub" cat < "$final_path/.bashrc" eval "$(hub alias -s /bin/bash)" @@ -136,15 +125,8 @@ EOF ynh_script_progression --message="Configure uwsgi..." finaluwsgiini="/etc/uwsgi/apps-available/$app.ini" -ynh_backup_if_checksum_is_different --file="$finaluwsgiini" -cp ../conf/uwsgi.ini "$finaluwsgiini" -ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path" --target_file="$finaluwsgiini" -ynh_replace_string --match_string="__PATH__" --replace_string="$path_url" --target_file="$finaluwsgiini" -ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="$finaluwsgiini" -ynh_replace_string --match_string="__PYTHONPATH__" --replace_string="$weblate_pypath" --target_file="$finaluwsgiini" - -ynh_store_file_checksum --file="$finaluwsgiini" +ynh_add_config --template="../conf/uwsgi.ini" --destination="$finaluwsgiini" #================================================= # SETUP SYSTEMD @@ -159,10 +141,8 @@ ynh_add_systemd_config --service="$app" --template="weblate.service" ynh_script_progression --message="Configure celery..." celeryconf="$final_path/celery-weblate" -cp ../conf/celery-weblate "$celeryconf" -ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="$celeryconf" -ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path" --target_file="$celeryconf" +ynh_add_config --template="../conf/celery-weblate" --destination="$celeryconf" ynh_add_systemd_config --service="$app-celery" --template="celery-weblate.service" @@ -205,25 +185,9 @@ upgrade() { ynh_script_progression --message="Create weblate configuration file..." # save old settings file settings="$final_path/venv/lib/$weblate_pypath/site-packages/weblate/settings.py" + path_url="${path_url%/}" - ynh_backup_if_checksum_is_different --file="$settings" - cp "$settings_template" "$settings" - - ynh_replace_string --match_string="__NAME__" --replace_string="$app" --target_file="$settings" - ynh_replace_string --match_string="__DB_PWD__" --replace_string="$db_pwd" --target_file="$settings" - ynh_replace_string --match_string="__ADMIN__" --replace_string="$admin" --target_file="$settings" - ynh_replace_string --match_string="__ADMINMAIL__" --replace_string="$admin_mail" --target_file="$settings" - ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file="$settings" - ynh_replace_string --match_string="__KEY__" --replace_string="$key" --target_file="$settings" - ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path" --target_file="$settings" - ynh_replace_string --match_string="__GITHUBUSER__" --replace_string="$github_account" --target_file="$settings" - ynh_replace_string --match_string="__GITHUBTOKEN__" --replace_string="$github_token" --target_file="$settings" - ynh_replace_string --match_string="__REDIS_DB__" --replace_string="$redis_db" --target_file="$settings" - ynh_replace_string --match_string="__PYTHONPATH__" --replace_string="$weblate_pypath" --target_file="$settings" - ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="$settings" - - # remove last "/" of $path_url - ynh_replace_string --match_string="__PATHURL__" --replace_string="${path_url%/}" --target_file="$settings" + ynh_add_config --template="../conf/settings.py" --destination="$settings" ynh_app_setting_set --app="$app" --key=redis_db --value="$redis_db" @@ -322,18 +286,6 @@ ynh_script_progression --message="Starting systemd services..." --weight=5 ynh_systemd_action --service_name="$app" --action="start" ynh_systemd_action --service_name="$app-celery" --action="start" -#================================================= -# SETUP SSOWAT -#================================================= -ynh_script_progression --message="Upgrading SSOwat configuration..." - -# Make app public if necessary -if [ "$is_public" -eq 1 ] -then - # unprotected_uris allows SSO credentials to be passed anyway. - ynh_app_setting_set --app="$app" --key=unprotected_uris --value="/" -fi - #================================================= # RELOAD NGINX #================================================= @@ -345,4 +297,4 @@ ynh_systemd_action --service_name=nginx --action=reload # END OF SCRIPT #================================================= -ynh_script_progression --message="Upgrade of $app completed" --last \ No newline at end of file +ynh_script_progression --message="Upgrade of $app completed" --last