better managed messages formattation and abbreviations parsing

This commit is contained in:
Matteo ℱan 2020-10-23 00:13:21 +02:00
parent 319c6b3ef0
commit a8a94ce7ab
No known key found for this signature in database
GPG Key ID: 3C30A05BC133D9B6
3 changed files with 43 additions and 36 deletions

View File

@ -140,19 +140,21 @@ You can also enable other suboptions of `-F` doing what is reported in the follo
-S or --logsize <MAXSIZE> -S or --logsize <MAXSIZE>
> Use this flag to set a maximum size (in MB) to the output log file. Deactivated by default. > Use this flag to set a maximum size (in MB) to the output log file. Deactivated by default.
##### subparser `connect`
-n or --listen <'IP,PORT'> -n or --listen <'IP,PORT'>
> Use this subparser `connect` option to add multiple listening ip address - port couples. Note the format with the comma between the ip address and the port number. You can use this option more than once. > Use this option to add multiple listening ip address - port couples. Note the format with the comma between the ip address and the port number. You can use this option more than once.
-b or --backlog <BACKLOG> -b or --backlog <BACKLOG>
> Use this subparser `connect` option to specify the maximum length of the queue of pending connections, referred to a ip address - port couple. > Use this option to specify the maximum length of the queue of pending connections, referred to a ip address - port couple.
If placed just after `connect` refers to the main address and all additive couples without `-b` or `-u` options. Default is 5. If placed just after `connect` refers to the main address and all additive couples without `-b` option. Default is 5.
-u or --no-reuse -u or --no-reuse
> Use this subparser `connect` option not to allow binding / listening to the same ip address - port couple specified with `-n`. > Use this option not to allow binding / listening to the same ip address - port couple specified with `-n`.
If placed just after `connect` refers to the main address and all additive couples without `-b` or `-u` options. Reusing port is activated by default (except when running inside the Windows Sandbox and the current user is `WDAGUtilityAccount`). If placed just after `connect` refers to the main address and all additive couples without `-u` option. Reusing port is activated by default (except when running inside the Windows Sandbox and the current user is `WDAGUtilityAccount`).
-d or --dual -d or --dual
> Use this subparser `connect` option to allow listening to an IPv6 address also accepting connections via IPv4. > Use this option to allow listening to an IPv6 address also accepting connections via IPv4.
If used it refers to all addresses (main and additional). Deactivated by default. If used it refers to all addresses (main and additional). Deactivated by default.
examples (with fictitious addresses and ports): examples (with fictitious addresses and ports):

View File

@ -82,32 +82,32 @@ ColorExtraMap = dict(ColorMap, **ExtraMap)
ColorMapReversed = dict(zip(ColorMap.values(), ColorMap.keys())) ColorMapReversed = dict(zip(ColorMap.values(), ColorMap.keys()))
ExtraMapReversed = dict(zip(ExtraMap.values(), ExtraMap.keys())) ExtraMapReversed = dict(zip(ExtraMap.values(), ExtraMap.keys()))
MsgMap = {0 : {'text' : "{yellow}\n\t\t\tClient generating RPC Bind Request...{end}", 'align' : ()}, MsgMap = {0 : {'text' : "{{yellow}}{}{}Client generating RPC Bind Request...{{end}}" .format('\n', '\t' * 3)},
1 : {'text' : "{white}<==============={end}{yellow}\tClient sending RPC Bind Request...{end}", 'align' : ()}, 1 : {'text' : "{{white}}<==============={{end}}{{yellow}}{}Client sending RPC Bind Request...{{end}}" .format('\t')},
2 : {'text' : "{yellow}Server received RPC Bind Request !!!\t\t\t\t{end}{white}<==============={end}", 'align' : ()}, 2 : {'text' : "{{yellow}}Server received RPC Bind Request !!!{}{{end}}{{white}}<==============={{end}}" .format('\t' * 4)},
3 : {'text' : "{yellow}Server parsing RPC Bind Request...{end}", 'align' : ()}, 3 : {'text' : "{{yellow}}Server parsing RPC Bind Request...{{end}}" .format()},
4 : {'text' : "{yellow}Server generating RPC Bind Response...{end}", 'align' : ()}, 4 : {'text' : "{{yellow}}Server generating RPC Bind Response...{{end}}" .format()},
5 : {'text' : "{yellow}Server sending RPC Bind Response...\t\t\t\t{end}{white}===============>{end}", 'align' : ()}, 5 : {'text' : "{{yellow}}Server sending RPC Bind Response...{}{{end}}{{white}}===============>{{end}}" .format('\t' * 4)},
6 : {'text' : "{green}{bold}\nRPC Bind acknowledged !!!{end}", 'align' : ()}, 6 : {'text' : "{{green}}{{bold}}{}RPC Bind acknowledged !!!{{end}}" .format('\n')},
7 : {'text' : "{white}===============>{end}{yellow}\tClient received RPC Bind Response !!!{end}", 'align' : ()}, 7 : {'text' : "{{white}}===============>{{end}}{{yellow}}{}Client received RPC Bind Response !!!{{end}}" .format('\t')},
8 : {'text' : "{green}{bold}\t\t\tRPC Bind acknowledged !!!{end}", 'align' : ()}, 8 : {'text' : "{{green}}{{bold}}{}RPC Bind acknowledged !!!{{end}}" .format('\t' * 3)},
9 : {'text' : "{blue}\t\t\tClient generating Activation Request dictionary...{end}", 'align' : ()}, 9 : {'text' : "{{blue}}{}Client generating Activation Request dictionary...{{end}}" .format('\t' * 3)},
10 : {'text' : "{blue}\t\t\tClient generating Activation Request data...{end}", 'align' : ()}, 10 : {'text' : "{{blue}}{}Client generating Activation Request data...{{end}}" .format('\t' * 3)},
11 : {'text' : "{blue}\t\t\tClient generating RPC Activation Request...{end}", 'align' : ()}, 11 : {'text' : "{{blue}}{}Client generating RPC Activation Request...{{end}}" .format('\t' * 3)},
12 : {'text' : "{white}<==============={end}{blue}\tClient sending RPC Activation Request...{end}", 'align' : ()}, 12 : {'text' : "{{white}}<==============={{end}}{{blue}}{}Client sending RPC Activation Request...{{end}}" .format('\t')},
13 : {'text' : "{blue}Server received RPC Activation Request !!!\t\t\t{end}{white}<==============={end}", 'align' : ()}, 13 : {'text' : "{{blue}}Server received RPC Activation Request !!!{}{{end}}{{white}}<==============={{end}}" .format('\t' * 3)},
14 : {'text' : "{blue}Server parsing RPC Activation Request...{end}", 'align' : ()}, 14 : {'text' : "{{blue}}Server parsing RPC Activation Request...{{end}}" .format()},
15 : {'text' : "{blue}Server processing KMS Activation Request...{end}", 'align' : ()}, 15 : {'text' : "{{blue}}Server processing KMS Activation Request...{{end}}" .format()},
16 : {'text' : "{blue}Server processing KMS Activation Response...{end}", 'align' : ()}, 16 : {'text' : "{{blue}}Server processing KMS Activation Response...{{end}}" .format()},
17 : {'text' : "{blue}Server generating RPC Activation Response...{end}", 'align' : ()}, 17 : {'text' : "{{blue}}Server generating RPC Activation Response...{{end}}" .format()},
18 : {'text' : "{blue}Server sending RPC Activation Response...\t\t\t{end}{white}===============>{end}", 'align' : ()}, 18 : {'text' : "{{blue}}Server sending RPC Activation Response...{}{{end}}{{white}}===============>{{end}}" .format('\t' * 3)},
19 : {'text' : "{green}{bold}\nServer responded, now in Stand by...\n{end}", 'align' : ()}, 19 : {'text' : "{{green}}{{bold}}{}Server responded, now in Stand by...{}{{end}}" .format('\n','\n')},
20 : {'text' : "{white}===============>{end}{blue}\tClient received Response !!!{end}", 'align' : ()}, 20 : {'text' : "{{white}}===============>{{end}}{{blue}}{}Client received Response !!!{{end}}" .format('\t')},
21 : {'text' : "{green}{bold}\t\t\tActivation Done !!!{end}", 'align' : ()}, 21 : {'text' : "{{green}}{{bold}}{}Activation Done !!!{{end}}" .format('\t' * 3)},
-1 : {'text' : "{white}Server receiving{end}", 'align' : ()}, -1 : {'text' : "{{white}}Server receiving{{end}}" .format()},
-2 : {'text' : "{white}\t\t\t\t\t\t\t\tClient sending{end}", 'align' : ()}, -2 : {'text' : "{{white}}{}Client sending{{end}}" .format('\t' * 8)},
-3 : {'text' : "{white}\t\t\t\t\t\t\t\tClient receiving{end}", 'align' : ()}, -3 : {'text' : "{{white}}{}Client receiving{{end}}" .format('\t' * 8)},
-4 : {'text' : "{white}Server sending{end}", 'align' : ()}, -4 : {'text' : "{{white}}Server sending{{end}}" .format()},
} }
def unformat_message(symbolic_string_list): def unformat_message(symbolic_string_list):
@ -211,7 +211,7 @@ class ShellMessage(object):
pass pass
self.msgfrmt = msgtofrmt.format(**ColorExtraMap) self.msgfrmt = msgtofrmt.format(**ColorExtraMap)
if self.get_text: if self.get_text:
self.plaintext.append(unshell_message(self.msgfrmt, count = 0)[0]["tag00"]['text']) self.plaintext.append(unshell_message(self.msgfrmt, count = 0)[0]["tag00"]['text'].strip())
def newlines_file(self, mode, *args): def newlines_file(self, mode, *args):
try: try:

View File

@ -392,19 +392,24 @@ def kms_parser_check_optionals(userarg, zeroarg, onearg, msg = 'optional py-kms
allarg = zeroarg + onearg allarg = zeroarg + onearg
def is_abbrev(allarg, arg_to_check): def is_abbrev(allarg, arg_to_check):
extended = []
for opt in allarg: for opt in allarg:
if len(opt) > 2 and opt[2] == arg_to_check[2]: if len(opt) > 2 and opt[2] == arg_to_check[2]:
for indx in range(-1, -len(opt), -1): for indx in range(-1, -len(opt), -1):
if opt[:indx] == arg_to_check: if opt[:indx] == arg_to_check:
raise KmsParserException("%s argument `%s` abbreviation not allowed for `%s`" %(msg, arg_to_check, opt)) extended.append(opt)
return False return extended
# Check abbreviations, joining, not existing. # Check abbreviations, joining, not existing.
for arg in userarg: for arg in userarg:
if arg not in allarg: if arg not in allarg:
if arg.startswith('-'): if arg.startswith('-'):
if arg == '--' or arg[:2] != '--' or not is_abbrev(allarg, arg): if arg == '--' or arg[:2] != '--':
raise KmsParserException("unrecognized %s arguments: `%s`" %(msg, arg)) raise KmsParserException("unrecognized %s arguments: `%s`" %(msg, arg))
else:
extended = is_abbrev(allarg, arg)
if extended:
raise KmsParserException("%s argument `%s` abbreviation not allowed for `%s`" %(msg, arg, ', '.join(extended)))
# Check duplicates. # Check duplicates.
founds = [i for i in userarg if i in allarg] founds = [i for i in userarg if i in allarg]