From c299a05962a5177c5439283fe8905e3ccde84ad1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9rard=20Collin?= Date: Wed, 11 Jan 2023 18:59:44 +0100 Subject: [PATCH] Working installation --- .gitignore | 2 + README.md | 78 ++++++++ README_fr.md | 78 ++++++++ cac-proxy_ynh.iml | 9 + check_process | 28 +++ conf/.env | 5 + conf/amd64.src | 7 + conf/nginx.conf | 12 ++ conf/systemd.service | 50 +++++ doc/.gitkeep | 0 doc/DESCRIPTION.md | 20 ++ doc/DISCLAIMER.md | 9 + doc/screenshots/.gitkeep | 0 doc/screenshots/collection-view.png | Bin 0 -> 104878 bytes doc/screenshots/databases-view.png | Bin 0 -> 62032 bytes doc/screenshots/document-edit.png | Bin 0 -> 40800 bytes manifest.json | 46 +++++ scripts/_common.sh | 21 ++ scripts/backup | 74 ++++++++ scripts/change_url | 140 ++++++++++++++ scripts/install | 285 ++++++++++++++++++++++++++++ scripts/remove | 127 +++++++++++++ scripts/restore | 137 +++++++++++++ scripts/upgrade | 193 +++++++++++++++++++ sources/extra_files/app/.gitignore | 2 + sources/patches/.gitignore | 2 + 26 files changed, 1325 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 README_fr.md create mode 100644 cac-proxy_ynh.iml create mode 100644 check_process create mode 100644 conf/.env create mode 100644 conf/amd64.src create mode 100644 conf/nginx.conf 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/collection-view.png create mode 100644 doc/screenshots/databases-view.png create mode 100644 doc/screenshots/document-edit.png create mode 100644 manifest.json create mode 100644 scripts/_common.sh create mode 100755 scripts/backup create mode 100644 scripts/change_url create mode 100755 scripts/install create mode 100755 scripts/remove create mode 100755 scripts/restore create mode 100644 scripts/upgrade create mode 100644 sources/extra_files/app/.gitignore create mode 100644 sources/patches/.gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..783a4ae --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*~ +*.sw[op] diff --git a/README.md b/README.md new file mode 100644 index 0000000..cb8b617 --- /dev/null +++ b/README.md @@ -0,0 +1,78 @@ + + +# Mongo Express for YunoHost + +[![Integration level](https://dash.yunohost.org/integration/mongo-express.svg)](https://dash.yunohost.org/appci/app/mongo-express) ![Working status](https://ci-apps.yunohost.org/ci/badges/mongo-express.status.svg) ![Maintenance status](https://ci-apps.yunohost.org/ci/badges/mongo-express.maintain.svg) +[![Install Mongo Express with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=mongo-express) + +*[Lire ce readme en français.](./README_fr.md)* + +> *This package allows you to install Mongo Express quickly and simply on a YunoHost server. +If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* + +## Overview + +Mongo Express is a Web-based MongoDB admin interface written with Node.js, Express and Bootstrap3. +You can as well install a Mongo database - version 4, 5 or 6 in your yunohost server if you want + +### Features +- Optionally installs Mongo server +- Connect to multiple databases +- View/add/delete databases +- View/add/rename/delete collections +- View/add/update/delete documents +- Preview audio/video/image assets inline in collection view +- Nested and/or large objects are collapsible for easy overview +- Async on-demand loading of big document properties (>100KB default) to keep collection view fast +- GridFS support - add/get/delete incredibly large files +- Use BSON data types in documents +- Mobile / Responsive - Bootstrap 3 works passably on small screens when you're in a bind +- Connect and authenticate to individual databases +- Authenticate as admin to view all databases +- Database blacklist/whitelist +- Custom CA and CA validation disabling +- Supports replica sets + + +**Shipped version:** 1.0~ynh3 + +## Screenshots + +![Screenshot of Mongo Express](./doc/screenshots/document-edit.png) +![Screenshot of Mongo Express](./doc/screenshots/collection-view.png) +![Screenshot of Mongo Express](./doc/screenshots/databases-view.png) + +## Disclaimers / important information + +* For now, any user that can log to your server will have admin access to all your Mongo databases ! + * Single-sign on or LDAP are not integrated + * It's strongly recommanded you don't enable public access to the application + +* It doesn't backup Mongo databases + * As mongo-express doesn't require any database by itself, it doesn't backup or restore any of them + * However, yYou can view / edit other applications databases with Mongo-Express + * It will just reinstall the Mongo server if you installed it with this script + * Any yunohost applications using Mongo databases should manage the backup and restore + +## Documentation and resources + +* Upstream app code repository: +* YunoHost documentation for this app: +* Report a bug: + +## Developer info + +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/mongo-express_ynh/tree/testing). + +To try the testing branch, please proceed like that. + +``` bash +sudo yunohost app install https://github.com/YunoHost-Apps/mongo-express_ynh/tree/testing --debug +or +sudo yunohost app upgrade mongo-express -u https://github.com/YunoHost-Apps/mongo-express_ynh/tree/testing --debug +``` + +**More info regarding app packaging:** diff --git a/README_fr.md b/README_fr.md new file mode 100644 index 0000000..42b703b --- /dev/null +++ b/README_fr.md @@ -0,0 +1,78 @@ + + +# Mongo Express pour YunoHost + +[![Niveau d'intégration](https://dash.yunohost.org/integration/mongo-express.svg)](https://dash.yunohost.org/appci/app/mongo-express) ![Statut du fonctionnement](https://ci-apps.yunohost.org/ci/badges/mongo-express.status.svg) ![Statut de maintenance](https://ci-apps.yunohost.org/ci/badges/mongo-express.maintain.svg) +[![Installer Mongo Express avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=mongo-express) + +*[Read this readme in english.](./README.md)* + +> *Ce package vous permet d'installer Mongo Express rapidement et simplement sur un serveur YunoHost. +Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l'installer et en profiter.* + +## Vue d'ensemble + +Mongo Express is a Web-based MongoDB admin interface written with Node.js, Express and Bootstrap3. +You can as well install a Mongo database - version 4, 5 or 6 in your yunohost server if you want + +### Features +- Optionally installs Mongo server +- Connect to multiple databases +- View/add/delete databases +- View/add/rename/delete collections +- View/add/update/delete documents +- Preview audio/video/image assets inline in collection view +- Nested and/or large objects are collapsible for easy overview +- Async on-demand loading of big document properties (>100KB default) to keep collection view fast +- GridFS support - add/get/delete incredibly large files +- Use BSON data types in documents +- Mobile / Responsive - Bootstrap 3 works passably on small screens when you're in a bind +- Connect and authenticate to individual databases +- Authenticate as admin to view all databases +- Database blacklist/whitelist +- Custom CA and CA validation disabling +- Supports replica sets + + +**Version incluse :** 1.0~ynh3 + +## Captures d'écran + +![Capture d'écran de Mongo Express](./doc/screenshots/document-edit.png) +![Capture d'écran de Mongo Express](./doc/screenshots/collection-view.png) +![Capture d'écran de Mongo Express](./doc/screenshots/databases-view.png) + +## Avertissements / informations importantes + +* For now, any user that can log to your server will have admin access to all your Mongo databases ! + * Single-sign on or LDAP are not integrated + * It's strongly recommanded you don't enable public access to the application + +* It doesn't backup Mongo databases + * As mongo-express doesn't require any database by itself, it doesn't backup or restore any of them + * However, yYou can view / edit other applications databases with Mongo-Express + * It will just reinstall the Mongo server if you installed it with this script + * Any yunohost applications using Mongo databases should manage the backup and restore + +## Documentations et ressources + +* Dépôt de code officiel de l'app : +* Documentation YunoHost pour cette app : +* Signaler un bug : + +## Informations pour les développeurs + +Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/mongo-express_ynh/tree/testing). + +Pour essayer la branche testing, procédez comme suit. + +``` bash +sudo yunohost app install https://github.com/YunoHost-Apps/mongo-express_ynh/tree/testing --debug +ou +sudo yunohost app upgrade mongo-express -u https://github.com/YunoHost-Apps/mongo-express_ynh/tree/testing --debug +``` + +**Plus d'infos sur le packaging d'applications :** diff --git a/cac-proxy_ynh.iml b/cac-proxy_ynh.iml new file mode 100644 index 0000000..8021953 --- /dev/null +++ b/cac-proxy_ynh.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/check_process b/check_process new file mode 100644 index 0000000..cf53ac3 --- /dev/null +++ b/check_process @@ -0,0 +1,28 @@ +# See here for more information +# https://github.com/YunoHost/package_check#syntax-check_process-file + +;; Test complet + ; Manifest + domain="domain.tld" + path="/path" + is_public=0 + ; Checks + pkg_linter=1 + setup_sub_dir=1 + setup_root=1 + setup_nourl=0 + setup_private=0 + setup_public=1 + upgrade=1 + upgrade=0 from_commit=CommitHash + backup_restore=1 + multi_instance=0 + port_already_use=0 + change_url=1 +;;; Options +Email=ger@shared.collin.best +Notification=Down +;;; Upgrade options + ; commit=CommitHash + name=Name and date of the commit. + manifest_arg=domain=DOMAIN&path=PATH&is_public=1&language=fr&admin=USER&password=pass&port=666& diff --git a/conf/.env b/conf/.env new file mode 100644 index 0000000..85c138e --- /dev/null +++ b/conf/.env @@ -0,0 +1,5 @@ +CACP_PORT=__PORT__ +CACP_REDIRECT_HOST=https://__DOMAIN__ +CACP_REDIRECT_PATH=__PATH_URL__ +CACP_DEBUG=FALSE +CACP_LOG=FALSE diff --git a/conf/amd64.src b/conf/amd64.src new file mode 100644 index 0000000..dce1de5 --- /dev/null +++ b/conf/amd64.src @@ -0,0 +1,7 @@ +SOURCE_URL=https://github.com/gcollin/cookie-aware-cors-proxy/releases/download/v1.0.15/cookie-aware-cors-proxy.tgz +SOURCE_SUM=21ba12f3a6fe09d9c934be4ce490a575a955a00a7f6ac82d2715e3e037e6c372 +SOURCE_SUM_PRG=sha256sum +SOURCE_FORMAT=tar.gz +SOURCE_IN_SUBDIR=true +SOURCE_FILENAME= +SOURCE_EXTRACT=true diff --git a/conf/nginx.conf b/conf/nginx.conf new file mode 100644 index 0000000..cc967da --- /dev/null +++ b/conf/nginx.conf @@ -0,0 +1,12 @@ +#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; +location __PATH__/ { + + # Path to source + proxy_pass http://localhost:__PORT__/proxy/; + proxy_set_header Host $host; + proxy_read_timeout 86400s; + proxy_send_timeout 86400s; + + # Include SSOWAT user panel. + # include conf.d/yunohost_panel.conf.inc; +} diff --git a/conf/systemd.service b/conf/systemd.service new file mode 100644 index 0000000..8417af7 --- /dev/null +++ b/conf/systemd.service @@ -0,0 +1,50 @@ +[Unit] +Description=Cookie-Aware-Cors-Proxy +After=network.target + +[Service] +Type=simple +User=__APP__ +Group=__APP__ +EnvironmentFile=__FINALPATH__/.env +WorkingDirectory=__FINALPATH__/ +ExecStart=__YNH_NODE__ ./src/server.js +StandardOutput=append:/var/log/__APP__/__APP__.log +StandardError=inherit + +# Sandboxing options to harden security +# Depending on specificities of your service/app, you may need to tweak these +# .. but this should be a good baseline +# Details for these options: https://www.freedesktop.org/software/systemd/man/systemd.exec.html +NoNewPrivileges=yes +PrivateTmp=yes +PrivateDevices=yes +RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK +RestrictNamespaces=yes +RestrictRealtime=yes +DevicePolicy=closed +ProtectClock=yes +ProtectHostname=yes +ProtectProc=invisible +ProtectSystem=full +ProtectControlGroups=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +LockPersonality=yes +SystemCallArchitectures=native +SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap @cpu-emulation @privileged + +# Denying access to capabilities that should not be relevant for webapps +# Doc: https://man7.org/linux/man-pages/man7/capabilities.7.html +CapabilityBoundingSet=~CAP_RAWIO CAP_MKNOD +CapabilityBoundingSet=~CAP_AUDIT_CONTROL CAP_AUDIT_READ CAP_AUDIT_WRITE +CapabilityBoundingSet=~CAP_SYS_BOOT CAP_SYS_TIME CAP_SYS_MODULE CAP_SYS_PACCT +CapabilityBoundingSet=~CAP_LEASE CAP_LINUX_IMMUTABLE CAP_IPC_LOCK +CapabilityBoundingSet=~CAP_BLOCK_SUSPEND CAP_WAKE_ALARM +CapabilityBoundingSet=~CAP_SYS_TTY_CONFIG +CapabilityBoundingSet=~CAP_MAC_ADMIN CAP_MAC_OVERRIDE +CapabilityBoundingSet=~CAP_NET_ADMIN CAP_NET_BROADCAST CAP_NET_RAW +CapabilityBoundingSet=~CAP_SYS_ADMIN CAP_SYS_PTRACE CAP_SYSLOG + +[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..4693706 --- /dev/null +++ b/doc/DESCRIPTION.md @@ -0,0 +1,20 @@ +Mongo Express is a Web-based MongoDB admin interface written with Node.js, Express and Bootstrap3. +You can as well install a Mongo database - version 4, 5 or 6 in your yunohost server if you want + +### Features +- Optionally installs Mongo server +- Connect to multiple databases +- View/add/delete databases +- View/add/rename/delete collections +- View/add/update/delete documents +- Preview audio/video/image assets inline in collection view +- Nested and/or large objects are collapsible for easy overview +- Async on-demand loading of big document properties (>100KB default) to keep collection view fast +- GridFS support - add/get/delete incredibly large files +- Use BSON data types in documents +- Mobile / Responsive - Bootstrap 3 works passably on small screens when you're in a bind +- Connect and authenticate to individual databases +- Authenticate as admin to view all databases +- Database blacklist/whitelist +- Custom CA and CA validation disabling +- Supports replica sets diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..4e3265d --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,9 @@ +* For now, any user that can log to your server will have admin access to all your Mongo databases ! + * Single-sign on or LDAP are not integrated + * It's strongly recommanded you don't enable public access to the application + +* It doesn't backup Mongo databases + * As mongo-express doesn't require any database by itself, it doesn't backup or restore any of them + * However, yYou can view / edit other applications databases with Mongo-Express + * It will just reinstall the Mongo server if you installed it with this script + * Any yunohost applications using Mongo databases should manage the backup and restore diff --git a/doc/screenshots/.gitkeep b/doc/screenshots/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/doc/screenshots/collection-view.png b/doc/screenshots/collection-view.png new file mode 100644 index 0000000000000000000000000000000000000000..e25adbca184873633a692aad052862c0eb771dd9 GIT binary patch literal 104878 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 Nu$-biVd3=s{{z{gK4Jg> literal 0 HcmV?d00001 diff --git a/doc/screenshots/databases-view.png b/doc/screenshots/databases-view.png new file mode 100644 index 0000000000000000000000000000000000000000..bb53b8adc62f615d430c5be82aee28f5974e0e5a GIT binary patch literal 62032 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 literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..dd39518 --- /dev/null +++ b/manifest.json @@ -0,0 +1,46 @@ +{ + "name": "Cookie Aware Cors Proxy", + "id": "cac-proxy", + "packaging_format": 1, + "description": { + "en": "An advanced https proxy allowing you to call other websites from your own web application.", + "fr": "Un proxy https avancé vous permettant d'appeler d'autres sites depuis votre propre application web." + }, + "version": "1.0~ynh1", + "url": "https://github.com/gcollin/cookie-aware-cors-proxy", + "upstream": { + "license": "MIT", + "code": "https://github.com/gcollin/cookie-aware-cors-proxy" + }, + "license": "MIT", + "maintainer": { + "name": "Gerard Collin", + "email": "ger@collin.best" + }, + "requirements": { + "yunohost": ">= 11.0.0" + }, + "multi_instance": false, + "services": [ + "nginx" + ], + "arguments": { + "install": [ + { + "name": "domain", + "type": "domain" + }, + { + "name": "path", + "type": "path", + "example": "/proxy", + "default": "/proxy" + }, + { + "name": "is_public", + "type": "boolean", + "default": true + } + ] + } +} diff --git a/scripts/_common.sh b/scripts/_common.sh new file mode 100644 index 0000000..fc72584 --- /dev/null +++ b/scripts/_common.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +#================================================= +# COMMON VARIABLES +#================================================= +nodejs_version=16 + +# dependencies used by the app (must be on a single line) +pkg_dependencies="" + +#================================================= +# PERSONAL HELPERS +#================================================= + +#================================================= +# EXPERIMENTAL HELPERS +#================================================= + +#================================================= +# FUTURE OFFICIAL HELPERS +#================================================= diff --git a/scripts/backup b/scripts/backup new file mode 100755 index 0000000..0670178 --- /dev/null +++ b/scripts/backup @@ -0,0 +1,74 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts +source ../settings/scripts/_common.sh +source /usr/share/yunohost/helpers + +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +ynh_clean_setup () { + ### Remove this function if there's nothing to clean before calling the remove script. + true +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + +#================================================= +# LOAD SETTINGS +#================================================= +ynh_print_info --message="Loading installation settings..." + +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) + +#================================================= +# 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" + +#================================================= +# BACKUP THE NGINX CONFIGURATION +#================================================= + +ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" + +#================================================= +# SPECIFIC BACKUP +#================================================= +# BACKUP LOGROTATE +#================================================= + +ynh_backup --src_path="/etc/logrotate.d/$app" + +#================================================= +# 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..cddf3e8 --- /dev/null +++ b/scripts/change_url @@ -0,0 +1,140 @@ +#!/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..." --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 +#================================================= +ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." --weight=1 + +# Backup the current version of the app +ynh_backup_before_upgrade +ynh_clean_setup () { + # 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..." --weight=1 + +ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/$app.log" + +#================================================= +# MODIFY URL IN NGINX CONF +#================================================= +ynh_script_progression --message="Updating NGINX web server configuration..." --weight=1 + +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 +#================================================= +ynh_script_progression --message="Updating .env configuration..." + +ynh_backup_if_checksum_is_different --file="$final_path/.env" +domain=$new_domain +path_url=$new_path +ynh_add_config --template=".env" --destination="$final_path/.env" + +# 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/.env" +chown $app:$app "$final_path/.env" + +#================================================= +# GENERIC FINALISATION +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." --weight=1 + +ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" + +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Change of URL completed for $app" --last diff --git a/scripts/install b/scripts/install new file mode 100755 index 0000000..343f30d --- /dev/null +++ b/scripts/install @@ -0,0 +1,285 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +ynh_clean_setup () { + ynh_clean_check_starting +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + +#================================================= +# RETRIEVE ARGUMENTS FROM THE MANIFEST +#================================================= + +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 +#================================================= +### 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 + +# Check machine architecture (in particular, we don't support ARM and 32bit machines) +if [ $YNH_ARCH == "i386" ] || [ $YNH_ARCH == "armel" ] || [ $YNH_ARCH == "armhf" ] || [ $YNH_ARCH == "aarch64" ] || [ $YNH_ARCH == "arm64" ] +then + ynh_die --message="Sorry, but this app can only be installed on a x86, 64 bits machine :(" +fi + +### 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 --message="This path already contains a folder" + +# Register (book) web path +ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url + +#================================================= +# STORE SETTINGS FROM MANIFEST +#================================================= +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=is_public --value=$is_public + +#================================================= +# STANDARD MODIFICATIONS +#================================================= +# FIND AND OPEN A PORT +#================================================= +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=3000) +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..." --weight=1 +# ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port + +#================================================= +# INSTALL DEPENDENCIES +#================================================= +ynh_script_progression --message="Installing dependencies..." --weight=3 + +### `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 +ynh_install_nodejs --nodejs_version=$nodejs_version +ynh_use_nodejs + +#================================================= +# CREATE DEDICATED USER +#================================================= +ynh_script_progression --message="Configuring system user..." --weight=1 + +# Create a system user +ynh_system_user_create --username=$app --home_dir="$final_path" + +#================================================= +# DOWNLOAD, CHECK AND UNPACK SOURCE +#================================================= +ynh_script_progression --message="Setting up source files..." --weight=6 + +### `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/amd64.src + +ynh_app_setting_set --app=$app --key=final_path --value=$final_path +# Download, check integrity, uncompress and patch the source from amd64.src +ynh_setup_source --source_id=amd64 --dest_dir="$final_path" + +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:$app "$final_path" + +#================================================= +# NGINX CONFIGURATION +#================================================= +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 + +#================================================= +# SPECIFIC SETUP +#================================================= +# ... +#================================================= + + +#================================================= +# ADD A CONFIGURATION +#================================================= +ynh_script_progression --message="Adding a configuration file..." --weight=1 + +ynh_add_config --template=".env" --destination="$final_path/.env" + +# 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/.env" +chown $app:$app "$final_path/.env" + +### 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 + +#================================================= +# GENERIC FINALIZATION +#================================================= +# SETUP LOGROTATE +#================================================= +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 + +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= +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="A Cors proxy letting the browser manages cookies and redirects." --log="/var/log/$app/$app.log" + +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." --weight=1 + +# Start a systemd service +ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" + +#================================================= +# SETUP FAIL2BAN +#================================================= +# ynh_script_progression --message="Configuring Fail2Ban..." --weight=1 + +# Create a dedicated Fail2Ban config +# ynh_add_fail2ban_config --logpath="/var/log/nginx/${domain}-error.log" --failregex="Regex to match into the log for a failed login" + +#================================================= +# SETUP SSOWAT +#================================================= +ynh_script_progression --message="Configuring permissions..." --weight=1 + +# 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 + +### N.B. : the following extra permissions only make sense if your app +### does have for example an admin interface or an API. + +# Only the admin can access the admin panel of the app (if the app has an admin panel) +# ynh_permission_create --permission="admin" --url="/admin" --allowed=$admin + +# Everyone can access the API part +# We don't want to display the tile in the SSO so we put --show_tile="false" +# And we don't want the YunoHost admin to be able to remove visitors group to this permission, so we put --protected="true" +# ynh_permission_create --permission="api" --url="/api" --allowed="visitors" --show_tile="false" --protected="true" + +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Installation of $app completed" --last diff --git a/scripts/remove b/scripts/remove new file mode 100755 index 0000000..a35c8e3 --- /dev/null +++ b/scripts/remove @@ -0,0 +1,127 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 + +app=$YNH_APP_INSTANCE_NAME + +domain=$(ynh_app_setting_get --app=$app --key=domain) +port=$(ynh_app_setting_get --app=$app --key=port) +final_path=$(ynh_app_setting_get --app=$app --key=final_path) + +#================================================= +# STANDARD REMOVE +#================================================= +# REMOVE SERVICE INTEGRATION IN YUNOHOST +#================================================= + +# 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..." --weight=1 + yunohost service remove $app +fi + +#================================================= +# STOP AND REMOVE SERVICE +#================================================= +ynh_script_progression --message="Stopping and removing the systemd service..." --weight=1 + +# Remove the dedicated systemd config +ynh_remove_systemd_config + +#================================================= +# REMOVE LOGROTATE CONFIGURATION +#================================================= +ynh_script_progression --message="Removing logrotate configuration..." --weight=1 + +# Remove the app-specific logrotate config +ynh_remove_logrotate + +#================================================= +# REMOVE APP MAIN DIR +#================================================= +ynh_script_progression --message="Removing app main directory..." --weight=1 + +# Remove the app directory securely +ynh_secure_remove --file="$final_path" + +#================================================= +# REMOVE NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Removing NGINX web server configuration..." --weight=1 + +# Remove the dedicated NGINX config +ynh_remove_nginx_config + +#================================================= +# REMOVE DEPENDENCIES +#================================================= +ynh_script_progression --message="Removing dependencies..." --weight=1 + +# Remove metapackage and its dependencies +ynh_remove_app_dependencies + +# Remove the version of Nodejs used if needed +ynh_remove_nodejs + +#================================================= +# CLOSE A PORT +#================================================= + +if yunohost firewall list | grep -q "\- $port$" +then + ynh_script_progression --message="Closing port $port..." --weight=1 + ynh_exec_warn_less yunohost firewall disallow TCP $port +fi + +#================================================= +# REMOVE FAIL2BAN CONFIGURATION +#================================================= +#ynh_script_progression --message="Removing Fail2Ban configuration..." --weight=1 + +# Remove the dedicated Fail2Ban config +#ynh_remove_fail2ban_config + +#================================================= +# SPECIFIC REMOVE +#================================================= +# REMOVE VARIOUS FILES +#================================================= +ynh_script_progression --message="Removing various files..." --weight=1 + +# Remove a cron file +#ynh_secure_remove --file="/etc/cron.d/$app" + +# Remove a directory securely +#ynh_secure_remove --file="/etc/$app" + +# Remove the log files +ynh_secure_remove --file="/var/log/$app" + +#================================================= +# GENERIC FINALIZATION +#================================================= +# REMOVE DEDICATED USER +#================================================= +ynh_script_progression --message="Removing the dedicated system user..." --weight=1 + +# Delete a system user +ynh_system_user_delete --username=$app + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Removal of $app completed" --last diff --git a/scripts/restore b/scripts/restore new file mode 100755 index 0000000..b6f3865 --- /dev/null +++ b/scripts/restore @@ -0,0 +1,137 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts +source ../settings/scripts/_common.sh +source /usr/share/yunohost/helpers + +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +ynh_clean_setup () { + #### Remove this function if there's nothing to clean before calling the remove script. + true +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 + +app=$YNH_APP_INSTANCE_NAME + +domain=$(ynh_app_setting_get --app=$app --key=domain) +path_url=$(ynh_app_setting_get --app=$app --key=path) +final_path=$(ynh_app_setting_get --app=$app --key=final_path) +port=$(ynh_app_setting_get --app=$app --key=port) + +#================================================= +# CHECK IF THE APP CAN BE RESTORED +#================================================= +ynh_script_progression --message="Validating restoration parameters..." --weight=1 + +test ! -d $final_path \ + || ynh_die --message="There is already a directory: $final_path " + +#================================================= +# STANDARD RESTORATION STEPS +#================================================= + + +# RECREATE THE DEDICATED USER +#================================================= +ynh_script_progression --message="Recreating the dedicated system user..." --weight=1 + +# 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..." --weight=1 + +ynh_restore_file --origin_path="$final_path" + +# 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:$app "$final_path" + +#================================================= +# SPECIFIC RESTORATION +#================================================= +# REINSTALL DEPENDENCIES +#================================================= +ynh_script_progression --message="Reinstalling dependencies..." --weight=3 + +# Define and install dependencies +ynh_install_app_dependencies $pkg_dependencies +ynh_install_nodejs --nodejs_version=$nodejs_version +ynh_use_nodejs + +#================================================= +# RESTORE THE NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Restoring the NGINX web server configuration..." --weight=1 + +ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" + +#================================================= +# RESTORE SYSTEMD +#================================================= +ynh_script_progression --message="Restoring the systemd configuration..." --weight=1 + +ynh_restore_file --origin_path="/etc/systemd/system/$app.service" +systemctl enable $app.service --quiet + +#================================================= +# RESTORE THE LOGROTATE CONFIGURATION +#================================================= +ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1 + +ynh_restore_file --origin_path="/etc/logrotate.d/$app" + +mkdir --parents /var/log/$app +chown $app:adm /var/log/$app + +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= +ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 + +yunohost service add $app --description="Mongo Express to easily administer your Mongo databases" --log="/var/log/$app/$app.log" + +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." --weight=1 + +ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" + +#================================================= +# GENERIC FINALIZATION +#================================================= +# RELOAD NGINX AND PHP-FPM +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Restoration completed for $app" --last diff --git a/scripts/upgrade b/scripts/upgrade new file mode 100644 index 0000000..2af66c8 --- /dev/null +++ b/scripts/upgrade @@ -0,0 +1,193 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." --weight=1 + +app=$YNH_APP_INSTANCE_NAME + +domain=$(ynh_app_setting_get --app=$app --key=domain) +path_url=$(ynh_app_setting_get --app=$app --key=path) +final_path=$(ynh_app_setting_get --app=$app --key=final_path) +port=$(ynh_app_setting_get --app=$app --key=port) + +#================================================= +# CHECK VERSION +#================================================= + +### This helper will compare the version of the currently installed app and the version of the upstream package. +### $upgrade_type can have 2 different values +### - UPGRADE_APP if the upstream app version has changed +### - UPGRADE_PACKAGE if only the YunoHost package has changed +### ynh_check_app_version_changed will stop the upgrade if the app is up to date. +### UPGRADE_APP should be used to upgrade the core app only if there's an upgrade to do. +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)..." --weight=1 + +# Backup the current version of the app +ynh_backup_before_upgrade +ynh_clean_setup () { + # 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 +#================================================= +# STOP SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Stopping a systemd service..." --weight=1 + +ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/$app.log" + +#================================================= +# ENSURE DOWNWARD COMPATIBILITY +#================================================= + +#================================================= +# INSTALL DEPENDENCIES +#================================================= +ynh_script_progression --message="Installing dependencies..." --weight=3 + +### `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 +ynh_install_nodejs --nodejs_version=$nodejs_version +ynh_use_nodejs + +#================================================= +# CREATE DEDICATED USER +#================================================= +ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1 + +# Create a dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir="$final_path" + +#================================================= +# DOWNLOAD, CHECK AND UNPACK SOURCE +#================================================= + +if [ "$upgrade_type" == "UPGRADE_APP" ] +then + ynh_script_progression --message="Upgrading source files..." --weight=6 + + # Download, check integrity, uncompress and patch the source from amd64.src + ynh_setup_source --source_id=amd64 --dest_dir="$final_path" + +fi + +# 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:$app "$final_path" + +#================================================= +# NGINX CONFIGURATION +#================================================= +ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=1 + +# Create a dedicated NGINX config +ynh_add_nginx_config + +#================================================= +# SPECIFIC UPGRADE +#================================================= +# ... +#================================================= + +#================================================= +# UPDATE A CONFIG FILE +#================================================= +ynh_script_progression --message="Updating a configuration file..." --weight=1 + +### Same as during install +### +### The file will automatically be backed-up if it's found to be manually modified (because +### ynh_add_config keeps track of the file's checksum) + +ynh_add_config --template=".env" --destination="$final_path/.env" + +# 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/.env" +chown $app:$app "$final_path/.env" + +### 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="Upgrading systemd configuration..." --weight=1 + +# Create a dedicated systemd config +ynh_add_systemd_config + +#================================================= +# GENERIC FINALIZATION +#================================================= +# SETUP LOGROTATE +#================================================= +ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1 + +# Use logrotate to manage app-specific logfile(s) +ynh_use_logrotate --non-append + +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= +ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 + +yunohost service add $app --description="A Cors proxy letting the browser manages cookies and redirects." --log="/var/log/$app/$app.log" + +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." --weight=1 + +ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" + +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Upgrade of $app completed" --last diff --git a/sources/extra_files/app/.gitignore b/sources/extra_files/app/.gitignore new file mode 100644 index 0000000..783a4ae --- /dev/null +++ b/sources/extra_files/app/.gitignore @@ -0,0 +1,2 @@ +*~ +*.sw[op] diff --git a/sources/patches/.gitignore b/sources/patches/.gitignore new file mode 100644 index 0000000..783a4ae --- /dev/null +++ b/sources/patches/.gitignore @@ -0,0 +1,2 @@ +*~ +*.sw[op]