general.py formatting
This commit is contained in:
parent
658e5c0411
commit
e966bef891
|
|
@ -17,8 +17,9 @@ from .output import log
|
||||||
def gen_uid(entropy_length=256):
|
def gen_uid(entropy_length=256):
|
||||||
return hashlib.sha512(os.urandom(entropy_length)).hexdigest()
|
return hashlib.sha512(os.urandom(entropy_length)).hexdigest()
|
||||||
|
|
||||||
|
|
||||||
def multisplit(s, splitters):
|
def multisplit(s, splitters):
|
||||||
s = [s,]
|
s = [s, ]
|
||||||
for key in splitters:
|
for key in splitters:
|
||||||
ns = []
|
ns = []
|
||||||
for obj in s:
|
for obj in s:
|
||||||
|
|
@ -26,18 +27,20 @@ def multisplit(s, splitters):
|
||||||
for index, part in enumerate(x):
|
for index, part in enumerate(x):
|
||||||
if len(part):
|
if len(part):
|
||||||
ns.append(part)
|
ns.append(part)
|
||||||
if index < len(x)-1:
|
if index < len(x) - 1:
|
||||||
ns.append(key)
|
ns.append(key)
|
||||||
s = ns
|
s = ns
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
|
||||||
def locate_binary(name):
|
def locate_binary(name):
|
||||||
for PATH in os.environ['PATH'].split(':'):
|
for PATH in os.environ['PATH'].split(':'):
|
||||||
for root, folders, files in os.walk(PATH):
|
for root, folders, files in os.walk(PATH):
|
||||||
for file in files:
|
for file in files:
|
||||||
if file == name:
|
if file == name:
|
||||||
return os.path.join(root, file)
|
return os.path.join(root, file)
|
||||||
break # Don't recurse
|
break # Don't recurse
|
||||||
|
|
||||||
|
|
||||||
class JSON_Encoder:
|
class JSON_Encoder:
|
||||||
def _encode(obj):
|
def _encode(obj):
|
||||||
|
|
@ -73,6 +76,7 @@ class JSON_Encoder:
|
||||||
else:
|
else:
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
|
|
||||||
class JSON(json.JSONEncoder, json.JSONDecoder):
|
class JSON(json.JSONEncoder, json.JSONDecoder):
|
||||||
def _encode(self, obj):
|
def _encode(self, obj):
|
||||||
return JSON_Encoder._encode(obj)
|
return JSON_Encoder._encode(obj)
|
||||||
|
|
@ -135,8 +139,8 @@ class sys_command():#Thread):
|
||||||
# "which" doesn't work as it's a builtin to bash.
|
# "which" doesn't work as it's a builtin to bash.
|
||||||
# It used to work, but for whatever reason it doesn't anymore. So back to square one..
|
# It used to work, but for whatever reason it doesn't anymore. So back to square one..
|
||||||
|
|
||||||
#self.log('Worker command is not executed with absolute path, trying to find: {}'.format(self.cmd[0]), origin='spawn', level=5)
|
# self.log('Worker command is not executed with absolute path, trying to find: {}'.format(self.cmd[0]), origin='spawn', level=5)
|
||||||
#self.log('This is the binary {} for {}'.format(o.decode('UTF-8'), self.cmd[0]), origin='spawn', level=5)
|
# self.log('This is the binary {} for {}'.format(o.decode('UTF-8'), self.cmd[0]), origin='spawn', level=5)
|
||||||
self.cmd[0] = locate_binary(self.cmd[0])
|
self.cmd[0] = locate_binary(self.cmd[0])
|
||||||
|
|
||||||
if not os.path.isdir(self.exec_dir):
|
if not os.path.isdir(self.exec_dir):
|
||||||
|
|
@ -168,7 +172,7 @@ class sys_command():#Thread):
|
||||||
'exit_code': self.exit_code
|
'exit_code': self.exit_code
|
||||||
}
|
}
|
||||||
|
|
||||||
def peak(self, output : Union[str, bytes]) -> bool:
|
def peak(self, output: Union[str, bytes]) -> bool:
|
||||||
if type(output) == bytes:
|
if type(output) == bytes:
|
||||||
try:
|
try:
|
||||||
output = output.decode('UTF-8')
|
output = output.decode('UTF-8')
|
||||||
|
|
@ -205,7 +209,7 @@ class sys_command():#Thread):
|
||||||
old_dir = os.getcwd()
|
old_dir = os.getcwd()
|
||||||
os.chdir(self.exec_dir)
|
os.chdir(self.exec_dir)
|
||||||
self.pid, child_fd = pty.fork()
|
self.pid, child_fd = pty.fork()
|
||||||
if not self.pid: # Child process
|
if not self.pid: # Child process
|
||||||
# Replace child process with our main process
|
# Replace child process with our main process
|
||||||
if not self.kwargs['emulate']:
|
if not self.kwargs['emulate']:
|
||||||
try:
|
try:
|
||||||
|
|
@ -251,7 +255,7 @@ class sys_command():#Thread):
|
||||||
original = trigger
|
original = trigger
|
||||||
trigger = bytes(original, 'UTF-8')
|
trigger = bytes(original, 'UTF-8')
|
||||||
self.kwargs['events'][trigger] = self.kwargs['events'][original]
|
self.kwargs['events'][trigger] = self.kwargs['events'][original]
|
||||||
del(self.kwargs['events'][original])
|
del (self.kwargs['events'][original])
|
||||||
if type(self.kwargs['events'][trigger]) != bytes:
|
if type(self.kwargs['events'][trigger]) != bytes:
|
||||||
self.kwargs['events'][trigger] = bytes(self.kwargs['events'][trigger], 'UTF-8')
|
self.kwargs['events'][trigger] = bytes(self.kwargs['events'][trigger], 'UTF-8')
|
||||||
|
|
||||||
|
|
@ -264,7 +268,7 @@ class sys_command():#Thread):
|
||||||
|
|
||||||
last_trigger_pos = trigger_pos
|
last_trigger_pos = trigger_pos
|
||||||
os.write(child_fd, self.kwargs['events'][trigger])
|
os.write(child_fd, self.kwargs['events'][trigger])
|
||||||
del(self.kwargs['events'][trigger])
|
del (self.kwargs['events'][trigger])
|
||||||
broke = True
|
broke = True
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
@ -276,7 +280,7 @@ class sys_command():#Thread):
|
||||||
if 'debug' in self.kwargs and self.kwargs['debug']:
|
if 'debug' in self.kwargs and self.kwargs['debug']:
|
||||||
self.log(f"Waiting for last command {self.cmd[0]} to finish.", level=logging.DEBUG)
|
self.log(f"Waiting for last command {self.cmd[0]} to finish.", level=logging.DEBUG)
|
||||||
|
|
||||||
if bytes(f']$'.lower(), 'UTF-8') in self.trace_log[0-len(f']$')-5:].lower():
|
if bytes(f']$'.lower(), 'UTF-8') in self.trace_log[0 - len(f']$') - 5:].lower():
|
||||||
if 'debug' in self.kwargs and self.kwargs['debug']:
|
if 'debug' in self.kwargs and self.kwargs['debug']:
|
||||||
self.log(f"{self.cmd[0]} has finished.", level=logging.DEBUG)
|
self.log(f"{self.cmd[0]} has finished.", level=logging.DEBUG)
|
||||||
alive = False
|
alive = False
|
||||||
|
|
@ -305,9 +309,11 @@ class sys_command():#Thread):
|
||||||
self.exit_code = 0
|
self.exit_code = 0
|
||||||
|
|
||||||
if self.exit_code != 0 and not self.kwargs['suppress_errors']:
|
if self.exit_code != 0 and not self.kwargs['suppress_errors']:
|
||||||
#self.log(self.trace_log.decode('UTF-8'), level=logging.DEBUG)
|
# self.log(self.trace_log.decode('UTF-8'), level=logging.DEBUG)
|
||||||
#self.log(f"'{self.raw_cmd}' did not exit gracefully, exit code {self.exit_code}.", level=logging.ERROR)
|
# self.log(f"'{self.raw_cmd}' did not exit gracefully, exit code {self.exit_code}.", level=logging.ERROR)
|
||||||
raise SysCallError(message=f"{self.trace_log.decode('UTF-8')}\n'{self.raw_cmd}' did not exit gracefully (trace log above), exit code: {self.exit_code}", exit_code=self.exit_code)
|
raise SysCallError(
|
||||||
|
message=f"{self.trace_log.decode('UTF-8')}\n'{self.raw_cmd}' did not exit gracefully (trace log above), exit code: {self.exit_code}",
|
||||||
|
exit_code=self.exit_code)
|
||||||
|
|
||||||
self.ended = time.time()
|
self.ended = time.time()
|
||||||
with open(f'{self.cwd}/trace.log', 'wb') as fh:
|
with open(f'{self.cwd}/trace.log', 'wb') as fh:
|
||||||
|
|
@ -325,5 +331,6 @@ def prerequisite_check():
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def reboot():
|
def reboot():
|
||||||
o = b''.join(sys_command("/usr/bin/reboot"))
|
o = b''.join(sys_command("/usr/bin/reboot"))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue