1
+ #!/usr/bin/env python
2
+
1
3
import json
2
4
import hpfeeds
3
5
import sys
4
6
import logging
5
7
from logging .handlers import RotatingFileHandler
6
-
7
- import processors
8
- import splunk
9
- import arcsight
10
-
11
- PROCESSORS = {
12
- 'amun.events' : [processors .amun_events ],
13
- 'glastopf.events' : [processors .glastopf_event ,],
14
- 'dionaea.capture' : [processors .dionaea_capture ,],
15
- 'dionaea.connections' : [processors .dionaea_connections ,],
16
- 'beeswarm.hive' : [processors .beeswarm_hive ,],
17
- 'kippo.sessions' : [processors .kippo_sessions ,],
18
- 'conpot.events' : [processors .conpot_events ,],
19
- 'snort.alerts' : [processors .snort_alerts ,],
20
- 'wordpot.events' : [processors .wordpot_event ,],
21
- 'shockpot.events' : [processors .shockpot_event ,],
22
- 'p0f.events' : [processors .p0f_events ,],
23
- 'suricata.events' : [processors .suricata_events ,],
24
- 'elastichoney.events' : [processors .elastichoney_events ,],
25
- }
8
+ from hpfeedslogger .formatters import splunk , arcsight
9
+ from hpfeedslogger import processors
26
10
27
11
FORMATTERS = {
28
12
'splunk' : splunk .format ,
@@ -51,10 +35,11 @@ def main():
51
35
secret = config ['secret' ].encode ('utf-8' )
52
36
logfile = config ['log_file' ]
53
37
38
+ processor = processors .HpfeedsMessageProcessor ()
54
39
formatter = FORMATTERS .get (config ['formatter_name' ])
55
40
if not formatter :
56
41
logger .error ('Unsupported data log formatter encountered: %s. Exiting.' , config ['formatter_name' ])
57
- return 1
42
+ return 1
58
43
59
44
handler = RotatingFileHandler (logfile , maxBytes = 100 * 1024 * 1024 , backupCount = 3 )
60
45
handler .setFormatter (logging .Formatter ('%(asctime)s %(message)s' ))
@@ -73,21 +58,8 @@ def main():
73
58
logger .info ('connected to %s' , hpc .brokername )
74
59
75
60
def on_message (identifier , channel , payload ):
76
- procs = PROCESSORS .get (channel , [])
77
- for processor in procs :
78
- try :
79
- message = processor (identifier , payload )
80
- except Exception , e :
81
- logger .error ('invalid message %s' , payload )
82
- logger .exception (e )
83
- continue
84
-
85
- if message :
86
- if isinstance (message , list ):
87
- for msg in message :
88
- data_logger .info (formatter (msg ))
89
- else :
90
- data_logger .info (formatter (message ))
61
+ for msg in processor .process (identifier , channel , payload , ignore_errors = True ):
62
+ data_logger .info (formatter (msg ))
91
63
92
64
def on_error (payload ):
93
65
logger .error ('Error message from server: %s' , payload )
@@ -109,7 +81,7 @@ def on_error(payload):
109
81
return 0
110
82
111
83
if __name__ == '__main__' :
112
- try :
84
+ try :
113
85
sys .exit (main ())
114
86
except KeyboardInterrupt :
115
87
logger .error ('KeyboardInterrupt encountered, exiting ...' )
0 commit comments