|
|
|
@ -98,8 +98,11 @@ EOF |
|
|
|
ynh_store_file_checksum "$finalfail2banfilterconf" |
|
|
|
|
|
|
|
sudo systemctl restart fail2ban |
|
|
|
local fail2ban_error=$(tail -n50 /var/log/fail2ban.log | grep "ERROR.*$app") |
|
|
|
echo "restart=$?" |
|
|
|
if local fail2ban_error="$(tail -n50 /var/log/fail2ban.log | grep "WARNING Command.*$app.*addfailregex")" |
|
|
|
then |
|
|
|
echo "[ERR] Fail2ban fail to load the jail for $app" >&2 |
|
|
|
echo "WARNING${fail2ban_error#*WARNING}" >&2 |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
# Remove the dedicated fail2ban config (jail and filter conf files) |
|
|
|
@ -110,3 +113,102 @@ ynh_remove_fail2ban_config () { |
|
|
|
ynh_secure_remove "/etc/fail2ban/filter.d/$app.conf" |
|
|
|
sudo systemctl restart fail2ban |
|
|
|
} |
|
|
|
|
|
|
|
#================================================= |
|
|
|
|
|
|
|
# Read the value of a key in a ynh manifest file |
|
|
|
# |
|
|
|
# usage: ynh_read_manifest manifest key |
|
|
|
# | arg: manifest - Path of the manifest to read |
|
|
|
# | arg: key - Name of the key to find |
|
|
|
ynh_read_manifest () { |
|
|
|
manifest="$1" |
|
|
|
key="$2" |
|
|
|
python3 -c "import sys, json;print(json.load(open('$manifest'))['$key'])" |
|
|
|
} |
|
|
|
|
|
|
|
# Exit without error if the package is up to date |
|
|
|
# |
|
|
|
# This helper should be used to avoid an upgrade of a package |
|
|
|
# when it's not needed. |
|
|
|
# |
|
|
|
# To force an upgrade, even if the package is up to date, |
|
|
|
# you have to set the variable YNH_FORCE_UPGRADE before. |
|
|
|
# example: sudo YNH_FORCE_UPGRADE=1 yunohost app upgrade MyApp |
|
|
|
# |
|
|
|
# usage: ynh_abort_if_up_to_date |
|
|
|
ynh_abort_if_up_to_date () { |
|
|
|
local force_upgrade=${YNH_FORCE_UPGRADE:-0} |
|
|
|
local package_check=${PACKAGE_CHECK_EXEC:-0} |
|
|
|
|
|
|
|
local version=$(ynh_read_manifest "/etc/yunohost/apps/$YNH_APP_INSTANCE_NAME/manifest.json" "version" || echo 1.0) |
|
|
|
local last_version=$(ynh_read_manifest "../manifest.json" "version" || echo 1.0) |
|
|
|
if [ "$version" = "$last_version" ] |
|
|
|
then |
|
|
|
if [ "$force_upgrade" != "0" ] |
|
|
|
then |
|
|
|
echo "Upgrade forced by YNH_FORCE_UPGRADE." >&2 |
|
|
|
unset YNH_FORCE_UPGRADE |
|
|
|
elif [ "$package_check" != "0" ] |
|
|
|
then |
|
|
|
echo "Upgrade forced for package check." >&2 |
|
|
|
else |
|
|
|
ynh_die "Up-to-date, nothing to do" 0 |
|
|
|
fi |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
#================================================= |
|
|
|
|
|
|
|
# Send an email to inform the administrator |
|
|
|
# |
|
|
|
# usage: ynh_send_readme_to_admin app_message [recipients] |
|
|
|
# | arg: app_message - The message to send to the administrator. |
|
|
|
# | arg: recipients - The recipients of this email. Use spaces to separate multiples recipients. - default: root |
|
|
|
# example: "root admin@domain" |
|
|
|
# If you give the name of a YunoHost user, ynh_send_readme_to_admin will find its email adress for you |
|
|
|
# example: "root admin@domain user1 user2" |
|
|
|
ynh_send_readme_to_admin() { |
|
|
|
local app_message="${1:-...No specific informations...}" |
|
|
|
local recipients="${2:-root}" |
|
|
|
|
|
|
|
# Retrieve the email of users |
|
|
|
find_mails () { |
|
|
|
local list_mails="$1" |
|
|
|
local mail |
|
|
|
local recipients=" " |
|
|
|
# Read each mail in argument |
|
|
|
for mail in $list_mails |
|
|
|
do |
|
|
|
# Keep root or a real email address as it is |
|
|
|
if [ "$mail" = "root" ] || echo "$mail" | grep --quiet "@" |
|
|
|
then |
|
|
|
recipients="$recipients $mail" |
|
|
|
else |
|
|
|
# But replace an user name without a domain after by its email |
|
|
|
if mail=$(ynh_user_get_info "$mail" "mail" 2> /dev/null) |
|
|
|
then |
|
|
|
recipients="$recipients $mail" |
|
|
|
fi |
|
|
|
fi |
|
|
|
done |
|
|
|
echo "$recipients" |
|
|
|
} |
|
|
|
recipients=$(find_mails "$recipients") |
|
|
|
|
|
|
|
local mail_subject="☁️🆈🅽🅷☁️: \`$app\` was just installed!" |
|
|
|
|
|
|
|
local mail_message="This is an automated message from your beloved YunoHost server. |
|
|
|
|
|
|
|
Specific informations for the application $app. |
|
|
|
|
|
|
|
$app_message |
|
|
|
|
|
|
|
--- |
|
|
|
Automatic diagnosis data from YunoHost |
|
|
|
|
|
|
|
$(yunohost tools diagnosis | grep -B 100 "services:" | sed '/services:/d')" |
|
|
|
|
|
|
|
# Send the email to the recipients |
|
|
|
echo "$mail_message" | mail -a "Content-Type: text/plain; charset=UTF-8" -s "$mail_subject" "$recipients" |
|
|
|
} |