From 007a21e138d5d6bb9405a137ad4739bc70681409 Mon Sep 17 00:00:00 2001 From: Krakinou Date: Fri, 21 Jul 2023 23:19:13 +0200 Subject: [PATCH] convert to v2 w/o mosquitto --- doc/ADMIN_fr.md | 46 +++---------------------- doc/POST_INSTALL_fr.md | 5 --- doc/POST_INTALL.md | 6 ---- doc/PRE_INSTALL.md | 8 ----- doc/PRE_INSTALL_fr.md | 9 ----- doc/PRE_UPGRADE.d/2023.1~ynh1.md | 4 +++ doc/mosquitto.md | 0 manifest.toml | 43 +++++++++-------------- scripts/backup | 17 ++++++++-- scripts/install | 36 +------------------- scripts/remove | 16 +++++++-- scripts/restore | 18 ++++++++-- scripts/upgrade | 58 +++++++------------------------- tests.toml | 29 +++------------- 14 files changed, 85 insertions(+), 210 deletions(-) delete mode 100644 doc/PRE_INSTALL.md delete mode 100644 doc/PRE_INSTALL_fr.md create mode 100644 doc/PRE_UPGRADE.d/2023.1~ynh1.md create mode 100644 doc/mosquitto.md diff --git a/doc/ADMIN_fr.md b/doc/ADMIN_fr.md index c7fdfcb..3475d29 100644 --- a/doc/ADMIN_fr.md +++ b/doc/ADMIN_fr.md @@ -2,54 +2,16 @@ ### Broker MQTT Mosquitto -A l'installation, un broker [MQTT](https://fr.wikipedia.org/wiki/MQTT), [Mosquitto](https://mosquitto.org/), est installé en même temps que Domoticz. -Ce broker nécessite un domaine ou un sous-domaine particulier pour fonctionner (ex : mqtt.your.domain.tld) : il est nécessaire de créer ce domaine auparavant. +Vous pouvez install le broker [MQTT](https://fr.wikipedia.org/wiki/MQTT) [Mosquitto](https://github.com/YunoHost-Apps/mosquitto_ynh) simultanément à domoticz. #### Ajout dans domoticz Pour pouvoir l'utiliser, vous devez paramétrer la communication avec entre domoticz et le broker en suivant la [documentation de domoticz](https://www.domoticz.com/wiki/MQTT#Installing_Mosquitto) dans la partie *Add hardware "MQTT Client Gateway"* -Les users et mot de passe du broker sont automatiquement générés lors de l'installation. Vous pouvez les récupérer avec -```` -sudo yunohost app setting domoticz mqtt_user -sudo yunohost app setting domoticz mqtt_pwd -```` -#### Publier/souscrire - -Par défaut, mosquitto va écouter sur 2 ports: -- Le 1883 sur localhost en protocole mqtt -- Le 8883 en protocole websocket. Nginx redirige le port 443 externe vers ce port en interne. -Pour publier/souscrire sur un topic depuis l'exterieur, vous devez donc utiliser un programme supportant le protocole websocket (ex : la bibliothèque python paho).: - -#### Mosquitto_pub et mosquitto_sub - -Ces deux programmes ne supportent pas le protocole websocket mais uniquement le mqtt : le paramétrage de base ne vous autorise donc pas à les utiliser pour communiquer depuis un client externe. -Si vous les utilisez directement depuis votre serveur, ce genre de syntaxe devrait marcher: -```` -mosquitto_pub -u *user* -P *password* -h mqtt.your.domain.tld -p 1883 -t 'domoticz/in' -m '{ "idx" : 1, "nvalue" : 0, "svalue" : "25.0" }' -```` -De la même manière:c -```` -mosquitto_sub -u *user* -P *password* -h mqtt.your.domain.tld -p 1883 -t 'domoticz/out' -```` -Si vous souhaitez ouvrir le protocole mqtt depuis l'extérieur afin de pouvoir les utiliser depuis un autre serveur, il vous faudra: -- ouvrir le port 1883 sur le firewall Yunohost (**Attention, risque de sécurité**) -- autoriser les adresses IP souhaitées dans la configuration de mosquitto pour ce listener -- paramétrer le tls dans la configuration de mosquitto en donnant accès au crt.pem et key.pem de votre domaine mqtt en les paramétrant respectivement avec les variables certfile et keyfile. **Ceci est obligatoire pour sécuriser la connexion.** - - - - -#### Mise à jour depuis les versions n'ayant pas mosquittoo -Si vous êtes sur le package 2020.2~ynh3 ou inférieur, mosquitto n'est pas installé par défaut. -De même si vous avez choisi de ne pas indiquer de domaine pour mosquitto lors de l'installation initiale. -Pour pouvoir l'installer après coup, faites les actions suivantes: -1. créez un domaine ou sous-domaine pour recevoir les informations (par exemple : 'mqtt.your.domain.tld') -2. connecter vous en ligne de commande à votre serveur -3. taper la commande suivante : `yunohost app setting domoticz mqtt_domain -v mqtt.your.domain.tld` -4. Procédez à la mise à jour. -Si vous êtes déjà sur la dernière version, utiliser la commmande suivante : `yunohost app upgrade domoticz --force` +#### Migration depuis la version 2020.2~ynh7 +Avant la version 2023.2~ynh1, domoticz_ynh pouvait intégrer directement le broker mosquitto lors de son installation. Cette option n'est plus maintenu car trop complexe. +Pour migrer vers depuis une installation de mosquitto "intradomoticz" vers le package officiel de mosquitto pour domoticz, merci de consulter cette [documentation] ### Senseurs, langue et ce genre de choses Toute la configuration de l'application a lieu dans l'application elle même diff --git a/doc/POST_INSTALL_fr.md b/doc/POST_INSTALL_fr.md index f4522e3..848692b 100644 --- a/doc/POST_INSTALL_fr.md +++ b/doc/POST_INSTALL_fr.md @@ -1,11 +1,6 @@ ### Première connexion L'utilisateur *admin* et le mot de passe *domoticz* vous permettront d'accéder au système. Il est bien évidemment recommandé de les modifier immédiatement -Les users et mot de passe du broker mosquitto sont automatiquement générés lors de l'installation. Vous pouvez les récupérer avec -```` -sudo yunohost app setting domoticz mqtt_user -sudo yunohost app setting domoticz mqtt_pwd -```` ### recommandations diff --git a/doc/POST_INTALL.md b/doc/POST_INTALL.md index 9527f00..de109af 100644 --- a/doc/POST_INTALL.md +++ b/doc/POST_INTALL.md @@ -1,12 +1,6 @@ ### Initial access User *admin* with password *domoticz* allow you to access the system. Of course, you should change them immediately. -User and password for mosquitto broker are automatically generated during installation, you may retrieve them with -```` -sudo yunohost app setting domoticz mqtt_user -sudo yunohost app setting domoticz mqtt_pwd -```` - ### recommandation diff --git a/doc/PRE_INSTALL.md b/doc/PRE_INSTALL.md deleted file mode 100644 index 0fb643b..0000000 --- a/doc/PRE_INSTALL.md +++ /dev/null @@ -1,8 +0,0 @@ -## Mosquitto Broker - -During installation, a [MQTT](https://en.wikipedia.org/wiki/MQTT) broker, [Mosquitto](https://mosquitto.org/), may be installed at the same time as Domoticz. It's an optional setting: during install if you set the same domaine as your main app domain, it won't be installed. -This broker requires a dedicated domain or subdomain to work (ex : mqtt.your.domain.tld) : creating this domain prior installation is a prerequisite - -## Installed Version - -For now, domoticz project does not (yet) provide compiled binaries for each release. So, the installed release is a precompiled version from a [project fork](https://github.com/Krakinou/domoticz_build_on_arch). The source code is exactly the same as the original version. diff --git a/doc/PRE_INSTALL_fr.md b/doc/PRE_INSTALL_fr.md deleted file mode 100644 index 3f00f4f..0000000 --- a/doc/PRE_INSTALL_fr.md +++ /dev/null @@ -1,9 +0,0 @@ -## Broker MQTT Mosquitto - -A l'installation, un broker [MQTT](https://fr.wikipedia.org/wiki/MQTT), [Mosquitto](https://mosquitto.org/), peut être installé en même temps que Domoticz. Il est optionnel et si vous indiquez lors de l'installation le même domaine que le domaine principal, il ne sera pas installé. -Ce broker nécessite un domaine ou un sous-domaine particulier pour fonctionner (ex : mqtt.your.domain.tld) : il est nécessaire de créer ce domaine auparavant. - - -## Version installée - -Actuellement, le projet domoticz ne fournit pas (encore) ses sources compilées par version. La version installée est donc une version compilée sur un [fork du projet](https://github.com/Krakinou/domoticz_build_on_arch). Le code source est celui de la version correspondante de domoticz. \ No newline at end of file diff --git a/doc/PRE_UPGRADE.d/2023.1~ynh1.md b/doc/PRE_UPGRADE.d/2023.1~ynh1.md new file mode 100644 index 0000000..129753c --- /dev/null +++ b/doc/PRE_UPGRADE.d/2023.1~ynh1.md @@ -0,0 +1,4 @@ +###Warning### +Starting with 2023.2~ynh1, the integrated mosquitto server into the domoticz_ynh package will not be maintained anymore. +This is due to numerous reasons, the main one being that it render the package overcomplicated while an external package is also available. +You're encouraged to move to the [mosquitto package](https://github.com/YunoHost-Apps/mosquitto_ynh), instruction to doing so being available in the domoticz_ynh documentation. diff --git a/doc/mosquitto.md b/doc/mosquitto.md new file mode 100644 index 0000000..e69de29 diff --git a/manifest.toml b/manifest.toml index 87219f2..a202706 100644 --- a/manifest.toml +++ b/manifest.toml @@ -5,7 +5,7 @@ name = "Domoticz" description.en = "Home automation system that lets you monitor and configure miscellaneous devices" description.fr = "Logiciel de domotique qui vous permet de configurer un grand nombre d'appareils" -version = "2023.1~ynh2" +version = "2023.2~ynh1" maintainers = ["Krakinou"] @@ -37,36 +37,26 @@ ram.runtime = "50M" default = "/domoticz" [install.init_main_permission] - help.fr = "Attention, cette application n'a pas de gestion d'utilisateur par défaut, si vous la mettez public, n'importe qui y aura accès!" - help.en = "Beware, there is no user management by default. If it's set as public, anyone will have access!" type = "group" default = "all_users" - [install.mqtt_domain] - ask.fr = "Domaine MQTT" - ask.en = "MQTT domain" - help.fr = "Domaine pour le serveur MQTT. Remettez le domaine principal si vous ne souhaitez pas l'utiliser. Lire la documentation pour plus d'informations" - help.en = "MQTT server domain. Set the main domain if you don't wish to use it. See the doc for more info" - type = "domain" - optional = true - [resources] [resources.sources.main] - arm64.url = "https://github.com/Krakinou/domoticz_build_on_arch/releases/download/2023.1/domoticz_linux_2023.1_aarch64.tgz" - arm64.sha256 = "e268e298fdd3d165840e0174b22b6c6b6ef06f4c7d4ab596f3bd6e984cda1b15" - armhf.url = "https://github.com/Krakinou/domoticz_build_on_arch/releases/download/2023.1/domoticz_linux_2023.1_armhf.tgz" - armhf.sha256 = "a51f2a2b6238a36ecc4f41d676fc2448313373ab181dd215630260b8230449db" - amd64.url = "https://github.com/Krakinou/domoticz_build_on_arch/releases/download/2023.1/domoticz_linux_2023.1_x86_64.tgz" - amd64.sha256 = "b88e82af38385d33d78d3dbb034f57ac429855e8dcb2da6c7ee17c7c71ba235f" + arm64.url = "https://github.com/domoticz/domoticz/releases/download/2023.2/domoticz_linux_2023.2_aarch64.tgz" + arm64.sha256 = "b8a475e02ba42a9d7fd4d941b66c6f023cbda910193d471b0a50339152c15969" + armhf.url = "https://github.com/domoticz/domoticz/releases/download/2023.2/domoticz_linux_2023.2_armhf.tgz" + armhf.sha256 = "90cf6192caaac73471449fa096bde6f02c43e80d349ae149874e4cdbb6e033a2" + amd64.url = "https://github.com/domoticz/domoticz/releases/download/2023.2/domoticz_linux_2023.2_x86_64.tgz" + amd64.sha256 = "936b25ca9791b595914bc67993205ce7fb8375c11ac7b03e7efc8682a93461cc" format="tar.gz" in_subdir=false extract=true autoupdate.strategy = "latest_github_release" - autoupdate.asset.arm64 = "*_aarch64.tgz" - autoupdate.asset.amd64 = "*_x86_64.tgz" - autoupdate.asset.armhf = "*_armhf.tgz" + autoupdate.asset.arm64 = ".*_aarch64.tgz" + autoupdate.asset.amd64 = ".*_x86_64.tgz" + autoupdate.asset.armhf = ".*_armhf.tgz" [resources.system_user] @@ -75,18 +65,15 @@ ram.runtime = "50M" [resources.permissions] main.url = "/" - api.url = "/_api/__APP_" - api.show_title = false + api.url = "/_api/__APP__" + api.show_tile = false api.allowed = "visitors" + [resources.ports] main.default = 8080 - #to be checked if it can become conditionnal - #ports will always be provisionned... don't know if it's an issue... - mqtt.default = 1883 - mqtt_websocket.default = 8883 [resources.apt] packages = "libudev-dev, python3-dev, libcurl4, libusb-0.1-4" - packages_from_raw_bash = '''if [ "$mqtt_domain" != "$domain" ]; then echo mosquitto mosquitto-clients; fi''' - +# to be deleted in next version + packages_from_raw_bash = '''if [ "$mosquitto" = 1 ]; then echo mosquitto mosquitto-clients; fi''' diff --git a/scripts/backup b/scripts/backup index c30f632..bc94d73 100755 --- a/scripts/backup +++ b/scripts/backup @@ -10,6 +10,18 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers +#from 2023.1~ynh1 +#End of support for mosquitto. However, we still keep trace of if it was installed in order to be able to back it up and remove it correctly +mosquitto=$(ynh_app_setting_get --app=$app --key=mosquitto) +if [[ -z "${mosquitto+x}" ]]; then + if [[ "$mqtt_domain"="$domain" ]]; then + ynh_app_setting_set --app="$app" --key=mosquitto --value=0 + else + ynh_print_warn --message="If you didn't already do it, you should migrate to mosquitto package outside of the app as it will soon not be maintained anymore" + ynh_app_setting_set --app="$app" --key=mosquitto --value=1 + fi +fi + #================================================= # DECLARE DATA AND CONF FILES TO BACKUP #================================================= @@ -27,7 +39,8 @@ ynh_backup --src_path="$install_dir" ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/api_"$app".conf" -[[ "$domain" != "$mqtt_domain" ]] && ynh_backup --src_path="/etc/nginx/conf.d/$mqtt_domain.d/mqtt_$app.conf" --not_mandatory +[[ "$mosquitto" = 1 ]] && ynh_print_warn --message="If you didn't already do it, you should migrate to mosquitto package outside of the app as it will soon not be maintained anymore" +[[ "$mosquitto" = 1 ]] && ynh_backup --src_path="/etc/nginx/conf.d/$mqtt_domain.d/mqtt_$app.conf" --not_mandatory #================================================= # SPECIFIC BACKUP @@ -54,7 +67,7 @@ ynh_backup --src_path="/etc/systemd/system/$app.service" # BACKUP VARIOUS FILES #================================================= -[[ "$domain" != "$mqtt_domain" ]] && ynh_backup --src_path="/etc/mosquitto/conf.d" --not_mandatory +[[ "$mosquitto" = 1 ]] && ynh_backup --src_path="/etc/mosquitto/conf.d" --not_mandatory ynh_backup --src_path="/usr/share/yunohost/hooks/conf_regen/95-nginx_domoticz" diff --git a/scripts/install b/scripts/install index 9bcdb2f..677f041 100755 --- a/scripts/install +++ b/scripts/install @@ -34,6 +34,7 @@ else fi ynh_app_setting_set --app="$app" --key=api_path --value="$api_path" + #================================================= # STANDARD MODIFICATIONS #================================================= @@ -70,34 +71,11 @@ chmod 750 "$install_dir" chmod -R o-rwx "$install_dir" chown -R "$app":"$app" "$install_dir" - -#================================================= -# SET MOSQUITTO SETTINGS -#================================================= -if [ "$domain" != "$mqtt_domain" ]; then - - ynh_script_progression --message="Setting up mosquitto..." --weight=5 - #Setting up conf file for access - ynh_add_config --template="../conf/domoticz_mosquitto.conf" --destination="/etc/mosquitto/conf.d/"$app"_mosquitto.conf" - chmod 644 /etc/mosquitto/conf.d/"$app"_mosquitto.conf - - #Setting up user&pwd for mqtt access - ynh_app_setting_set --app="$app" --key=mqtt_user --value=$(ynh_string_random --length=8) - ynh_app_setting_set --app="$app" --key=mqtt_pwd --value=$(ynh_string_random) - echo $(ynh_app_setting_get --app="$app" --key=mqtt_user):$(ynh_app_setting_get --app="$app" --key=mqtt_pwd) > "/etc/mosquitto/conf.d/"$app"_credentials" - mosquitto_passwd -U "/etc/mosquitto/conf.d/"$app"_credentials" - - ynh_print_info --message="The credential to the mosquitto server has been saved in the settings of the app" -fi - - #================================================= # NGINX CONFIGURATION #================================================= ynh_script_progression --message="Configuring NGINX web server..." --weight=2 -[[ "$domain" != "$mqtt_domain" ]] && ynh_add_config --template="../conf/mqtt_nginx.conf" --destination="/etc/nginx/conf.d/"$mqtt_domain".d/mqtt_"$app".conf" - #Set Hook for nginx domain cp -R ../sources/hooks/conf_regen/95-nginx_domoticz /usr/share/yunohost/hooks/conf_regen/ @@ -128,7 +106,6 @@ chown -R domoticz: /var/log/"$app" # Use logrotate to manage application logfile(s) ynh_use_logrotate -[[ "$domain" != "$mqtt_domain" ]] && ynh_use_logrotate --logfile="/var/log/mosquitto" #================================================= # INTEGRATE SERVICE IN YUNOHOST @@ -136,8 +113,6 @@ ynh_use_logrotate ynh_script_progression --message="Integrating service in YunoHost..." yunohost service add "$app" --description="Domotique open sources" --log="/var/log/$app/$app.log" -[[ "$domain" != "$mqtt_domain" ]] && yunohost service add mosquitto --description="Serveur MQTT pour domoticz" --log="/var/log/mosquitto/mosquitto.log" - #================================================= # START SYSTEMD SERVICE @@ -147,9 +122,6 @@ ynh_script_progression --message="Starting a systemd service..." # Start a systemd service ynh_systemd_action --service_name="$app" --action="start" -#Restarting mosquitto to take changes into account -[[ "$domain" != "$mqtt_domain" ]] && ynh_systemd_action --service_name=mosquitto --action="restart" - #================================================= # SETUP FAIL2BAN #================================================= @@ -172,12 +144,6 @@ ynh_add_fail2ban_config --logpath="$log_file" --failregex="^.*Error: Failed logi #================================================= ynh_script_progression --message="Configuring permissions..." - -#API & MQTT should stay publicly accessible. -#ynh_permission_create --permission="domoticz_API" --label="api" --url="$domain$api_path" --allowed="visitors" --show_tile="false" --protected="true" -[[ "$domain" != "$mqtt_domain" ]] && ynh_permission_create --permission="domoticz_MQTT" --label="MQTT" --url="$mqtt_domain" --allowed="visitors" --show_tile="false" --protected="true" - - #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/remove b/scripts/remove index 699fc6c..d052368 100755 --- a/scripts/remove +++ b/scripts/remove @@ -9,13 +9,25 @@ source _common.sh source /usr/share/yunohost/helpers +#from 2023.1~ynh1 +#End of support for mosquitto. However, we still keep trace of if it was installed in order to be able to back it up and remove it correctly +mosquitto=$(ynh_app_setting_get --app=$app --key=mosquitto) +if [[ -z "${mosquitto+x}" ]]; then + if [[ "$mqtt_domain"="$domain" ]]; then + ynh_app_setting_set --app="$app" --key=mosquitto --value=0 + else + ynh_print_warn --message="If you didn't already do it, you should migrate to mosquitto package outside of the app as it will soon not be maintained anymore" + ynh_app_setting_set --app="$app" --key=mosquitto --value=1 + fi +fi + #================================================= # STANDARD REMOVE #================================================= # REMOVE SERVICE INTEGRATION IN YUNOHOST #================================================= -if [ "$domain" != "$mqtt_domain" ]; then +if [ "$mosquitto" = 1 ]; then ynh_script_progression --message="Removing system configurations related to Mosquitto..." --weight=1 yunohost service remove mosquitto ynh_secure_remove --file="/etc/mosquitto/conf.d" @@ -23,8 +35,6 @@ if [ "$domain" != "$mqtt_domain" ]; then ynh_secure_remove --file="/etc/nginx/conf.d/"$mqtt_domain".d/mqtt_"$app".conf" yunohost tools regen-conf postfix ynh_secure_remove --file="/var/log/mosquitto" - - fi ynh_script_progression --message="Removing system configurations related to $app..." --weight=1 diff --git a/scripts/restore b/scripts/restore index fafb142..2923585 100755 --- a/scripts/restore +++ b/scripts/restore @@ -17,6 +17,17 @@ then current_mach="armv7l" fi +#from 2023.1~ynh1 +#End of support for mosquitto. However, we still keep trace of if it was installed in order to be able to back it up and remove it correctly +mosquitto=$(ynh_app_setting_get --app=$app --key=mosquitto) +if [[ -z "${mosquitto+x}" ]]; then + if [[ "$mqtt_domain"="$domain" ]]; then + ynh_app_setting_set --app="$app" --key=mosquitto --value=0 + else + ynh_print_warn --message="If you didn't already do it, you should migrate to mosquitto package outside of the app as it will soon not be maintained anymore" + ynh_app_setting_set --app="$app" --key=mosquitto --value=1 + fi +fi #================================================= # CHECK IF THE APP CAN BE RESTORED @@ -71,8 +82,9 @@ chown -R "$app":"$app" "$install_dir" #================================================= # SET MOSQUITTO SETTINGS #================================================= -if [ "$domain" != "$mqtt_domain" ]; then +if [ "$mosquitto" = 1 ]; then ynh_script_progression --message="Reinstalling up mosquitto..." --weight=5 + ynh_print_warn --message="If you didn't already do it, you should migrate to mosquitto package outside of the app as it will soon not be maintained anymore" ynh_restore_file --origin_path="/etc/mosquitto/conf.d" --not_mandatory fi @@ -90,7 +102,7 @@ systemctl enable "$app".service --quiet ynh_script_progression --message="Integrating service in YunoHost..." yunohost service add "$app" --description="Domotique open sources" --log="/var/log/$app/$app.log" -[[ "$domain" != "$mqtt_domain" ]] && yunohost service add mosquitto --description="Serveur MQTT pour domoticz" --log="/var/log/mosquitto/mosquitto.log" +[[ "$mosquitto" = 1 ]] && yunohost service add mosquitto --description="Serveur MQTT pour domoticz" --log="/var/log/mosquitto/mosquitto.log" #================================================= @@ -101,7 +113,7 @@ ynh_script_progression --message="Starting a systemd service..." ynh_systemd_action --service_name="$app" --action="start" --log_path="/var/log/$app/$app.log" #Restarting mosquitto to take changes into account -[[ "$domain" != "$mqtt_domain" ]] && ynh_systemd_action --service_name=mosquitto --action="restart" +[[ "$mosquitto" = 1 ]] && ynh_systemd_action --service_name=mosquitto --action="restart" #================================================= # RESTORE THE LOGROTATE CONFIGURATION diff --git a/scripts/upgrade b/scripts/upgrade index 9fd8618..208f037 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -9,6 +9,18 @@ source _common.sh source /usr/share/yunohost/helpers +#from 2023.1~ynh1 +#End of support for mosquitto. However, we still keep trace of if it was installed in order to be able to back it up and remove it correctly +mosquitto=$(ynh_app_setting_get --app=$app --key=mosquitto) +if [[ -z "${mosquitto+x}" ]]; then + if [[ "$mqtt_domain"="$domain" ]]; then + ynh_app_setting_set --app="$app" --key=mosquitto --value=0 + else + ynh_print_warn --message="If you didn't already do it, you should migrate to mosquitto package outside of the app as it will soon not be maintained anymore" + ynh_app_setting_set --app="$app" --key=mosquitto --value=1 + fi +fi + #================================================= # CHECK VERSION #================================================= @@ -58,22 +70,6 @@ if [ -z "$api_path" ]; then ynh_app_setting_set --app="$app" --key=api_path --value="$api_path" fi -#Previous version did not have settings stored and -#variable may not be bound. -if [[ -z "${mqtt_domain+x}" ]]; then - mqtt_domain="$domain" - ynh_app_setting_set --app="$app" --key=mqtt_domain --value="$mqtt_domain" -fi - -# Create the permission "domoticz_MQTT" only if it doesn't exist. -if [ "$domain" != "$mqtt_domain" ]; then - if ! ynh_permission_exists --permission="domoticz_MQTT" - then - # API Authorization with dedicated URL - ynh_permission_create --permission="domoticz_MQTT" --label="MQTT" --url="$mqtt_domain" --allowed="visitors" --show_tile="false" --protected="true" - fi -fi - #remove unwanted log folder if [ -d "/var/log/$app/$app" ]; then ynh_secure_remove "/var/log/$app/$app" @@ -114,34 +110,12 @@ chmod 750 "$install_dir" chmod -R o-rwx "$install_dir" chown -R "$app":"$app" "$install_dir" -#================================================= -# SET MOSQUITTO SETTINGS -#================================================= -if [ "$domain" != "$mqtt_domain" ]; then - ynh_script_progression --message="Setting up mosquitto..." --weight=5 - - #Setting up conf file for access - if [ ! -f "/etc/mosquitto/conf.d/"$app"_mosquitto.conf" ] - then - ynh_add_config --template="../conf/domoticz_mosquitto.conf" --destination="/etc/mosquitto/conf.d/"$app"_mosquitto.conf" - chmod 644 /etc/mosquitto/conf.d/"$app"_mosquitto.conf - - #Setting up user&pwd for mqtt access - ynh_app_setting_set --app="$app" --key=mqtt_user --value=$(ynh_string_random --length=8) - ynh_app_setting_set --app="$app" --key=mqtt_pwd --value=$(ynh_string_random) - echo $(ynh_app_setting_get --app="$app" --key=mqtt_user):$(ynh_app_setting_get --app="$app" --key=mqtt_pwd) > "/etc/mosquitto/conf.d/"$app"_credentials" - mosquitto_passwd -U "/etc/mosquitto/conf.d/"$app"_credentials" - - ynh_print_info --message="The credential to the mosquitto server has been saved in the settings of the app" - fi -fi - #================================================= # NGINX CONFIGURATION #================================================= ynh_script_progression --message="Upgrading NGINX web server configuration..." -[[ "$domain" != "$mqtt_domain" ]] && ynh_add_config --template="../conf/mqtt_nginx.conf" --destination="/etc/nginx/conf.d/"$mqtt_domain".d/mqtt_"$app".conf" +[[ "$mosquitto" = 1 ]] && ynh_add_config --template="../conf/mqtt_nginx.conf" --destination="/etc/nginx/conf.d/"$mqtt_domain".d/mqtt_"$app".conf" #Set Hook for nginx domain cp -R ../sources/hooks/conf_regen/95-nginx_domoticz /usr/share/yunohost/hooks/conf_regen/ @@ -177,7 +151,6 @@ chown -R domoticz: /var/log/"$app" # Use logrotate to manage app-specific logfile(s) ynh_use_logrotate --logfile="/var/log/$app" --non-append -[[ ! -z "$mqtt_domain" ]] && ynh_use_logrotate --logfile="/var/log/mosquitto" #================================================= # SETUP FAIL2BAN @@ -202,8 +175,6 @@ ynh_add_fail2ban_config --logpath="$log_file" --failregex="^.*Error: Failed logi ynh_script_progression --message="Integrating service in YunoHost..." yunohost service add "$app" --description="Domotique open sources" --log="/var/log/$app/$app.log" -[[ "$domain" != "$mqtt_domain" ]] && yunohost service add mosquitto --description="Serveur MQTT pour domoticz" --log="/var/log/mosquitto/mosquitto.log" - #================================================= # START SYSTEMD SERVICE @@ -212,9 +183,6 @@ ynh_script_progression --message="Starting a systemd service..." --weight=3 ynh_systemd_action --service_name="$app" --action="start" -#Restarting mosquitto to take changes from /etc/mosquitto/conf.d/*.conf into account -[[ "$domain" != "$mqtt_domain" ]] && ynh_systemd_action --service_name=mosquitto --action="restart" - #================================================= # END OF SCRIPT #================================================= diff --git a/tests.toml b/tests.toml index 8998a54..5033e13 100644 --- a/tests.toml +++ b/tests.toml @@ -2,12 +2,11 @@ test_format = 1.0 #without Mosquitto [default] - - args.mqtt_domain="sub.domain.tld" test_upgrade_from.27311ad.name = "2022.2" test_upgrade_from.27311ad.args.mqtt_domain="sub.domain.tld" # exclude = ["package_linter", "install.root", "install.subdir", "install.private", "install.multi", "backup_restore", "upgrade", "upgrade.27311ad", "change_url"] +# exclude = ["package_linter", "install.root", "install.private", "install.multi", "backup_restore", "upgrade", "upgrade.27311ad", "change_url"] [With_Mosquitto_upgrade_with_mosquitto] preinstall = """ @@ -15,30 +14,12 @@ test_format = 1.0 yunohost domain add mqtt.domain.tld """ - args.mqtt_domain="mqtt.domain.tld" - - exclude = ["package_linter"] - - test_upgrade_from.27311ad.name = "2022.2 with mosquitto" - test_upgrade_from.27311ad.args.mqtt_domain="mqtt.domain.tld" - - -[Without_Mosquitto_upgrade_with_mosquitto] -# preinstall = """ -# set -euxo pipefail -# yunohost domain add mqtt.domain.tld -# """ - preupgrade = """ set -euxo pipefail yunohost domain add mqtt.domain.tld - yunohost app setting domoticz mqtt_domain -v mqtt.domain.tld """ - - args.mqtt_domain="sub.domain.tld" - only = ["upgrade","upgrade.27311ad"] - -# exclude = ["package_linter", "install.root", "install.subdir", "install.private", "install.multi", "backup_restore", "change_url"] - test_upgrade_from.27311ad.name = "2022.2 without mosquitto" - test_upgrade_from.27311ad.args.mqtt_domain="sub.domain.tld" \ No newline at end of file + exclude = ["package_linter", "install.root", "install.subdir", "install.private", "install.multi", "backup_restore", "upgrade", "change_url"] + + test_upgrade_from.27311ad.name = "2022.2 with mosquitto" + test_upgrade_from.27311ad.args.mqtt_domain="mqtt.domain.tld" \ No newline at end of file