|
|
|
@ -21,8 +21,10 @@ __author__ = "Cyril Jaquier, Yaroslav Halchenko"
|
|
|
|
|
__copyright__ = "Copyright (c) 2004 Cyril Jaquier, 2013- Yaroslav Halchenko" |
|
|
|
|
__license__ = "GPL" |
|
|
|
|
|
|
|
|
|
import sys |
|
|
|
|
|
|
|
|
|
from ..exceptions import UnknownJailException, DuplicateJailException |
|
|
|
|
from ..helpers import getLogger, logging |
|
|
|
|
from ..helpers import getLogger, logging, PREFER_ENC |
|
|
|
|
|
|
|
|
|
# Gets the instance of the logger. |
|
|
|
|
logSys = getLogger(__name__) |
|
|
|
@ -36,6 +38,11 @@ logSys = getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
class Beautifier: |
|
|
|
|
|
|
|
|
|
stdoutEnc = PREFER_ENC |
|
|
|
|
if sys.stdout and sys.stdout.encoding is not None: |
|
|
|
|
stdoutEnc = sys.stdout.encoding |
|
|
|
|
encUtf = 1 if stdoutEnc.lower() == 'utf-8' else 0 |
|
|
|
|
|
|
|
|
|
def __init__(self, cmd = None): |
|
|
|
|
self.__inputCmd = cmd |
|
|
|
|
|
|
|
|
@ -104,7 +111,11 @@ class Beautifier:
|
|
|
|
|
jail_stat(j, " " if i == len(jstat) else " | ") |
|
|
|
|
msg = "\n".join(msg) |
|
|
|
|
elif inC[0:1] == ['stats'] or inC[0:1] == ['statistics']: |
|
|
|
|
def _statstable(response): |
|
|
|
|
chrTable = [ |
|
|
|
|
['|', '-', '|', 'x', 'x', '-', '|', '-'], ## ascii |
|
|
|
|
["\u2551", "\u2550", "\u255F", "\u256B", "\u256C", "\u2569", "\u2502", "\u2500"] ## utf-8 |
|
|
|
|
]; |
|
|
|
|
def _statstable(response, ct): |
|
|
|
|
tophead = ["Jail", "Backend", "Filter", "Actions"] |
|
|
|
|
headers = ["", "", "cur", "tot", "cur", "tot"] |
|
|
|
|
minlens = [8, 8, 3, 3, 3, 3] |
|
|
|
@ -120,29 +131,31 @@ class Beautifier:
|
|
|
|
|
f = "%%%ds" if ralign[i] else "%%-%ds" |
|
|
|
|
rfmt.append(f % lens[i]) |
|
|
|
|
hfmt.append(f % lens[i]) |
|
|
|
|
rfmt = [rfmt[0], rfmt[1], "%s \u2502 %s" % (rfmt[2], rfmt[3]), "%s \u2502 %s" % (rfmt[4], rfmt[5])] |
|
|
|
|
hfmt = [hfmt[0], hfmt[1], "%s \u2502 %s" % (hfmt[2], hfmt[3]), "%s \u2502 %s" % (hfmt[4], hfmt[5])] |
|
|
|
|
rfmt = [rfmt[0], rfmt[1], "%s %s %s" % (rfmt[2], ct[6], rfmt[3]), "%s %s %s" % (rfmt[4], ct[6], rfmt[5])] |
|
|
|
|
hfmt = [hfmt[0], hfmt[1], "%s %s %s" % (hfmt[2], ct[6], hfmt[3]), "%s %s %s" % (hfmt[4], ct[6], hfmt[5])] |
|
|
|
|
tlens = [lens[0], lens[1], 3 + lens[2] + lens[3], 3 + lens[4] + lens[5]] |
|
|
|
|
tfmt = [hfmt[0], hfmt[1], "%%-%ds" % (tlens[2],), "%%-%ds" % (tlens[3],)] |
|
|
|
|
tsep = tfmt[0:2] |
|
|
|
|
rfmt = " \u2551 ".join(rfmt) |
|
|
|
|
hfmt = " \u2551 ".join(hfmt) |
|
|
|
|
tfmt = " \u2551 ".join(tfmt) |
|
|
|
|
tsep = " \u2551 ".join(tsep) |
|
|
|
|
separator = ((tsep % tuple(tophead[0:2])) + " \u255F\u2500" + |
|
|
|
|
("\u2500\u256B\u2500".join(['\u2500' * n for n in tlens[2:]])) + '\u2500') |
|
|
|
|
rfmt = (" "+ct[0]+" ").join(rfmt) |
|
|
|
|
hfmt = (" "+ct[0]+" ").join(hfmt) |
|
|
|
|
tfmt = (" "+ct[0]+" ").join(tfmt) |
|
|
|
|
tsep = (" "+ct[0]+" ").join(tsep) |
|
|
|
|
separator = ((tsep % tuple(tophead[0:2])) + " "+ct[2]+ct[7] + |
|
|
|
|
((ct[7]+ct[3]+ct[7]).join([ct[7] * n for n in tlens[2:]])) + ct[7]) |
|
|
|
|
ret = [] |
|
|
|
|
ret.append(tfmt % tuple(["", ""]+tophead[2:])) |
|
|
|
|
ret.append(separator) |
|
|
|
|
ret.append(hfmt % tuple(headers)) |
|
|
|
|
separator = "\u2550\u256C\u2550".join(['\u2550' * n for n in tlens]) + '\u2550' |
|
|
|
|
ret.append(separator) |
|
|
|
|
ret.append(" "+tfmt % tuple(["", ""]+tophead[2:])) |
|
|
|
|
ret.append(" "+separator) |
|
|
|
|
ret.append(" "+hfmt % tuple(headers)) |
|
|
|
|
separator = (ct[1]+ct[4]+ct[1]).join([ct[1] * n for n in tlens]) + ct[1] |
|
|
|
|
ret.append(ct[1]+separator) |
|
|
|
|
for row in rows: |
|
|
|
|
ret.append(rfmt % tuple(row)) |
|
|
|
|
separator = "\u2550\u2569\u2550".join(['\u2550' * n for n in tlens]) + '\u2550' |
|
|
|
|
ret.append(separator) |
|
|
|
|
ret.append(" "+rfmt % tuple(row)) |
|
|
|
|
separator = (ct[1]+ct[5]+ct[1]).join([ct[1] * n for n in tlens]) + ct[1] |
|
|
|
|
ret.append(ct[1]+separator) |
|
|
|
|
return ret |
|
|
|
|
msg = "\n".join(_statstable(response)) |
|
|
|
|
if not response: |
|
|
|
|
return "No jails found." |
|
|
|
|
msg = "\n".join(_statstable(response, chrTable[self.encUtf])) |
|
|
|
|
elif len(inC) < 2: |
|
|
|
|
pass # to few cmd args for below |
|
|
|
|
elif inC[1] == "syslogsocket": |
|
|
|
|