70 lines
1.7 KiB
Bash
70 lines
1.7 KiB
Bash
send_mail() {
|
|
local to="$1"
|
|
local subject="$2"
|
|
local body="$3"
|
|
local mail_backend="none"
|
|
|
|
# Détection du backend
|
|
if command -v mail >/dev/null 2>&1; then
|
|
mail_backend="mail"
|
|
elif command -v sendmail >/dev/null 2>&1; then
|
|
mail_backend="sendmail"
|
|
elif command -v msmtp >/dev/null 2>&1; then
|
|
mail_backend="msmtp"
|
|
fi
|
|
|
|
case "$mail_backend" in
|
|
mail)
|
|
echo "$body" | mail -s "$subject" "$to"
|
|
;;
|
|
sendmail|msmtp)
|
|
{
|
|
echo "To: $to"
|
|
echo "Subject: $subject"
|
|
echo "Content-Type: text/plain; charset=UTF-8"
|
|
echo ""
|
|
echo "$body"
|
|
} | "$mail_backend" -t
|
|
;;
|
|
*)
|
|
msg_error "No mail system found (mail, sendmail or msmtp)"
|
|
return 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
send_login_mail() {
|
|
|
|
if [[ ${HAS_WELCOME_CONF_ERROR} -eq 1 ]]; then
|
|
return;
|
|
fi
|
|
|
|
if [[ -z "${ADMIN_MAIL}" ]]; then
|
|
msg_error "ADMIN_MAIL [${ADMIN_MAIL}] is not defined in /etc/environment"
|
|
# shellcheck disable=SC2034
|
|
HAS_WELCOME_CONF_ERROR=1
|
|
return 1 # ou exit 1 selon si c'est dans une fonction ou un script
|
|
fi
|
|
# Protection contre les appels multiples
|
|
if [[ ${CON_MAIL_DONE:-0} -eq 1 ]]; then
|
|
return
|
|
fi
|
|
export CON_MAIL_DONE=1
|
|
|
|
local user_ip="$1"
|
|
local user_name="$2"
|
|
local host_name="$3"
|
|
local loc_info subject body
|
|
|
|
# Capture de la localisation
|
|
loc_info=$(getIpLocation "$user_ip")
|
|
|
|
subject="[INFO] $user_name connected on $host_name"
|
|
body="User: $user_name
|
|
Host: $host_name
|
|
IP: $user_ip
|
|
Location: $loc_info
|
|
Date: $(date '+%Y-%m-%d %H:%M:%S')"
|
|
|
|
send_mail "$ADMIN_MAIL" "$subject" "$body"
|
|
} |