mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 22:58:20 +00:00
Allow to activate plugins from the command line by specifying their
fully-qualified name.
This commit is contained in:
parent
c9524757d2
commit
38c69f9cd0
4 changed files with 21 additions and 4 deletions
12
src/main.cc
12
src/main.cc
|
@ -855,14 +855,14 @@ int main(int argc, char** argv)
|
||||||
! (id_name || bst_file) && ! command_line_policy && ! print_plugins )
|
! (id_name || bst_file) && ! command_line_policy && ! print_plugins )
|
||||||
add_input_file("-");
|
add_input_file("-");
|
||||||
|
|
||||||
// Process remaining arguments. X=Y arguments indicate script
|
// Process remaining arguments. X=Y arguments indicate script
|
||||||
// variable/parameter assignments. The remainder are treated
|
// variable/parameter assignments. X::Y arguments indicate plugins to
|
||||||
// as scripts to load.
|
// activate/query. The remainder are treated as scripts to load.
|
||||||
while ( optind < argc )
|
while ( optind < argc )
|
||||||
{
|
{
|
||||||
if ( strchr(argv[optind], '=') )
|
if ( strchr(argv[optind], '=') )
|
||||||
params.push_back(argv[optind++]);
|
params.push_back(argv[optind++]);
|
||||||
else if ( print_plugins && strstr(argv[optind], "::") )
|
else if ( strstr(argv[optind], "::") )
|
||||||
requested_plugins.insert(argv[optind++]);
|
requested_plugins.insert(argv[optind++]);
|
||||||
else
|
else
|
||||||
add_input_file(argv[optind++]);
|
add_input_file(argv[optind++]);
|
||||||
|
@ -890,6 +890,10 @@ int main(int argc, char** argv)
|
||||||
file_mgr->InitPreScript();
|
file_mgr->InitPreScript();
|
||||||
broxygen_mgr->InitPreScript();
|
broxygen_mgr->InitPreScript();
|
||||||
|
|
||||||
|
for ( set<string>::const_iterator i = requested_plugins.begin();
|
||||||
|
i != requested_plugins.end(); i++ )
|
||||||
|
plugin_mgr->ActivateDynamicPlugin(*i);
|
||||||
|
|
||||||
plugin_mgr->ActivateDynamicPlugins(! bare_mode);
|
plugin_mgr->ActivateDynamicPlugins(! bare_mode);
|
||||||
|
|
||||||
if ( events_file )
|
if ( events_file )
|
||||||
|
|
|
@ -146,6 +146,10 @@ bool Manager::ActivateDynamicPluginInternal(const std::string& name, bool ok_if_
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( m->second == "" )
|
||||||
|
// Already activated.
|
||||||
|
return true;
|
||||||
|
|
||||||
std::string dir = m->second + "/";
|
std::string dir = m->second + "/";
|
||||||
|
|
||||||
if ( dir.empty() )
|
if ( dir.empty() )
|
||||||
|
@ -283,6 +287,8 @@ void Manager::UpdateInputFiles()
|
||||||
for ( file_list::const_reverse_iterator i = scripts_to_load.rbegin();
|
for ( file_list::const_reverse_iterator i = scripts_to_load.rbegin();
|
||||||
i != scripts_to_load.rend(); i++ )
|
i != scripts_to_load.rend(); i++ )
|
||||||
add_input_file_at_front((*i).c_str());
|
add_input_file_at_front((*i).c_str());
|
||||||
|
|
||||||
|
scripts_to_load.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool plugin_cmp(const Plugin* a, const Plugin* b)
|
static bool plugin_cmp(const Plugin* a, const Plugin* b)
|
||||||
|
|
|
@ -18,3 +18,7 @@ calling bif, Hello from the plugin!
|
||||||
plugin: automatically loaded at startup
|
plugin: automatically loaded at startup
|
||||||
calling bif, Hello from the plugin!
|
calling bif, Hello from the plugin!
|
||||||
plugin: manually loaded
|
plugin: manually loaded
|
||||||
|
===
|
||||||
|
plugin: automatically loaded at startup
|
||||||
|
calling bif, Hello from the plugin!
|
||||||
|
plugin: manually loaded
|
||||||
|
|
|
@ -18,6 +18,9 @@
|
||||||
# @TEST-EXEC: echo === >>output
|
# @TEST-EXEC: echo === >>output
|
||||||
# @TEST-EXEC: BRO_PLUGIN_PATH=`pwd` bro -b ./activate.bro demo/foo -r $TRACES/empty.trace >>output
|
# @TEST-EXEC: BRO_PLUGIN_PATH=`pwd` bro -b ./activate.bro demo/foo -r $TRACES/empty.trace >>output
|
||||||
|
|
||||||
|
# @TEST-EXEC: echo === >>output
|
||||||
|
# @TEST-EXEC: BRO_PLUGIN_PATH=`pwd` bro -b Demo::Foo demo/foo -r $TRACES/empty.trace >>output
|
||||||
|
|
||||||
# @TEST-EXEC: TEST_DIFF_CANONIFIER= btest-diff output
|
# @TEST-EXEC: TEST_DIFF_CANONIFIER= btest-diff output
|
||||||
|
|
||||||
cat >scripts/__load__.bro <<EOF
|
cat >scripts/__load__.bro <<EOF
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue