From 984b3a62f9f0f1bc70d2f3949824b5275ea8aee6 Mon Sep 17 00:00:00 2001 From: Karl Date: Sat, 19 Jul 2025 09:32:45 +0100 Subject: [PATCH] dns on config page --- ktvmanager/main.py | 4 +-- ktvmanager/routes/dns.py | 47 ------------------------------- routes/dns.py | 60 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 49 deletions(-) delete mode 100644 ktvmanager/routes/dns.py create mode 100644 routes/dns.py diff --git a/ktvmanager/main.py b/ktvmanager/main.py index a39a5a3..efca954 100644 --- a/ktvmanager/main.py +++ b/ktvmanager/main.py @@ -2,8 +2,8 @@ import os from flask import Flask, jsonify from dotenv import load_dotenv from ktvmanager.config import DevelopmentConfig, ProductionConfig -from routes.api import api_blueprint -from routes.dns import dns_bp +from ktvmanager.routes.api import api_blueprint +from ktvmanager.routes.dns import dns_bp from ktvmanager.lib.database import initialize_db_pool from ktvmanager.account_checker import send_expiry_notifications from apscheduler.schedulers.background import BackgroundScheduler diff --git a/ktvmanager/routes/dns.py b/ktvmanager/routes/dns.py deleted file mode 100644 index 612c143..0000000 --- a/ktvmanager/routes/dns.py +++ /dev/null @@ -1,47 +0,0 @@ -from flask import Blueprint, render_template, request, redirect, url_for, flash -import os - -dns_bp = Blueprint('dns', __name__) - -DNS_FILE = os.path.join(os.path.dirname(__file__), '..', 'lib', 'DNS_list.txt') - -def read_dns_list(): - if not os.path.exists(DNS_FILE): - return [] - with open(DNS_FILE, 'r') as f: - return [line.strip() for line in f.readlines()] - -def write_dns_list(dns_list): - with open(DNS_FILE, 'w') as f: - for item in dns_list: - f.write(f"{item}\n") - -@dns_bp.route('/add_dns', methods=['POST']) -def add_dns(): - dns_entry = request.form.get('dns_entry') - if dns_entry: - dns_list = read_dns_list() - if dns_entry not in dns_list: - dns_list.append(dns_entry) - write_dns_list(dns_list) - flash('DNS entry added successfully.', 'success') - else: - flash('DNS entry already exists.', 'info') - else: - flash('DNS entry cannot be empty.', 'danger') - return redirect(url_for('config_dashboard')) - -@dns_bp.route('/remove_dns', methods=['POST']) -def remove_dns(): - dns_entry = request.form.get('dns_entry') - if dns_entry: - dns_list = read_dns_list() - if dns_entry in dns_list: - dns_list.remove(dns_entry) - write_dns_list(dns_list) - flash('DNS entry removed successfully.', 'success') - else: - flash('DNS entry not found.', 'info') - else: - flash('DNS entry cannot be empty.', 'danger') - return redirect(url_for('config_dashboard')) \ No newline at end of file diff --git a/routes/dns.py b/routes/dns.py new file mode 100644 index 0000000..1d5723e --- /dev/null +++ b/routes/dns.py @@ -0,0 +1,60 @@ +from flask import Blueprint, request, jsonify +import os + +dns_bp = Blueprint('dns', __name__) + +DNS_FILE = os.path.join(os.path.dirname(__file__), '..', 'ktvmanager', 'lib', 'DNS_list.txt') + +def read_dns_list(): + if not os.path.exists(DNS_FILE): + return [] + with open(DNS_FILE, 'r') as f: + return [line.strip() for line in f.readlines() if line.strip()] + +def write_dns_list(dns_list): + with open(DNS_FILE, 'w') as f: + for item in dns_list: + f.write(f"{item}\n") + +@dns_bp.route('/dns', methods=['GET']) +def get_dns_list(): + """Gets the list of DNS entries.""" + return jsonify(read_dns_list()) + +@dns_bp.route('/dns', methods=['POST']) +def add_dns(): + """Adds a new DNS entry.""" + data = request.get_json() + if not data or 'dns_entry' not in data: + return jsonify({'error': 'Missing dns_entry in request body'}), 400 + + dns_entry = data.get('dns_entry') + if not dns_entry: + return jsonify({'error': 'DNS entry cannot be empty.'}), 400 + + dns_list = read_dns_list() + if dns_entry in dns_list: + return jsonify({'message': 'DNS entry already exists.'}), 200 + + dns_list.append(dns_entry) + write_dns_list(dns_list) + return jsonify({'message': 'DNS entry added successfully.'}), 201 + +@dns_bp.route('/dns', methods=['DELETE']) +def remove_dns(): + """Removes a DNS entry.""" + data = request.get_json() + if not data or 'dns_entry' not in data: + return jsonify({'error': 'Missing dns_entry in request body'}), 400 + + dns_entry = data.get('dns_entry') + if not dns_entry: + return jsonify({'error': 'DNS entry cannot be empty.'}), 400 + + dns_list = read_dns_list() + if dns_entry not in dns_list: + return jsonify({'error': 'DNS entry not found.'}), 404 + + dns_list.remove(dns_entry) + write_dns_list(dns_list) + return jsonify({'message': 'DNS entry removed successfully.'}), 200 \ No newline at end of file