mirror of
https://github.com/zeek/zeek.git
synced 2025-10-03 07:08:19 +00:00

- Use `-b` most everywhere, it will save time. - Start some intel tests upon the input file being fully read instead of at an arbitrary time. - Improve termination condition for some sumstats/cluster tests. - Filter uninteresting output from some supervisor tests. - Test for `notice_policy.log` is no longer needed.
87 lines
2.1 KiB
Text
87 lines
2.1 KiB
Text
# @TEST-EXEC: btest-bg-run zeekproc zeek -b %INPUT
|
|
# @TEST-EXEC: btest-bg-wait 45
|
|
# @TEST-EXEC: cat zeekproc/intel.log > output
|
|
# @TEST-EXEC: cat zeekproc/.stdout >> output
|
|
# @TEST-EXEC: btest-diff output
|
|
|
|
# @TEST-START-FILE intel.dat
|
|
#fields indicator indicator_type meta.source meta.desc meta.url
|
|
1.2.3.4 Intel::ADDR source1 this host is bad http://some-data-distributor.com/1
|
|
192.168.0.0/16 Intel::SUBNET source1 this network is bad http://some-data-distributor.com/2
|
|
# @TEST-END-FILE
|
|
|
|
@load frameworks/intel/do_expire
|
|
|
|
redef exit_only_after_terminate = T;
|
|
|
|
redef Intel::read_files += { "../intel.dat" };
|
|
redef enum Intel::Where += { SOMEWHERE };
|
|
|
|
global runs = 0;
|
|
global entries_read = 0;
|
|
global start_time: time;
|
|
global expire_count = 0;
|
|
const intel_expiry = 9sec;
|
|
redef Intel::item_expiration = intel_expiry;
|
|
redef table_expire_interval = 0.2sec;
|
|
|
|
event do_it()
|
|
{
|
|
++runs;
|
|
print fmt("-- Run %s --", runs);
|
|
|
|
print "Seen: 1.2.3.4";
|
|
Intel::seen([$host=1.2.3.4, $where=SOMEWHERE]);
|
|
|
|
if ( runs == 4 )
|
|
schedule 1sec { do_it() };
|
|
else if ( runs > 4 )
|
|
terminate();
|
|
}
|
|
|
|
event Intel::match(s: Intel::Seen, items: set[Intel::Item])
|
|
{
|
|
print fmt("Match: %s", s$indicator);
|
|
}
|
|
|
|
hook Intel::item_expired(indicator: string, indicator_type: Intel::Type,
|
|
metas: set[Intel::MetaData])
|
|
{
|
|
++expire_count;
|
|
|
|
if ( expire_count == 2 )
|
|
# Check that time of expiry indicates is approximately what's expected
|
|
# after having been refreshed.
|
|
print fmt("Expired: %s (took longer: %s)", indicator, (network_time() - start_time) > intel_expiry + 2sec);
|
|
else
|
|
print fmt("Expired: %s", indicator);
|
|
|
|
event do_it();
|
|
}
|
|
|
|
event refresh()
|
|
{
|
|
# Reinserting the indicator should reset the expiration
|
|
local item = [
|
|
$indicator="1.2.3.4",
|
|
$indicator_type=Intel::ADDR,
|
|
$meta=[
|
|
$source="source2",
|
|
$desc="this host is still bad",
|
|
$url="http://some-data-distributor.com/2"]
|
|
];
|
|
Intel::insert(item);
|
|
event do_it();
|
|
}
|
|
|
|
event Intel::read_entry(desc: Input::EventDescription, tpe: Input::Event, item: Intel::Item)
|
|
{
|
|
++entries_read;
|
|
|
|
if ( entries_read == 2 )
|
|
{
|
|
start_time = network_time();
|
|
event do_it();
|
|
schedule 3sec { refresh() };
|
|
}
|
|
}
|