standalone burp role : initial version
This commit is contained in:
76
files/notify_script
Executable file
76
files/notify_script
Executable file
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
echo "Running notify script: $@"
|
||||
|
||||
# Arguments specified by the burp binary come first.
|
||||
# Normally, most of the following get set as you would expect.
|
||||
# In the server_script_pre/post case, burp does not have a directory from
|
||||
# which to read a log. In that case, it will set 'client' to the clientname,
|
||||
# 'basedir' blank, and 'storagedir' to the log buffer.
|
||||
client="$1" ; shift
|
||||
basedir="$1" ; shift
|
||||
storagedir="$1" ; shift
|
||||
file="$1" ; shift
|
||||
brv="$1" ; shift # one of backup/restore/verify/delete/list/unknown
|
||||
warnings="$1" ; shift
|
||||
|
||||
# Arguments given by the user in the conf files come next.
|
||||
sendmail="$1" ; shift
|
||||
|
||||
working="$basedir/working"
|
||||
finishing="$basedir/finishing"
|
||||
|
||||
while [ "$#" -gt 0 ] ; do
|
||||
case "$1" in
|
||||
Subject:*)
|
||||
w=""
|
||||
[ -n "$warnings" -a "$warnings" != "0" ] \
|
||||
&& w="($warnings warnings)"
|
||||
h="$1"
|
||||
h="${h//%c/$client}"
|
||||
h="${h//%w/$w}"
|
||||
h="${h//%b/$brv}"
|
||||
;;
|
||||
*) h="$1"
|
||||
;;
|
||||
esac
|
||||
if [ -z "$headers" ] ; then
|
||||
headers="$h"
|
||||
else
|
||||
headers=$(printf "%s\n%s\n" "$headers" "$h")
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
catcmd="gunzip -c"
|
||||
|
||||
# Look for a log to attach
|
||||
if [ "$brv" = "backup" ] ; then
|
||||
[ -z "$log" -a -f "$working/$file" ] && \
|
||||
log="$working/$file" && id=$(cat "$working"/timestamp) && catcmd="cat"
|
||||
[ -z "$log" -a -f "$working/$file.gz" ] && \
|
||||
log="$working/$file.gz" && id=$(cat "$working"/timestamp)
|
||||
[ -z "$log" -a -f "$finishing/$file" ] && \
|
||||
log="$finishing/$file" && id=$(cat "$finishing"/timestamp) && catcmd="cat"
|
||||
[ -z "$log" -a -f "$finishing/$file.gz" ] && \
|
||||
log="$finishing/$file.gz" && id=$(cat "$finishing"/timestamp)
|
||||
fi
|
||||
|
||||
[ -z "$log" -a -f "$storagedir/$file" ] && \
|
||||
log="$storagedir/$file" && id=$(cat "$storagedir"/timestamp) && catcmd="cat"
|
||||
[ -z "$log" -a -f "$storagedir/$file.gz" ] && \
|
||||
log="$storagedir/$file.gz" && id=$(cat "$storagedir"/timestamp)
|
||||
|
||||
if [ -z "$log" -a -z "$basedir" -a -n "$storagedir" ] ; then
|
||||
# This is the case where burp has no log directory and has given a buffer to
|
||||
# log via the storagedir argument.
|
||||
(echo "$headers" && echo && echo "$storagedir") | $sendmail
|
||||
elif [ -z "$log" ] ; then
|
||||
echo "$headers" && echo && echo "No log found to send in email" | $sendmail
|
||||
else
|
||||
# The normal case.
|
||||
maximum_line_count=1000
|
||||
(echo "$headers" && echo && echo "$id" && echo && echo "Last $maximum_line_count lines of $log:" && echo && ($catcmd "$log" 2>/dev/null || cat "$log") | tail -n "$maximum_line_count") | $sendmail
|
||||
fi
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user