mirror of
https://github.com/ComputerScienceHouse/proxstar.git
synced 2025-03-09 15:40:09 +00:00
add cleanup code for vnc connections
This commit is contained in:
parent
b05109af83
commit
115909b5cd
3 changed files with 28 additions and 5 deletions
|
@ -1,5 +1,6 @@
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
|
import psutil
|
||||||
import atexit
|
import atexit
|
||||||
import subprocess
|
import subprocess
|
||||||
from rq import Queue
|
from rq import Queue
|
||||||
|
@ -456,11 +457,24 @@ def allowed_users(user):
|
||||||
return '', 403
|
return '', 403
|
||||||
|
|
||||||
|
|
||||||
@app.route("/targets/clear")
|
@app.route("/vnc/cleanup")
|
||||||
@auth.oidc_auth
|
@auth.oidc_auth
|
||||||
def clear_targets():
|
def cleanup_vnc():
|
||||||
if 'rtp' in session['userinfo']['groups']:
|
if 'rtp' in session['userinfo']['groups']:
|
||||||
clear_vnc_targets()
|
for target in get_vnc_targets():
|
||||||
|
tunnel = next((tunnel for tunnel in ssh_tunnels
|
||||||
|
if tunnel.local_bind_port == int(target['port'])),
|
||||||
|
None)
|
||||||
|
if tunnel:
|
||||||
|
if not next((conn for conn in psutil.net_connections()
|
||||||
|
if conn.laddr[1] == int(target['port'])
|
||||||
|
and conn.status == 'ESTABLISHED'), None):
|
||||||
|
try:
|
||||||
|
tunnel.stop()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
ssh_tunnels.remove(tunnel)
|
||||||
|
delete_vnc_target(target['port'])
|
||||||
return '', 200
|
return '', 200
|
||||||
else:
|
else:
|
||||||
return '', 403
|
return '', 403
|
||||||
|
|
|
@ -60,8 +60,16 @@ def add_vnc_target(port):
|
||||||
return token
|
return token
|
||||||
|
|
||||||
|
|
||||||
def clear_vnc_targets():
|
def delete_vnc_target(port):
|
||||||
open(app.config['WEBSOCKIFY_TARGET_FILE'], 'w').close()
|
targets = get_vnc_targets()
|
||||||
|
target = next((target for target in targets if target['port'] == port),
|
||||||
|
None)
|
||||||
|
if target:
|
||||||
|
targets.remove(target)
|
||||||
|
target_file = open(app.config['WEBSOCKIFY_TARGET_FILE'], 'w')
|
||||||
|
for target in targets:
|
||||||
|
target_file.write("{}\n".format(target))
|
||||||
|
target_file.close()
|
||||||
|
|
||||||
|
|
||||||
def start_ssh_tunnel(node, port):
|
def start_ssh_tunnel(node, port):
|
||||||
|
|
|
@ -12,3 +12,4 @@ raven
|
||||||
paramiko
|
paramiko
|
||||||
websockify
|
websockify
|
||||||
sshtunnel
|
sshtunnel
|
||||||
|
psutil
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue