mirror of
https://github.com/deajan/obackup.git
synced 2024-12-27 07:53:40 +01:00
Updated ofunctions from osync
This commit is contained in:
parent
88a720be21
commit
709af82ff4
@ -1,15 +1,15 @@
|
|||||||
#### MINIMAL-FUNCTION-SET BEGIN ####
|
#### MINIMAL-FUNCTION-SET BEGIN ####
|
||||||
|
|
||||||
## FUNC_BUILD=2016111002
|
## FUNC_BUILD=2016111401
|
||||||
## BEGIN Generic bash functions written in 2013-2016 by Orsiris de Jong - http://www.netpower.fr - ozy@netpower.fr
|
## BEGIN Generic bash functions written in 2013-2016 by Orsiris de Jong - http://www.netpower.fr - ozy@netpower.fr
|
||||||
|
|
||||||
## To use in a program, define the following variables:
|
## To use in a program, define the following variables:
|
||||||
## PROGRAM=program-name
|
## PROGRAM=program-name
|
||||||
## INSTANCE_ID=program-instance-name
|
## INSTANCE_ID=program-instance-name
|
||||||
## _DEBUG=yes/no
|
## _DEBUG=yes/no
|
||||||
|
## _LOGGER_STDERR=True/False
|
||||||
|
## _LOGGER_ERR_ONLY=True/False
|
||||||
|
|
||||||
#TODO(high): Refactor GetRemoteOs into big oneliner for faster execution (if busybox else uname else uname -spio in one statement)
|
|
||||||
#TODO(high): Implement busybox support in SendEmail function
|
|
||||||
#TODO: Windows checks, check sendmail & mailsend
|
#TODO: Windows checks, check sendmail & mailsend
|
||||||
|
|
||||||
if ! type "$BASH" > /dev/null; then
|
if ! type "$BASH" > /dev/null; then
|
||||||
@ -144,7 +144,9 @@ function Logger {
|
|||||||
WARN_ALERT=true
|
WARN_ALERT=true
|
||||||
return
|
return
|
||||||
elif [ "$level" == "NOTICE" ]; then
|
elif [ "$level" == "NOTICE" ]; then
|
||||||
|
if [ "$_LOGGER_ERR_ONLY" != True ]; then
|
||||||
_Logger "$prefix$value"
|
_Logger "$prefix$value"
|
||||||
|
fi
|
||||||
return
|
return
|
||||||
elif [ "$level" == "VERBOSE" ]; then
|
elif [ "$level" == "VERBOSE" ]; then
|
||||||
if [ $_VERBOSE == true ]; then
|
if [ $_VERBOSE == true ]; then
|
||||||
@ -250,15 +252,11 @@ function SendAlert {
|
|||||||
|
|
||||||
__CheckArguments 0-1 $# ${FUNCNAME[0]} "$@" #__WITH_PARANOIA_DEBUG
|
__CheckArguments 0-1 $# ${FUNCNAME[0]} "$@" #__WITH_PARANOIA_DEBUG
|
||||||
|
|
||||||
local mail_no_attachment=
|
local attachment=
|
||||||
local attachment_command=
|
local attachmentFile=
|
||||||
local subject=
|
local subject=
|
||||||
local body=
|
local body=
|
||||||
|
|
||||||
# Windows specific settings
|
|
||||||
local encryption_string=
|
|
||||||
local auth_string=
|
|
||||||
|
|
||||||
if [ "$DESTINATION_MAILS" == "" ]; then
|
if [ "$DESTINATION_MAILS" == "" ]; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
@ -278,9 +276,9 @@ function SendAlert {
|
|||||||
eval "cat \"$LOG_FILE\" $COMPRESSION_PROGRAM > $ALERT_LOG_FILE"
|
eval "cat \"$LOG_FILE\" $COMPRESSION_PROGRAM > $ALERT_LOG_FILE"
|
||||||
if [ $? != 0 ]; then
|
if [ $? != 0 ]; then
|
||||||
Logger "Cannot create [$ALERT_LOG_FILE]" "WARN"
|
Logger "Cannot create [$ALERT_LOG_FILE]" "WARN"
|
||||||
mail_no_attachment=1
|
attachment=False
|
||||||
else
|
else
|
||||||
mail_no_attachment=0
|
attachment=True
|
||||||
fi
|
fi
|
||||||
body="$MAIL_ALERT_MSG"$'\n\n'"$CURRENT_LOG"
|
body="$MAIL_ALERT_MSG"$'\n\n'"$CURRENT_LOG"
|
||||||
|
|
||||||
@ -298,134 +296,18 @@ function SendAlert {
|
|||||||
subject="Fnished run - $subject"
|
subject="Fnished run - $subject"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$mail_no_attachment" -eq 0 ]; then
|
if [ "$attachment" == True ]; then
|
||||||
attachment_command="-a $ALERT_LOG_FILE"
|
attachmentFile="$ALERT_LOG_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$LOCAL_OS" == "BUSYBOX" ]; then
|
SendEmail "$subject" "$body" "$DESTINATION_MAILS" "$attachmentFile" "$SENDER_MAIL" "$SMTP_SERVER" "$SMTP_PORT" "$ENCRYPTION" "SMTP_USER" "$SMTP_PASSWORD"
|
||||||
if type sendmail > /dev/null 2>&1; then
|
|
||||||
if [ "$ENCRYPTION" == "tls" ]; then
|
|
||||||
echo -e "Subject:$subject\r\n$body" | $(type -p sendmail) -f "$SENDER_MAIL" -H "exec openssl s_client -quiet -tls1_2 -starttls smtp -connect $SMTP_SERVER:$SMTP_PORT" -au"$SMTP_USER" -ap"$SMTP_PASSWORD" $DESTINATION_MAILS
|
|
||||||
elif [ "$ENCRYPTION" == "ssl" ]; then
|
|
||||||
echo -e "Subject:$subject\r\n$body" | $(type -p sendmail) -f "$SENDER_MAIL" -H "exec openssl s_client -quiet -connect $SMTP_SERVER:$SMTP_PORT" -au"$SMTP_USER" -ap"$SMTP_PASSWORD" $DESTINATION_MAILS
|
|
||||||
else
|
|
||||||
echo -e "Subject:$subject\r\n$body" | $(type -p sendmail) -f "$SENDER_MAIL" -S "$SMTP_SERVER:$SMTP_PORT" -au"$SMTP_USER" -ap"$SMTP_PASSWORD" $DESTINATION_MAILS
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $? != 0 ]; then
|
|
||||||
Logger "Cannot send alert mail via $(type -p sendmail) !!!" "WARN"
|
|
||||||
# Don't bother try other mail systems with busybox
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
Logger "Sendmail not present. Won't send any mail" "WARN"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if type mutt > /dev/null 2>&1 ; then
|
|
||||||
echo "$body" | $(type -p mutt) -x -s "$subject" $DESTINATION_MAILS $attachment_command
|
|
||||||
if [ $? != 0 ]; then
|
|
||||||
Logger "Cannot send alert mail via $(type -p mutt) !!!" "WARN"
|
|
||||||
else
|
|
||||||
Logger "Sent alert mail using mutt." "NOTICE"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if type mail > /dev/null 2>&1 ; then
|
|
||||||
if [ "$mail_no_attachment" -eq 0 ] && $(type -p mail) -V | grep "GNU" > /dev/null; then
|
|
||||||
attachment_command="-A $ALERT_LOG_FILE"
|
|
||||||
elif [ "$mail_no_attachment" -eq 0 ] && $(type -p mail) -V > /dev/null; then
|
|
||||||
attachment_command="-a$ALERT_LOG_FILE"
|
|
||||||
else
|
|
||||||
attachment_command=""
|
|
||||||
fi
|
|
||||||
echo "$body" | $(type -p mail) $attachment_command -s "$subject" $DESTINATION_MAILS
|
|
||||||
if [ $? != 0 ]; then
|
|
||||||
Logger "Cannot send alert mail via $(type -p mail) with attachments !!!" "WARN"
|
|
||||||
echo "$body" | $(type -p mail) -s "$subject" $DESTINATION_MAILS
|
|
||||||
if [ $? != 0 ]; then
|
|
||||||
Logger "Cannot send alert mail via $(type -p mail) without attachments !!!" "WARN"
|
|
||||||
else
|
|
||||||
Logger "Sent alert mail using mail command without attachment." "NOTICE"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
Logger "Sent alert mail using mail command." "NOTICE"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if type sendmail > /dev/null 2>&1 ; then
|
|
||||||
echo -e "Subject:$subject\r\n$body" | $(type -p sendmail) $DESTINATION_MAILS
|
|
||||||
if [ $? != 0 ]; then
|
|
||||||
Logger "Cannot send alert mail via $(type -p sendmail) !!!" "WARN"
|
|
||||||
else
|
|
||||||
Logger "Sent alert mail using sendmail command without attachment." "NOTICE"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Windows specific
|
|
||||||
if type "mailsend.exe" > /dev/null 2>&1 ; then
|
|
||||||
|
|
||||||
if [ "$SMTP_ENCRYPTION" != "tls" ] && [ "$SMTP_ENCRYPTION" != "ssl" ] && [ "$SMTP_ENCRYPTION" != "none" ]; then
|
|
||||||
Logger "Bogus smtp encryption, assuming none." "WARN"
|
|
||||||
encryption_string=
|
|
||||||
elif [ "$SMTP_ENCRYPTION" == "tls" ]; then
|
|
||||||
encryption_string=-starttls
|
|
||||||
elif [ "$SMTP_ENCRYPTION" == "ssl" ]:; then
|
|
||||||
encryption_string=-ssl
|
|
||||||
fi
|
|
||||||
if [ "$SMTP_USER" != "" ] && [ "$SMTP_USER" != "" ]; then
|
|
||||||
auth_string="-auth -user \"$SMTP_USER\" -pass \"$SMTP_PASSWORD\""
|
|
||||||
fi
|
|
||||||
$(type mailsend.exe) -f $SENDER_MAIL -t "$DESTINATION_MAILS" -sub "$subject" -M "$body" -attach "$attachment" -smtp "$SMTP_SERVER" -port "$SMTP_PORT" $encryption_string $auth_string
|
|
||||||
if [ $? != 0 ]; then
|
|
||||||
Logger "Cannot send mail via $(type mailsend.exe) !!!" "WARN"
|
|
||||||
else
|
|
||||||
Logger "Sent mail using mailsend.exe command with attachment." "NOTICE"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Windows specific, kept for compatibility (sendemail from http://caspian.dotconf.net/menu/Software/SendEmail/)
|
|
||||||
if type sendemail > /dev/null 2>&1 ; then
|
|
||||||
if [ "$SMTP_USER" != "" ] && [ "$SMTP_PASSWORD" != "" ]; then
|
|
||||||
SMTP_OPTIONS="-xu $SMTP_USER -xp $SMTP_PASSWORD"
|
|
||||||
else
|
|
||||||
SMTP_OPTIONS=""
|
|
||||||
fi
|
|
||||||
$(type -p sendemail) -f $SENDER_MAIL -t "$DESTINATION_MAILS" -u "$subject" -m "$body" -s $SMTP_SERVER $SMTP_OPTIONS > /dev/null 2>&1
|
|
||||||
if [ $? != 0 ]; then
|
|
||||||
Logger "Cannot send alert mail via $(type -p sendemail) !!!" "WARN"
|
|
||||||
else
|
|
||||||
Logger "Sent alert mail using sendemail command without attachment." "NOTICE"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# pfSense specific
|
|
||||||
if [ -f /usr/local/bin/mail.php ]; then
|
|
||||||
echo "$body" | /usr/local/bin/mail.php -s="$subject"
|
|
||||||
if [ $? != 0 ]; then
|
|
||||||
Logger "Cannot send alert mail via /usr/local/bin/mail.php (pfsense) !!!" "WARN"
|
|
||||||
else
|
|
||||||
Logger "Sent alert mail using pfSense mail.php." "NOTICE"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If function has not returned 0 yet, assume it is critical that no alert can be sent
|
|
||||||
Logger "Cannot send alert (neither mutt, mail, sendmail, mailsend, sendemail or pfSense mail.php could be used)." "ERROR" # Is not marked critical because execution must continue
|
|
||||||
|
|
||||||
# Delete tmp log file
|
# Delete tmp log file
|
||||||
|
if [ "$attachment" == True ]; then
|
||||||
if [ -f "$ALERT_LOG_FILE" ]; then
|
if [ -f "$ALERT_LOG_FILE" ]; then
|
||||||
rm -f "$ALERT_LOG_FILE"
|
rm -f "$ALERT_LOG_FILE"
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Generic email sending function.
|
# Generic email sending function.
|
||||||
@ -923,10 +805,10 @@ function IsNumericExpand {
|
|||||||
|
|
||||||
local re="^-?[0-9]+([.][0-9]+)?$"
|
local re="^-?[0-9]+([.][0-9]+)?$"
|
||||||
|
|
||||||
if [[ $value =~ $re ]]; then
|
if [[ $value =~ ^-?[0-9]+([.][0-9]+)?$ ]]; then
|
||||||
echo 1 && return 1
|
echo 1
|
||||||
else
|
else
|
||||||
echo 0 && return 0
|
echo 0
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -935,9 +817,9 @@ function IsNumeric {
|
|||||||
local value="${1}"
|
local value="${1}"
|
||||||
|
|
||||||
if [[ $value =~ ^[0-9]+([.][0-9]+)?$ ]]; then
|
if [[ $value =~ ^[0-9]+([.][0-9]+)?$ ]]; then
|
||||||
echo 1 && return 1
|
echo 1
|
||||||
else
|
else
|
||||||
echo 0 && return 0
|
echo 0
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -945,9 +827,9 @@ function IsInteger {
|
|||||||
local value="${1}"
|
local value="${1}"
|
||||||
|
|
||||||
if [[ $value =~ ^[0-9]+$ ]]; then
|
if [[ $value =~ ^[0-9]+$ ]]; then
|
||||||
echo 1 && return 1
|
echo 1
|
||||||
else
|
else
|
||||||
echo 0 && return 0
|
echo 0
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user