From 9818bda151ded179a61c552d44404b5dcc6fd5d2 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Wed, 18 Nov 2020 17:59:20 +0100 Subject: [PATCH] Fix --- check_process | 11 ----- manifest.json | 4 +- scripts/change_url | 13 +++-- scripts/install | 120 +++++++++++++++++++++++++++++++++++++++------ scripts/restore | 32 +++++++++--- scripts/upgrade | 13 +++-- 6 files changed, 149 insertions(+), 44 deletions(-) diff --git a/check_process b/check_process index e03f6ef..d60ae23 100644 --- a/check_process +++ b/check_process @@ -16,21 +16,10 @@ upgrade=1 from_commit=1cbec051e1171de5a8ed1e850eb4fb3506114da5 backup_restore=1 multi_instance=1 - incorrect_path=0 port_already_use=1 (6000) change_url=1 ;;; Levels - Level 1=auto - Level 2=auto - Level 3=auto - # https://github.com/YunoHost-Apps/gogs_ynh/blob/master/conf/login_source.sql - Level 4=1 Level 5=auto - Level 6=auto - Level 7=auto - Level 8=0 - Level 9=0 - Level 10=0 ;;; Upgrade options ; commit=aa075b2051ffad7b0b6fef3a9c767376d5bdbfab name=Before multi_instance and refactoring diff --git a/manifest.json b/manifest.json index 0994575..d4d8617 100644 --- a/manifest.json +++ b/manifest.json @@ -6,9 +6,9 @@ "en": "Lightweight git forge", "fr": "Forge git légère" }, + "version": "0.12.3~ynh1", "url": "http://gogs.io", "license": "MIT", - "version": "0.12.3~ynh1", "maintainer": { "name": "Josué Tille", "email": "josue@tille.ch" @@ -23,7 +23,7 @@ "mysql" ], "requirements": { - "yunohost": ">= 3.8.1" + "yunohost": ">= 4.0.0" }, "arguments": { "install" : [ diff --git a/scripts/change_url b/scripts/change_url index fb02f6c..36c742a 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -1,21 +1,24 @@ #!/bin/bash #================================================= -# GENERIC START +# GENERIC STARTING +#================================================= +# IMPORT GENERIC HELPERS #================================================= -# IMPORT GENERIC HELPERS +source _common.sh source /usr/share/yunohost/helpers # Exit if an error occurs during the execution of the script ynh_abort_if_errors -# Import common cmd -source ./_common.sh - +#================================================= # RETRIEVE ARGUMENTS +#================================================= + old_domain=$YNH_APP_OLD_DOMAIN domain=$YNH_APP_NEW_DOMAIN + path_url=$(ynh_normalize_url_path ${YNH_APP_NEW_PATH:-'/'}) app=$YNH_APP_INSTANCE_NAME diff --git a/scripts/install b/scripts/install index b97b0a9..89da145 100644 --- a/scripts/install +++ b/scripts/install @@ -3,15 +3,25 @@ #================================================= # GENERIC START #================================================= - # IMPORT GENERIC HELPERS +#================================================= + +source _common.sh source /usr/share/yunohost/helpers +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +ynh_clean_setup () { + true +} # Exit if an error occurs during the execution of the script ynh_abort_if_errors -# Load common variables and helpers -source ./_common.sh +#================================================= +# RETRIEVE ARGUMENTS FROM THE MANIFEST +#================================================= # Retrieve arguments domain=$YNH_APP_ARG_DOMAIN @@ -19,6 +29,9 @@ path_url=$(ynh_normalize_url_path $YNH_APP_ARG_PATH) admin=$YNH_APP_ARG_ADMIN is_public=$YNH_APP_ARG_IS_PUBLIC +app=$YNH_APP_INSTANCE_NAME + + # Check domain/path availability ynh_webpath_available $domain $path_url || ynh_die "$domain is not available as domain, please use an other domain." ynh_webpath_register $app $domain $path_url @@ -57,36 +70,115 @@ test getent passwd "$app" &>/dev/null || \ useradd -d "$DATADIR" --system --user-group "$app" --shell /bin/bash || \ ynh_die "Unable to create $app system account" +#================================================= +# CREAT DIRECTORIES +#================================================= + # create needed directories -create_dir +mkdir -p "$final_path/data" +mkdir -p "$final_path/custom/conf/auth.d" +mkdir -p "$DATA_PATH/avatars" +mkdir -p "$DATA_PATH/attachments" +mkdir -p "/var/log/$app" + +#================================================= +# DOWNLOAD, CHECK AND UNPACK SOURCE +#================================================= +ynh_script_progression --message="Setting up source files..." --weight=3 + +ynh_setup_source --dest_dir=$final_path $architecture + +#================================================= +# MODIFY A CONFIG FILE +#================================================= + +cp ../conf/app.ini "$final_path/custom/conf" +cp ../conf/ldap.conf "$final_path/custom/conf/auth.d/ldap.conf" + +if [ "$path_url" = "/" ] +then + ynh_replace_string --match_string="__URL__" --replace_string="$domain" --target_file="$final_path/custom/conf/app.ini" +else + ynh_replace_string --match_string="__URL__" --replace_string="$domain${path_url%/}" --target_file="$final_path/custom/conf/app.ini" +fi + +ynh_replace_string --match_string="__REPOS_PATH__" --replace_string="$REPO_PATH" --target_file="$final_path/custom/conf/app.ini" +ynh_replace_string --match_string="__DB_PASSWORD__" --replace_string="$dbpass" --target_file="$final_path/custom/conf/app.ini" +ynh_replace_string --match_string="__DB_USER__" --replace_string="$dbuser" --target_file="$final_path/custom/conf/app.ini" +ynh_replace_string --match_string="__DOMAIN__" --replace_string="$domain" --target_file="$final_path/custom/conf/app.ini" +ynh_replace_string --match_string="__KEY__" --replace_string="$key" --target_file="$final_path/custom/conf/app.ini" +ynh_replace_string --match_string="__DATA_PATH__" --replace_string="$DATA_PATH" --target_file="$final_path/custom/conf/app.ini" +ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="$final_path/custom/conf/app.ini" +ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="$final_path/custom/conf/app.ini" + +if [[ "$is_public" = '1' ]] +then + ynh_replace_string --match_string="__PRIVATE_MODE__" --replace_string="false" --target_file="$final_path/custom/conf/app.ini" +else + ynh_replace_string --match_string="__PRIVATE_MODE__" --replace_string="true" --target_file="$final_path/custom/conf/app.ini" +fi + +ynh_replace_string --match_string="__ADMIN__" --replace_string="$admin" --target_file="$final_path/custom/conf/auth.d/ldap.conf" + +ynh_store_file_checksum --file="$final_path/custom/conf/app.ini" +ynh_store_file_checksum --file="$final_path/custom/conf/auth.d/ldap.conf" + -# Install Gogs -ynh_setup_source $final_path $architecture -# Configure gogs with app.ini file -config_gogs # Configure init script ynh_add_systemd_config +#================================================= +# CONFIGURE NGINX +#================================================= # Modify Nginx configuration file and copy it to Nginx conf directory -config_nginx +if [ "$path_url" != "/" ] +then + ynh_replace_string --match_string="^#sub_path_only" --replace_string="" --target_file="../conf/nginx.conf" +fi + ynh_add_nginx_config #================================================= # GENERIC FINALIZATION #================================================= +# SECURE FILES AND DIRECTORIES +#================================================= + +chown -R $app:$app "$final_path" +chown -R $app:$app "/home/$app" +chown -R $app:$app "/var/log/$app" +chmod u=rwX,g=rX,o= "$final_path" +chmod u=rwX,g=rX,o= "/home/$app" +chmod u=rwX,g=rX,o= "/var/log/$app" -# Set permissions -set_permission # Unprotect root from SSO if public set_access_settings -# Add Gogs to YunoHost's monitored services +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= +ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 + yunohost service add "$app" --log "/var/log/$app/$app.log" -# Configure logrotate +#================================================= +# SETUP LOGROTATE +#================================================= +ynh_script_progression --message="Configuring log rotation..." --weight=1 + ynh_use_logrotate "/var/log/$app" -# Reload services +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." --weight=1 + ynh_check_starting "INFO] Listen: http://0.0.0.0:" "/var/log/$app/gogs.log" + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Installation of $app completed" --last diff --git a/scripts/restore b/scripts/restore index f135ead..4fd1ad7 100644 --- a/scripts/restore +++ b/scripts/restore @@ -3,21 +3,37 @@ #================================================= # GENERIC START #================================================= - # IMPORT GENERIC HELPERS +#================================================= + +#Keep this path for calling _common.sh inside the execution's context of backup and restore scripts +source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +ynh_clean_setup () { + #### Remove this function if there's nothing to clean before calling the remove script. + true +} # Exit if an error occurs during the execution of the script ynh_abort_if_errors -# Load common variables and helpers -source ../settings/scripts/_common.sh +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 + +app=$YNH_APP_INSTANCE_NAME + +domain=$(ynh_app_setting_get --app=$app --key=domain) +path_url=$(ynh_app_setting_get --app=$app --key=path) +dbpass=$(ynh_app_setting_get --app=$app --key=mysqlpwd) +admin=$(ynh_app_setting_get --app=$app --key=adminusername) + -# Retrieve old app settings -domain=$(ynh_app_setting_get "$app" domain) -path_url=$(ynh_app_setting_get "$app" path) -dbpass=$(ynh_app_setting_get "$app" mysqlpwd) -admin=$(ynh_app_setting_get "$app" adminusername) # Check domain/path availability with app helper ynh_webpath_available $domain $path_url || ynh_die "$domain is not available as domain, please use an other domain." diff --git a/scripts/upgrade b/scripts/upgrade index 483f6b4..03b953b 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -3,17 +3,22 @@ #================================================= # GENERIC START #================================================= - # IMPORT GENERIC HELPERS +#================================================= + +source _common.sh source /usr/share/yunohost/helpers # Exit if an error occurs during the execution of the script ynh_abort_if_errors -# Load common variables and helpers -source ./_common.sh +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 + +app=$YNH_APP_INSTANCE_NAME -# Retrieve app settings domain=$(ynh_app_setting_get "$app" domain) path_url=$(ynh_normalize_url_path $(ynh_app_setting_get "$app" path)) dbpass=$(ynh_app_setting_get "$app" mysqlpwd)