Refactor code structure for improved readability and maintainability
This commit is contained in:
71
routes/wireguard_routes.py
Normal file
71
routes/wireguard_routes.py
Normal file
@@ -0,0 +1,71 @@
|
||||
"""PiCopy – Blueprint: /api/wireguard/*."""
|
||||
|
||||
import re
|
||||
import threading
|
||||
|
||||
from flask import Blueprint, jsonify, request
|
||||
|
||||
from picopy.config import load_cfg, save_cfg
|
||||
from picopy.wireguard import (
|
||||
wg_state, wg_lock, WG_CONF,
|
||||
wg_connect, wg_disconnect,
|
||||
wg_install, wg_uninstall,
|
||||
wg_save_config,
|
||||
)
|
||||
|
||||
wireguard_bp = Blueprint('wireguard', __name__)
|
||||
|
||||
|
||||
@wireguard_bp.route('/api/wireguard/config', methods=['GET', 'POST'])
|
||||
def r_wg_config():
|
||||
if request.method == 'POST':
|
||||
data = request.get_json(force=True)
|
||||
content = data.get('content', '')
|
||||
if not content.strip():
|
||||
return jsonify(error='Konfiguration ist leer'), 400
|
||||
ok, err = wg_save_config(content)
|
||||
if not ok:
|
||||
return jsonify(error=err), 500
|
||||
auto = data.get('auto')
|
||||
if auto is not None:
|
||||
c = load_cfg()
|
||||
c['wireguard_auto'] = bool(auto)
|
||||
save_cfg(c)
|
||||
with wg_lock:
|
||||
wg_state['has_config'] = True
|
||||
return jsonify(ok=True)
|
||||
if WG_CONF.exists():
|
||||
content = WG_CONF.read_text(encoding='utf-8')
|
||||
masked = re.sub(r'(PrivateKey\s*=\s*)(.+)', r'\1****', content)
|
||||
return jsonify(exists=True, config=masked)
|
||||
return jsonify(exists=False, config='')
|
||||
|
||||
|
||||
@wireguard_bp.route('/api/wireguard/connect', methods=['POST'])
|
||||
def r_wg_connect():
|
||||
threading.Thread(target=wg_connect, daemon=True).start()
|
||||
return jsonify(ok=True, msg='Verbindungsversuch gestartet')
|
||||
|
||||
|
||||
@wireguard_bp.route('/api/wireguard/disconnect', methods=['POST'])
|
||||
def r_wg_disconnect():
|
||||
ok = wg_disconnect()
|
||||
return jsonify(ok=ok)
|
||||
|
||||
|
||||
@wireguard_bp.route('/api/wireguard/install', methods=['POST'])
|
||||
def r_wg_install():
|
||||
with wg_lock:
|
||||
if wg_state['pkg_running']:
|
||||
return jsonify(error='Bereits aktiv'), 400
|
||||
threading.Thread(target=wg_install, daemon=True).start()
|
||||
return jsonify(ok=True)
|
||||
|
||||
|
||||
@wireguard_bp.route('/api/wireguard/uninstall', methods=['POST'])
|
||||
def r_wg_uninstall():
|
||||
with wg_lock:
|
||||
if wg_state['pkg_running']:
|
||||
return jsonify(error='Bereits aktiv'), 400
|
||||
threading.Thread(target=wg_uninstall, daemon=True).start()
|
||||
return jsonify(ok=True)
|
||||
Reference in New Issue
Block a user