42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
|
#!/usr/bin/env python3
|
||
|
import os.path as path
|
||
|
import time
|
||
|
|
||
|
|
||
|
class Module:
|
||
|
def __init__(self, incoming=False, verbose=False, options=None):
|
||
|
# extract the file name from __file__. __file__ is proxymodules/name.py
|
||
|
self.name = path.splitext(path.basename(__file__))[0]
|
||
|
self.description = 'Log data in the module chain. Use in addition to general logging (-l/--log).'
|
||
|
self.incoming = incoming # incoming means module is on -im chain
|
||
|
self.find = None # if find is not None, this text will be highlighted
|
||
|
# file: the file name, format is (in|out)-20160601-112233.13413
|
||
|
self.file = ('in-' if incoming else 'out-') + \
|
||
|
time.strftime('%Y%m%d-%H%M%S.') + str(time.time()).split('.')[1]
|
||
|
if options is not None:
|
||
|
if 'file' in options.keys():
|
||
|
self.file = options['file']
|
||
|
self.handle = None
|
||
|
|
||
|
def __del__(self):
|
||
|
if self.handle is not None:
|
||
|
self.handle.close()
|
||
|
|
||
|
def execute(self, data):
|
||
|
if self.handle is None:
|
||
|
self.handle = open(self.file, 'wb', 0) # unbuffered
|
||
|
print('Logging to file', self.file)
|
||
|
logentry = bytes(time.strftime('%Y%m%d-%H%M%S') + ' ' + str(time.time()) + '\n', 'ascii')
|
||
|
logentry += data
|
||
|
logentry += b'-' * 20 + b'\n'
|
||
|
self.handle.write(logentry)
|
||
|
return data
|
||
|
|
||
|
def help(self):
|
||
|
h = '\tfile: name of logfile'
|
||
|
return h
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
print('This module is not supposed to be executed alone!')
|