"feat: Implement printer management
This commit is contained in:
@@ -1923,154 +1923,4 @@ def validate_ssl_certificate():
|
||||
|
||||
except Exception as e:
|
||||
app_logger.error(f"Fehler bei der SSL-Validierung: {e}")
|
||||
return jsonify({"error": f"Fehler bei der Validierung: {str(e)}"}), 500
|
||||
@login_required
|
||||
def get_ssl_info():
|
||||
"""Gibt Informationen über das aktuelle SSL-Zertifikat zurück."""
|
||||
if not current_user.is_admin:
|
||||
return jsonify({"error": "Nur Administratoren können SSL-Informationen abrufen"}), 403
|
||||
|
||||
try:
|
||||
from utils.ssl_manager import ssl_manager
|
||||
cert_info = ssl_manager.get_certificate_info()
|
||||
|
||||
if not cert_info:
|
||||
return jsonify({
|
||||
"exists": False,
|
||||
"message": "Kein SSL-Zertifikat gefunden"
|
||||
})
|
||||
|
||||
return jsonify({
|
||||
"exists": True,
|
||||
"certificate": cert_info,
|
||||
"paths": {
|
||||
"cert": ssl_manager.cert_path,
|
||||
"key": ssl_manager.key_path
|
||||
}
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
ssl_logger.error(f"Fehler beim Abrufen der SSL-Informationen: {e}")
|
||||
return jsonify({"error": f"Fehler beim Abrufen der SSL-Informationen: {str(e)}"}), 500
|
||||
|
||||
@app.route("/api/ssl/generate", methods=["POST"])
|
||||
@login_required
|
||||
def generate_ssl_certificate():
|
||||
"""Generiert ein neues SSL-Zertifikat."""
|
||||
if not current_user.is_admin:
|
||||
return jsonify({"error": "Nur Administratoren können SSL-Zertifikate generieren"}), 403
|
||||
|
||||
try:
|
||||
from utils.ssl_manager import ssl_manager
|
||||
|
||||
# Parameter aus Request extrahieren
|
||||
data = request.json or {}
|
||||
key_size = data.get("key_size", 4096)
|
||||
validity_days = data.get("validity_days", 365)
|
||||
|
||||
# Zertifikat generieren
|
||||
success = ssl_manager.generate_mercedes_certificate(key_size, validity_days)
|
||||
|
||||
if success:
|
||||
cert_info = ssl_manager.get_certificate_info()
|
||||
ssl_logger.info(f"SSL-Zertifikat von {current_user.username} generiert")
|
||||
|
||||
return jsonify({
|
||||
"success": True,
|
||||
"message": "SSL-Zertifikat erfolgreich generiert",
|
||||
"certificate": cert_info
|
||||
})
|
||||
else:
|
||||
return jsonify({
|
||||
"success": False,
|
||||
"error": "Fehler beim Generieren des SSL-Zertifikats"
|
||||
}), 500
|
||||
|
||||
except Exception as e:
|
||||
ssl_logger.error(f"Fehler beim Generieren des SSL-Zertifikats: {e}")
|
||||
return jsonify({"error": f"Fehler beim Generieren: {str(e)}"}), 500
|
||||
|
||||
@app.route("/api/ssl/install", methods=["POST"])
|
||||
@login_required
|
||||
def install_ssl_certificate():
|
||||
"""Installiert das SSL-Zertifikat im System."""
|
||||
if not current_user.is_admin:
|
||||
return jsonify({"error": "Nur Administratoren können SSL-Zertifikate installieren"}), 403
|
||||
|
||||
try:
|
||||
from utils.ssl_manager import ssl_manager
|
||||
|
||||
success = ssl_manager.install_system_certificate()
|
||||
|
||||
if success:
|
||||
ssl_logger.info(f"SSL-Zertifikat von {current_user.username} im System installiert")
|
||||
return jsonify({
|
||||
"success": True,
|
||||
"message": "SSL-Zertifikat erfolgreich im System installiert"
|
||||
})
|
||||
else:
|
||||
return jsonify({
|
||||
"success": False,
|
||||
"error": "Fehler bei der Installation des SSL-Zertifikats im System"
|
||||
}), 500
|
||||
|
||||
except Exception as e:
|
||||
ssl_logger.error(f"Fehler bei der SSL-Installation: {e}")
|
||||
return jsonify({"error": f"Fehler bei der Installation: {str(e)}"}), 500
|
||||
|
||||
@app.route("/api/ssl/copy-raspberry", methods=["POST"])
|
||||
@login_required
|
||||
def copy_ssl_to_raspberry():
|
||||
"""Kopiert das SSL-Zertifikat auf den Raspberry Pi."""
|
||||
if not current_user.is_admin:
|
||||
return jsonify({"error": "Nur Administratoren können SSL-Zertifikate kopieren"}), 403
|
||||
|
||||
try:
|
||||
from utils.ssl_manager import ssl_manager
|
||||
|
||||
# Parameter aus Request extrahieren
|
||||
data = request.json or {}
|
||||
host = data.get("host", "raspberrypi")
|
||||
user = data.get("user", "pi")
|
||||
dest = data.get("dest", "/home/pi/myp/ssl")
|
||||
|
||||
success = ssl_manager.copy_to_raspberry(host, user, dest)
|
||||
|
||||
if success:
|
||||
ssl_logger.info(f"SSL-Zertifikat von {current_user.username} auf Raspberry Pi kopiert")
|
||||
return jsonify({
|
||||
"success": True,
|
||||
"message": f"SSL-Zertifikat erfolgreich auf {host} kopiert"
|
||||
})
|
||||
else:
|
||||
return jsonify({
|
||||
"success": False,
|
||||
"error": "Fehler beim Kopieren des SSL-Zertifikats auf den Raspberry Pi"
|
||||
}), 500
|
||||
|
||||
except Exception as e:
|
||||
ssl_logger.error(f"Fehler beim Kopieren auf Raspberry Pi: {e}")
|
||||
return jsonify({"error": f"Fehler beim Kopieren: {str(e)}"}), 500
|
||||
|
||||
@app.route("/api/ssl/validate", methods=["GET"])
|
||||
@login_required
|
||||
def validate_ssl_certificate():
|
||||
"""Validiert das aktuelle SSL-Zertifikat."""
|
||||
if not current_user.is_admin:
|
||||
return jsonify({"error": "Nur Administratoren können SSL-Zertifikate validieren"}), 403
|
||||
|
||||
try:
|
||||
from utils.ssl_manager import ssl_manager
|
||||
|
||||
is_valid = ssl_manager.is_certificate_valid()
|
||||
cert_info = ssl_manager.get_certificate_info()
|
||||
|
||||
return jsonify({
|
||||
"valid": is_valid,
|
||||
"certificate": cert_info,
|
||||
"message": "Zertifikat ist gültig" if is_valid else "Zertifikat ist ungültig oder läuft bald ab"
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
ssl_logger.error(f"Fehler bei der SSL-Validierung: {e}")
|
||||
return jsonify({"error": f"Fehler bei der Validierung: {str(e)}"}), 500
|
Reference in New Issue
Block a user