pywebexec 1.4.13__py3-none-any.whl → 1.4.14__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pywebexec/pywebexec.py +27 -14
- pywebexec/version.py +2 -2
- {pywebexec-1.4.13.dist-info → pywebexec-1.4.14.dist-info}/METADATA +1 -1
- {pywebexec-1.4.13.dist-info → pywebexec-1.4.14.dist-info}/RECORD +8 -8
- {pywebexec-1.4.13.dist-info → pywebexec-1.4.14.dist-info}/LICENSE +0 -0
- {pywebexec-1.4.13.dist-info → pywebexec-1.4.14.dist-info}/WHEEL +0 -0
- {pywebexec-1.4.13.dist-info → pywebexec-1.4.14.dist-info}/entry_points.txt +0 -0
- {pywebexec-1.4.13.dist-info → pywebexec-1.4.14.dist-info}/top_level.txt +0 -0
pywebexec/pywebexec.py
CHANGED
@@ -223,7 +223,7 @@ def start_gunicorn(daemonized=False, baselog=None):
|
|
223
223
|
if daemonized:
|
224
224
|
if daemon_d('status', pidfilepath=baselog, silent=True):
|
225
225
|
print(f"Error: pywebexec already running on {args.listen}:{args.port}", file=sys.stderr)
|
226
|
-
|
226
|
+
return 1
|
227
227
|
|
228
228
|
if sys.stdout.isatty():
|
229
229
|
errorlog = "-"
|
@@ -244,6 +244,7 @@ def start_gunicorn(daemonized=False, baselog=None):
|
|
244
244
|
'pidfile': pidfile,
|
245
245
|
}
|
246
246
|
PyWebExec(app, options=options).run()
|
247
|
+
return 0
|
247
248
|
|
248
249
|
def daemon_d(action, pidfilepath, silent=False, hostname=None, args=None):
|
249
250
|
"""start/stop daemon"""
|
@@ -285,10 +286,9 @@ def daemon_d(action, pidfilepath, silent=False, hostname=None, args=None):
|
|
285
286
|
except Exception as e:
|
286
287
|
print(e)
|
287
288
|
|
288
|
-
def start_term():
|
289
|
+
def start_term(command_id):
|
289
290
|
os.environ["PYWEBEXEC"] = " (shared)"
|
290
291
|
os.chdir(CWD)
|
291
|
-
command_id = str(uuid.uuid4())
|
292
292
|
start_time = datetime.now().isoformat()
|
293
293
|
user = pwd.getpwuid(os.getuid())[0]
|
294
294
|
update_command_status(command_id, 'running', command="term", params=[user,os.ttyname(sys.stdout.fileno())], start_time=start_time, user=user)
|
@@ -296,10 +296,25 @@ def start_term():
|
|
296
296
|
res = script(output_file_path)
|
297
297
|
end_time = datetime.now().isoformat()
|
298
298
|
update_command_status(command_id, status="success", end_time=end_time, exit_code=res)
|
299
|
-
return
|
299
|
+
return command_id
|
300
|
+
|
301
|
+
|
302
|
+
def print_urls(command_id=None):
|
303
|
+
protocol = 'https' if args.cert else 'http'
|
304
|
+
url_params = ""
|
305
|
+
token = os.environ.get("PYWEBEXEC_TOKEN")
|
306
|
+
if token:
|
307
|
+
url_params = f"?token={token}"
|
308
|
+
if command_id:
|
309
|
+
print(f"{protocol}://{hostname}:{args.port}/popup/{command_id}{url_params}")
|
310
|
+
print(f"{protocol}://{ip}:{args.port}/popup/{command_id}{url_params}")
|
311
|
+
else:
|
312
|
+
print(f"{protocol}://{hostname}:{args.port}{url_params}")
|
313
|
+
print(f"{protocol}://{ip}:{args.port}{url_params}")
|
314
|
+
|
300
315
|
|
301
316
|
def parseargs():
|
302
|
-
global app, args, COMMAND_STATUS_DIR
|
317
|
+
global app, args, COMMAND_STATUS_DIR, hostname, ip
|
303
318
|
|
304
319
|
parser = argparse.ArgumentParser(description='Run the command execution server.')
|
305
320
|
parser.add_argument('-u', '--user', help='Username for basic auth')
|
@@ -344,15 +359,14 @@ def parseargs():
|
|
344
359
|
os.mkdir(COMMAND_STATUS_DIR, mode=0o700)
|
345
360
|
if args.action == "term":
|
346
361
|
COMMAND_STATUS_DIR = f"{os.getcwd()}/{COMMAND_STATUS_DIR}"
|
347
|
-
|
362
|
+
start_term(str(uuid.uuid4()))
|
363
|
+
sys.exit(0)
|
348
364
|
(hostname, ip) = resolve(gethostname()) if args.listen == '0.0.0.0' else resolve(args.listen)
|
349
|
-
url_params = ""
|
350
365
|
|
351
366
|
if args.tokenurl:
|
352
367
|
token = os.environ.get("PYWEBEXEC_TOKEN", token_urlsafe())
|
353
368
|
os.environ["PYWEBEXEC_TOKEN"] = token
|
354
369
|
app.config["TOKEN_URL"] = token
|
355
|
-
url_params = f"?token={token}"
|
356
370
|
|
357
371
|
if args.gencert:
|
358
372
|
args.cert = args.cert or f"{CONFDIR}/pywebexec.crt"
|
@@ -377,10 +391,7 @@ def parseargs():
|
|
377
391
|
|
378
392
|
if args.action != 'stop':
|
379
393
|
print("Starting server:")
|
380
|
-
|
381
|
-
print(f"{protocol}://{hostname}:{args.port}{url_params}")
|
382
|
-
print(f"{protocol}://{ip}:{args.port}{url_params}")
|
383
|
-
|
394
|
+
print_urls()
|
384
395
|
return args
|
385
396
|
|
386
397
|
def get_status_file_path(command_id):
|
@@ -704,7 +715,9 @@ def main():
|
|
704
715
|
COMMAND_STATUS_DIR = f"{os.getcwd()}/{COMMAND_STATUS_DIR}"
|
705
716
|
with open(basef + ".log", "ab+") as log:
|
706
717
|
pywebexec = subprocess.Popen([sys.executable] + sys.argv[:-1], stdout=log, stderr=log)
|
707
|
-
|
718
|
+
command_id = str(uuid.uuid4())
|
719
|
+
print_urls(command_id)
|
720
|
+
res = start_term(command_id)
|
708
721
|
time.sleep(1)
|
709
722
|
pywebexec.terminate()
|
710
723
|
sys.exit()
|
@@ -720,5 +733,5 @@ def main():
|
|
720
733
|
|
721
734
|
|
722
735
|
if __name__ == '__main__':
|
723
|
-
main()
|
736
|
+
sys.exit(main())
|
724
737
|
# app.run(host='0.0.0.0', port=5000)
|
pywebexec/version.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
pywebexec/__init__.py,sha256=4spIsVaF8RJt8S58AG_wWoORRNkws9Iwqprj27C3ljM,99
|
2
|
-
pywebexec/pywebexec.py,sha256
|
3
|
-
pywebexec/version.py,sha256=
|
2
|
+
pywebexec/pywebexec.py,sha256=-wnb1KGTGKHRZUipcvZMwb8yQkidkhs_J_jMR6f84o4,27419
|
3
|
+
pywebexec/version.py,sha256=LXsHxD5FW3f8CmcjK3voP4WqE9lpQQNN_tpUuI6VMfI,413
|
4
4
|
pywebexec/static/css/Consolas NF.ttf,sha256=DJEOzF0eqZ-kxu3Gs_VE8X0NJqiobBzmxWDGpdgGRxI,1313900
|
5
5
|
pywebexec/static/css/style.css,sha256=cGJHPFj23SQ_bFpesfUaFA3VFxhXtpRUOL_zzx3x_X8,5726
|
6
6
|
pywebexec/static/css/xterm.css,sha256=gy8_LGA7Q61DUf8ElwFQzHqHMBQnbbEmpgZcbdgeSHI,5383
|
@@ -23,9 +23,9 @@ pywebexec/static/js/xterm/xterm.js,sha256=Bzka76jZwEhVt_LlS0e0qMw7ryGa1p5qfxFyeo
|
|
23
23
|
pywebexec/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
24
24
|
pywebexec/templates/index.html,sha256=DYtT555wSNhnFtzzHhPMWJireynCJNnAuTytpoORQeE,2321
|
25
25
|
pywebexec/templates/popup.html,sha256=T6_tAOUoA58sA1oxB5pb8i42RenoMdCsH8T86Gccb6Q,945
|
26
|
-
pywebexec-1.4.
|
27
|
-
pywebexec-1.4.
|
28
|
-
pywebexec-1.4.
|
29
|
-
pywebexec-1.4.
|
30
|
-
pywebexec-1.4.
|
31
|
-
pywebexec-1.4.
|
26
|
+
pywebexec-1.4.14.dist-info/LICENSE,sha256=gRJf0JPT_wsZJsUGlWPTS8Vypfl9vQ1qjp6sNbKykuA,1064
|
27
|
+
pywebexec-1.4.14.dist-info/METADATA,sha256=70sAlcFCe8Lx83npHf3snGV36Ez3OPtfVISxo9IrfaE,7801
|
28
|
+
pywebexec-1.4.14.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
29
|
+
pywebexec-1.4.14.dist-info/entry_points.txt,sha256=l52GBkPCXRkmlHfEyoVauyfBdg8o-CAtC8qQpOIjJK0,55
|
30
|
+
pywebexec-1.4.14.dist-info/top_level.txt,sha256=vHoHyzngrfGdm_nM7Xn_5iLmaCrf10XO1EhldgNLEQ8,10
|
31
|
+
pywebexec-1.4.14.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|