mirror of
https://github.com/YunoHost-Apps/yunomonitor_ynh.git
synced 2024-09-03 17:46:11 +02:00
manifestv2
This commit is contained in:
parent
64c9fef98b
commit
d6fb14fae5
14 changed files with 189 additions and 410 deletions
|
@ -1,20 +0,0 @@
|
||||||
;; Test complet
|
|
||||||
; Manifest
|
|
||||||
monitored_servers="remote_domain.tld,remote_domain2.tld"
|
|
||||||
monitoring_servers=""
|
|
||||||
mails="john@example.com"
|
|
||||||
sms_api=""
|
|
||||||
; Checks
|
|
||||||
pkg_linter=1
|
|
||||||
setup_sub_dir=0
|
|
||||||
setup_root=0
|
|
||||||
setup_nourl=1
|
|
||||||
setup_private=0
|
|
||||||
setup_public=0
|
|
||||||
upgrade=1
|
|
||||||
# 1.1.0~ynh2
|
|
||||||
upgrade=1 from_commit=4feb4a78181518956e7d230a2ab67d96992f8563
|
|
||||||
backup_restore=1
|
|
||||||
multi_instance=0
|
|
||||||
port_already_use=0
|
|
||||||
change_url=0
|
|
|
@ -1,7 +0,0 @@
|
||||||
SOURCE_URL=https://github.com/zamentur/yunomonitor/archive/0a2c295485dbda9da3b97353e094ef414c939609.tar.gz
|
|
||||||
SOURCE_SUM=e9c63885c5158771a00ae892967a0f7d1f3f538f26d124f8f096bb7b8ff3113a
|
|
||||||
SOURCE_SUM_PRG=sha256sum
|
|
||||||
SOURCE_FORMAT=tar.gz
|
|
||||||
SOURCE_IN_SUBDIR=true
|
|
||||||
SOURCE_FILENAME=yunomonitor-1-1-0.tar.gz
|
|
||||||
SOURCE_EXTRACT=true
|
|
|
@ -1,5 +1,5 @@
|
||||||
location ^~ '/.well-known/yunomonitor/' {
|
location ^~ '/.well-known/yunomonitor/' {
|
||||||
|
|
||||||
default_type "text/plain";
|
default_type "text/plain";
|
||||||
alias __FINALPATH__/well-known/;
|
alias __INSTALL_DIR__/well-known/;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,8 @@ After=network.target
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
User=__APP__
|
User=__APP__
|
||||||
Group=__APP__
|
Group=__APP__
|
||||||
WorkingDirectory=__FINALPATH__
|
WorkingDirectory=__INSTALL_DIR__
|
||||||
ExecStart=__FINALPATH__/yunomonitor.py -c __FINALPATH__/conf/__APP__.yml
|
ExecStart=__INSTALL_DIR__/yunomonitor.py -c __INSTALL_DIR__/conf/__APP__.yml
|
||||||
User=root
|
User=root
|
||||||
Group=root
|
Group=root
|
||||||
|
|
||||||
|
|
|
@ -1,73 +0,0 @@
|
||||||
{
|
|
||||||
"name": "YunoMonitor",
|
|
||||||
"id": "yunomonitor",
|
|
||||||
"packaging_format": 1,
|
|
||||||
"description": {
|
|
||||||
"en": "Home made tool to monitor automatically your servers",
|
|
||||||
"fr": "Outil pour surveiller automatiquement vos serveurs"
|
|
||||||
},
|
|
||||||
"version": "1.1.0~ynh3",
|
|
||||||
"url": "https://github.com/zamentur/yunomonitor",
|
|
||||||
"upstream": {
|
|
||||||
"license": "AGPL-3.0",
|
|
||||||
"website": "https://github.com/zamentur/yunomonitor",
|
|
||||||
"admindoc": "https://github.com/zamentur/yunomonitor/blob/master/README.md",
|
|
||||||
"code": "https://github.com/zamentur/yunomonitor"
|
|
||||||
},
|
|
||||||
"license": "AGPL-3.0",
|
|
||||||
"maintainer": {
|
|
||||||
"name": "ljf",
|
|
||||||
"email": "ljf+@reflexlibre.net",
|
|
||||||
"url": "https://reflexlibre.net"
|
|
||||||
},
|
|
||||||
"requirements": {
|
|
||||||
"yunohost": ">= 4.3.0"
|
|
||||||
},
|
|
||||||
"multi_instance": false,
|
|
||||||
"services": [
|
|
||||||
"nginx"
|
|
||||||
],
|
|
||||||
"arguments": {
|
|
||||||
"install": [
|
|
||||||
{
|
|
||||||
"name": "monitored_servers",
|
|
||||||
"type": "string",
|
|
||||||
"ask": {
|
|
||||||
"en": "List all servers you want to monitor with this server (separated by comma)"
|
|
||||||
},
|
|
||||||
"help": {
|
|
||||||
"en": "You need to install yunomonitor on those servers or add manually a custom configuration file for each server to monitor"
|
|
||||||
},
|
|
||||||
"example": "example.com,example2.com",
|
|
||||||
"default": "localhost"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "monitoring_servers",
|
|
||||||
"type": "string",
|
|
||||||
"ask": {
|
|
||||||
"en": "List all monitoring servers that monitored this server (separated by comma)"
|
|
||||||
},
|
|
||||||
"example": "example.com,example2.com",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "mails",
|
|
||||||
"type": "string",
|
|
||||||
"ask": {
|
|
||||||
"en": "Mails to which send alerts about servers monitored by this server (separated by comma)"
|
|
||||||
},
|
|
||||||
"example": "john@example.com,jane@example.com",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "sms_api",
|
|
||||||
"type": "string",
|
|
||||||
"ask": {
|
|
||||||
"en": "List here an SMS URL to use to send alerts by SMS (e.g. the internet provider 'free' offers some API for that)"
|
|
||||||
},
|
|
||||||
"example": "https://smsapi.free-mobile.fr/sendmsg?user=USERID&pass=PASSWORD&msg=",
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
80
manifest.toml
Normal file
80
manifest.toml
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
#:schema https://raw.githubusercontent.com/YunoHost/apps/master/schemas/manifest.v2.schema.json
|
||||||
|
|
||||||
|
packaging_format = 2
|
||||||
|
|
||||||
|
id = "yunomonitor"
|
||||||
|
name = "YunoMonitor"
|
||||||
|
description.en = "Home made tool to monitor automatically your servers"
|
||||||
|
description.fr = "Outil pour surveiller automatiquement vos serveurs"
|
||||||
|
|
||||||
|
version = "1.1.0~ynh3"
|
||||||
|
|
||||||
|
maintainers = ["ljf"]
|
||||||
|
|
||||||
|
[upstream]
|
||||||
|
license = "AGPL-3.0"
|
||||||
|
code = "https://github.com/zamentur/yunomonitor"
|
||||||
|
admindoc = "https://github.com/zamentur/yunomonitor/blob/master/README.md"
|
||||||
|
fund = "https://donate.yunohost.org/"
|
||||||
|
|
||||||
|
[integration]
|
||||||
|
yunohost = ">= 4.3.0"
|
||||||
|
architectures = "all"
|
||||||
|
multi_instance = false
|
||||||
|
ldap = "not_relevant"
|
||||||
|
sso = "not_relevant"
|
||||||
|
disk = "50M" # FIXME: replace with an **estimate** minimum disk requirement. e.g. 20M, 400M, 1G, ...
|
||||||
|
ram.build = "50M" # FIXME: replace with an **estimate** minimum ram requirement. e.g. 50M, 400M, 1G, ...
|
||||||
|
ram.runtime = "50M" # FIXME: replace with an **estimate** minimum ram requirement. e.g. 50M, 400M, 1G, ...
|
||||||
|
|
||||||
|
[install]
|
||||||
|
[install.monitored_servers]
|
||||||
|
ask.en = "List all servers you want to monitor with this server (separated by comma)"
|
||||||
|
help.en = "You need to install yunomonitor on those servers or add manually a custom configuration file for each server to monitor"
|
||||||
|
type = "string"
|
||||||
|
example = "example.com,example2.com"
|
||||||
|
default = "localhost"
|
||||||
|
|
||||||
|
[install.monitoring_servers]
|
||||||
|
ask.en = "List all monitoring servers that monitored this server (separated by comma)"
|
||||||
|
type = "string"
|
||||||
|
example = "example.com,example2.com"
|
||||||
|
optional = true
|
||||||
|
|
||||||
|
[install.mails]
|
||||||
|
ask.en = "Mails to which send alerts about servers monitored by this server (separated by comma)"
|
||||||
|
type = "string"
|
||||||
|
example = "john@example.com,jane@example.com"
|
||||||
|
optional = true
|
||||||
|
|
||||||
|
[install.sms_api]
|
||||||
|
ask.en = "List here an SMS URL to use to send alerts by SMS (e.g. the internet provider 'free' offers some API for that)"
|
||||||
|
type = "string"
|
||||||
|
example = "https://smsapi.free-mobile.fr/sendmsg?user=USERID&pass=PASSWORD&msg="
|
||||||
|
optional = true
|
||||||
|
|
||||||
|
[resources]
|
||||||
|
[resources.sources.main]
|
||||||
|
url = "https://github.com/zamentur/yunomonitor/archive/0a2c295485dbda9da3b97353e094ef414c939609.tar.gz"
|
||||||
|
sha256 = "e9c63885c5158771a00ae892967a0f7d1f3f538f26d124f8f096bb7b8ff3113a"
|
||||||
|
autoupdate.strategy = "latest_github_commit"
|
||||||
|
|
||||||
|
[resources.system_user]
|
||||||
|
|
||||||
|
[resources.install_dir]
|
||||||
|
|
||||||
|
[resources.permissions]
|
||||||
|
|
||||||
|
[resources.apt]
|
||||||
|
packages = [
|
||||||
|
"python3-dbus",
|
||||||
|
"python3-pip",
|
||||||
|
"python3-cryptography",
|
||||||
|
"python3-paramiko",
|
||||||
|
"python3-yaml",
|
||||||
|
"python3-dnspython",
|
||||||
|
"python3-requests-toolbelt",
|
||||||
|
"python3-spf",
|
||||||
|
"whois",
|
||||||
|
"smartmontools",
|
||||||
|
]
|
|
@ -4,13 +4,28 @@
|
||||||
# COMMON VARIABLES
|
# COMMON VARIABLES
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# dependencies used by the app
|
|
||||||
pkg_dependencies="python3-dbus python3-cryptography python3-paramiko python3-yaml python3-dnspython python3-requests-toolbelt python3-spf whois smartmontools"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# PERSONAL HELPERS
|
# PERSONAL HELPERS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
_yunomonitor_add_nginx_config() {
|
||||||
|
# Create a dedicated nginx config
|
||||||
|
# Note: i don't use the helper because i need this file to be named "000-"
|
||||||
|
finalnginxconf="/etc/nginx/conf.d/$domain.d/000-$app.conf"
|
||||||
|
ynh_backup_if_checksum_is_different --file="$finalnginxconf"
|
||||||
|
cp ../conf/nginx.conf "$finalnginxconf"
|
||||||
|
ynh_replace_string --match_string="__INSTALL_DIR__" --replace_string="$install_dir" --target_file="$finalnginxconf"
|
||||||
|
ynh_store_file_checksum --file="$finalnginxconf"
|
||||||
|
}
|
||||||
|
|
||||||
|
_yunomonitor_remove_nginx_config() {
|
||||||
|
finalnginxconf="/etc/nginx/conf.d/$domain.d/000-$app.conf"
|
||||||
|
ynh_secure_remove --file="$finalnginxconf"
|
||||||
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
|
}
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# EXPERIMENTAL HELPERS
|
# EXPERIMENTAL HELPERS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -20,26 +35,13 @@ ynh_export () {
|
||||||
for var in $@;
|
for var in $@;
|
||||||
do
|
do
|
||||||
ynh_arg=$(echo $var | awk '{print toupper($0)}')
|
ynh_arg=$(echo $var | awk '{print toupper($0)}')
|
||||||
if [ "$var" == "path_url" ]; then
|
if [ "$var" == "path" ]; then
|
||||||
ynh_arg="PATH"
|
ynh_arg="PATH"
|
||||||
fi
|
fi
|
||||||
ynh_arg="YNH_APP_ARG_$ynh_arg"
|
ynh_arg="YNH_APP_ARG_$ynh_arg"
|
||||||
export $var="${!ynh_arg}"
|
export $var="${!ynh_arg}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
# Save listed var in YunoHost app settings
|
|
||||||
# usage: ynh_save_args VARNAME1 [VARNAME2 [...]]
|
|
||||||
|
|
||||||
ynh_save_args () {
|
|
||||||
for var in $@;
|
|
||||||
do
|
|
||||||
local setting_var="$var"
|
|
||||||
if [ "$var" == "path_url" ]; then
|
|
||||||
setting_var="path"
|
|
||||||
fi
|
|
||||||
ynh_app_setting_set "$app" "$setting_var" "${!var}"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# FUTURE OFFICIAL HELPERS
|
# FUTURE OFFICIAL HELPERS
|
||||||
|
|
|
@ -10,23 +10,6 @@
|
||||||
source ../settings/scripts/_common.sh
|
source ../settings/scripts/_common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# MANAGE SCRIPT FAILURE
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
# 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
|
# DECLARE DATA AND CONF FILES TO BACKUP
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -36,7 +19,7 @@ ynh_print_info --message="Declaring files to be backed up..."
|
||||||
# BACKUP THE APP MAIN DIR
|
# BACKUP THE APP MAIN DIR
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_backup --src_path="$final_path"
|
ynh_backup --src_path="$install_dir"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE NGINX CONFIGURATION
|
# BACKUP THE NGINX CONFIGURATION
|
||||||
|
|
118
scripts/install
118
scripts/install
|
@ -10,83 +10,36 @@ source _common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# MANAGE SCRIPT FAILURE
|
# STORE SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_clean_setup () {
|
domain=$(yunohost domain list --json | jq -r '.["main"]')
|
||||||
true
|
path=/.well-known/yunomonitor/
|
||||||
}
|
|
||||||
# Exit if an error occurs during the execution of the script
|
|
||||||
ynh_abort_if_errors
|
|
||||||
|
|
||||||
#=================================================
|
ynh_app_setting_set --app="$app" --key="domain" --value="$domain"
|
||||||
# RETRIEVE ARGUMENTS FROM THE MANIFEST
|
ynh_app_setting_set --app="$app" --key="path" --value="$path"
|
||||||
#=================================================
|
|
||||||
|
|
||||||
export domain=$(cat /etc/yunohost/current_host)
|
# FIXME: required?
|
||||||
export path_url=/.well-known/yunomonitor/
|
|
||||||
ynh_export monitored_servers monitoring_servers mails sms_api
|
ynh_export monitored_servers monitoring_servers mails sms_api
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Validating installation parameters..." --weight=1
|
|
||||||
|
|
||||||
final_path=/opt/$app
|
|
||||||
test ! -e "$final_path" || ynh_die --message="This path already contains a folder"
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# STORE SETTINGS FROM MANIFEST
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Storing installation settings..." --weight=1
|
|
||||||
|
|
||||||
ynh_save_args domain path_url monitored_servers monitoring_servers mails sms_api
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# STANDARD MODIFICATIONS
|
|
||||||
#=================================================
|
|
||||||
# INSTALL DEPENDENCIES
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Installing dependencies..." --weight=1
|
|
||||||
|
|
||||||
ynh_install_app_dependencies $pkg_dependencies
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# 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
|
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Setting up source files..." --weight=1
|
ynh_script_progression --message="Setting up source files..." --weight=1
|
||||||
|
|
||||||
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
|
ynh_setup_source --dest_dir="$install_dir"
|
||||||
# Download, check integrity, uncompress and patch the source from app.src
|
|
||||||
ynh_setup_source --dest_dir="$final_path"
|
|
||||||
|
|
||||||
chmod 750 "$final_path"
|
chmod 750 "$install_dir"
|
||||||
chmod -R o-rwx "$final_path"
|
chmod -R o-rwx "$install_dir"
|
||||||
chown -R $app:www-data "$final_path"
|
chown -R "$app:www-data" "$install_dir"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# NGINX CONFIGURATION
|
# NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Configuring NGINX web server..." --weight=1
|
ynh_script_progression --message="Configuring NGINX web server..." --weight=1
|
||||||
|
|
||||||
# Create a dedicated nginx config
|
_yunomonitor_add_nginx_config
|
||||||
# Note: i don't use the helper because i need this file to be named "000-"
|
|
||||||
finalnginxconf="/etc/nginx/conf.d/$domain.d/000-$app.conf"
|
|
||||||
ynh_backup_if_checksum_is_different --file="$finalnginxconf"
|
|
||||||
cp ../conf/nginx.conf "$finalnginxconf"
|
|
||||||
ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path" --target_file="$finalnginxconf"
|
|
||||||
ynh_store_file_checksum --file="$finalnginxconf"
|
|
||||||
ynh_systemd_action --service_name=nginx --action=reload
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SPECIFIC SETUP
|
# SPECIFIC SETUP
|
||||||
|
@ -95,8 +48,8 @@ ynh_systemd_action --service_name=nginx --action=reload
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Building Yunomonitor..."
|
ynh_script_progression --message="Building Yunomonitor..."
|
||||||
|
|
||||||
pushd "$final_path"
|
pushd "$install_dir"
|
||||||
pip3 install pycryptodome
|
python3 -m pip install pycryptodome
|
||||||
popd
|
popd
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -105,50 +58,41 @@ popd
|
||||||
ynh_script_progression --message="Configuring a systemd service..."
|
ynh_script_progression --message="Configuring a systemd service..."
|
||||||
|
|
||||||
ynh_add_systemd_config
|
ynh_add_systemd_config
|
||||||
cp ../conf/systemd.timer "/etc/systemd/system/$app.timer"
|
ynh_add_config --template="systemd.timer" --destination="/etc/systemd/system/$app.timer"
|
||||||
ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="/etc/systemd/system/$app.timer"
|
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl enable $app.timer --quiet
|
systemctl enable "$app.timer" --quiet
|
||||||
systemctl start $app.timer
|
systemctl start "$app.timer"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# ADD A CONFIGURATION
|
# ADD A CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Adding a configuration file..."
|
ynh_script_progression --message="Adding a configuration file..."
|
||||||
|
|
||||||
echo "mails: [$mails]" > $final_path/conf/$app.yml
|
echo "mails: [$mails]" > $install_dir/conf/$app.yml
|
||||||
echo "sms_apis: [$sms_api]" >> $final_path/conf/$app.yml
|
echo "sms_apis: [$sms_api]" >> $install_dir/conf/$app.yml
|
||||||
echo "monitored_servers: [$monitored_servers]" >> $final_path/conf/$app.yml
|
echo "monitored_servers: [$monitored_servers]" >> $install_dir/conf/$app.yml
|
||||||
echo "monitoring_servers: [$monitoring_servers]" >> $final_path/conf/$app.yml
|
echo "monitoring_servers: [$monitoring_servers]" >> $install_dir/conf/$app.yml
|
||||||
echo "cachet_apis: []" >> $final_path/conf/$app.yml
|
echo "cachet_apis: []" >> $install_dir/conf/$app.yml
|
||||||
sed -i 's/,/","/g' $final_path/conf/$app.yml
|
sed -i 's/,/","/g' $install_dir/conf/$app.yml
|
||||||
sed -i 's/\[/["/g' $final_path/conf/$app.yml
|
sed -i 's/\[/["/g' $install_dir/conf/$app.yml
|
||||||
sed -i 's/\]/"]/g' $final_path/conf/$app.yml
|
sed -i 's/\]/"]/g' $install_dir/conf/$app.yml
|
||||||
sed -i 's/\[""\]/[]/g' $final_path/conf/$app.yml
|
sed -i 's/\[""\]/[]/g' $install_dir/conf/$app.yml
|
||||||
|
|
||||||
# Calculate and store the config file checksum into the app settings
|
# Calculate and store the config file checksum into the app settings
|
||||||
ynh_store_file_checksum --file="$final_path/conf/$app.yml"
|
ynh_store_file_checksum --file="$install_dir/conf/$app.yml"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# INIT IGNORE FILE
|
# INIT IGNORE FILE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
echo "method level server message target" > $final_path/conf/ignore_alert.csv
|
echo "method level server message target" > "$install_dir/conf/ignore_alert.csv"
|
||||||
|
|
||||||
|
|
||||||
# Set permissions to app files
|
# Set permissions to app files
|
||||||
chmod u+x $final_path/yunomonitor.py
|
chmod u+x "$install_dir/yunomonitor.py"
|
||||||
chmod u+w $final_path/conf
|
chmod u+w "$install_dir/conf"
|
||||||
chmod u+w $final_path/well-known
|
chmod u+w "$install_dir/well-known"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# GENERIC FINALIZATION
|
|
||||||
#=================================================
|
|
||||||
# RELOAD NGINX
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
|
|
||||||
|
|
||||||
ynh_systemd_action --service_name=nginx --action=reload
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# END OF SCRIPT
|
# END OF SCRIPT
|
||||||
|
|
|
@ -9,61 +9,30 @@
|
||||||
source _common.sh
|
source _common.sh
|
||||||
source /usr/share/yunohost/helpers
|
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)
|
|
||||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD REMOVE
|
# STANDARD REMOVE
|
||||||
#=================================================
|
#=================================================
|
||||||
# STOP AND REMOVE SERVICE
|
# STOP AND REMOVE SERVICE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Stopping and removing the systemd service..." --weight=1
|
|
||||||
|
# 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=3
|
||||||
|
yunohost service remove "$app"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# REMOVE SYSTEM CONFIGURATIONS
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Removing system configurations related to $app..." --weight=1
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name="$app" --action="stop" --log_path="systemd" --timeout=15
|
||||||
|
|
||||||
ynh_secure_remove --file="/etc/systemd/system/$app.timer"
|
ynh_secure_remove --file="/etc/systemd/system/$app.timer"
|
||||||
|
|
||||||
# Remove the dedicated systemd config
|
|
||||||
ynh_remove_systemd_config
|
ynh_remove_systemd_config
|
||||||
|
|
||||||
#=================================================
|
_yunomonitor_remove_nginx_config
|
||||||
# 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
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# 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
|
# END OF SCRIPT
|
||||||
|
|
|
@ -10,41 +10,6 @@
|
||||||
source ../settings/scripts/_common.sh
|
source ../settings/scripts/_common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# MANAGE SCRIPT FAILURE
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
# 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)
|
|
||||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# 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 FILES
|
# RESTORE FILES
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -57,30 +22,20 @@ ynh_restore
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Restore permissions on app files
|
# Restore permissions on app files
|
||||||
chmod 750 "$final_path"
|
chmod 750 "$install_dir"
|
||||||
chmod -R o-rwx "$final_path"
|
chmod -R o-rwx "$install_dir"
|
||||||
chown -R $app:www-data "$final_path"
|
chown -R $app:www-data "$install_dir"
|
||||||
chmod u+x $final_path/yunomonitor.py
|
chmod u+x "$install_dir/yunomonitor.py"
|
||||||
chmod u+w $final_path/conf
|
chmod u+w "$install_dir/conf"
|
||||||
chmod u+w $final_path/well-known
|
chmod u+w "$install_dir/well-known"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# SPECIFIC RESTORATION
|
|
||||||
#=================================================
|
|
||||||
# REINSTALL DEPENDENCIES
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Reinstalling dependencies..." --weight=1
|
|
||||||
|
|
||||||
# Define and install dependencies
|
|
||||||
ynh_install_app_dependencies $pkg_dependencies
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BUILD YUNOMONITOR
|
# BUILD YUNOMONITOR
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Building Yunomonitor..."
|
ynh_script_progression --message="Building Yunomonitor..."
|
||||||
|
|
||||||
pushd "$final_path"
|
pushd "$install_dir"
|
||||||
pip3 install pycryptodome
|
python3 -m pip install pycryptodome
|
||||||
popd
|
popd
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -89,9 +44,9 @@ popd
|
||||||
ynh_script_progression --message="Activating systemd timer..." --weight=1
|
ynh_script_progression --message="Activating systemd timer..." --weight=1
|
||||||
|
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl enable $app.service --quiet
|
systemctl enable "$app.service" --quiet
|
||||||
systemctl enable $app.timer --quiet
|
systemctl enable "$app.timer" --quiet
|
||||||
systemctl start $app.timer
|
systemctl start "$app.timer"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# GENERIC FINALIZATION
|
# GENERIC FINALIZATION
|
||||||
|
|
102
scripts/upgrade
102
scripts/upgrade
|
@ -9,37 +9,8 @@
|
||||||
source _common.sh
|
source _common.sh
|
||||||
source /usr/share/yunohost/helpers
|
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)
|
|
||||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# CHECK VERSION
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Checking version..."
|
|
||||||
|
|
||||||
upgrade_type=$(ynh_check_app_version_changed)
|
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
|
# STANDARD UPGRADE STEPS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -47,18 +18,10 @@ ynh_abort_if_errors
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Ensuring downward compatibility..." --weight=1
|
ynh_script_progression --message="Ensuring downward compatibility..." --weight=1
|
||||||
|
|
||||||
if ! [ -f $final_path/conf/ignore_alert.csv ]; then
|
if ! [ -f $install_dir/conf/ignore_alert.csv ]; then
|
||||||
echo "method level server message target" > $final_path/conf/ignore_alert.csv
|
echo "method level server message target" > $install_dir/conf/ignore_alert.csv
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# 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
|
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -68,46 +31,23 @@ then
|
||||||
ynh_script_progression --message="Upgrading source files..." --weight=1
|
ynh_script_progression --message="Upgrading source files..." --weight=1
|
||||||
|
|
||||||
# Download, check integrity, uncompress and patch the source from app.src
|
# Download, check integrity, uncompress and patch the source from app.src
|
||||||
ynh_setup_source --dest_dir="$final_path"
|
ynh_setup_source --dest_dir="$install_dir"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
chmod 750 "$final_path"
|
chmod 750 "$install_dir"
|
||||||
chmod -R o-rwx "$final_path"
|
chmod -R o-rwx "$install_dir"
|
||||||
chown -R $app:www-data "$final_path"
|
chown -R $app:www-data "$install_dir"
|
||||||
chmod u+x $final_path/yunomonitor.py
|
chmod u+x "$install_dir/yunomonitor.py"
|
||||||
chmod u+w $final_path/conf
|
chmod u+w "$install_dir/conf"
|
||||||
chmod u+w $final_path/well-known
|
chmod u+w "$install_dir/well-known"
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# NGINX CONFIGURATION
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=1
|
|
||||||
|
|
||||||
# Create a dedicated nginx config
|
|
||||||
# Note: i don't use the helper because i need this file to be named "000-"
|
|
||||||
finalnginxconf="/etc/nginx/conf.d/$domain.d/000-$app.conf"
|
|
||||||
ynh_backup_if_checksum_is_different --file="$finalnginxconf"
|
|
||||||
cp ../conf/nginx.conf "$finalnginxconf"
|
|
||||||
ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path" --target_file="$finalnginxconf"
|
|
||||||
ynh_store_file_checksum --file="$finalnginxconf"
|
|
||||||
ynh_systemd_action --service_name=nginx --action=reload
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# UPGRADE DEPENDENCIES
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Upgrading dependencies..." --weight=1
|
|
||||||
|
|
||||||
ynh_install_app_dependencies $pkg_dependencies
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# SPECIFIC UPGRADE
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BUILD YUNOMONITOR
|
# BUILD YUNOMONITOR
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Building Yunomonitor..."
|
ynh_script_progression --message="Building Yunomonitor..."
|
||||||
|
|
||||||
pushd "$final_path"
|
pushd "$install_dir"
|
||||||
pip3 install pycryptodome
|
python3 -m pip install pycryptodome
|
||||||
popd
|
popd
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -116,16 +56,17 @@ popd
|
||||||
|
|
||||||
### Verify the checksum of a file, stored by `ynh_store_file_checksum` in the install script.
|
### Verify the checksum of a file, stored by `ynh_store_file_checksum` in the install script.
|
||||||
### And create a backup of this file if the checksum is different. So the file will be backed up if the admin had modified it.
|
### And create a backup of this file if the checksum is different. So the file will be backed up if the admin had modified it.
|
||||||
ynh_backup_if_checksum_is_different --file="$final_path/conf/$app.yml"
|
ynh_backup_if_checksum_is_different --file="$install_dir/conf/$app.yml"
|
||||||
# Recalculate and store the checksum of the file for the next upgrade.
|
# Recalculate and store the checksum of the file for the next upgrade.
|
||||||
ynh_store_file_checksum --file="$final_path/conf/$app.yml"
|
ynh_store_file_checksum --file="$install_dir/conf/$app.yml"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP SYSTEMD
|
# REAPPLY SYSTEM CONFIGURATIONS
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Upgrading systemd configuration..." --weight=1
|
ynh_script_progression --message="Upgrading system configurations related to $app..." --weight=1
|
||||||
|
|
||||||
|
_yunomonitor_add_nginx_config
|
||||||
|
|
||||||
# Create a dedicated systemd config
|
|
||||||
ynh_add_systemd_config
|
ynh_add_systemd_config
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -133,14 +74,7 @@ ynh_add_systemd_config
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Reloading a systemd service..." --weight=1
|
ynh_script_progression --message="Reloading a systemd service..." --weight=1
|
||||||
|
|
||||||
ynh_systemd_action --service_name=$app --action="reload" --log_path="/var/log/$app/$app.log"
|
ynh_systemd_action --service_name="$app" --action="reload" --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
|
# END OF SCRIPT
|
||||||
|
|
12
tests.toml
Normal file
12
tests.toml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#:schema https://raw.githubusercontent.com/YunoHost/apps/master/schemas/tests.v1.schema.json
|
||||||
|
|
||||||
|
test_format = 1.0
|
||||||
|
|
||||||
|
[default]
|
||||||
|
|
||||||
|
args.monitored_servers = "remote_domain.tld,remote_domain2.tld"
|
||||||
|
args.monitoring_servers = ""
|
||||||
|
args.mails = "john@example.com"
|
||||||
|
args.sms_api = ""
|
||||||
|
|
||||||
|
test_upgrade_from.4feb4a78181518956e7d230a2ab67d96992f8563.name = "1.1.0~ynh2"
|
Loading…
Reference in a new issue