From 92644d26f8c1d9645b88ae18d70cbef73f7a6469 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Sat, 26 Mar 2022 21:38:22 +0100 Subject: [PATCH] Apply example_ynh --- .github/ISSUE_TEMPLATE.md | 55 +++++++++ .github/PULL_REQUEST_TEMPLATE.md | 16 +++ check_process | 14 +-- conf/nginx.conf | 3 +- conf/systemd.service | 15 +++ doc/.gitkeep | 0 doc/DESCRIPTION.md | 1 + doc/DISCLAIMER.md | 4 + doc/screenshots/.gitkeep | 0 doc/screenshots/sample.png | Bin 0 -> 176675 bytes manifest.json | 36 +++--- scripts/_common.sh | 21 +++- scripts/backup | 86 +++++++++----- scripts/change_url | 137 ++++++++++++++++++++++ scripts/install | 187 ++++++++++++++++++------------- scripts/remove | 78 ++++++++----- scripts/restore | 157 +++++++++++++++++++------- scripts/upgrade | 150 +++++++++++++++++++------ 18 files changed, 722 insertions(+), 238 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 conf/systemd.service create mode 100644 doc/.gitkeep create mode 100644 doc/DESCRIPTION.md create mode 100644 doc/DISCLAIMER.md create mode 100644 doc/screenshots/.gitkeep create mode 100644 doc/screenshots/sample.png create mode 100644 scripts/change_url diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..2729a6b --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,55 @@ +--- +name: Bug report +about: When creating a bug report, please use the following template to provide all the relevant information and help debugging efficiently. + +--- + +**How to post a meaningful bug report** +1. *Read this whole template first.* +2. *Determine if you are on the right place:* + - *If you were performing an action on the app from the webadmin or the CLI (install, update, backup, restore, change_url...), you are on the right place!* + - *Otherwise, the issue may be due to the app itself. Refer to its documentation or repository for help.* + - *When in doubt, post here and we will figure it out together.* +3. *Delete the italic comments as you write over them below, and remove this guide.* +--- + +### Describe the bug + +*A clear and concise description of what the bug is.* + +### Context + +- Hardware: *VPS bought online / Old laptop or computer / Raspberry Pi at home / Internet Cube with VPN / Other ARM board / ...* +- YunoHost version: x.x.x +- I have access to my server: *Through SSH | through the webadmin | direct access via keyboard / screen | ...* +- Are you in a special context or did you perform some particular tweaking on your YunoHost instance?: *no / yes* + - If yes, please explain: +- Using, or trying to install package version/branch: +- If upgrading, current package version: *can be found in the admin, or with `yunohost app info $app_id`* + +### Steps to reproduce + +- *If you performed a command from the CLI, the command itself is enough. For example:* + ```sh + sudo yunohost app install the_app + ``` +- *If you used the webadmin, please perform the equivalent command from the CLI first.* +- *If the error occurs in your browser, explain what you did:* + 1. *Go to '...'* + 2. *Click on '...'* + 3. *Scroll down to '...'* + 4. *See error* + +### Expected behavior + +*A clear and concise description of what you expected to happen. You can remove this section if the command above is enough to understand your intent.* + +### Logs + +*When an operation fails, YunoHost provides a simple way to share the logs.* +- *In the webadmin, the error message contains a link to the relevant log page. On that page, you will be able to 'Share with Yunopaste'. If you missed it, the logs of previous operations are also available under Tools > Logs.* +- *In command line, the command to share the logs is displayed at the end of the operation and looks like `yunohost log display [log name] --share`. If you missed it, you can find the log ID of a previous operation using `yunohost log list`.* + +*After sharing the log, please copypaste directly the link provided by YunoHost (to help readability, no need to copypaste the entire content of the log here, just the link is enough...)* + +*If applicable and useful, add screenshots to help explain your problem.* diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..ef70e18 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,16 @@ +## Problem + +- *Description of why you made this PR* + +## Solution + +- *And how do you fix that problem* + +## PR Status + +- [ ] Code finished and ready to be reviewed/tested +- [ ] The fix/enhancement were manually tested (if applicable) + +## Automatic tests + +Automatic tests can be triggered on https://ci-apps-dev.yunohost.org/ *after creating the PR*, by commenting "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!". (N.B. : for this to work you need to be a member of the Yunohost-Apps organization) diff --git a/check_process b/check_process index 0cbeae3..17956af 100644 --- a/check_process +++ b/check_process @@ -1,16 +1,8 @@ -# 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) - is_public=1 (PUBLIC|public=1|private=0) -# password="pass" -# nextclouddomain="domain.tld" - port="9980" (PORT) + domain="domain.tld" + path="/path" + is_public=1 ; Checks pkg_linter=1 setup_sub_dir=0 diff --git a/conf/nginx.conf b/conf/nginx.conf index 4193bce..217b22f 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,4 +1,5 @@ -location ^~ __PATH__/ { +#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; +location __PATH__/ { proxy_pass http://127.0.0.1:__PORT__; proxy_redirect off; proxy_set_header Host $host; diff --git a/conf/systemd.service b/conf/systemd.service new file mode 100644 index 0000000..fb766fe --- /dev/null +++ b/conf/systemd.service @@ -0,0 +1,15 @@ +[Unit] +Description=Python Downloader +After=network.target + +[Service] +Type=simple +User=__APP__ +Group=__APP__ +WorkingDirectory=__FINALPATH__/ +ExecStart=__FINALPATH__/venv/bin/pyload --storagedir __DATADIR__ +StandardOutput=append:/var/log/__APP__/__APP__.log +StandardError=inherit + +[Install] +WantedBy=multi-user.target diff --git a/doc/.gitkeep b/doc/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md new file mode 100644 index 0000000..051ceda --- /dev/null +++ b/doc/DESCRIPTION.md @@ -0,0 +1 @@ +The free and open-source Download Manager written in pure Python diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..3023a28 --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,4 @@ +- Default username: `pyload`. +- Default password: `pyload`. + +**It's highly recommended to change the default access credentials on first start**. diff --git a/doc/screenshots/.gitkeep b/doc/screenshots/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/doc/screenshots/sample.png b/doc/screenshots/sample.png new file mode 100644 index 0000000000000000000000000000000000000000..b47a8612cb667b11143083014a7cbd34df279269 GIT binary patch literal 176675 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

EH9dVx| zKkFAfEi5}IX;=GpXRPP$5U-(kKK@0=-jn$^^v5Ud#957i7en1_XBjacvXe^(5vva9ql@PN*&elN5)&l3Iv6B(Qpz*Z`WZyRj1Ypd z`w8jY=+oBt3RBo+d>E9LV#X=c6~ux>Mu=YYkSVAJ0N`(-M@_x9JUpX?%xeJ08ME@U zTn8nVHa-*k9*B5xp~af+(NUceF;v@f^Fd!k1tWkjnvLs^#GC zY>XqlubQ$Jp!zI2ei(K3A)ml0qge#ltY{RDiifw~3a@}9ne@>>K2!UrdAqKJD*6dM z8}TY@LU~c(aLgPbR4VN87pFZiUW$1-h+t5E zp&^`l&P?VFpgSKA2m-Z%%&{S$J`6WpLR4W4Mf6_cb#WtzWvdm?o}ixAYaKd6Cswbz zSEWflCSFCAi;E)4;g!2Rwvq5)7z`+HCFOrt9|W>gyQ8S?*D@U8t0dGMDZl}?BJ}Eq zBTC2XTh)pB67}x8e`>ZSQHyz(#5S9ofprqp87`l{YDuy)+_~b6qa(n$+3`pTK5hdF z!#eOZt$l_~PXo3XvmXPnWROjfoXCZ`u=A)3a62K@V_jxe8czlX!pO`OG7)Z8L`HDH z_LE0`bk#hn93Ho85Ct-6=(P3aq$ao{hTW$N9QQMMH-;T%xaBipGNQIKj$yZmv&UNdbNI^D7t?q!^+b@CP19n$d3 z-=npXGkCWUdsAPFh&zvfjTA3F+8?Au?wX=kCO9glj0JU=NKt74dqY!weW;n)HE6P- zM4Q1+o?-jCck^9x7h4T0L~n3tb3vy1{zb)5A5VGsEoK+Zp22M2k(@W34uLx%xfyzt z#*>W(AY6piCR@E8Fg{#1Uc|A|i{f#IoR|y?EvJZkqf0@wYZ#zyMS&{7s4~**r7L;%^blGT&6M(=Ge*Rx6=f6sq^0Cm&30%iG*!f9 zy@I_Z{1rs-M9<^G$^YuW#=ee1&+F90nXl)MZmSp{u5^onHt^nRif52emx;;Vt2|8i zcxvs$`fP>OqSS7(HJw2%pQE+w8TDJN@qA=tZ?I)hhOhqlO9`X10f1)t{*jNOjX^&o z%SzwxkN~fjBPE}H?;}s9V%71nr>$u_Jy8rUqoguz+O>LfniRbT5K|wEKi=h+pnJJ| zUyG2Oktd4d@D(o+A#EKl9X(SJ2j!|TO13IKR%9>M7^kv?QH(#=LmJlUjR3i{!;>#0+cQd*hl?XQfRfiYQ&((U9URI=cNR{u4*k41gs-5FOcf9ZXK#qa4`u7l zqM{KxxV}rb*8oqu93c3s%xMptfQ6raYup-0jb$W64iTi*CX#XC5TnljV@~|px$84(OOI! zezmd)F)E8|8Qcd*j2z+At>{L-c&f=cCmE5Ah|BRf1KRcdwo=2wUnG0#zOczPgab&? zNlBb`b>gmMNxHCx53veh{xs2J&Go)3SHA8-f3JJuDrpb)3JzsQjPj6;o-B@CHx2B{ z!wk75yCbqsEtepUEUY8Q+4tB{4D%-0db!dRG(vz9SE}y=RB{Pf`7Y(AizvBKer-G+ z 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 literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json index 9b21f8a..9856b8b 100644 --- a/manifest.json +++ b/manifest.json @@ -3,55 +3,45 @@ "id": "pyload", "packaging_format": 1, "description": { - "en": "pyLoad package for YunoHost.", - "fr": "pyLoad pour YunoHost." + "en": "Download Manager written in pure Python." }, - "version": "0.4.9", + "version": "0.4.20~ynh1", "url": "https://pyload.net/", + "upstream": { + "license": "free", + "website": "https://pyload.net", + "admindoc": "https://github.com/pyload/pyload/wiki", + "code": "https://github.com/pyload/pyload" + }, "license": "free", "maintainer": { "name": "liberodark", "email": "liberodark@gmail.com" }, "requirements": { - "yunohost": ">= 2.7.2" + "yunohost": ">= 4.3.0" }, "multi_instance": true, "services": [ "nginx", - "php5-fpm", "mysql" ], "arguments": { - "install": [{ + "install": [ + { "name": "domain", - "type": "domain", - "ask": { - "en": "Choose a domain name for pyLoad", - "fr": "Choisissez un nom de domaine pour pyLoad" - }, - "example": "example.com" + "type": "domain" }, - { "name": "path", "type": "path", - "ask": { - "en": "Choose a path for pyLoad /pyload is accepted", - "fr": "Choisissez un chemin pour pyLoad /pyload est accepté" - }, "example": "/pyload", "default": "/pyload" }, - { "name": "is_public", "type": "boolean", - "ask": { - "en": "Is it a public site ?", - "fr": "Est-ce un site public ?" - }, - "default": "true" + "default": true } ] } diff --git a/scripts/_common.sh b/scripts/_common.sh index cc1f786..e79e441 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -1 +1,20 @@ -#!/bin/bash \ No newline at end of file +#!/bin/bash + +#================================================= +# COMMON VARIABLES +#================================================= + +# dependencies used by the app +pkg_dependencies="python3-crypto python3-pycurl python3-venv libcurl4-openssl-dev libssl-dev" + +#================================================= +# PERSONAL HELPERS +#================================================= + +#================================================= +# EXPERIMENTAL HELPERS +#================================================= + +#================================================= +# FUTURE OFFICIAL HELPERS +#================================================= diff --git a/scripts/backup b/scripts/backup index af8ccd9..d8cb0be 100644 --- a/scripts/backup +++ b/scripts/backup @@ -1,33 +1,69 @@ #!/bin/bash -# Exit on command errors and treat unset variables as an error -set -eu +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= -# See comments in install script -app=$YNH_APP_INSTANCE_NAME - -# Source YunoHost 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 -# Backup sources & data -# Note: the last argument is where to save this path, see the restore script. -ynh_backup "/var/www/${app}" "sources" +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= -### MySQL (remove if not used) ### -# If a MySQL database is used: -# # Dump the database -# dbname=$app -# dbuser=$app -# dbpass=$(ynh_app_setting_get "$app" mysqlpwd) -# mysqldump -u "$dbuser" -p"$dbpass" --no-create-db "$dbname" > ./dump.sql -### MySQL end ### +ynh_clean_setup () { + true +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors -# Copy NGINX configuration -domain=$(ynh_app_setting_get "$app" domain) -ynh_backup "/etc/nginx/conf.d/${domain}.d/${app}.conf" "nginx.conf" +#================================================= +# LOAD SETTINGS +#================================================= +ynh_print_info --message="Loading installation settings..." -### PHP (remove if not used) ### -# If a dedicated php-fpm process is used: -# # Copy PHP-FPM pool configuration -# ynh_backup "/etc/php5/fpm/pool.d/${app}.conf" "php-fpm.conf" -### PHP end ### +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) +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..." + +#================================================= +# BACKUP THE APP MAIN DIR +#================================================= + +ynh_backup --src_path="$final_path" + +#================================================= +# BACKUP THE DATA DIR +#================================================= + +ynh_backup --src_path="$datadir" --is_big + +#================================================= +# BACKUP THE NGINX CONFIGURATION +#================================================= + +ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" + +#================================================= +# SPECIFIC BACKUP +#================================================= +# BACKUP SYSTEMD +#================================================= + +ynh_backup --src_path="/etc/systemd/system/$app.service" + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." diff --git a/scripts/change_url b/scripts/change_url new file mode 100644 index 0000000..4e1c35c --- /dev/null +++ b/scripts/change_url @@ -0,0 +1,137 @@ +#!/bin/bash + +#================================================= +# GENERIC STARTING +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# RETRIEVE ARGUMENTS +#================================================= + +old_domain=$YNH_APP_OLD_DOMAIN +old_path=$YNH_APP_OLD_PATH + +new_domain=$YNH_APP_NEW_DOMAIN +new_path=$YNH_APP_NEW_PATH + +app=$YNH_APP_INSTANCE_NAME + +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." + +# 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 +#================================================= +ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." + +# Backup the current version of the app +ynh_backup_before_upgrade +ynh_clean_setup () { + ynh_clean_check_starting + # Remove the new domain config file, the remove script won't do it as it doesn't know yet its location. + ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" + + # Restore it if the upgrade fails + ynh_restore_upgradebackup +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + +#================================================= +# CHECK WHICH PARTS SHOULD BE CHANGED +#================================================= + +change_domain=0 +if [ "$old_domain" != "$new_domain" ] +then + change_domain=1 +fi + +change_path=0 +if [ "$old_path" != "$new_path" ] +then + change_path=1 +fi + +#================================================= +# STANDARD MODIFICATIONS +#================================================= +# STOP SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Stopping a systemd service..." + +ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/$app.log" --line_match="Proxy listening" + +#================================================= +# MODIFY URL IN NGINX CONF +#================================================= +ynh_script_progression --message="Updating NGINX web server configuration..." + +nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf + +# Change the path in the NGINX config file +if [ $change_path -eq 1 ] +then + # Make a backup of the original NGINX config file if modified + ynh_backup_if_checksum_is_different --file="$nginx_conf_path" + # Set global variables for NGINX helper + domain="$old_domain" + path_url="$new_path" + # Create a dedicated NGINX config + ynh_add_nginx_config +fi + +# Change the domain for NGINX +if [ $change_domain -eq 1 ] +then + # Delete file checksum for the old conf file location + ynh_delete_file_checksum --file="$nginx_conf_path" + mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf + # Store file checksum for the new config file location + ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" +fi + +#================================================= +# SPECIFIC MODIFICATIONS +#================================================= +# UPDATE A CONFIG FILE +#================================================= +ynh_script_progression --message="Updating a configuration file..." + +#================================================= +# GENERIC FINALISATION +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." + +# Start a systemd service +ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" --line_match="Proxy listening" + +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Change of URL completed for $app" diff --git a/scripts/install b/scripts/install index 55f3e52..3f8bac2 100644 --- a/scripts/install +++ b/scripts/install @@ -6,7 +6,7 @@ # IMPORT GENERIC HELPERS #================================================= -#source _common.sh +source _common.sh source /usr/share/yunohost/helpers #================================================= @@ -14,8 +14,7 @@ source /usr/share/yunohost/helpers #================================================= ynh_clean_setup () { - ### Remove this function if there's nothing to clean before calling the remove script. - true + ynh_clean_check_starting } # Exit if an error occurs during the execution of the script ynh_abort_if_errors @@ -24,131 +23,169 @@ ynh_abort_if_errors # RETRIEVE ARGUMENTS FROM THE MANIFEST #================================================= -# Retrieve arguments domain=$YNH_APP_ARG_DOMAIN path_url=$YNH_APP_ARG_PATH 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 #================================================= +ynh_script_progression --message="Validating installation parameters..." -### 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=/opt/yunohost/$app -test ! -e "$final_path" || ynh_die "This path already contains a folder" +final_path=/var/www/$app +test ! -e "$final_path" || ynh_die --message="This path already contains a folder" -# Normalize the url path syntax -path_url=$(ynh_normalize_url_path $path_url) - -# Check web path availability -ynh_webpath_available $domain $path_url # Register (book) web path -ynh_webpath_register $app $domain $path_url +ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url #================================================= # STORE SETTINGS FROM MANIFEST #================================================= +ynh_script_progression --message="Storing installation settings..." -ynh_app_setting_set $app domain $domain -ynh_app_setting_set $app path $path_url -ynh_app_setting_set $app is_public $is_public +ynh_app_setting_set --app=$app --key=domain --value=$domain +ynh_app_setting_set --app=$app --key=path --value=$path_url +#================================================= +# STANDARD MODIFICATIONS #================================================= # FIND AND OPEN A PORT #================================================= +ynh_script_progression --message="Finding an available port..." -### 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 a free port -port=$(ynh_find_port 8000) -# Open this port -yunohost firewall allow --no-upnp TCP $port 2>&1 -ynh_app_setting_set $app port $port - -#============================================== -# INSTALL PYLOAD -#============================================== - -apt install -y python-crypto python-pycurl tesseract-ocr - -#python python-crypto python-pycurl python-openssl python-imaging tesseract-ocr rhino - -wget --no-verbose 'https://github.com/pyload/pyload/releases/download/v0.4.9/pyload_0.4.9_all.deb' -dpkg --install pyload_0.4.9_all.deb +# Find an available port +port=$(ynh_find_port --port=9666) +ynh_app_setting_set --app=$app --key=port --value=$port #================================================= -# NGINX CONFIGURATION +# INSTALL DEPENDENCIES #================================================= +ynh_script_progression --message="Installing dependencies..." -# Create a dedicated nginx config -ynh_add_nginx_config +ynh_install_app_dependencies $pkg_dependencies #================================================= # CREATE DEDICATED USER #================================================= +ynh_script_progression --message="Configuring system user..." # Create a system user -ynh_system_user_create $app +ynh_system_user_create --username=$app --home_dir="$final_path" #================================================= -# MODIFY A CONFIG FILE +# DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= -#cp -a ../conf/onlyoffice-documentserver.conf /etc/onlyoffice/documentserver/nginx/onlyoffice-documentserver.conf -#ynh_replace_string "__NEXTCLOUDDOMAIN__" "$nextcloud_domain" "/etc/loolwsd/loolwsd.xml" -#ynh_replace_string "__PASSWORD__" "$password" "/etc/loolwsd/loolwsd.xml" +ynh_script_progression --message="Setting up source files..." + +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" + +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" #================================================= -# STORE THE CONFIG FILE CHECKSUM +# NGINX CONFIGURATION #================================================= +ynh_script_progression --message="Configuring NGINX web server..." -### `ynh_store_file_checksum` is used to store the checksum of a file. -### That way, during the upgrade script, by using `ynh_backup_if_checksum_is_different`, -### you can make a backup of this file before modifying it again if the admin had modified it. +# Create a dedicated NGINX config +ynh_add_nginx_config -# Calculate and store the config file checksum into the app settings -#ynh_store_file_checksum "/etc/onlyoffice/documentserver/nginx/onlyoffice-documentserver.conf" +#================================================= +# SPECIFIC SETUP +#================================================= +# INSTALL PYTHON DEPENDENCIES +#================================================= +ynh_script_progression --message="Installing Python dependencies..." +pushd $final_path + python3 -m venv $final_path/venv + source $final_path/venv/bin/activate + pip install --upgrade pip + pip install --upgrade pyyaml + pip install --pre pyload-ng[all] +popd + +#================================================= +# CREATE DATA DIRECTORY +#================================================= +ynh_script_progression --message="Creating a data directory..." + +datadir=/home/yunohost.app/$app +ynh_app_setting_set --app=$app --key=datadir --value=$datadir + +mkdir -p $datadir + +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..." + +#================================================= +# SETUP SYSTEMD +#================================================= +ynh_script_progression --message="Configuring a systemd service..." + +# Create a dedicated systemd config +ynh_add_systemd_config #================================================= # GENERIC FINALIZATION #================================================= -# SECURE FILES AND DIRECTORIES +# SETUP LOGROTATE #================================================= +ynh_script_progression --message="Configuring log rotation..." -### For security reason, any app should set the permissions to root: before anything else. -### Then, if write authorization is needed, any access should be given only to directories -### that really need such authorization. +mkdir -p /var/log/$app +chown -R $app:$app "/var/log/$app" +# Use logrotate to manage application logfile(s) +ynh_use_logrotate -# Set permissions to app files -#chown -R root: /etc/loolwsd +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= +ynh_script_progression --message="Integrating service in YunoHost..." +yunohost service add $app --log="/var/log/$app/$app.log" + +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." + +# Start a systemd service +ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" --line_match="Proxy listening" #================================================= # SETUP SSOWAT #================================================= +ynh_script_progression --message="Configuring permissions..." -# If app is public, add url to SSOWat conf as skipped_uris -if [ $is_public -eq 1 ]; then - # unprotected_uris allows SSO credentials to be passed anyway. - ynh_app_setting_set "$app" unprotected_uris "/" +# 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 -# Reload services -pyLoadCore --daemon -systemctl restart nginx +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Installation of $app completed" diff --git a/scripts/remove b/scripts/remove index 19721ec..f3538fe 100644 --- a/scripts/remove +++ b/scripts/remove @@ -12,71 +12,93 @@ source /usr/share/yunohost/helpers #================================================= # LOAD SETTINGS #================================================= +ynh_script_progression --message="Loading installation settings..." app=$YNH_APP_INSTANCE_NAME -domain=$(ynh_app_setting_get $app domain) -port=$(ynh_app_setting_get $app port) -final_path=$(ynh_app_setting_get $app final_path) +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) +datadir=$(ynh_app_setting_get --app=$app --key=datadir) #================================================= # STANDARD REMOVE #================================================= - -ynh_package_remove emby-server - -#================================================= -# REMOVE DEPENDENCIES +# REMOVE SERVICE INTEGRATION IN YUNOHOST #================================================= -# Remove metapackage and its dependencies -#ynh_remove_app_dependencies +# Remove the service from the list of services known by YunoHost (added from `yunohost service add`) +if ynh_exec_warn_less yunohost service status $app >/dev/null +then + ynh_script_progression --message="Removing $app service integration..." + yunohost service remove $app +fi + +#================================================= +# STOP AND REMOVE SERVICE +#================================================= +ynh_script_progression --message="Stopping and removing the systemd service..." + +# Remove the dedicated systemd config +ynh_remove_systemd_config #================================================= # REMOVE APP MAIN DIR #================================================= +ynh_script_progression --message="Removing app main directory..." # Remove the app directory securely -ynh_secure_remove "$final_path" +ynh_secure_remove --file="$final_path" + +#================================================= +# REMOVE DATA DIR +#================================================= + +# Remove the data directory if --purge option is used +if [ "${YNH_APP_PURGE:-0}" -eq 1 ] +then + ynh_script_progression --message="Removing app data directory..." + ynh_secure_remove --file="$datadir" +fi #================================================= # REMOVE NGINX CONFIGURATION #================================================= +ynh_script_progression --message="Removing NGINX web server configuration..." -# Remove the dedicated nginx config +# Remove the dedicated NGINX config ynh_remove_nginx_config #================================================= -# CLOSE A PORT +# REMOVE DEPENDENCIES #================================================= +ynh_script_progression --message="Removing dependencies..." -if yunohost firewall list | grep -q "\- $port$" -then - echo "Close port $port" >&2 - yunohost firewall disallow TCP $port 2>&1 -fi +# Remove metapackage and its dependencies +ynh_remove_app_dependencies #================================================= # SPECIFIC REMOVE #================================================= -# REMOVE THE CRON FILE +# REMOVE VARIOUS FILES #================================================= - -# Remove a cron file -ynh_secure_remove "/etc/cron.d/$app" - -# Remove a directory securely -ynh_secure_remove "/etc/apt/sources.list.d/onlyoffice.list" - +ynh_script_progression --message="Removing various files..." # Remove the log files -ynh_secure_remove "/var/log/$app/" +ynh_secure_remove --file="/var/log/$app" #================================================= # GENERIC FINALIZATION #================================================= # REMOVE DEDICATED USER #================================================= +ynh_script_progression --message="Removing the dedicated system user..." # Delete a system user -ynh_system_user_delete $app +ynh_system_user_delete --username=$app + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Removal of $app completed" diff --git a/scripts/restore b/scripts/restore index 93169e9..de4cf4f 100644 --- a/scripts/restore +++ b/scripts/restore @@ -1,52 +1,129 @@ #!/bin/bash -# Note: each files and directories you've saved using the ynh_backup helper -# will be located in the current directory, regarding the last argument. +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= -# Exit on command errors and treat unset variables as an error -set -eu - -# See comments in install script -app=$YNH_APP_INSTANCE_NAME - -# Source YunoHost 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 -# Retrieve old app settings -domain=$(ynh_app_setting_get "$app" domain) -path_url=$(ynh_app_setting_get "$app" path_url) +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= -# Check domain/path availability -sudo yunohost app checkurl "${domain}${path_url}" -a "$app" \ - || ynh_die "Path not available: ${domain}${path_url}" +ynh_clean_setup () { + ynh_clean_check_starting +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors -# Restore sources & data -src_path="/var/www/${app}" -sudo cp -a ./sources "$src_path" +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." -# Restore permissions to app files -# you may need to make some file and/or directory writeable by www-data (nginx user) -sudo chown -R root: "$src_path" +app=$YNH_APP_INSTANCE_NAME -### MySQL (remove if not used) ### -# If a MySQL database is used: -# # Create and restore the database -# dbname=$app -# dbuser=$app -# dbpass=$(ynh_app_setting_get "$app" mysqlpwd) -# ynh_mysql_create_db "$dbname" "$dbuser" "$dbpass" -# ynh_mysql_connect_as "$dbuser" "$dbpass" "$dbname" < ./dump.sql -### MySQL end ### +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) +datadir=$(ynh_app_setting_get --app=$app --key=datadir) -# Restore NGINX configuration -sudo cp -a ./nginx.conf "/etc/nginx/conf.d/${domain}.d/${app}.conf" +#================================================= +# CHECK IF THE APP CAN BE RESTORED +#================================================= +ynh_script_progression --message="Validating restoration parameters..." -### PHP (remove if not used) ### -# If a dedicated php-fpm process is used: -# # Copy PHP-FPM pool configuration and reload the service -# sudo cp -a ./php-fpm.conf "/etc/php5/fpm/pool.d/${app}.conf" -# sudo service php5-fpm reload -### PHP end ### +test ! -d $final_path \ + || ynh_die --message="There is already a directory: $final_path " -# Restart webserver -sudo service nginx reload +#================================================= +# STANDARD RESTORATION STEPS +#================================================= +# RESTORE THE NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Restoring the NGINX web server configuration..." + +ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" + +#================================================= +# RECREATE THE DEDICATED USER +#================================================= +ynh_script_progression --message="Recreating the dedicated system user..." + +# Create the dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir="$final_path" + +#================================================= +# RESTORE THE APP MAIN DIR +#================================================= +ynh_script_progression --message="Restoring the app main directory..." + +ynh_restore_file --origin_path="$final_path" + +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" + +#================================================= +# RESTORE THE DATA DIRECTORY +#================================================= +ynh_script_progression --message="Restoring the data directory..." + +ynh_restore_file --origin_path="$datadir" --not_mandatory + +mkdir -p $datadir + +chmod 750 "$datadir" +chmod -R o-rwx "$datadir" +chown -R $app:www-data "$datadir" + +#================================================= +# SPECIFIC RESTORATION +#================================================= +# REINSTALL DEPENDENCIES +#================================================= +ynh_script_progression --message="Reinstalling dependencies..." + +# Define and install dependencies +ynh_install_app_dependencies $pkg_dependencies + +#================================================= +# RESTORE SYSTEMD +#================================================= +ynh_script_progression --message="Restoring the systemd configuration..." + +ynh_restore_file --origin_path="/etc/systemd/system/$app.service" +systemctl enable $app.service --quiet + +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= +ynh_script_progression --message="Integrating service in YunoHost..." + +yunohost service add $app --log="/var/log/$app/$app.log" + +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." + +ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" --line_match="Proxy listening" + +#================================================= +# GENERIC FINALIZATION +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Restoration completed for $app" diff --git a/scripts/upgrade b/scripts/upgrade index 3d706e4..4c33ad5 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -1,57 +1,139 @@ #!/bin/bash -# Exit on command errors and treat unset variables as an error -set -eu +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." -# See comments in install script app=$YNH_APP_INSTANCE_NAME -# Source YunoHost helpers -source /usr/share/yunohost/helpers -source _common.sh - -# Retrieve app settings -domain=$(ynh_app_setting_get "$app" domain) -password=$(ynh_app_setting_get "$app" password) -is_public=$(ynh_app_setting_get "$app" is_public) -nextclouddomain=$(ynh_app_setting_get "$app" nextclouddomain) - - -# Set permissions to app files -# you may need to make some file and/or directory writeable by www-data (nginx user) -sudo chown -R root: $src_path +domain=$(ynh_app_setting_get --app=$app --key=domain) +path_url=$(ynh_app_setting_get --app=$app --key=path) +datadir=$(ynh_app_setting_get --app=$app --key=datadir) #================================================= -# UPGRADE COLLABORA +# CHECK VERSION #================================================= -ynh_package_update -ynh_install_app_dependencies loolwsd code-brand +ynh_script_progression --message="Checking version..." + +upgrade_type=$(ynh_check_app_version_changed) + +#================================================= +# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP +#================================================= +ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." + +# Backup the current version of the app +ynh_backup_before_upgrade +ynh_clean_setup () { + ynh_clean_check_starting + # Restore it if the upgrade fails + ynh_restore_upgradebackup +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + +#================================================= +# STANDARD UPGRADE STEPS +#================================================= +# ENSURE DOWNWARD COMPATIBILITY +#================================================= +ynh_script_progression --message="Ensuring downward compatibility..." + +# Cleaning legacy permissions +if ynh_legacy_permissions_exists; then + ynh_legacy_permissions_delete_all + + ynh_app_setting_delete --app=$app --key=is_public +fi + +#================================================= +# CREATE DEDICATED USER +#================================================= +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" #================================================= # NGINX CONFIGURATION #================================================= +ynh_script_progression --message="Upgrading NGINX web server configuration..." -# Create a dedicated nginx config +# Create a dedicated NGINX config ynh_add_nginx_config +#================================================= +# UPGRADE DEPENDENCIES +#================================================= +ynh_script_progression --message="Upgrading dependencies..." + +ynh_install_app_dependencies $pkg_dependencies #================================================= -# UPGRADE CONFIG +# SPECIFIC UPGRADE #================================================= -cp -a ../conf/loolwsd.xml /etc/loolwsd -ynh_replace_string "__NEXTCLOUDDOMAIN__" "$nextcloud_domain" "/etc/loolwsd/loolwsd.xml" -ynh_replace_string "__PASSWORD__" "$password" "/etc/loolwsd/loolwsd.xml" -systemctl restart loolwsd +# INSTALL PYTHON DEPENDENCIES +#================================================= +ynh_script_progression --message="Installing Python dependencies..." +ynh_secure_remove --file="$final_path/venv" +pushd $final_path + python3 -m venv $final_path/venv + source $final_path/venv/bin/activate + pip install --upgrade pip + pip install --upgrade pyyaml + pip install --pre pyload-ng[all] +popd -# If app is public, add url to SSOWat conf as skipped_uris -if [[ $is_public -eq 1 ]]; then - # See install script - ynh_app_setting_set "$app" unprotected_uris "/" -fi +#================================================= +# UPDATE A CONFIG FILE +#================================================= +ynh_script_progression --message="Updating a configuration file..." -# Reload nginx service -systemctl restart nginx -systemctl restart loolwsd +#================================================= +# SETUP SYSTEMD +#================================================= +ynh_script_progression --message="Upgrading systemd configuration..." +# Create a dedicated systemd config +ynh_add_systemd_config + +#================================================= +# GENERIC FINALIZATION +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= +ynh_script_progression --message="Integrating service in YunoHost..." + +yunohost service add $app --log="/var/log/$app/$app.log" + +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." + +ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" --line_match="Proxy listening" + +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Upgrade of $app completed"