mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
Remove support for .bro script extension and BRO_ environment variables
This commit is contained in:
parent
44ad614094
commit
725e759560
11 changed files with 33 additions and 171 deletions
|
@ -257,44 +257,29 @@ bool Manager::ActivateDynamicPluginInternal(const std::string& name, bool ok_if_
|
||||||
string init;
|
string init;
|
||||||
|
|
||||||
// First load {scripts}/__preload__.zeek automatically.
|
// First load {scripts}/__preload__.zeek automatically.
|
||||||
for (const string& ext : util::detail::script_extensions)
|
init = dir + "scripts/__preload__.zeek";
|
||||||
{
|
|
||||||
init = dir + "scripts/__preload__" + ext;
|
|
||||||
|
|
||||||
if ( util::is_file(init) )
|
if ( util::is_file(init) )
|
||||||
{
|
{
|
||||||
DBG_LOG(DBG_PLUGINS, " Loading %s", init.c_str());
|
DBG_LOG(DBG_PLUGINS, " Loading %s", init.c_str());
|
||||||
util::detail::warn_if_legacy_script(init);
|
scripts_to_load.push_back(init);
|
||||||
scripts_to_load.push_back(init);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load {bif,scripts}/__load__.zeek automatically.
|
// Load {bif,scripts}/__load__.zeek automatically.
|
||||||
for (const string& ext : util::detail::script_extensions)
|
init = dir + "lib/bif/__load__.zeek";
|
||||||
{
|
|
||||||
init = dir + "lib/bif/__load__" + ext;
|
|
||||||
|
|
||||||
if ( util::is_file(init) )
|
if ( util::is_file(init) )
|
||||||
{
|
{
|
||||||
DBG_LOG(DBG_PLUGINS, " Loading %s", init.c_str());
|
DBG_LOG(DBG_PLUGINS, " Loading %s", init.c_str());
|
||||||
util::detail::warn_if_legacy_script(init);
|
scripts_to_load.push_back(init);
|
||||||
scripts_to_load.push_back(init);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const string& ext : util::detail::script_extensions)
|
init = dir + "scripts/__load__.zeek";
|
||||||
{
|
|
||||||
init = dir + "scripts/__load__" + ext;
|
|
||||||
|
|
||||||
if ( util::is_file(init) )
|
if ( util::is_file(init) )
|
||||||
{
|
{
|
||||||
DBG_LOG(DBG_PLUGINS, " Loading %s", init.c_str());
|
DBG_LOG(DBG_PLUGINS, " Loading %s", init.c_str());
|
||||||
util::detail::warn_if_legacy_script(init);
|
scripts_to_load.push_back(init);
|
||||||
scripts_to_load.push_back(init);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mark this plugin as activated by clearing the path.
|
// Mark this plugin as activated by clearing the path.
|
||||||
|
|
66
src/util.cc
66
src/util.cc
|
@ -581,17 +581,6 @@ uint64_t rand64bit()
|
||||||
return base;
|
return base;
|
||||||
}
|
}
|
||||||
|
|
||||||
const array<string, 2> script_extensions = {".zeek", ".bro"};
|
|
||||||
|
|
||||||
void warn_if_legacy_script(std::string_view filename)
|
|
||||||
{
|
|
||||||
if ( ends_with(filename, ".bro") )
|
|
||||||
{
|
|
||||||
std::string x(filename);
|
|
||||||
reporter->Warning("Loading script '%s' with legacy extension, support for '.bro' will be removed in Zeek v4.1", x.c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_CASE("util is_package_loader")
|
TEST_CASE("util is_package_loader")
|
||||||
{
|
{
|
||||||
CHECK(is_package_loader("/some/path/__load__.zeek") == true);
|
CHECK(is_package_loader("/some/path/__load__.zeek") == true);
|
||||||
|
@ -601,17 +590,7 @@ TEST_CASE("util is_package_loader")
|
||||||
bool is_package_loader(const string& path)
|
bool is_package_loader(const string& path)
|
||||||
{
|
{
|
||||||
string filename(std::move(SafeBasename(path).result));
|
string filename(std::move(SafeBasename(path).result));
|
||||||
|
return ( filename == "__load__.zeek" );
|
||||||
for ( const string& ext : script_extensions )
|
|
||||||
{
|
|
||||||
if ( filename == "__load__" + ext )
|
|
||||||
{
|
|
||||||
warn_if_legacy_script(filename);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_to_zeek_path(const string& dir)
|
void add_to_zeek_path(const string& dir)
|
||||||
|
@ -627,19 +606,15 @@ FILE* open_package(string& path, const string& mode)
|
||||||
string arg_path = path;
|
string arg_path = path;
|
||||||
path.append("/__load__");
|
path.append("/__load__");
|
||||||
|
|
||||||
for ( const string& ext : script_extensions )
|
string p = path + ".zeek";
|
||||||
|
if ( can_read(p) )
|
||||||
{
|
{
|
||||||
string p = path + ext;
|
path.append(".zeek");
|
||||||
if ( can_read(p) )
|
return open_file(path, mode);
|
||||||
{
|
|
||||||
warn_if_legacy_script(path);
|
|
||||||
path.append(ext);
|
|
||||||
return open_file(path, mode);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
path.append(script_extensions[0]);
|
path.append(".zeek");
|
||||||
string package_loader = "__load__" + script_extensions[0];
|
string package_loader = "__load__.zeek";
|
||||||
reporter->Error("Failed to open package '%s': missing '%s' file",
|
reporter->Error("Failed to open package '%s': missing '%s' file",
|
||||||
arg_path.c_str(), package_loader.c_str());
|
arg_path.c_str(), package_loader.c_str());
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -2008,27 +1983,14 @@ string find_script_file(const string& filename, const string& path_set)
|
||||||
vector<string> paths;
|
vector<string> paths;
|
||||||
tokenize_string(path_set, ":", &paths);
|
tokenize_string(path_set, ":", &paths);
|
||||||
|
|
||||||
vector<string> ext(detail::script_extensions.begin(), detail::script_extensions.end());
|
vector<string> ext = {".zeek"};
|
||||||
|
|
||||||
for ( size_t n = 0; n < paths.size(); ++n )
|
for ( size_t n = 0; n < paths.size(); ++n )
|
||||||
{
|
{
|
||||||
string f = find_file_in_path(filename, paths[n], ext);
|
string f = find_file_in_path(filename, paths[n], ext);
|
||||||
|
|
||||||
if ( ! f.empty() )
|
if ( ! f.empty() )
|
||||||
{
|
|
||||||
detail::warn_if_legacy_script(f);
|
|
||||||
return f;
|
return f;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ends_with(filename, ".bro") )
|
|
||||||
{
|
|
||||||
detail::warn_if_legacy_script(filename);
|
|
||||||
|
|
||||||
// We were looking for a file explicitly ending in .bro and didn't
|
|
||||||
// find it, so fall back to one ending in .zeek, if it exists.
|
|
||||||
auto fallback = string(filename.data(), filename.size() - 4) + ".zeek";
|
|
||||||
return find_script_file(fallback, path_set);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return string();
|
return string();
|
||||||
|
@ -2404,17 +2366,7 @@ char* zeekenv(const char* name)
|
||||||
if ( it == legacy_vars.end() )
|
if ( it == legacy_vars.end() )
|
||||||
return rval;
|
return rval;
|
||||||
|
|
||||||
auto val = getenv(it->second);
|
return getenv(it->second);
|
||||||
|
|
||||||
if ( val && starts_with(it->second, "BRO_") )
|
|
||||||
{
|
|
||||||
if ( reporter )
|
|
||||||
reporter->Warning("Using legacy environment variable %s, support will be removed in Zeek v4.1; use %s instead", it->second, name);
|
|
||||||
else
|
|
||||||
fprintf(stderr, "Using legacy environment variable %s, support will be removed in Zeek v4.1; use %s instead\n", it->second, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
return val;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static string json_escape_byte(char c)
|
static string json_escape_byte(char c)
|
||||||
|
|
|
@ -174,11 +174,6 @@ constexpr SourceID SOURCE_LOCAL = 0;
|
||||||
// indicating whether it's a local or remote event.
|
// indicating whether it's a local or remote event.
|
||||||
constexpr SourceID SOURCE_BROKER = 0xffffffff;
|
constexpr SourceID SOURCE_BROKER = 0xffffffff;
|
||||||
|
|
||||||
extern const std::array<std::string, 2> script_extensions;
|
|
||||||
|
|
||||||
/** Prints a warning if the filename ends in .bro. */
|
|
||||||
void warn_if_legacy_script(std::string_view filename);
|
|
||||||
|
|
||||||
bool is_package_loader(const std::string& path);
|
bool is_package_loader(const std::string& path);
|
||||||
|
|
||||||
extern void add_to_zeek_path(const std::string& dir);
|
extern void add_to_zeek_path(const std::string& dir);
|
||||||
|
|
|
@ -468,13 +468,8 @@ time_t ScriptInfo::DoGetModificationTime() const
|
||||||
|
|
||||||
if ( ! info )
|
if ( ! info )
|
||||||
{
|
{
|
||||||
for (const string& ext : util::detail::script_extensions)
|
string pkg_name = *it + "/__load__.zeek";
|
||||||
{
|
info = zeek::detail::zeekygen_mgr->GetScriptInfo(pkg_name);
|
||||||
string pkg_name = *it + "/__load__" + ext;
|
|
||||||
info = zeek::detail::zeekygen_mgr->GetScriptInfo(pkg_name);
|
|
||||||
if ( info )
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! info )
|
if ( ! info )
|
||||||
reporter->InternalWarning("Zeekygen failed to get mtime of %s",
|
reporter->InternalWarning("Zeekygen failed to get mtime of %s",
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
loaded lcl2.base.utils.site.zeek
|
loaded lcl2.base.utils.site.zeek
|
||||||
loaded lcl.base.utils.site.zeek
|
loaded lcl.base.utils.site.zeek
|
||||||
loaded lcl2.base.protocols.http.bro
|
|
||||||
loaded lcl.base.protocols.http.zeek
|
loaded lcl.base.protocols.http.zeek
|
||||||
|
|
|
@ -1,2 +1 @@
|
||||||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||||
Loaded: dontloadme.bro
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
# @TEST-EXEC: zeek -b %INPUT >out 2>&1
|
|
||||||
# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff out
|
|
||||||
|
|
||||||
# We don't have a foo.bro, but we'll accept foo.zeek.
|
|
||||||
@load foo.bro
|
|
||||||
|
|
||||||
@TEST-START-FILE foo.zeek
|
|
||||||
event zeek_init()
|
|
||||||
{
|
|
||||||
print "loaded foo.zeek";
|
|
||||||
}
|
|
||||||
@TEST-END-FILE
|
|
|
@ -1,34 +1,11 @@
|
||||||
# Test loading scripts with different file extensions.
|
# Test loading scripts with different file extensions.
|
||||||
#
|
#
|
||||||
# Test that either ".zeek" or ".bro" can be loaded without specifying extension
|
# Test that ".zeek" can be loaded without specifying extension
|
||||||
# @TEST-EXEC: cp x/foo.bro .
|
|
||||||
# @TEST-EXEC: zeek -b load_foo > bro_only
|
|
||||||
# @TEST-EXEC: btest-diff bro_only
|
|
||||||
# @TEST-EXEC: rm foo.bro
|
|
||||||
#
|
|
||||||
# @TEST-EXEC: cp x/foo.zeek .
|
# @TEST-EXEC: cp x/foo.zeek .
|
||||||
# @TEST-EXEC: zeek -b load_foo > zeek_only
|
# @TEST-EXEC: zeek -b load_foo > zeek_only
|
||||||
# @TEST-EXEC: btest-diff zeek_only
|
# @TEST-EXEC: btest-diff zeek_only
|
||||||
# @TEST-EXEC: rm foo.zeek
|
# @TEST-EXEC: rm foo.zeek
|
||||||
#
|
#
|
||||||
# Test that ".zeek" is the preferred file extension, unless ".bro" is specified
|
|
||||||
# @TEST-EXEC: cp x/foo.* .
|
|
||||||
# @TEST-EXEC: cp x2/foo .
|
|
||||||
# @TEST-EXEC: zeek -b load_foo > zeek_preferred
|
|
||||||
# @TEST-EXEC: btest-diff zeek_preferred
|
|
||||||
#
|
|
||||||
# @TEST-EXEC: zeek -b load_foo_bro > bro_preferred
|
|
||||||
# @TEST-EXEC: btest-diff bro_preferred
|
|
||||||
# @TEST-EXEC: rm foo*
|
|
||||||
#
|
|
||||||
# Test that ".bro" is preferred over a script with no file extension (when
|
|
||||||
# there is no ".zeek" script)
|
|
||||||
# @TEST-EXEC: cp x/foo.bro .
|
|
||||||
# @TEST-EXEC: cp x2/foo .
|
|
||||||
# @TEST-EXEC: zeek -b load_foo > bro_preferred_2
|
|
||||||
# @TEST-EXEC: btest-diff bro_preferred_2
|
|
||||||
# @TEST-EXEC: rm foo*
|
|
||||||
#
|
|
||||||
# Test that a script with no file extension can be loaded
|
# Test that a script with no file extension can be loaded
|
||||||
# @TEST-EXEC: cp x2/foo .
|
# @TEST-EXEC: cp x2/foo .
|
||||||
# @TEST-EXEC: zeek -b load_foo > no_extension
|
# @TEST-EXEC: zeek -b load_foo > no_extension
|
||||||
|
@ -55,19 +32,11 @@
|
||||||
@load foo
|
@load foo
|
||||||
@TEST-END-FILE
|
@TEST-END-FILE
|
||||||
|
|
||||||
@TEST-START-FILE load_foo_bro
|
|
||||||
@load foo.bro
|
|
||||||
@TEST-END-FILE
|
|
||||||
|
|
||||||
@TEST-START-FILE load_foo_xyz
|
@TEST-START-FILE load_foo_xyz
|
||||||
@load foo.xyz
|
@load foo.xyz
|
||||||
@TEST-END-FILE
|
@TEST-END-FILE
|
||||||
|
|
||||||
|
|
||||||
@TEST-START-FILE x/foo.bro
|
|
||||||
print "Bro script loaded";
|
|
||||||
@TEST-END-FILE
|
|
||||||
|
|
||||||
@TEST-START-FILE x/foo.zeek
|
@TEST-START-FILE x/foo.zeek
|
||||||
print "Zeek script loaded";
|
print "Zeek script loaded";
|
||||||
@TEST-END-FILE
|
@TEST-END-FILE
|
||||||
|
|
|
@ -1,23 +1,13 @@
|
||||||
# Test that package loading works when a package loader script is present.
|
# Test that package loading works when a package loader script is present.
|
||||||
#
|
#
|
||||||
# Test that ".zeek" is loaded when there is also a ".bro"
|
# Test that ".zeek" is loaded
|
||||||
# @TEST-EXEC: zeek -b foo >output
|
# @TEST-EXEC: zeek -b foo >output
|
||||||
# @TEST-EXEC: btest-diff output
|
# @TEST-EXEC: btest-diff output
|
||||||
#
|
#
|
||||||
# Test that ".bro" is loaded when there is no ".zeek"
|
|
||||||
# @TEST-EXEC: rm foo/__load__.zeek
|
|
||||||
# @TEST-EXEC: zeek -b foo >output2
|
|
||||||
# @TEST-EXEC: btest-diff output2
|
|
||||||
#
|
|
||||||
# Test that package cannot be loaded when no package loader script exists.
|
# Test that package cannot be loaded when no package loader script exists.
|
||||||
# @TEST-EXEC: rm foo/__load__.bro
|
# @TEST-EXEC: rm foo/__load__.zeek
|
||||||
# @TEST-EXEC-FAIL: zeek -b foo
|
# @TEST-EXEC-FAIL: zeek -b foo
|
||||||
|
|
||||||
@TEST-START-FILE foo/__load__.bro
|
|
||||||
@load ./test
|
|
||||||
print "__load__.bro loaded";
|
|
||||||
@TEST-END-FILE
|
|
||||||
|
|
||||||
@TEST-START-FILE foo/__load__.zeek
|
@TEST-START-FILE foo/__load__.zeek
|
||||||
@load ./test
|
@load ./test
|
||||||
print "__load__.zeek loaded";
|
print "__load__.zeek loaded";
|
||||||
|
|
|
@ -18,12 +18,7 @@ print "loaded lcl.base.utils.site.zeek";
|
||||||
print "loaded lcl2.base.utils.site.zeek";
|
print "loaded lcl2.base.utils.site.zeek";
|
||||||
@TEST-END-FILE
|
@TEST-END-FILE
|
||||||
|
|
||||||
# For a script package like base/protocols/http/, either of the recognized
|
# For a script package like base/protocols/http/, verify the package can be loaded.
|
||||||
# file extensions can be loaded here.
|
|
||||||
@TEST-START-FILE lcl.base.protocols.http.zeek
|
@TEST-START-FILE lcl.base.protocols.http.zeek
|
||||||
print "loaded lcl.base.protocols.http.zeek";
|
print "loaded lcl.base.protocols.http.zeek";
|
||||||
@TEST-END-FILE
|
@TEST-END-FILE
|
||||||
|
|
||||||
@TEST-START-FILE lcl2.base.protocols.http.bro
|
|
||||||
print "loaded lcl2.base.protocols.http.bro";
|
|
||||||
@TEST-END-FILE
|
|
||||||
|
|
|
@ -1,15 +1,9 @@
|
||||||
# This tests the @unload directive
|
# This tests the @unload directive
|
||||||
#
|
#
|
||||||
# Test that @unload works with ".bro" when there is no ".zeek" script
|
# Test that @unload works with ".bro" when there is no ".zeek" script
|
||||||
# @TEST-EXEC: zeek -b unloadbro misc/loaded-scripts dontloadmebro > output
|
# @TEST-EXEC: zeek -b unload misc/loaded-scripts dontloadme > output
|
||||||
# @TEST-EXEC: btest-diff output
|
# @TEST-EXEC: btest-diff output
|
||||||
# @TEST-EXEC: grep dontloadmebro loaded_scripts.log && exit 1 || exit 0
|
# @TEST-EXEC: grep dontloadme loaded_scripts.log && exit 1 || exit 0
|
||||||
#
|
|
||||||
# Test that @unload looks for ".zeek" first (assuming no file extension is
|
|
||||||
# specified in the @unload)
|
|
||||||
# @TEST-EXEC: zeek -b unload misc/loaded-scripts dontloadme.zeek dontloadme.bro > output2
|
|
||||||
# @TEST-EXEC: btest-diff output2
|
|
||||||
# @TEST-EXEC: grep dontloadme.bro loaded_scripts.log
|
|
||||||
|
|
||||||
@TEST-START-FILE unloadbro.bro
|
@TEST-START-FILE unloadbro.bro
|
||||||
@unload dontloadmebro
|
@unload dontloadmebro
|
||||||
|
@ -30,3 +24,4 @@ print "Loaded: dontloadme.zeek";
|
||||||
@TEST-START-FILE dontloadme.bro
|
@TEST-START-FILE dontloadme.bro
|
||||||
print "Loaded: dontloadme.bro";
|
print "Loaded: dontloadme.bro";
|
||||||
@TEST-END-FILE
|
@TEST-END-FILE
|
||||||
|
z
|
Loading…
Add table
Add a link
Reference in a new issue