From 5d8af26025048460e8799422794093397e631752 Mon Sep 17 00:00:00 2001 From: oiseauroch Date: Mon, 2 Jan 2023 15:47:57 +0100 Subject: [PATCH] package application --- LICENSE | 12 ---- check_process | 4 +- conf/.env | 17 +++++ conf/nginx.conf | 3 +- conf/systemd.service | 3 +- doc/DESCRIPTION.md | 11 ++-- doc/DISCLAIMER.md | 13 +--- manifest.json | 55 +++++++++++----- scripts/_common.sh | 8 +-- scripts/backup | 10 ++- scripts/change_url | 18 +++++ scripts/install | 154 ++++++++++++++++--------------------------- scripts/remove | 19 +++++- scripts/restore | 18 ++++- scripts/upgrade | 39 +++++------ 15 files changed, 205 insertions(+), 179 deletions(-) delete mode 100644 LICENSE create mode 100644 conf/.env diff --git a/LICENSE b/LICENSE deleted file mode 100644 index c7c2d04..0000000 --- a/LICENSE +++ /dev/null @@ -1,12 +0,0 @@ ---2022-11-19 15:22:08-- https://spdx.org/licenses/BSD-2-Clause.html -Certificat de l’autorité de certification « /etc/ssl/certs/ca-certificates.crt » chargé -Résolution de spdx.org (spdx.org)… 13.249.9.37, 13.249.9.76, 13.249.9.73, ... -Connexion à spdx.org (spdx.org)|13.249.9.37|:443… connecté. -requête HTTP transmise, en attente de la réponse… 200 OK -Taille : 9815 (9,6K) [text/html] -Sauvegarde en : « BSD-2-Clause.html » - - 0K ......... 100% 107M=0s - -2022-11-19 15:22:09 (107 MB/s) — « BSD-2-Clause.html » sauvegardé [9815/9815] - diff --git a/check_process b/check_process index f41c4c9..35c0dd9 100644 --- a/check_process +++ b/check_process @@ -6,7 +6,6 @@ ;; Test complet ; Manifest domain="domain.tld" - path="/path" is_public=1 language="fr" admin="john" @@ -14,13 +13,12 @@ port="666" ; Checks pkg_linter=1 - setup_sub_dir=1 + setup_sub_dir=0 setup_root=1 setup_nourl=0 setup_private=1 setup_public=1 upgrade=1 - upgrade=1 from_commit=CommitHash backup_restore=1 multi_instance=1 port_already_use=0 diff --git a/conf/.env b/conf/.env new file mode 100644 index 0000000..157a21a --- /dev/null +++ b/conf/.env @@ -0,0 +1,17 @@ +VERBOSE=1 + +DB_CONN=postgres +DB_HOST=localhost +DB_PORT=5432 +DB_USER=__DB_USER__ +DB_PASS=__DB_PWD__ +DB_DATABASE=__DB_NAME__ + +LANGUAGE=__LANGUAGE__ + +NAME=Yunohost status page +DESCRIPTION=An extern monitoring tool +DOMAIN=https://__DOMAIN__ +ADMIN_USER=__ADMIN__ +ADMIN_PASSWORD=__PASSWORD__ +SAMPLE_DATA=false diff --git a/conf/nginx.conf b/conf/nginx.conf index 8c0a010..ea34b6d 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,5 +1,4 @@ -#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; -location __PATH__/ { +location / { proxy_set_header Host $host; proxy_buffering off; diff --git a/conf/systemd.service b/conf/systemd.service index a2267fe..dd0f353 100644 --- a/conf/systemd.service +++ b/conf/systemd.service @@ -7,7 +7,8 @@ Type=simple User=__APP__ Group=__APP__ WorkingDirectory=__FINALPATH__/ -ExecStart=__FINALPATH__/webhook-httpd --config config.yml +EnvironmentFile=__FINALPATH__/.env +ExecStart=__FINALPATH__/statping --port __PORT__ StandardOutput=append:/var/log/__APP__/__APP__.log StandardError=inherit diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md index 0685205..84013c0 100644 --- a/doc/DESCRIPTION.md +++ b/doc/DESCRIPTION.md @@ -1,9 +1,8 @@ -Some long and extensive description of what the app is and does, lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +An open source server to monitor your web applications and all other HTTP, TCP, UDP, ICMP and gRPC services. ### Features -- Ut enim ad minim veniam, quis nostrud exercitation ullamco ; -- Laboris nisi ut aliquip ex ea commodo consequat ; -- Duis aute irure dolor in reprehenderit in voluptate ; -- Velit esse cillum dolore eu fugiat nulla pariatur ; -- Excepteur sint occaecat cupidatat non proident, sunt in culpa." +- Service Monitoring +- Notifications +- Mobile app + diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md index aded581..0ba8f6f 100644 --- a/doc/DISCLAIMER.md +++ b/doc/DISCLAIMER.md @@ -1,12 +1,5 @@ -* Any known limitations, constrains or stuff not working, such as (but not limited to): - * requiring a full dedicated domain ? +* Limitations : + * require a full dedicated domain * architectures not supported ? - * not-working single-sign on or LDAP integration ? - * the app requires an important amount of RAM / disk / .. to install or to work properly - * etc... + * no LDAP integration -* Other infos that people should be aware of, such as: - * any specific step to perform after installing (such as manually finishing the install, specific admin credentials, ...) - * how to configure / administrate the application if it ain't obvious - * upgrade process / specificities / things to be aware of ? - * security considerations ? diff --git a/manifest.json b/manifest.json index edf859c..6fd64bb 100644 --- a/manifest.json +++ b/manifest.json @@ -1,23 +1,23 @@ { - "name": "rust webhook server", - "id": "webhook-httpd", + "name": "statping-ng", + "id": "statpingng", "packaging_format": 1, "description": { - "en": "a small webhook server that execute local command ", - "fr": "executer des commandes locales déclenchées par une url" + "en": "an external monitoring tool", + "fr": "un outils de monitoring externe" }, - "version": "0.1.4~ynh1", - "url": "https://github.com/de-vri-es/webhook-httpd", + "version": "0.90.80~ynh1", + "url": "https://github.com/statping-ng/statping-ng/", "upstream": { - "license": "BSD-2-Clause", - "website": "https://github.com/de-vri-es/webhook-httpd", - "admindoc": "https://github.com/de-vri-es/webhook-httpd", - "userdoc": "https://github.com/de-vri-es/webhook-httpd", - "code": "https://github.com/de-vri-es/webhook-httpd" + "license": "GPL-3.0-only", + "website": "https://statping-ng.github.io/", + "admindoc": "https://github.com/statping-ng/statping-ng/wiki", + "userdoc": "https://statping-ng.github.io/", + "code": "https://github.com/statping-ng/statping-ng/" }, - "license": "BSD-2-Clause", + "license": "GPL-3.0-only", "maintainer": { - "name": "Tobias Ollive", + "name": "oiseauroch", "email": "tobias@ollive.oiseauroch.fr" }, "requirements": { @@ -33,10 +33,31 @@ "type": "domain" }, { - "name": "path", - "type": "path", - "example": "/example", - "default": "/example" + "name": "is_public", + "type": "boolean", + "default": true + }, + { + "name": "language", + "type": "string", + "ask": { + "en": "Choose the application language", + "fr": "Choisissez la langue de l'application" + }, + "choices": ["fr", "en","es","ru","de","cs","ja","ko","it","zh"], + "default": "fr" + }, + { + "name": "admin", + "type": "user" + }, + { + "name": "password", + "type": "password", + "help": { + "en": "Choose an admin password", + "fr": "Choisissez une phrase de passe pour l'administrateur." + } } ] } diff --git a/scripts/_common.sh b/scripts/_common.sh index fa5752d..c838271 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -3,7 +3,7 @@ #================================================= # COMMON VARIABLES #================================================= - +pkg_dependencies="postgresql" #================================================= # PERSONAL HELPERS #================================================= @@ -15,7 +15,7 @@ get_ip() { curl ip.me } # inspired by restic helper -install_garage () { +install_statping () { architecture=$(uname -m) arch='' case $architecture in @@ -37,8 +37,8 @@ install_garage () { ;; esac wget https://github.com/statping-ng/statping-ng/releases/download/v$STATPING_VERSION/statping-linux-$arch.tar.gz 2>&1 >/dev/null - tar zxf statping.tar.gz - rm statping.tar.gz + tar zxf statping-linux-$arch.tar.gz + rm statping-linux-$arch.tar.gz chmod +x statping } diff --git a/scripts/backup b/scripts/backup index 0670178..e9354a4 100755 --- a/scripts/backup +++ b/scripts/backup @@ -30,7 +30,7 @@ app=$YNH_APP_INSTANCE_NAME final_path=$(ynh_app_setting_get --app=$app --key=final_path) domain=$(ynh_app_setting_get --app=$app --key=domain) - +db_name=$(ynh_app_setting_get --app=$app --key=db_name) #================================================= # DECLARE DATA AND CONF FILES TO BACKUP #================================================= @@ -67,6 +67,14 @@ ynh_backup --src_path="/etc/logrotate.d/$app" ynh_backup --src_path="/etc/systemd/system/$app.service" +#================================================= +# BACKUP THE POSTGRESQL DATABASE +#================================================= +ynh_print_info --message="Backing up the PostgreSQL database..." + +ynh_psql_dump_db --database="$db_name" > db.sql + + #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/change_url b/scripts/change_url index b286df6..8ea3c49 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -28,6 +28,7 @@ ynh_script_progression --message="Loading installation settings..." --weight=1 # Needed for helper "ynh_add_nginx_config" final_path=$(ynh_app_setting_get --app=$app --key=final_path) +port=$(ynh_app_setting_get --app=$app --key=port) #================================================= # BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP @@ -100,6 +101,23 @@ then ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" fi +#================================================== +# Change config file +#================================================== +ynh_script_progression --message="Modifying configuration file…" --weight=1 + +db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) +db_user=$(ynh_app_setting_get --app=$app --key=db_user) +language=$(ynh_app_setting_get --app=$app --key=language) +password=$(ynh_app_setting_get --app=$app --key=password) +admin=$(ynh_app_setting_get --app=$app --key=admin) +domain=$(ynh_app_setting_get --app=$app --key=domain) + +ynh_delete_file_checksum --file="$final_path/.env" +ynh_add_config --template="../conf/.env" --destination="$final_path/.env" + + #================================================= # GENERIC FINALISATION #================================================= diff --git a/scripts/install b/scripts/install index a02fb40..d7e2d8a 100755 --- a/scripts/install +++ b/scripts/install @@ -25,40 +25,23 @@ ynh_abort_if_errors #================================================= domain=$YNH_APP_ARG_DOMAIN -path_url=$YNH_APP_ARG_PATH +admin=$YNH_APP_ARG_ADMIN +password=$YNH_APP_ARG_PASSWORD +language=$YNH_APP_ARG_LANGUAGE +is_public=$YNH_APP_ARG_IS_PUBLIC -### If it's a multi-instance app, meaning it can be installed several times independently -### The id of the app as stated in the manifest is available as $YNH_APP_ID -### The instance number is available as $YNH_APP_INSTANCE_NUMBER (equals "1", "2"...) -### The app instance name is available as $YNH_APP_INSTANCE_NAME -### - the first time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample -### - the second time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample__2 -### - ynhexample__{N} for the subsequent installations, with N=3,4... -### The app instance name is probably what interests you most, since this is -### guaranteed to be unique. This is a good unique identifier to define installation path, -### db names... app=$YNH_APP_INSTANCE_NAME #================================================= # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS #================================================= -### About --weight and --time -### ynh_script_progression will show to your final users the progression of each scripts. -### In order to do that, --weight will represent the relative time of execution compared to the other steps in the script. -### --time is a packager option, it will show you the execution time since the previous call. -### This option is implied when running in CI_package_check, you can manually add it if you are manually testing the app. -### Use the execution time displayed in the CI report or by adding --time to the command, to estimate the weight of a step. -### A common way to do it is to set a weight equal to the execution time in second +1. -### The execution time is given for the duration since the previous call. So the weight should be applied to this previous call. ynh_script_progression --message="Validating installation parameters..." --weight=1 -### If the app uses NGINX as web server (written in HTML/PHP in most cases), the final path should be "/var/www/$app". -### If the app provides an internal web server (or uses another application server such as uWSGI), the final path should be "/opt/yunohost/$app" final_path=/var/www/$app test ! -e "$final_path" || ynh_die --message="This path already contains a folder" # Register (book) web path -ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url +ynh_webpath_register --app=$app --domain=$domain --path_url=/ #================================================= # STORE SETTINGS FROM MANIFEST @@ -66,8 +49,7 @@ ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url ynh_script_progression --message="Storing installation settings..." --weight=1 ynh_app_setting_set --app=$app --key=domain --value=$domain -ynh_app_setting_set --app=$app --key=path --value=$path_url - +ynh_app_setting_set --app=$app --key=language --value=$language #================================================= # STANDARD MODIFICATIONS #================================================= @@ -75,15 +57,17 @@ ynh_app_setting_set --app=$app --key=path --value=$path_url #================================================= ynh_script_progression --message="Finding an available port..." --weight=1 -### Use these lines if you have to open a port for the application -### `ynh_find_port` will find the first available port starting from the given port. -### If you're not using these lines: -### - Remove the section "CLOSE A PORT" in the remove script - # Find an available port port=$(ynh_find_port --port=8095) ynh_app_setting_set --app=$app --key=port --value=$port +#================================================= +# INSTALL DEPENDENCIES +#================================================= +ynh_script_progression --message="Installing dependencies..." --weight=1 + +ynh_install_app_dependencies $pkg_dependencies + #================================================= # CREATE DEDICATED USER #================================================= @@ -92,48 +76,62 @@ ynh_script_progression --message="Configuring system user..." --weight=1 # Create a system user ynh_system_user_create --username=$app --home_dir="$final_path" +#================================================= +# CREATE A POSTGRESQL DATABASE +#================================================= +ynh_script_progression --message="Creating a PostgreSQL database..." + +db_name="$app" +db_user=$(ynh_sanitize_dbid --db_name=$app) +ynh_app_setting_set --app=$app --key=db_name --value=$db_name +ynh_app_setting_set --app=$app --key=db_user --value=$db_user +ynh_psql_test_if_first_run +ynh_psql_setup_db --db_user=$db_user --db_name=$db_name +db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) + + #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= ynh_script_progression --message="Setting up source files..." --weight=5 -### `ynh_setup_source` is used to install an app from a zip or tar.gz file, -### downloaded from an upstream source, like a git repository. -### `ynh_setup_source` use the file conf/app.src - ynh_app_setting_set --app=$app --key=final_path --value=$final_path # Download, check integrity, uncompress and patch the source from app.src mkdir -p "$final_path" pushd $final_path - install_garage + install_statping popd -# FIXME: this should be managed by the core in the future -# Here, as a packager, you may have to tweak the ownerhsip/permissions -# such that the appropriate users (e.g. maybe www-data) can access -# files in some cases. -# But FOR THE LOVE OF GOD, do not allow r/x for "others" on the entire folder - -# this will be treated as a security issue. + +#================================================= +# ADD A CONFIGURATION +#================================================= +ynh_script_progression --message="Adding a configuration file..." + +ynh_add_config --template="../conf/.env" --destination="$final_path/.env" +ynh_add_config --template="../conf/services.yml" --destination="$final_path/services.yml" + chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:www-data "$final_path" + +#================================================= +# NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Configuring NGINX web server..." --weight=1 + + +# Create a dedicated NGINX config +ynh_add_nginx_config + + + #================================================= # SETUP SYSTEMD #================================================= ynh_script_progression --message="Configuring a systemd service..." --weight=1 -### `ynh_systemd_config` is used to configure a systemd script for an app. -### It can be used for apps that use sysvinit (with adaptation) or systemd. -### Have a look at the app to be sure this app needs a systemd script. -### `ynh_systemd_config` will use the file conf/systemd.service -### If you're not using these lines: -### - You can remove those files in conf/. -### - Remove the section "BACKUP SYSTEMD" in the backup script -### - Remove also the section "STOP AND REMOVE SERVICE" in the remove script -### - As well as the section "RESTORE SYSTEMD" in the restore script -### - And the section "SETUP SYSTEMD" in the upgrade script - # Create a dedicated systemd config ynh_add_systemd_config @@ -144,14 +142,6 @@ ynh_add_systemd_config #================================================= ynh_script_progression --message="Configuring log rotation..." --weight=1 -### `ynh_use_logrotate` is used to configure a logrotate configuration for the logs of this app. -### Use this helper only if there is effectively a log file for this app. -### If you're not using this helper: -### - Remove the section "BACKUP LOGROTATE" in the backup script -### - Remove also the section "REMOVE LOGROTATE CONFIGURATION" in the remove script -### - As well as the section "RESTORE THE LOGROTATE CONFIGURATION" in the restore script -### - And the section "SETUP LOGROTATE" in the upgrade script - # Use logrotate to manage application logfile(s) ynh_use_logrotate @@ -160,46 +150,13 @@ ynh_use_logrotate #================================================= ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 -### `yunohost service add` integrates a service in YunoHost. It then gets -### displayed in the admin interface and through the others `yunohost service` commands. -### (N.B.: this line only makes sense if the app adds a service to the system!) -### If you're not using these lines: -### - You can remove these files in conf/. -### - Remove the section "REMOVE SERVICE INTEGRATION IN YUNOHOST" in the remove script -### - As well as the section "INTEGRATE SERVICE IN YUNOHOST" in the restore script -### - And the section "INTEGRATE SERVICE IN YUNOHOST" in the upgrade script - -yunohost service add $app --description="webook server" --log="/var/log/$app/$app.log" - -### Additional options starting with 3.8: -### -### --needs_exposed_ports "$port" a list of ports that needs to be publicly exposed -### which will then be checked by YunoHost's diagnosis system -### (N.B. DO NOT USE THIS is the port is only internal!!!) -### -### --test_status "some command" a custom command to check the status of the service -### (only relevant if 'systemctl status' doesn't do a good job) -### -### --test_conf "some command" some command similar to "nginx -t" that validates the conf of the service -### -### Re-calling 'yunohost service add' during the upgrade script is the right way -### to proceed if you later realize that you need to enable some flags that -### weren't enabled on old installs (be careful it'll override the existing -### service though so you should re-provide all relevant flags when doing so) +yunohost service add $app --description="extern monitoring tool" --log="/var/log/$app/$app.log" #================================================= # START SYSTEMD SERVICE #================================================= ynh_script_progression --message="Starting a systemd service..." --weight=1 -### `ynh_systemd_action` is used to start a systemd service for an app. -### Only needed if you have configure a systemd service -### If you're not using these lines: -### - Remove the section "STOP SYSTEMD SERVICE" and "START SYSTEMD SERVICE" in the backup script -### - As well as the section "START SYSTEMD SERVICE" in the restore script -### - As well as the section"STOP SYSTEMD SERVICE" and "START SYSTEMD SERVICE" in the upgrade script -### - And the section "STOP SYSTEMD SERVICE" and "START SYSTEMD SERVICE" in the change_url script - # Start a systemd service ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" @@ -209,9 +166,13 @@ ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$ap #================================================= ynh_script_progression --message="Configuring permissions..." --weight=1 - -ynh_permission_update --permission="main" --add="visitors" - +# Make app public if necessary +if [ $is_public -eq 1 ] +then + # Everyone can access the app. + # The "main" permission is automatically created before the install script. + ynh_permission_update --permission="main" --add="visitors" +fi #================================================= @@ -226,3 +187,4 @@ ynh_systemd_action --service_name=nginx --action=reload #================================================= ynh_script_progression --message="Installation of $app completed" --last + diff --git a/scripts/remove b/scripts/remove index f95e45b..29c3d0b 100755 --- a/scripts/remove +++ b/scripts/remove @@ -19,7 +19,8 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) port=$(ynh_app_setting_get --app=$app --key=port) final_path=$(ynh_app_setting_get --app=$app --key=final_path) - +db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_user=$(ynh_app_setting_get --app=$app --key=db_user) #================================================= # STANDARD REMOVE #================================================= @@ -49,6 +50,14 @@ ynh_script_progression --message="Removing logrotate configuration..." --weight= # Remove the app-specific logrotate config ynh_remove_logrotate +#================================================= +# REMOVE THE POSTGRESQL DATABASE +#================================================= +ynh_script_progression --message="Removing the PostgreSQL database..." + +# Remove a database if it exists, along with the associated user +ynh_psql_remove_db --db_user=$db_user --db_name=$db_name + #================================================= # REMOVE APP MAIN DIR @@ -67,6 +76,14 @@ ynh_script_progression --message="Removing NGINX web server configuration..." -- # Remove the dedicated NGINX config ynh_remove_nginx_config +#================================================= +# REMOVE DEPENDENCIES +#================================================= +ynh_script_progression --message="Removing dependencies..." + +# Remove metapackage and its dependencies +ynh_remove_app_dependencies + #================================================= # CLOSE A PORT #================================================= diff --git a/scripts/restore b/scripts/restore index 932c374..263359a 100755 --- a/scripts/restore +++ b/scripts/restore @@ -32,6 +32,9 @@ domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) final_path=$(ynh_app_setting_get --app=$app --key=final_path) +db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) +db_user=$(ynh_app_setting_get --app=$app --key=db_user) #================================================= # CHECK IF THE APP CAN BE RESTORED #================================================= @@ -76,8 +79,6 @@ ynh_script_progression --message="Reinstalling dependencies..." --weight=1 # Define and install dependencies ynh_install_app_dependencies $pkg_dependencies - - #================================================= # RESTORE THE NGINX CONFIGURATION #================================================= @@ -85,6 +86,16 @@ ynh_script_progression --message="Restoring the NGINX web server configuration.. ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" +#================================================= +# RESTORE THE POSTGRESQL DATABASE +#================================================= +ynh_script_progression --message="Restoring the PostgreSQL database..." + +ynh_psql_test_if_first_run +db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) +ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd +ynh_psql_execute_file_as_root --file="./db.sql" --database=$db_name + #================================================= # RESTORE SYSTEMD @@ -99,6 +110,7 @@ systemctl enable $app.service --quiet #================================================= ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1 +mkdir /var/log/$app ynh_restore_file --origin_path="/etc/logrotate.d/$app" #================================================= @@ -106,7 +118,7 @@ ynh_restore_file --origin_path="/etc/logrotate.d/$app" #================================================= ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 -yunohost service add $app --description="webook server" --log="/var/log/$app/$app.log" +yunohost service add $app --description="extern monitoring tool" --log="/var/log/$app/$app.log" #================================================= # START SYSTEMD SERVICE diff --git a/scripts/upgrade b/scripts/upgrade index c1fa4ff..2ead360 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -19,6 +19,7 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) final_path=$(ynh_app_setting_get --app=$app --key=final_path) +port=$(ynh_app_setting_get --app=$app --key=port) #================================================= # CHECK VERSION @@ -73,6 +74,14 @@ ynh_script_progression --message="Making sure dedicated system user exists..." - # Create a dedicated user (if not existing) ynh_system_user_create --username=$app --home_dir="$final_path" +#================================================= +# UPGRADE DEPENDENCIES +#================================================= +ynh_script_progression --message="Upgrading dependencies..." --weight=1 + +ynh_install_app_dependencies $pkg_dependencies + + #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= @@ -82,29 +91,13 @@ then ynh_script_progression --message="Upgrading source files..." --weight=1 # Download, check integrity, uncompress and patch the source from app.src - ynh_setup_source --dest_dir="$final_path" +# ynh_setup_source --dest_dir="$final_path" + pushd "$final_path" + install_statping + popd + fi -pushd "$final_path" - ynh_exec_warn_less ynh_exec_as $app RUSTUP_HOME="$final_path"/.rustup CARGO_HOME="$final_path"/.cargo bash -c 'curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -q -y' -popd - -export PATH="$PATH:$final_path/.cargo/bin:$final_path/.local/bin:/usr/local/sbin" - -# Compile Gemserv -pushd "$final_path"/build - ynh_exec_warn_less ynh_exec_as $app env PATH="$PATH" cargo build --release -popd - -# Install Gemserv -cp -af "$final_path/build/target/release/webhook-httpd" "$final_path/webook-httpd" -chmod +x "$final_path/webook-httpd" - -# Remove build files and rustup -ynh_secure_remove --file="$final_path/build" -ynh_secure_remove --file="$final_path/.cargo" -ynh_secure_remove --file="$final_path/.rustup" - # FIXME: this should be managed by the core in the future # Here, as a packager, you may have to tweak the ownerhsip/permissions # such that the appropriate users (e.g. maybe www-data) can access @@ -113,7 +106,7 @@ ynh_secure_remove --file="$final_path/.rustup" # this will be treated as a security issue. chmod 750 "$final_path" chmod -R o-rwx "$final_path" -chown -R $app:www-data "$final_path" +chown -R $app:$app "$final_path" #================================================= @@ -155,7 +148,7 @@ ynh_use_logrotate --non-append #================================================= ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 -yunohost service add $app --description="webook server" --log="/var/log/$app/$app.log" +yunohost service add $app --description="extern monitoring tool" --log="/var/log/$app/$app.log" #================================================= # START SYSTEMD SERVICE