From f5d616a90452c2f64213f52a147f14fc9a70511f Mon Sep 17 00:00:00 2001 From: Thomas Hassenstein <2021544@stud.hs-mannheim.de> Date: Tue, 13 Jun 2023 03:10:38 +0200 Subject: [PATCH] =?UTF-8?q?Dateien=20hochladen=20nach=20=E2=80=9EREST/old?= =?UTF-8?q?=E2=80=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit alternative implementierung --- REST/old/app2.py | 75 ++++++++++++++++++++++++++++++++++++++++++ REST/old/default | 30 +++++++++++++++++ REST/old/uwsgi.ini | 20 +++++++++++ REST/old/uwsgi.service | 12 +++++++ 4 files changed, 137 insertions(+) create mode 100644 REST/old/app2.py create mode 100644 REST/old/default create mode 100644 REST/old/uwsgi.ini create mode 100644 REST/old/uwsgi.service diff --git a/REST/old/app2.py b/REST/old/app2.py new file mode 100644 index 0000000..d9b1d0f --- /dev/null +++ b/REST/old/app2.py @@ -0,0 +1,75 @@ +import subprocess +import json +import time +from flask import Flask, request, jsonify +from I2C_Function import analyze_data, read_data +from flask_cors import CORS +from threading import Lock + +app = Flask(__name__) +CORS(app) + +initialized = False +lock = Lock() # Sperre (Lock) für die analyze_data-Methode + +@app.route('/trng/randomNum/init', methods=['GET']) +def initialize_generator(): + global initialized # Zugriff auf die globale Variable + + with lock: # Sperre (Lock) verwenden, um sicherzustellen, dass nur ein Thread die Methode ausführt + if initialized: + return jsonify({'message': 'random number generator already initialized'}), 200 + + result = analyze_data(int(1), int(1), startup=True) + + if result is True: + initialized = True + return jsonify({'message': 'successful operation; random number generator is ready and random numbers can be requested'}), 200 + else: + return jsonify({'error': 'Unable to initialize the random number generator within a timeout of 60 seconds.'}), 555 + + +@app.route('/trng/randomNum/getRandom', methods=['GET']) +def get_random_numbers(): + global initialized # Zugriff auf die globale Variable + quantity = request.args.get('quantity') + bits = request.args.get('numBits') + + if not quantity.isdigit() or not bits.isdigit(): + return jsonify({'error': 'Invalid input. Quantity and bits must be numeric.'}), 400 + + if int(quantity) <= 0 or int(bits) <= 0: + return jsonify({'error': 'Invalid input. Quantity and bits must be positive integers.'}), 400 + + if not initialized: + return jsonify({'error': 'system not ready; try init'}), 432 + + with lock: # Sperre (Lock) verwenden, um sicherzustellen, dass nur ein Thread die Methode ausführt + random_numbers = analyze_data(int(quantity), int(bits), startup=False) + + if random_numbers is False: + return jsonify({'error': 'Unable to generate random numbers.'}), 500 + if random_numbers: + response_data = { + 'status': 'successful operation; HEX-encoded bit arrays (with leading zeros if required)', + 'randomNumbers': random_numbers + } + return jsonify(response_data), 200 + + else: + return jsonify({'error': 'Unable to generate random numbers.'}), 500 + +@app.route('/trng/randomNum/shutdown', methods=['GET']) +def shutdown_generator(): + global initialized # Zugriff auf die globale Variable + + with lock: # Sperre (Lock) verwenden, um sicherzustellen, dass nur ein Thread die Methode ausführt + initialized = False + + return jsonify({'message': "successful operation; random number generator has been set to 'standby mode'"}), 200 + +if __name__ == '__main__': + cert_path = '/etc/nginx/ssl/cert-gmtrom.pem' + key_path = '/etc/nginx/ssl/cert-gmtrom-key.pem' + + app.run(host='0.0.0.0', ssl_context=(cert_path, key_path)) \ No newline at end of file diff --git a/REST/old/default b/REST/old/default new file mode 100644 index 0000000..c818d53 --- /dev/null +++ b/REST/old/default @@ -0,0 +1,30 @@ +server { + #listen 80; + #server_name 172.16.78.57; + #server_name _; + + listen 443 ssl; + server_name 172.16.78.57; + + ssl_certificate /etc/nginx/ssl/cert-gmtrom.pem; + ssl_certificate_key /etc/nginx/ssl/cert-gmtrom-key.pem; + + root /var/www/html; + index index.html; + + #location /trng { + #proxy_pass https://172.16.78.57:5000; # Weiterleitung an den Flask-Server + #proxy_set_header Host $host; + #proxy_set_header X-Real-IP $remote_addr; + #} + + location /trng { + include uwsgi_params; + uwsgi_pass 127.0.0.1:5000; # Weiterleitung an uWSGI + } + + location = /logomiddle.png { + alias /var/www/html/logomiddle.png; + } + +} diff --git a/REST/old/uwsgi.ini b/REST/old/uwsgi.ini new file mode 100644 index 0000000..0567e12 --- /dev/null +++ b/REST/old/uwsgi.ini @@ -0,0 +1,20 @@ +[uwsgi] +http-timeout = 86400 + +# Anzahl der uWSGI-Worker-Prozesse +processes = 4 + +# Socket-Datei, die uWSGI verwenden soll +socket = 127.0.0.1:5000 + +# WSGI-Anwendung zum Ausführen (hier 'app' in der Datei app.py) +module = app:app + +# Pfad zur Flask-Anwendung +chdir = /var/www/html/app.py + +# Aktiviere das virtuelle Umgebung, falls du eins verwendest +#home = /path/to/your/virtual/environment + +# SSL-Konfiguration +https = 0,/etc/nginx/ssl/cert-gmtrom.pem,/etc/nginx/ssl/cert-gmtrom-key.pem. \ No newline at end of file diff --git a/REST/old/uwsgi.service b/REST/old/uwsgi.service new file mode 100644 index 0000000..f580606 --- /dev/null +++ b/REST/old/uwsgi.service @@ -0,0 +1,12 @@ +[Unit] +Description=uWSGI Service +After=network.target + +[Service] +User=adminadmin +Group=adminadmin +WorkingDirectory=/var/www/html +ExecStart=/usr/local/bin/uwsgi --ini /var/www/html/uwsgi.ini + +[Install] +WantedBy=multi-user.target \ No newline at end of file