summaryrefslogtreecommitdiffstats
path: root/sploit/log.py
blob: 823b252e4da3dd4b9a05dfaa0c9ca111ab704920 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import codecs
import sys

# https://docs.python.org/3/library/codecs.html#standard-encodings
ENCODING = None

ERROR   = 31
WARNING = 33
STATUS  = 32
NORMAL  =  0
ALT     = 90

def enc_value(value, enc):
    if type(value) is bytes:
        if enc is not None:
            value = codecs.encode(value, enc)
        elif ENCODING is not None:
            value = codecs.encode(value, ENCODING)
        value = str(value)[2:-1] # strip b''
    return str(value)

def generic_log(*values, sep, end, file, flush, enc, color):
    string = sep.join([ enc_value(x, enc) for x in values ])
    print(f'\033[{color}m{string}\033[0m', end=end, file=file, flush=flush)

# For library internal use
def ilog(*values, sep=' ', end='\n', file=sys.stderr, flush=True, enc=None, color=STATUS):
    generic_log(*values, sep=sep, end=end, file=file, flush=flush, enc=enc, color=color)

# For external use in user script (via print = elog)
def elog(*values, sep=' ', end='\n', file=sys.stdout, flush=True, enc=None, color=ALT):
    generic_log(*values, sep=sep, end=end, file=file, flush=flush, enc=enc, color=color)