1
2
3
4
5 import logging
6 import socket
7 import time
8
9 from lib.core.config import Config
10
11 log = logging.getLogger(__name__)
12
13 BUFSIZE = 1024*1024
14
16 nc = infd = None
17 try:
18 nc = NetlogFile(dump_path)
19
20 infd = open(file_path, "rb")
21 buf = infd.read(BUFSIZE)
22 while buf:
23 nc.send(buf, retry=False)
24 buf = infd.read(BUFSIZE)
25 except Exception as e:
26 log.error("Exception uploading file %s to host: %s", file_path, e)
27 finally:
28 if infd:
29 infd.close()
30 if nc:
31 nc.close()
32
35 config = Config(cfg="analysis.conf")
36 self.hostip, self.hostport = config.ip, config.port
37 self.sock, self.file = None, None
38 self.proto = proto
39
41 i = 1
42
43 while True:
44 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
45 try:
46 s.connect((self.hostip, self.hostport))
47 s.sendall(self.proto)
48 except:
49 time.sleep(i)
50 i = min(i + 1, 60)
51 else:
52 self.sock = s
53 self.file = s.makefile()
54 break
55
56 - def send(self, data, retry=True):
57 if not self.sock: self.connect()
58
59 try:
60 self.sock.sendall(data)
61 except socket.error as e:
62 if retry:
63 self.connect()
64 self.send(data, retry=False)
65 else:
66 raise
67 except Exception as e:
68 log.error("Unhandled exception in NetlogConnection: %s", str(e))
69
70
71
72 self.close()
73
75 try:
76 self.file.close()
77 self.sock.close()
78 except Exception:
79 pass
80
86
92
93 - def emit(self, record):
94 msg = self.format(record)
95 self.send("{0}\n".format(msg))
96