-
Notifications
You must be signed in to change notification settings - Fork 673
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implemented SyslogCollectorInterface/SyslogParserInterface
Implemented TCP-based syslog collector (multi producer) Initial Suricata EVE events parsing (basic flows) Reworked ZMQ CollectorInterface/Parser interface hierarchy
- Loading branch information
1 parent
b3bfdba
commit 61a8ce9
Showing
22 changed files
with
1,775 additions
and
1,050 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
/* | ||
* | ||
* (C) 2019 - ntop.org | ||
* | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation; either version 3 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program; if not, write to the Free Software Foundation, | ||
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
* | ||
*/ | ||
|
||
#ifndef _SYSLOG_COLLECTOR_INTERFACE_H_ | ||
#define _SYSLOG_COLLECTOR_INTERFACE_H_ | ||
|
||
#include "ntop_includes.h" | ||
|
||
#ifndef HAVE_NEDGE | ||
|
||
class LuaEngine; | ||
|
||
typedef struct { | ||
int socket; | ||
struct sockaddr_in address; | ||
} syslog_client; | ||
|
||
class SyslogCollectorInterface : public SyslogParserInterface { | ||
private: | ||
char *endpoint; | ||
struct sockaddr_in listen_addr; | ||
int listen_sock; | ||
syslog_client connections[MAX_ZMQ_SUBSCRIBERS]; | ||
|
||
struct { | ||
u_int32_t num_flows; | ||
} recvStats; | ||
|
||
public: | ||
SyslogCollectorInterface(const char *_endpoint); | ||
~SyslogCollectorInterface(); | ||
|
||
int initFDSets(fd_set *read_fds, fd_set *write_fds, fd_set *except_fds); | ||
int handleNewConnection(); | ||
char *clientAddr2Str(syslog_client *client, char *buff); | ||
void closeConnection(syslog_client *client); | ||
int receiveFromClient(syslog_client *client); | ||
|
||
inline const char* get_type() { return(CONST_INTERFACE_TYPE_SYSLOG); }; | ||
inline InterfaceType getIfType() { return(interface_type_SYSLOG); } | ||
inline bool is_ndpi_enabled() { return(false); }; | ||
inline char* getEndpoint(u_int8_t id) { return(endpoint); }; | ||
inline bool isPacketInterface() { return(false); }; | ||
void collect_flows(); | ||
|
||
virtual void purgeIdle(time_t when); | ||
|
||
void startPacketPolling(); | ||
void shutdown(); | ||
bool set_packet_filter(char *filter); | ||
virtual void lua(lua_State* vm); | ||
}; | ||
|
||
#endif /* HAVE_NEDGE */ | ||
|
||
#endif /* _SYSLOG_COLLECTOR_INTERFACE_H_ */ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
/* | ||
* | ||
* (C) 2019 - ntop.org | ||
* | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation; either version 3 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program; if not, write to the Free Software Foundation, | ||
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
* | ||
*/ | ||
|
||
#ifndef _SYSLOG_PARSER_INTERFACE_H_ | ||
#define _SYSLOG_PARSER_INTERFACE_H_ | ||
|
||
#include "ntop_includes.h" | ||
|
||
class SyslogParserInterface : public ParserInterface { | ||
private: | ||
|
||
public: | ||
SyslogParserInterface(const char *endpoint, const char *custom_interface_type = NULL); | ||
~SyslogParserInterface(); | ||
|
||
u_int8_t parseLog(char *log_line, void *data); | ||
|
||
u_int32_t getNumDroppedPackets() { return 0; }; | ||
virtual void lua(lua_State* vm); | ||
}; | ||
|
||
#endif /* _SYSLOG_PARSER_INTERFACE_H_ */ | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
/* | ||
* | ||
* (C) 2013-19 - ntop.org | ||
* | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation; either version 3 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program; if not, write to the Free Software Foundation, | ||
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
* | ||
*/ | ||
|
||
#ifndef _ZMQ_PARSER_INTERFACE_H_ | ||
#define _ZMQ_PARSER_INTERFACE_H_ | ||
|
||
#include "ntop_includes.h" | ||
|
||
class ZMQParserInterface : public ParserInterface { | ||
private: | ||
typedef std::pair<u_int32_t, u_int32_t> pen_value_t; | ||
typedef std::map<string, pen_value_t > labels_map_t; | ||
labels_map_t labels_map; | ||
bool once; | ||
u_int64_t zmq_initial_bytes, zmq_initial_pkts, | ||
zmq_remote_initial_exported_flows; | ||
ZMQ_RemoteStats *zmq_remote_stats, *zmq_remote_stats_shadow; | ||
#ifdef NTOPNG_PRO | ||
CustomAppMaps *custom_app_maps; | ||
#endif | ||
bool getKeyId(char *sym, u_int32_t * const pen, u_int32_t * const field) const; | ||
void addMapping(const char *sym, u_int32_t num, u_int32_t pen = 0); | ||
bool parsePENZeroField(Parsed_Flow * const flow, u_int32_t field, const char * const value) const; | ||
bool parsePENNtopField(Parsed_Flow * const flow, u_int32_t field, const char * const value) const; | ||
void parseSingleFlow(json_object *o, u_int8_t source_id, NetworkInterface *iface); | ||
void setFieldMap(const ZMQ_FieldMap * const field_map) const; | ||
void setFieldValueMap(const ZMQ_FieldValueMap * const field_value_map) const; | ||
|
||
u_int8_t parseOptionFieldMap(json_object * const jo) const; | ||
u_int8_t parseOptionFieldValueMap(json_object * const jo) const; | ||
|
||
public: | ||
ZMQParserInterface(const char *endpoint, const char *custom_interface_type = NULL); | ||
~ZMQParserInterface(); | ||
|
||
u_int8_t parseFlow(const char * const payload, int payload_size, u_int8_t source_id, void *data); | ||
u_int8_t parseEvent(const char * const payload, int payload_size, u_int8_t source_id, void *data); | ||
u_int8_t parseCounter(const char * const payload, int payload_size, u_int8_t source_id, void *data); | ||
u_int8_t parseTemplate(const char * const payload, int payload_size, u_int8_t source_id, void *data); | ||
u_int8_t parseOption(const char * const payload, int payload_size, u_int8_t source_id, void *data); | ||
|
||
virtual void setRemoteStats(ZMQ_RemoteStats *zrs); | ||
#ifdef NTOPNG_PRO | ||
virtual bool getCustomAppDetails(u_int32_t remapped_app_id, u_int32_t *const pen, u_int32_t *const app_field, u_int32_t *const app_id); | ||
#endif | ||
u_int32_t getNumDroppedPackets() { return zmq_remote_stats ? zmq_remote_stats->sflow_pkt_sample_drops : 0; }; | ||
virtual void lua(lua_State* vm); | ||
}; | ||
|
||
#endif /* _ZMQ_PARSER_INTERFACE_H_ */ | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.