mirror of
https://github.com/ComputerScienceHouse/proxstar.git
synced 2025-03-09 15:40:09 +00:00
Fixes, use gunicorn, launch websockify
This hosts a smattering of fixes, acutally uses gunicorn properly(?), launches websockify correctly, and introduces MORE DEAD CODE! TODO: Fix the scheduling system
This commit is contained in:
parent
7555232926
commit
4ec51ea611
7 changed files with 27 additions and 17 deletions
|
@ -8,4 +8,4 @@ COPY .git ./.git
|
||||||
COPY *.py .
|
COPY *.py .
|
||||||
COPY proxstar ./proxstar
|
COPY proxstar ./proxstar
|
||||||
RUN touch proxmox_ssh_key targets && chmod a+w proxmox_ssh_key targets # This is some OKD shit.
|
RUN touch proxmox_ssh_key targets && chmod a+w proxmox_ssh_key targets # This is some OKD shit.
|
||||||
ENTRYPOINT ddtrace-run python3 wsgi.py
|
ENTRYPOINT ddtrace-run gunicorn proxstar:app --bind=0.0.0.0:8080
|
||||||
|
|
|
@ -3,4 +3,4 @@ podman run --rm -d --network=proxstar --name=proxstar-redis redis:alpine
|
||||||
podman run --rm -d --network=proxstar --name=proxstar-postgres -e POSTGRES_PASSWORD=changeme -v ./HACKING/proxstar-postgres/volume:/var/lib/postgresql/data:Z proxstar-postgres
|
podman run --rm -d --network=proxstar --name=proxstar-postgres -e POSTGRES_PASSWORD=changeme -v ./HACKING/proxstar-postgres/volume:/var/lib/postgresql/data:Z proxstar-postgres
|
||||||
podman run --rm -d --network=proxstar --name=proxstar-rq-scheduler --env-file=HACKING/.env --entrypoint ./start_scheduler.sh proxstar
|
podman run --rm -d --network=proxstar --name=proxstar-rq-scheduler --env-file=HACKING/.env --entrypoint ./start_scheduler.sh proxstar
|
||||||
podman run --rm -d --network=proxstar --name=proxstar-rq --env-file=HACKING/.env --entrypoint ./start_worker.sh proxstar
|
podman run --rm -d --network=proxstar --name=proxstar-rq --env-file=HACKING/.env --entrypoint ./start_worker.sh proxstar
|
||||||
podman run --rm -it --network=proxstar --name=proxstar -p 8000:8000 -p 8081:8081 --env-file=HACKING/.env --entrypoint='["python3", "wsgi.py"]' proxstar
|
podman run --rm -it --network=proxstar --name=proxstar -p 8000:8000 -p 8081:8081 --env-file=HACKING/.env --entrypoint='["gunicorn", "proxstar:app", "--bind=0.0.0.0:8000"]' proxstar
|
|
@ -2,7 +2,6 @@ import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
if os.path.exists(os.path.join(app.config.get('ROOT_DIR', os.getcwd()), "config_local.py")):
|
if os.path.exists(os.path.join(app.config.get('ROOT_DIR', os.getcwd()), "config_local.py")):
|
||||||
config = os.path.join(app.config.get('ROOT_DIR', os.getcwd()), "config_local.py")
|
config = os.path.join(app.config.get('ROOT_DIR', os.getcwd()), "config_local.py")
|
||||||
|
@ -34,5 +33,5 @@ def start_websockify(websockify_path, target_file):
|
||||||
|
|
||||||
|
|
||||||
def on_starting(server):
|
def on_starting(server):
|
||||||
print("Starting Websockify...")
|
print("Booting Websockify server in daemon mode...")
|
||||||
start_websockify(app.config['WEBSOCKIFY_PATH'], app.config['WEBSOCKIFY_TARGET_FILE'])
|
start_websockify(app.config['WEBSOCKIFY_PATH'], app.config['WEBSOCKIFY_TARGET_FILE'])
|
|
@ -6,7 +6,7 @@ import logging
|
||||||
import subprocess
|
import subprocess
|
||||||
import psutil
|
import psutil
|
||||||
import psycopg2
|
import psycopg2
|
||||||
from gunicorn_conf import start_websockify
|
# from gunicorn_conf import start_websockify
|
||||||
import rq_dashboard
|
import rq_dashboard
|
||||||
from rq import Queue
|
from rq import Queue
|
||||||
from redis import Redis
|
from redis import Redis
|
||||||
|
@ -73,9 +73,9 @@ app.config['GIT_REVISION'] = (
|
||||||
)
|
)
|
||||||
|
|
||||||
# Probably cursed.
|
# Probably cursed.
|
||||||
if 'localhost' in app.config['SERVER_NAME']:
|
# if 'localhost' in app.config['SERVER_NAME']:
|
||||||
print('Server name is localhost. Starting websockify...')
|
# print('Server name is localhost. Starting websockify...')
|
||||||
start_websockify(app.config['WEBSOCKIFY_PATH'], app.config['WEBSOCKIFY_TARGET_FILE'])
|
# start_websockify(app.config['WEBSOCKIFY_PATH'], app.config['WEBSOCKIFY_TARGET_FILE'])
|
||||||
|
|
||||||
# Sentry setup
|
# Sentry setup
|
||||||
sentry_sdk.init(
|
sentry_sdk.init(
|
||||||
|
@ -598,6 +598,7 @@ def cleanup_vnc():
|
||||||
with open(app.config['WEBSOCKIFY_TARGET_FILE'], 'w') as targets:
|
with open(app.config['WEBSOCKIFY_TARGET_FILE'], 'w') as targets:
|
||||||
targets.truncate()
|
targets.truncate()
|
||||||
return '', 200
|
return '', 200
|
||||||
|
print("Got bad cleanup request")
|
||||||
return '', 403
|
return '', 403
|
||||||
# if request.form['token'] == app.config['VNC_CLEANUP_TOKEN']:
|
# if request.form['token'] == app.config['VNC_CLEANUP_TOKEN']:
|
||||||
# for target in get_vnc_targets():
|
# for target in get_vnc_targets():
|
||||||
|
|
|
@ -233,8 +233,17 @@ def cleanup_vnc_task():
|
||||||
ones every couple of minutes
|
ones every couple of minutes
|
||||||
https://github.com/ComputerScienceHouse/proxstar/issues/153
|
https://github.com/ComputerScienceHouse/proxstar/issues/153
|
||||||
"""
|
"""
|
||||||
requests.post(
|
print('Clearing vnc targets')
|
||||||
f'https://{app.config["VNC_HOST"]}/console/cleanup',
|
with open(app.config['WEBSOCKIFY_TARGET_FILE'], 'w') as targets:
|
||||||
data={'token': app.config['VNC_CLEANUP_TOKEN']},
|
targets.truncate()
|
||||||
verify=False,
|
|
||||||
)
|
# FIXME (willnilges): This is straight-up not working, no matter what I try.
|
||||||
|
# The whole scheduling system needs a lotta work.
|
||||||
|
try:
|
||||||
|
requests.post(
|
||||||
|
f'https://proxstar.csh.rit.edu/console/cleanup',
|
||||||
|
data={'token': app.config['VNC_CLEANUP_TOKEN']},
|
||||||
|
verify=False,
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
|
|
@ -14,11 +14,12 @@ from proxstar.util import gen_password
|
||||||
def stop_websockify():
|
def stop_websockify():
|
||||||
result = subprocess.run(['pgrep', 'websockify'], stdout=subprocess.PIPE, check=False)
|
result = subprocess.run(['pgrep', 'websockify'], stdout=subprocess.PIPE, check=False)
|
||||||
if result.stdout:
|
if result.stdout:
|
||||||
pid = result.stdout.strip()
|
pids = result.stdout.splitlines()
|
||||||
subprocess.run(['kill', pid], stdout=subprocess.PIPE, check=False)
|
for pid in pids:
|
||||||
time.sleep(3)
|
subprocess.run(['kill', pid], stdout=subprocess.PIPE, check=False)
|
||||||
|
time.sleep(1)
|
||||||
if subprocess.run(['pgrep', 'websockify'], stdout=subprocess.PIPE, check=False).stdout:
|
if subprocess.run(['pgrep', 'websockify'], stdout=subprocess.PIPE, check=False).stdout:
|
||||||
time.sleep(10)
|
time.sleep(5)
|
||||||
if subprocess.run(['pgrep', 'websockify'], stdout=subprocess.PIPE, check=False).stdout:
|
if subprocess.run(['pgrep', 'websockify'], stdout=subprocess.PIPE, check=False).stdout:
|
||||||
logging.info("websockify didn't stop, killing forcefully")
|
logging.info("websockify didn't stop, killing forcefully")
|
||||||
subprocess.run(['kill', '-9', pid], stdout=subprocess.PIPE, check=False)
|
subprocess.run(['kill', '-9', pid], stdout=subprocess.PIPE, check=False)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue