Files
server/var/lib/dpkg/info/psa-drweb-configurator.postinst
2026-01-07 20:52:11 +01:00

151 lines
3.7 KiB
Bash
Executable File

### Copyright 1999-2023. Plesk International GmbH. All rights reserved.
#-*- vim:ft=sh:
set_drweb_params()
{
drweb_user="drweb"
drweb_group="drweb"
DRWEB_ETC_D="/etc/drweb"
DRWEB_ROOT_D="/opt/drweb"
PRODUCT_ROOT_D="/opt/psa"
}
update_drweb_service_state()
{
local drwebmng="$PRODUCT_ROOT_D/admin/sbin/drwebmng"
"$drwebmng" --update
}
mail_drweb_restore()
{
local mail_restore="/usr/lib/plesk-9.0/mail_drweb_restore"
if [ -x "$mail_restore" ]; then
"$mail_restore" "$@"
else
return 1
fi
}
add_string()
{
local pattern string config
pattern="$1"
string="$2"
config="$3"
if ! grep -q "^$pattern\$" "$config"; then
echo "$string" >>"$config"
fi
}
config_drweb_key_expiration_notifications()
{
# Turn key expiration notifications for 2 days in drweb config files
# Add New parameters for DrWeb upgrade
add_string '[[:space:]]*NotifyPeriod[[:space:]]*=.*' \
"NotifyPeriod = 2" "$DRWEB_ETC_D/drweb32.ini"
add_string '[[:space:]]*NotifyType[[:space:]]*=.*' \
"NotifyType = Everyday" "$DRWEB_ETC_D/drweb32.ini"
# Change Default values for clear Drweb installation
NotifyPeriod=2
NotifyType=Everyday
sed -e 's/^[[:space:]]*NotifyPeriod[[:space:]]*=[[:space:]]*14/NotifyPeriod = '$NotifyPeriod'/g' \
-e 's/^[[:space:]]*NotifyType[[:space:]]*=[[:space:]]*Ever[[:space:]]*$/NotifyType = '$NotifyType'/g' \
< $DRWEB_ETC_D/drweb32.ini > $DRWEB_ETC_D/drweb32.ini.tmp && \
mv -f $DRWEB_ETC_D/drweb32.ini.tmp $DRWEB_ETC_D/drweb32.ini || return 1
chown "$drweb_user:$drweb_group" "$DRWEB_ETC_D/drweb32.ini" || return 1
chmod 0644 "$DRWEB_ETC_D/drweb32.ini" || return 1
}
### Copyright 1999-2023. Plesk International GmbH. All rights reserved.
#-*- vim:ft=sh:
drweb_add_drweb_to_outgoing_antispam_whitelist()
{
local mailmng_outgoing="${PRODUCT_ROOT_D}/admin/sbin/mailmng-outgoing"
if [ -x "$mailmng_outgoing" ]; then
"$mailmng_outgoing" --show-whitelist | grep -q "$drweb_user" >/dev/null 2>&1 \
|| "$mailmng_outgoing" --add-to-whitelist --sysuser="$drweb_user"
fi
}
drweb_fix_logs_permissions()
{
# Fixing permissions to avoid logrotate errors from bug #141554, PPP-45087
local drweb_logs_package_location="/var/drweb/log"
[ ! -d "$drweb_logs_package_location" ] || chmod 0750 "$drweb_logs_package_location"
}
qmail_admin_alias()
{
local dot_qmail="$DRWEB_ROOT_D/.qmail"
[ ! -s "$dot_qmail" ] || return 0
echo "&root" > "$dot_qmail"
chmod 0600 "$dot_qmail"
chown "$drweb_user:$drweb_group" "$dot_qmail"
}
# Update Dr.Web to prevent it from bothering the administrator with notifications
# about old bases
drweb_update()
{
local update_bin="/etc/cron.daily/drweb-update"
# Run it after (some) min(s) in order to avoid packages' install-time CPU/memory load
# In the contrary, we need to run updater as soon as possible in order to keep antivirus healthy; be wise.
[ -x "$update_bin" ] && systemd-run --on-active="1m" "$update_bin"
return 0
}
upgrade_new_post()
{
drweb_fix_logs_permissions
drweb_update
}
install_post()
{
set_drweb_params
qmail_admin_alias
drweb_add_drweb_to_outgoing_antispam_whitelist
drweb_fix_logs_permissions
config_drweb_key_expiration_notifications
# Stop service started via sysvinit script (by the drweb-daemon package)
/etc/init.d/drwebd stop || killall $DRWEB_ROOT_D/drwebd.real || :
# register drweb handler for existing mailnames
# this also turns on or off the service if required
# alternative via drwebmng is a safety fallback
mail_drweb_restore || update_drweb_service_state
drweb_update
}
[ -z "$PLESK_INSTALLER_DEBUG" ] || set -x
[ -z "$PLESK_INSTALLER_STRICT_MODE" ] || set -e
case "$1" in
configure)
if [ -n "$2" ]; then
upgrade_new_post
else
install_post
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "Unknown operation: postinst $*"
exit 1
;;
esac