From 1e8ec29f3f9f913863b8954edc9f1aa95d3ec2e2 Mon Sep 17 00:00:00 2001 From: CakeCN Date: Fri, 12 Sep 2025 16:19:41 +0800 Subject: [PATCH] delete duplicate caddy conf --- Html/apps/views/vscode.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/Html/apps/views/vscode.py b/Html/apps/views/vscode.py index 407d4d1..0a1d142 100644 --- a/Html/apps/views/vscode.py +++ b/Html/apps/views/vscode.py @@ -1,4 +1,5 @@ # myapp/views/vscode.py +import re import os, uuid, json from flask import Blueprint, current_app, session, redirect, url_for, render_template, request, jsonify from ..services.backboard_service import realtime_response @@ -39,21 +40,32 @@ def desktop(user_uuid, course_id, chapter_name, lesson_name): - caddy_conf = f""" handle_path /vsc{user_uuid}/* {{ reverse_proxy localhost:{code_server_port} }} - - """ caddy_config_path = "/etc/caddy/Caddyfile" with open(caddy_config_path, "r") as f: lines = f.readlines() - insert_position = len(lines) - 2 if len(lines) >= 2 else len(lines) + pattern = re.compile( + r'handle_path\s+/vsc' + re.escape(user_uuid) + r'/\* {.*?reverse_proxy.*?}', + re.DOTALL + ) + content = "".join(lines) + if pattern.search(content): + new_content = pattern.sub('', content) + lines = new_content.splitlines(keepends=True) + if len(lines) >= 2: + insert_position = len(lines) - 2 + else: + insert_position = len(lines) + if caddy_conf[-1] not in ['\n', '\r']: + caddy_conf += '\n' lines.insert(insert_position, caddy_conf) with open(caddy_config_path, "w") as f: f.writelines(lines) + try: subprocess.run(["sudo", "caddy", "reload", "--config", "/etc/caddy/Caddyfile"]) except subprocess.CalledProcessError as e: