mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
52 lines
1.8 KiB
Text
52 lines
1.8 KiB
Text
##! Loading this script extends the :bro:enum:`Notice::ACTION_EMAIL` action
|
|
##! by appending to the email the hostnames associated with
|
|
##! :bro:type:`Notice::Info`'s *src* and *dst* fields as determined by a
|
|
##! DNS lookup.
|
|
|
|
@load ../main
|
|
|
|
module Notice;
|
|
|
|
# We have to store references to the notices here because the when statement
|
|
# clones the frame which doesn't give us access to modify values outside
|
|
# of it's execution scope. (we get a clone of the notice instead of a
|
|
# reference to the original notice)
|
|
global tmp_notice_storage: table[string] of Notice::Info &create_expire=max_email_delay+10secs;
|
|
|
|
event Notice::notice(n: Notice::Info) &priority=10
|
|
{
|
|
if ( ! n?$src && ! n?$dst )
|
|
return;
|
|
|
|
# This should only be done for notices that are being sent to email.
|
|
if ( ACTION_EMAIL !in n$actions )
|
|
return;
|
|
|
|
# I'm not recovering gracefully from the when statements because I want
|
|
# the notice framework to detect that something has exceeded the maximum
|
|
# allowed email delay and tell the user.
|
|
local uid = unique_id("");
|
|
tmp_notice_storage[uid] = n;
|
|
|
|
local output = "";
|
|
if ( n?$src )
|
|
{
|
|
add n$email_delay_tokens["hostnames-src"];
|
|
when ( local src_name = lookup_addr(n$src) )
|
|
{
|
|
output = string_cat("orig/src hostname: ", src_name, "\n");
|
|
tmp_notice_storage[uid]$email_body_sections[|tmp_notice_storage[uid]$email_body_sections|] = output;
|
|
delete tmp_notice_storage[uid]$email_delay_tokens["hostnames-src"];
|
|
}
|
|
}
|
|
if ( n?$dst )
|
|
{
|
|
add n$email_delay_tokens["hostnames-dst"];
|
|
when ( local dst_name = lookup_addr(n$dst) )
|
|
{
|
|
output = string_cat("resp/dst hostname: ", dst_name, "\n");
|
|
tmp_notice_storage[uid]$email_body_sections[|tmp_notice_storage[uid]$email_body_sections|] = output;
|
|
delete tmp_notice_storage[uid]$email_delay_tokens["hostnames-dst"];
|
|
}
|
|
}
|
|
}
|