mirror of
https://github.com/zeek/zeek.git
synced 2025-10-04 15:48:19 +00:00
it compiles (but doesn't do anything useful)
This commit is contained in:
parent
42e82b99cb
commit
6e6073ff4c
12 changed files with 223 additions and 0 deletions
|
@ -141,6 +141,7 @@ endmacro(GET_BIF_OUTPUT_FILES)
|
||||||
set(BIF_SRCS
|
set(BIF_SRCS
|
||||||
bro.bif
|
bro.bif
|
||||||
logging.bif
|
logging.bif
|
||||||
|
input.bif
|
||||||
event.bif
|
event.bif
|
||||||
const.bif
|
const.bif
|
||||||
types.bif
|
types.bif
|
||||||
|
@ -332,6 +333,9 @@ set(bro_SRCS
|
||||||
IRC.cc
|
IRC.cc
|
||||||
List.cc
|
List.cc
|
||||||
Reporter.cc
|
Reporter.cc
|
||||||
|
InputMgr.cc
|
||||||
|
InputReader.cc
|
||||||
|
InputReaderAscii.cc
|
||||||
LogMgr.cc
|
LogMgr.cc
|
||||||
LogWriter.cc
|
LogWriter.cc
|
||||||
LogWriterAscii.cc
|
LogWriterAscii.cc
|
||||||
|
|
|
@ -523,11 +523,13 @@ void builtin_error(const char* msg, BroObj* arg)
|
||||||
|
|
||||||
#include "bro.bif.func_h"
|
#include "bro.bif.func_h"
|
||||||
#include "logging.bif.func_h"
|
#include "logging.bif.func_h"
|
||||||
|
#include "input.bif.func_h"
|
||||||
#include "reporter.bif.func_h"
|
#include "reporter.bif.func_h"
|
||||||
#include "strings.bif.func_h"
|
#include "strings.bif.func_h"
|
||||||
|
|
||||||
#include "bro.bif.func_def"
|
#include "bro.bif.func_def"
|
||||||
#include "logging.bif.func_def"
|
#include "logging.bif.func_def"
|
||||||
|
#include "input.bif.func_def"
|
||||||
#include "reporter.bif.func_def"
|
#include "reporter.bif.func_def"
|
||||||
#include "strings.bif.func_def"
|
#include "strings.bif.func_def"
|
||||||
|
|
||||||
|
@ -542,6 +544,7 @@ void init_builtin_funcs()
|
||||||
|
|
||||||
#include "bro.bif.func_init"
|
#include "bro.bif.func_init"
|
||||||
#include "logging.bif.func_init"
|
#include "logging.bif.func_init"
|
||||||
|
#include "input.bif.func_init"
|
||||||
#include "reporter.bif.func_init"
|
#include "reporter.bif.func_init"
|
||||||
#include "strings.bif.func_init"
|
#include "strings.bif.func_init"
|
||||||
|
|
||||||
|
|
90
src/InputMgr.cc
Normal file
90
src/InputMgr.cc
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
// See the file "COPYING" in the main distribution directory for copyright.
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
#include "InputMgr.h"
|
||||||
|
#include "Event.h"
|
||||||
|
#include "EventHandler.h"
|
||||||
|
#include "NetVar.h"
|
||||||
|
#include "Net.h"
|
||||||
|
|
||||||
|
|
||||||
|
#include "InputReader.h"
|
||||||
|
|
||||||
|
#include "InputReaderAscii.h"
|
||||||
|
|
||||||
|
|
||||||
|
struct InputReaderDefinition {
|
||||||
|
bro_int_t type; // the type
|
||||||
|
const char *name; // descriptive name for error messages
|
||||||
|
bool (*init)(); // optional one-time inifializing function
|
||||||
|
InputReader* (*factory)(); // factory function for creating instances
|
||||||
|
};
|
||||||
|
|
||||||
|
InputReaderDefinition input_readers[] = {
|
||||||
|
{ BifEnum::Input::READER_ASCII, "Ascii", 0, InputReaderAscii::Instantiate },
|
||||||
|
|
||||||
|
// End marker
|
||||||
|
{ BifEnum::Input::READER_DEFAULT, "None", 0, (InputReader* (*)())0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
InputMgr::InputMgr()
|
||||||
|
{
|
||||||
|
DBG_LOG(DBG_LOGGING, "this has to happen");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// create a new input reader object to be used at whomevers leisure lateron.
|
||||||
|
InputReader* InputMgr::CreateReader(EnumVal* reader, string source)
|
||||||
|
{
|
||||||
|
InputReaderDefinition* ir = input_readers;
|
||||||
|
exit(12);
|
||||||
|
|
||||||
|
while ( true ) {
|
||||||
|
if ( ir->type == BifEnum::Input::READER_DEFAULT )
|
||||||
|
{
|
||||||
|
DBG_LOG(DBG_LOGGING, "unknown reader when creating reader");
|
||||||
|
reporter->Error("unknown reader when creating reader");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ir->type != reader->AsEnum() ) {
|
||||||
|
// no, didn't find the right one...
|
||||||
|
++ir;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// call init function of writer if presnt
|
||||||
|
if ( ir->init )
|
||||||
|
{
|
||||||
|
if ( (*ir->init)() )
|
||||||
|
{
|
||||||
|
//clear it to be not called again
|
||||||
|
ir->init = 0;
|
||||||
|
} else {
|
||||||
|
// ohok. init failed, kill factory for all eternity
|
||||||
|
ir->factory = 0;
|
||||||
|
DBG_LOG(DBG_LOGGING, "failed to init input class %s", ir->name);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !ir->factory )
|
||||||
|
// no factory?
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
// all done. break.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert(ir->factory);
|
||||||
|
InputReader* reader_obj = (*ir->factory)();
|
||||||
|
assert(reader_obj);
|
||||||
|
|
||||||
|
return reader_obj;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
24
src/InputMgr.h
Normal file
24
src/InputMgr.h
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
// See the file "COPYING" in the main distribution directory for copyright.
|
||||||
|
|
||||||
|
#ifndef INPUTMGR_H
|
||||||
|
#define INPUTMGR_H
|
||||||
|
|
||||||
|
#include "InputReader.h"
|
||||||
|
#include "BroString.h"
|
||||||
|
|
||||||
|
#include "Val.h"
|
||||||
|
#include "EventHandler.h"
|
||||||
|
#include "RemoteSerializer.h"
|
||||||
|
|
||||||
|
|
||||||
|
class InputMgr {
|
||||||
|
public:
|
||||||
|
InputMgr();
|
||||||
|
|
||||||
|
InputReader* CreateReader(EnumVal* reader, string source);
|
||||||
|
};
|
||||||
|
|
||||||
|
extern InputMgr* input_mgr;
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* INPUTMGR_H */
|
12
src/InputReader.cc
Normal file
12
src/InputReader.cc
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
|
||||||
|
#include "InputReader.h"
|
||||||
|
|
||||||
|
InputReader::InputReader()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
InputReader::~InputReader()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
29
src/InputReader.h
Normal file
29
src/InputReader.h
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
// See the file "COPYING" in the main distribution directory for copyright.
|
||||||
|
//
|
||||||
|
// Same notes about thread safety as in LogWriter.h apply.
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef INPUTREADER_H
|
||||||
|
#define INPUTREADER_H
|
||||||
|
|
||||||
|
class InputReader {
|
||||||
|
public:
|
||||||
|
InputReader();
|
||||||
|
virtual ~InputReader();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// Methods that have to be overwritten by the individual readers
|
||||||
|
|
||||||
|
private:
|
||||||
|
friend class InputMgr;
|
||||||
|
|
||||||
|
// When an error occurs, this method is called to set a flag marking the
|
||||||
|
// writer as disabled.
|
||||||
|
|
||||||
|
bool disabled;
|
||||||
|
|
||||||
|
bool Disabled() { return disabled; }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* INPUTREADER_H */
|
12
src/InputReaderAscii.cc
Normal file
12
src/InputReaderAscii.cc
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
|
||||||
|
#include "InputReaderAscii.h"
|
||||||
|
#include "DebugLogger.h"
|
||||||
|
|
||||||
|
InputReaderAscii::InputReaderAscii()
|
||||||
|
{
|
||||||
|
DBG_LOG(DBG_LOGGING, "input reader initialized");
|
||||||
|
}
|
||||||
|
|
||||||
|
InputReaderAscii::~InputReaderAscii()
|
||||||
|
{
|
||||||
|
}
|
20
src/InputReaderAscii.h
Normal file
20
src/InputReaderAscii.h
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
|
||||||
|
#ifndef INPUTREADERASCII_H
|
||||||
|
#define INPUTREADERASCII_H
|
||||||
|
|
||||||
|
#include "InputReader.h"
|
||||||
|
|
||||||
|
class InputReaderAscii : public InputReader {
|
||||||
|
public:
|
||||||
|
InputReaderAscii();
|
||||||
|
~InputReaderAscii();
|
||||||
|
|
||||||
|
static InputReader* Instantiate() { return new InputReaderAscii; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
private:
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* INPUTREADERASCII_H */
|
|
@ -255,6 +255,7 @@ StringVal* cmd_line_bpf_filter;
|
||||||
#include "types.bif.netvar_def"
|
#include "types.bif.netvar_def"
|
||||||
#include "event.bif.netvar_def"
|
#include "event.bif.netvar_def"
|
||||||
#include "logging.bif.netvar_def"
|
#include "logging.bif.netvar_def"
|
||||||
|
#include "input.bif.netvar_def"
|
||||||
#include "reporter.bif.netvar_def"
|
#include "reporter.bif.netvar_def"
|
||||||
|
|
||||||
void init_event_handlers()
|
void init_event_handlers()
|
||||||
|
@ -315,6 +316,7 @@ void init_net_var()
|
||||||
#include "const.bif.netvar_init"
|
#include "const.bif.netvar_init"
|
||||||
#include "types.bif.netvar_init"
|
#include "types.bif.netvar_init"
|
||||||
#include "logging.bif.netvar_init"
|
#include "logging.bif.netvar_init"
|
||||||
|
#include "input.bif.netvar_init"
|
||||||
#include "reporter.bif.netvar_init"
|
#include "reporter.bif.netvar_init"
|
||||||
|
|
||||||
conn_id = internal_type("conn_id")->AsRecordType();
|
conn_id = internal_type("conn_id")->AsRecordType();
|
||||||
|
|
16
src/input.bif
Normal file
16
src/input.bif
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# functions and types for the input framework
|
||||||
|
|
||||||
|
module Input;
|
||||||
|
|
||||||
|
%%{
|
||||||
|
#include "InputMgr.h"
|
||||||
|
#include "NetVar.h"
|
||||||
|
%%}
|
||||||
|
|
||||||
|
function Input::__create_reader%(reader: Input::Reader, source: string%) : bool
|
||||||
|
%{
|
||||||
|
exit(5);
|
||||||
|
InputReader *the_reader = input_mgr->CreateReader(reader->AsEnumVal(), source->AsString()->CheckString());
|
||||||
|
return new Val( the_reader != 0, TYPE_BOOL );
|
||||||
|
%}
|
||||||
|
|
|
@ -30,6 +30,7 @@ extern "C" void OPENSSL_add_all_algorithms_conf(void);
|
||||||
#include "File.h"
|
#include "File.h"
|
||||||
#include "Reporter.h"
|
#include "Reporter.h"
|
||||||
#include "LogMgr.h"
|
#include "LogMgr.h"
|
||||||
|
#include "InputMgr.h"
|
||||||
#include "Net.h"
|
#include "Net.h"
|
||||||
#include "NetVar.h"
|
#include "NetVar.h"
|
||||||
#include "Var.h"
|
#include "Var.h"
|
||||||
|
@ -72,6 +73,7 @@ name_list prefixes;
|
||||||
DNS_Mgr* dns_mgr;
|
DNS_Mgr* dns_mgr;
|
||||||
TimerMgr* timer_mgr;
|
TimerMgr* timer_mgr;
|
||||||
LogMgr* log_mgr;
|
LogMgr* log_mgr;
|
||||||
|
InputMgr* input_mgr;
|
||||||
Stmt* stmts;
|
Stmt* stmts;
|
||||||
EventHandlerPtr net_done = 0;
|
EventHandlerPtr net_done = 0;
|
||||||
RuleMatcher* rule_matcher = 0;
|
RuleMatcher* rule_matcher = 0;
|
||||||
|
@ -724,6 +726,8 @@ int main(int argc, char** argv)
|
||||||
remote_serializer = new RemoteSerializer();
|
remote_serializer = new RemoteSerializer();
|
||||||
event_registry = new EventRegistry();
|
event_registry = new EventRegistry();
|
||||||
log_mgr = new LogMgr();
|
log_mgr = new LogMgr();
|
||||||
|
|
||||||
|
input_mgr = new InputMgr();
|
||||||
|
|
||||||
if ( events_file )
|
if ( events_file )
|
||||||
event_player = new EventPlayer(events_file);
|
event_player = new EventPlayer(events_file);
|
||||||
|
|
|
@ -167,4 +167,11 @@ enum ID %{
|
||||||
Unknown,
|
Unknown,
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
module Input;
|
||||||
|
|
||||||
|
enum Reader %{
|
||||||
|
READER_DEFAULT,
|
||||||
|
READER_ASCII,
|
||||||
|
%}
|
||||||
|
|
||||||
module GLOBAL;
|
module GLOBAL;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue