Make debug stream names use "-", and handle "_" transparently

This looks consistent, and doesn't break any existing uses with underscores.
This commit is contained in:
Christian Kreibich 2024-11-15 17:53:29 -08:00
parent 7563af4906
commit b1e0e26484
3 changed files with 21 additions and 6 deletions

View file

@ -16,7 +16,7 @@ namespace zeek::detail {
// Same order here as in DebugStream.
DebugLogger::Stream DebugLogger::streams[NUM_DBGS] =
{{"serial", 0, false}, {"rules", 0, false}, {"string", 0, false}, {"notifiers", 0, false},
{"main-loop", 0, false}, {"dpd", 0, false}, {"packet_analysis", 0, false}, {"file_analysis", 0, false},
{"main-loop", 0, false}, {"dpd", 0, false}, {"packet-analysis", 0, false}, {"file-analysis", 0, false},
{"tm", 0, false}, {"logging", 0, false}, {"input", 0, false}, {"threading", 0, false},
{"plugins", 0, false}, {"zeekygen", 0, false}, {"pktio", 0, false}, {"broker", 0, false},
{"scripts", 0, false}, {"supervisor", 0, false}, {"hashkey", 0, false}, {"spicy", 0, false}};
@ -81,7 +81,10 @@ void DebugLogger::EnableStreams(const char* s) {
char* tok = strtok(tmp, ",");
while ( tok ) {
std::string ltok{util::strtolower(tok)};
// This maps "_" to "-" for backward compatibility and ease of use: we
// used to have underscores in some stream names, and several plugins
// do as well.
std::string ltok{util::strreplace(util::strtolower(tok), "_", "-")};
if ( strcasecmp("all", tok) == 0 ) {
for ( int i = 0; i < NUM_DBGS; ++i ) {
@ -114,7 +117,7 @@ void DebugLogger::EnableStreams(const char* s) {
int i;
for ( i = 0; i < NUM_DBGS; ++i ) {
if ( strcasecmp(streams[i].prefix, tok) == 0 ) {
if ( ltok == streams[i].prefix ) {
streams[i].enabled = true;
enabled_streams.insert(ltok);
goto next;
@ -189,6 +192,12 @@ void DebugLogger::Log(const plugin::Plugin& plugin, const char* fmt, ...) {
fflush(file);
}
const std::string DebugLogger::PluginStreamName(const std::string& plugin_name) const {
std::string res{util::strreplace(plugin_name, "::", "-")};
res = util::strreplace(res, "_", "-");
return "plugin-" + util::strtolower(res);
}
} // namespace zeek::detail
#endif

View file

@ -108,9 +108,9 @@ private:
static Stream streams[NUM_DBGS];
const std::string PluginStreamName(const std::string& plugin_name) {
return "plugin-" + util::strtolower(util::strreplace(plugin_name, "::", "-"));
}
// Canonical rendering of a plugin's name. This is lower-cased,
// with "::" and "_" both becoming "-".
const std::string PluginStreamName(const std::string& plugin_name) const;
};
extern DebugLogger debug_logger;

View file

@ -2,7 +2,13 @@
# @TEST-REQUIRES: test "$($BUILD/zeek-config --build_type)" = "debug"
# @TEST-EXEC: zeek -B plugin-Zeek-HTTP -e 'event zeek_init() { print "zeek_init"; }' 2>zeek.stderr
# Variations on case that should all work:
# @TEST-EXEC: zeek -B PLUGIN-zeek-http -e 'event zeek_init() { print "zeek_init"; }' 2>zeek.stderr
# @TEST-EXEC: zeek -B plugin-zeek-TCP_PKT -e 'event zeek_init() { print "zeek_init"; }' 2>zeek.stderr
# @TEST-EXEC: zeek -B plugin-zeek-tcp-pkt -e 'event zeek_init() { print "zeek_init"; }' 2>zeek.stderr
# A plugin that really does not exist:
# @TEST-EXEC-FAIL: zeek -B plugin-notaplugin -e 'event zeek_init() { print "zeek_init"; }' 2>zeek.stderr
# @TEST-EXEC: btest-diff zeek.stderr