From 3ea34d6ea3af878875bd7f627b1fa2cb2992cbe5 Mon Sep 17 00:00:00 2001 From: Jon Siwek Date: Fri, 19 Apr 2019 12:00:37 -0700 Subject: [PATCH] GH-236: Add zeek_script_loaded event, deprecate bro_script_loaded --- CHANGES | 7 +++++ NEWS | 11 ++++---- VERSION | 2 +- doc | 2 +- scripts/policy/misc/loaded-scripts.zeek | 2 +- src/event.bif | 9 +++++-- src/main.cc | 2 +- src/parse.y | 5 +++- .../Baseline/language.zeek_script_loaded/out | 4 +++ .../{zeek_init.bro => zeek_init.zeek} | 0 .../btest/language/zeek_script_loaded.zeek | 26 +++++++++++++++++++ 11 files changed, 58 insertions(+), 12 deletions(-) create mode 100644 testing/btest/Baseline/language.zeek_script_loaded/out rename testing/btest/language/{zeek_init.bro => zeek_init.zeek} (100%) create mode 100644 testing/btest/language/zeek_script_loaded.zeek diff --git a/CHANGES b/CHANGES index b773789f55..c04a412d99 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,11 @@ +2.6-237 | 2019-04-19 12:00:37 -0700 + + * GH-236: Add zeek_script_loaded event, deprecate bro_script_loaded (Jon Siwek, Corelight) + + Existing handlers for bro_script_loaded automatically alias to the new + zeek_script_loaded event, but emit a deprecation warning. + 2.6-236 | 2019-04-19 11:16:35 -0700 * Add zeek_init/zeek_done events and deprecate bro_init/bro_done (Seth Hall, Corelight) diff --git a/NEWS b/NEWS index df9dca2229..7671919e36 100644 --- a/NEWS +++ b/NEWS @@ -176,11 +176,12 @@ Deprecated Functionality instead. The later will automatically return a value that is enclosed in double-quotes. -- The ``bro_init`` and ``bro_done`` events are now deprecated, use - ``zeek_init`` and ``zeek_done`` instead. Any existing handlers for - ``bro_init`` and ``bro_done`` will automatically alias to the new - ``zeek_init`` and ``zeek_done`` events such that existing code will - not break, but will emit a deprecation warning. +- The ``bro_init``, ``bro_done``, and ``bro_script_loaded`` events are now + deprecated, use ``zeek_init``, ``zeek_done``, and + ``zeek_script_loaded`` instead. Any existing event handlers for + the deprecated versions will automatically alias to the new events + such that existing code will not break, but will emit a deprecation + warning. Bro 2.6 ======= diff --git a/VERSION b/VERSION index d732c2900b..dd25d12142 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.6-236 +2.6-237 diff --git a/doc b/doc index 5e02a297ee..ef39a55ef0 160000 --- a/doc +++ b/doc @@ -1 +1 @@ -Subproject commit 5e02a297eefe8740e8b84f7610fbf126af5c3475 +Subproject commit ef39a55ef00382d49459783aa0144ef672b4de97 diff --git a/scripts/policy/misc/loaded-scripts.zeek b/scripts/policy/misc/loaded-scripts.zeek index fd616bba19..0bd986e01a 100644 --- a/scripts/policy/misc/loaded-scripts.zeek +++ b/scripts/policy/misc/loaded-scripts.zeek @@ -32,7 +32,7 @@ event zeek_init() &priority=5 Log::create_stream(LoadedScripts::LOG, [$columns=Info, $path="loaded_scripts"]); } -event bro_script_loaded(path: string, level: count) +event zeek_script_loaded(path: string, level: count) { Log::write(LoadedScripts::LOG, [$name=cat(get_indent(level), compress_path(path))]); } diff --git a/src/event.bif b/src/event.bif index 4585003090..2cab61752c 100644 --- a/src/event.bif +++ b/src/event.bif @@ -872,9 +872,14 @@ event reporter_error%(t: time, msg: string, location: string%) &error_handler; ## ## path: The full path to the script loaded. ## -## level: The "nesting level": zero for a top-level Bro script and incremented +## level: The "nesting level": zero for a top-level Zeek script and incremented ## recursively for each ``@load``. -event bro_script_loaded%(path: string, level: count%); +event zeek_script_loaded%(path: string, level: count%); + +## Deprecated synonym for ``zeek_script_loaded``. +## +## .. bro:see: zeek_script_loaded +event bro_script_loaded%(path: string, level: count%) &deprecated; ## Generated each time Bro's script interpreter opens a file. This event is ## triggered only for files opened via :bro:id:`open`, and in particular not for diff --git a/src/main.cc b/src/main.cc index 1d2b89cc0c..1dddc99681 100644 --- a/src/main.cc +++ b/src/main.cc @@ -1193,7 +1193,7 @@ int main(int argc, char** argv) val_list* vl = new val_list; vl->append(new StringVal(i->name.c_str())); vl->append(val_mgr->GetCount(i->include_level)); - mgr.QueueEvent(bro_script_loaded, vl); + mgr.QueueEvent(zeek_script_loaded, vl); } reporter->ReportViaEvents(true); diff --git a/src/parse.y b/src/parse.y index 338436da9e..3b5d2cab14 100644 --- a/src/parse.y +++ b/src/parse.y @@ -1171,11 +1171,14 @@ func_hdr: } | TOK_EVENT event_id func_params opt_attr { - // Gracefully handle the deprecation of bro_init and bro_done + // Gracefully handle the deprecation of bro_init, bro_done, + // and bro_script_loaded if ( streq("bro_init", $2->Name()) ) $2 = global_scope()->Lookup("zeek_init"); else if ( streq("bro_done", $2->Name()) ) $2 = global_scope()->Lookup("zeek_done"); + else if ( streq("bro_script_loaded", $2->Name()) ) + $2 = global_scope()->Lookup("zeek_script_loaded"); begin_func($2, current_module.c_str(), FUNC_FLAVOR_EVENT, 0, $3, $4); diff --git a/testing/btest/Baseline/language.zeek_script_loaded/out b/testing/btest/Baseline/language.zeek_script_loaded/out new file mode 100644 index 0000000000..cddf509308 --- /dev/null +++ b/testing/btest/Baseline/language.zeek_script_loaded/out @@ -0,0 +1,4 @@ +zeek_script_loaded priority 10 +bro_script_loaded priority 5 +zeek_script_loaded priority 0 +bro_script_loaded priority -10 diff --git a/testing/btest/language/zeek_init.bro b/testing/btest/language/zeek_init.zeek similarity index 100% rename from testing/btest/language/zeek_init.bro rename to testing/btest/language/zeek_init.zeek diff --git a/testing/btest/language/zeek_script_loaded.zeek b/testing/btest/language/zeek_script_loaded.zeek new file mode 100644 index 0000000000..41f43409e6 --- /dev/null +++ b/testing/btest/language/zeek_script_loaded.zeek @@ -0,0 +1,26 @@ +# @TEST-EXEC: bro -b %INPUT >out +# @TEST-EXEC: btest-diff out + +event zeek_script_loaded(path: string, level: count) &priority=10 + { + if ( /zeek_script_loaded.zeek/ in path ) + print "zeek_script_loaded priority 10"; + } + +event bro_script_loaded(path: string, level: count) &priority=5 + { + if ( /zeek_script_loaded.zeek/ in path ) + print "bro_script_loaded priority 5"; + } + +event zeek_script_loaded(path: string, level: count) &priority=0 + { + if ( /zeek_script_loaded.zeek/ in path ) + print "zeek_script_loaded priority 0"; + } + +event bro_script_loaded(path: string, level: count) &priority=-10 + { + if ( /zeek_script_loaded.zeek/ in path ) + print "bro_script_loaded priority -10"; + }