From 1a0f377732481abc29fb83b9c4ac76698543c114 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 9 Nov 2021 08:00:11 +0100 Subject: [PATCH] cleaning up --- check_process | 2 - manifest.json | 8 +- scripts/_common.sh | 8 +- scripts/backup | 37 ------- scripts/change_url | 11 -- scripts/install | 262 +-------------------------------------------- scripts/remove | 62 ----------- scripts/restore | 66 +----------- scripts/upgrade | 87 +-------------- 9 files changed, 13 insertions(+), 530 deletions(-) diff --git a/check_process b/check_process index f66ecc0..9ba6865 100644 --- a/check_process +++ b/check_process @@ -8,7 +8,6 @@ domain="domain.tld" path="/" is_public=1 - port="666" ; Checks pkg_linter=1 setup_sub_dir=0 @@ -20,7 +19,6 @@ upgrade=1 from_commit=2e870313227801603a41fd3bfcaafa912dce6d0a backup_restore=1 multi_instance=1 - port_already_use=0 change_url=1 ;;; Options Email= diff --git a/manifest.json b/manifest.json index 7389ee1..342ddc1 100644 --- a/manifest.json +++ b/manifest.json @@ -3,10 +3,10 @@ "id": "uptime-kuma", "packaging_format": 1, "description": { - "en": "A fancy self-hosted monitoring tool like Uptime-Robot", - "fr": "Un joli outil similaire à Uptime-Robot pour vérifier que des sites restent joignables" + "en": "Self-hosted monitoring tool like Uptime-Robot", + "fr": "Outil de surveillance auto-hébergé similaire à Uptime-Robot" }, - "version": "1.0~ynh1", + "version": "1.10.0~ynh1", "url": "https://github.com/louislam/uptime-kuma/", "upstream": { "license": "MIT", @@ -22,7 +22,7 @@ "email": "ketsapiwiq@protonmail.com" }, "requirements": { - "yunohost": ">= 4.1.3" + "yunohost": ">= 4.2.3" }, "multi_instance": true, "services": [ diff --git a/scripts/_common.sh b/scripts/_common.sh index 71a3129..7912aa4 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -4,11 +4,7 @@ # COMMON VARIABLES #================================================= -# dependencies used by the app -# pkg_dependencies="npm git nodejs" -# pkg_dependencies="" - -nodejs_version=14.18.1 +nodejs_version=14 #================================================= # PERSONAL HELPERS @@ -18,8 +14,6 @@ nodejs_version=14.18.1 # EXPERIMENTAL HELPERS #================================================= -#================================================= - #================================================= # FUTURE OFFICIAL HELPERS #================================================= diff --git a/scripts/backup b/scripts/backup index 8235388..13aaf8a 100755 --- a/scripts/backup +++ b/scripts/backup @@ -30,51 +30,24 @@ 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) -# phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) -# datadir=$(ynh_app_setting_get --app=$app --key=datadir) #================================================= # DECLARE DATA AND CONF FILES TO BACKUP #================================================= ynh_print_info --message="Declaring files to be backed up..." -### N.B. : the following 'ynh_backup' calls are only a *declaration* of what needs -### to be backuped and not an actual copy of any file. The actual backup that -### creates and fill the archive with the files happens in the core after this -### script is called. Hence ynh_backups calls takes basically 0 seconds to run. - #================================================= # BACKUP THE APP MAIN DIR #================================================= ynh_backup --src_path="$final_path" --is_big -#================================================= -# BACKUP THE DATA DIR -#================================================= - -# ynh_backup --src_path="$datadir" - #================================================= # BACKUP THE NGINX CONFIGURATION #================================================= ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" -#================================================= -# BACKUP THE PHP-FPM CONFIGURATION -#================================================= - -# ynh_backup --src_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" - -#================================================= -# BACKUP FAIL2BAN CONFIGURATION -#================================================= - -# ynh_backup --src_path="/etc/fail2ban/jail.d/$app.conf" -# ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf" - #================================================= # SPECIFIC BACKUP #================================================= @@ -97,16 +70,6 @@ ynh_backup --src_path="/etc/systemd/system/$app.service" ynh_backup --src_path="/var/log/$app/" -#================================================= -# BACKUP THE MYSQL DATABASE -#================================================= -# ynh_print_info --message="Backing up the MySQL database..." - -# ### (However, things like MySQL dumps *do* take some time to run, though the -# ### copy of the generated dump to the archive still happens later) - -# ynh_mysql_dump_db --database="$db_name" > db.sql - #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/change_url b/scripts/change_url index ca486ce..d2c5ac9 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -29,11 +29,6 @@ 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) -# Add settings here as needed by your application -#db_name=$(ynh_app_setting_get --app=$app --key=db_name) -#db_user=$db_name -#db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) - #================================================= # BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP #================================================= @@ -105,12 +100,6 @@ then ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" fi -#================================================= -# SPECIFIC MODIFICATIONS -#================================================= -# ... -#================================================= - #================================================= # GENERIC FINALISATION #================================================= diff --git a/scripts/install b/scripts/install index 5b22be1..a5e9fbb 100755 --- a/scripts/install +++ b/scripts/install @@ -26,38 +26,15 @@ ynh_abort_if_errors path_url=/ domain=$YNH_APP_ARG_DOMAIN -# admin=$YNH_APP_ARG_ADMIN is_public=$YNH_APP_ARG_IS_PUBLIC -# language=$YNH_APP_ARG_LANGUAGE -# password=$YNH_APP_ARG_PASSWORD -### 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 should be removed before releasing your app. -### Use the execution time, given by --time, 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" @@ -70,11 +47,8 @@ ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url ynh_script_progression --message="Storing installation settings..." --weight=1 # Subpath not supported -ynh_app_setting_set --app=$app --key=path --value=/ +ynh_app_setting_set --app=$app --key=path --value=$path_url ynh_app_setting_set --app=$app --key=domain --value=$domain -# ynh_app_setting_set --app=$app --key=admin --value=$admin -# ynh_app_setting_set --app=$app --key=password --value=$password -# ynh_app_setting_set --app=$app --key=language --value=$language #================================================= # STANDARD MODIFICATIONS @@ -83,38 +57,10 @@ ynh_app_setting_set --app=$app --key=domain --value=$domain #================================================= 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=3001) ynh_app_setting_set --app=$app --key=port --value=$port -# Optional: Expose this port publicly -# (N.B.: you only need to do this if the app actually needs to expose the port publicly. -# If you do this and the app doesn't actually need you are CREATING SECURITY HOLES IN THE SERVER !) - -# # Open the port -# ynh_script_progression --message="Configuring firewall..." --time --weight=1 -# ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port - -# #================================================= -# # INSTALL DEPENDENCIES -# #================================================= -# ynh_script_progression --message="Installing dependencies..." --time --weight=1 - -# ### `ynh_install_app_dependencies` allows you to add any "apt" dependencies to the package. -# ### Those deb packages will be installed as dependencies of this package. -# ### If you're not using this helper: -# ### - Remove the section "REMOVE DEPENDENCIES" in the remove script -# ### - Remove the variable "pkg_dependencies" in _common.sh -# ### - As well as the section "REINSTALL DEPENDENCIES" in the restore script -# ### - And the section "UPGRADE DEPENDENCIES" in the upgrade script - -# ynh_install_app_dependencies $pkg_dependencies - #================================================= # INSTALL NODEJS #================================================= @@ -122,10 +68,6 @@ ynh_script_progression --message="Installing nodejs..." --weight=2 ynh_install_nodejs --nodejs_version=$nodejs_version -#================================================= -# NODEJS Version -#================================================= - ynh_use_nodejs #================================================= @@ -136,46 +78,17 @@ 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 MYSQL DATABASE -#================================================= -# ynh_script_progression --message="Creating a MySQL database..." --time --weight=1 - -### Use these lines if you need a database for the application. -### `ynh_mysql_setup_db` will create a database, an associated user and a ramdom password. -### The password will be stored as 'mysqlpwd' into the app settings, -### and will be available as $db_pwd -### If you're not using these lines: -### - Remove the section "BACKUP THE MYSQL DATABASE" in the backup script -### - Remove also the section "REMOVE THE MYSQL DATABASE" in the remove script -### - As well as the section "RESTORE THE MYSQL DATABASE" in the restore script - -# db_name=$(ynh_sanitize_dbid --db_name=$app) -# db_user=$db_name -# ynh_app_setting_set --app=$app --key=db_name --value=$db_name -# ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name - #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= ynh_script_progression --message="Setting up source files..." --weight=1 -### `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 ynh_setup_source --dest_dir="$final_path" --keep=data/ # Download, check integrity, uncompress and patch the source from dist.src ynh_setup_source --source_id="dist" --dest_dir="$final_path/dist" -# 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. chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:www-data "$final_path" @@ -185,135 +98,24 @@ chown -R $app:www-data "$final_path" #================================================= ynh_script_progression --message="Configuring NGINX web server..." --weight=1 -### `ynh_add_nginx_config` will use the file conf/nginx.conf - # Create a dedicated NGINX config ynh_add_nginx_config -#================================================= -# PHP-FPM CONFIGURATION -#================================================= -# ynh_script_progression --message="Configuring PHP-FPM..." --time --weight=1 - -### `ynh_add_fpm_config` is used to set up a PHP config. -### You can remove it if your app doesn't use PHP. -### `ynh_add_fpm_config` will use the files conf/php-fpm.conf -### If you're not using these lines: -### - You can remove these files in conf/. -### - Remove the section "BACKUP THE PHP-FPM CONFIGURATION" in the backup script -### - Remove also the section "REMOVE PHP-FPM CONFIGURATION" in the remove script -### - As well as the section "RESTORE THE PHP-FPM CONFIGURATION" in the restore script -### with the reload at the end of the script. -### - And the section "PHP-FPM CONFIGURATION" in the upgrade script - -# Create a dedicated PHP-FPM config -# ynh_add_fpm_config - #================================================= # SPECIFIC SETUP #================================================= ynh_script_progression --message="Installing Uptime Kuma dependencies..." --weight=7 + cd $final_path && ynh_exec_warn_less $ynh_npm install -#================================================= -# CREATE DATA DIRECTORY -#================================================= -# ynh_script_progression --message="Creating a data directory..." --weight=1 - -### Use these lines if you need to create a directory to store "persistent files" for the application. -### Usually this directory is used to store uploaded files or any file that won't be updated during -### an upgrade and that won't be deleted during app removal unless "--purge" option is used. -### If you're not using these lines: -### - Remove the section "BACKUP THE DATA DIR" in the backup script -### - Remove the section "RESTORE THE DATA DIRECTORY" in the restore script -### - As well as the section "REMOVE DATA DIR" in the remove script - -# datadir=/home/yunohost.app/$app/data -# ynh_app_setting_set --app=$app --key=datadir --value=$datadir - -# mkdir -p $datadir - -# # 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. -# chmod 750 "$datadir" -# chmod -R o-rwx "$datadir" -# chown -R $app:www-data "$datadir" - -#================================================= -# ADD A CONFIGURATION -#================================================= -# ynh_script_progression --message="Adding a configuration file..." --time --weight=1 - -### You can add specific configuration files. -### -### Typically, put your template conf file in ../conf/your_config_file -### The template may contain strings such as __FOO__ or __FOO_BAR__, -### which will automatically be replaced by the values of $foo and $foo_bar -### -### ynh_add_config will also keep track of the config file's checksum, -### which later during upgrade may allow to automatically backup the config file -### if it's found that the file was manually modified -### -### Check the documentation of `ynh_add_config` for more info. - -# ynh_add_config --template="some_config_file" --destination="$final_path/some_config_file" - -# FIXME: this should be handled by the core in the future -# You may need to use chmod 600 instead of 400, -# for example if the app is expected to be able to modify its own config -# chmod 400 "$final_path/some_config_file" -# chown $app:$app "$final_path/some_config_file" - -### For more complex cases where you want to replace stuff using regexes, -### you shoud rely on ynh_replace_string (which is basically a wrapper for sed) -### When doing so, you also need to manually call ynh_store_file_checksum -### -### ynh_replace_string --match_string="match_string" --replace_string="replace_string" --target_file="$final_path/some_config_file" -### ynh_store_file_checksum --file="$final_path/some_config_file" - #================================================= # 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 -#================================================= -# SETUP APPLICATION -#================================================= - -### It could be tricky to use CURL since this app uses websocket exclusively. -# curl --data-binary '{"jsonrpc": "2.0", "method": "VideoLibrary.Scan", "id": "1"}' -H "Upgrade:websocket" -H 'content-type: application/json;' http://localhost:9090/jsonrpc - -# curl 'wss://uptime-kuma.example.fr/socket.io/?EIO=4&transport=websocket' -H 'Accept: */*' -H 'Sec-WebSocket-Version: 13' -H 'Origin: https://uptime-kuma.example.fr' -H 'Sec-WebSocket-Extensions: permessage-deflate' -H 'Sec-WebSocket-Key: ZziEpfBMcnRSyFryHHsVmA==' -H 'Connection: keep-alive, Upgrade' -H 'Sec-Fetch-Dest: websocket' -H 'Sec-Fetch-Mode: websocket' -H 'Sec-Fetch-Site: same-origin' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' -H 'Upgrade: websocket' --data-binary '["setup","admin","password"]' -H 'content-type: application/json;' - -# 421["setup","admin","password"] - -### We could write to its SQLite. Didn't find where the language preferences are though. - -# password_hashed = $(htpasswd -bnBC 10 "" $password | tr -d ':\n') -# sqlite3 $final_path/data/kuma.db <