mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00

- policy/ renamed to scripts/ - By default BROPATH now contains: - scripts/ - scripts/policy - scripts/site - *Nearly* all tests pass. - All of scripts/base/ is loaded by main.cc - Can be disabled by setting $BRO_NO_BASE_SCRIPTS - Scripts in scripts/base/ don't use relative path loading to ease use of BRO_NO_BASE_SCRIPTS (to copy and paste that script). - The scripts in scripts/base/protocols/ only (or soon will only) do logging and state building. - The scripts in scripts/base/frameworks/ add functionality without causing any additional overhead. - All "detection" activity happens through scripts in scripts/policy/. - Communications framework modified temporarily to need an environment variable to actually enable (ENABLE_COMMUNICATION=1) - This is so the communications framework can be loaded as part of the base without causing trouble when it's not needed. - This will be removed once a resolution to ticket #540 is reached.
54 lines
1.7 KiB
Text
54 lines
1.7 KiB
Text
##! Functions to assist with small string analysis and manipulation that can
|
|
##! be implemented as Bro functions and don't need to be implemented as built
|
|
##! in functions.
|
|
|
|
## Returns true if the given string is at least 25% composed of 8-bit
|
|
## characters.
|
|
function is_string_binary(s: string): bool
|
|
{
|
|
return byte_len(gsub(s, /[\x00-\x7f]/, "")) * 100 / |s| >= 25;
|
|
}
|
|
|
|
## Joins a set of string together, with elements delimited by a constant string.
|
|
## ss: a set of strings to join
|
|
## j: the string used to join set elements
|
|
## Returns: a string composed of the all elements of the set, delimited by the
|
|
## joining string.
|
|
function join_string_set(ss: set[string], j: string): string
|
|
{
|
|
local output="";
|
|
local i=0;
|
|
for ( s in ss )
|
|
{
|
|
if ( i > 0 )
|
|
output = cat(output, j);
|
|
|
|
output = cat(output, s);
|
|
++i;
|
|
}
|
|
return output;
|
|
}
|
|
|
|
## Given a string, returns an escaped version.
|
|
## s: a string to escape
|
|
## chars: a string containing all the characters that need to be escaped
|
|
## Returns: a string with all occurrences of any character in ``chars`` escaped
|
|
## using ``\``, and any literal ``\`` characters likewise escaped.
|
|
function string_escape(s: string, chars: string): string
|
|
{
|
|
s = subst_string(s, "\\", "\\\\");
|
|
for ( c in chars )
|
|
s = subst_string(s, c, cat("\\", c));
|
|
return s;
|
|
}
|
|
|
|
## Cut a number of character from the end of the given string.
|
|
## s: a string to trim
|
|
## tail_len: the number of characters to remove from end of string
|
|
## Returns: the string in ``s`` with ``tail_len`` characters removed from end
|
|
function cut_tail(s: string, tail_len: count): string
|
|
{
|
|
if ( tail_len > |s| )
|
|
tail_len = |s|;
|
|
return sub_bytes(s, 1, int_to_count(|s| - tail_len));
|
|
}
|