diff --git a/web/README.md b/web/README.md new file mode 100644 index 0000000..85f7b58 --- /dev/null +++ b/web/README.md @@ -0,0 +1,5 @@ +# Попытка перенести DomainMapper на WEB платформу для размещения желающими на собсвтенном хостинге. + +Не уверен, что закончу начатое. + +Предложения в виде **pull requests** приветствуются. diff --git a/web/app.py b/web/app.py new file mode 100644 index 0000000..3c7f820 --- /dev/null +++ b/web/app.py @@ -0,0 +1,75 @@ +from fastapi import FastAPI, Form, UploadFile +from fastapi.responses import FileResponse, HTMLResponse +import asyncio +import os + +app = FastAPI() + +@app.get("/") +async def get_form(): + html_content = """ + + + + + + DNS Resolver Settings + + +

Настройки

+
+
+ Service 1
+ Service 2
+ Service 3

+ +
+ DNS Server 1
+ DNS Server 2
+ DNS Server 3

+ +
+ Исключить Cloudflare

+ +
+ До /16 (255.255.0.0)
+ До /24 (255.255.255.0)
+ Микс /24 и /32
+ Не агрегировать

+ +
+ Windows Route
+ Unix Route
+ CIDR

+ + +
+ + + """ + return HTMLResponse(content=html_content) + +@app.post("/run") +async def run_dns_resolver( + services: list[str] = Form(...), + dns_servers: list[str] = Form(...), + cloudflare: str = Form(...), + aggregation: str = Form(...), + format: str = Form(...) +): + # Генерация config.ini + config_path = "config.ini" + with open(config_path, "w") as config: + config.write("[DomainMapper]\n") + config.write(f"service={','.join(services)}\n") + config.write(f"dnsserver={','.join(dns_servers)}\n") + config.write(f"cloudflare={cloudflare}\n") + config.write(f"subnet={aggregation}\n") + config.write(f"filetype={format}\n") + + # Запуск скрипта + result_file = "output.txt" + os.system(f"python3 main.py -c {config_path}") + + # Возвращаем файл результата + return FileResponse(path=result_file, filename="output.txt", media_type="text/plain") diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..a27df47 --- /dev/null +++ b/web/index.html @@ -0,0 +1,126 @@ + + + + + + DNS Resolver Settings + + + +

Настройки

+
+
+

+ +
+

+ +
+ Исключить Cloudflare

+ +
+ До /16 (255.255.0.0)
+ До /24 (255.255.255.0)
+ Микс /24 и /32
+ Не агрегировать

+ +
+ Windows Route
+ Unix Route
+ CIDR

+ + +
+ +
Прогресс выполнения будет отображаться здесь...
+ + diff --git a/web/web_install.sh b/web/web_install.sh new file mode 100644 index 0000000..203d7c7 --- /dev/null +++ b/web/web_install.sh @@ -0,0 +1,132 @@ +#!/bin/bash + +# Переменные +USERNAME="test123" +APP_DIR="/home/$USERNAME/dns_resolver_app" +SERVICE_FILE="/etc/systemd/system/dns_resolver.service" +NGINX_CONF="/etc/nginx/sites-available/dns_resolver" +EMAIL_ADR="email@example.com" +DOMAIN_NAME="your-domain.com" + +# Проверка существования пользователя +if ! id "$USERNAME" &>/dev/null; then + echo "Пользователь $USERNAME не существует." + read -p "Хотите создать пользователя? (y/n): " CREATE_USER + if [[ "$CREATE_USER" =~ ^[Yy]$ ]]; then + sudo useradd -m -s /bin/bash "$USERNAME" + echo "Пользователь $USERNAME успешно создан." + else + echo "Скрипт завершён, так как пользователь не существует." + exit 1 + fi +fi + +# Обновление системы и установка зависимостей +echo "Обновляем систему и устанавливаем зависимости..." +sudo apt update && sudo apt upgrade -y +sudo apt install python3 python3-pip python3-venv gunicorn nginx certbot python3-certbot-nginx -y + +# Создание директории приложения +echo "Создаем директорию приложения..." +sudo -u $USERNAME mkdir -p $APP_DIR + +# Перемещение в директорию приложения +cd $APP_DIR + +# Создание виртуального окружения +echo "Создаем виртуальное окружение..." +sudo -u $USERNAME python3 -m venv venv + +# Активация виртуального окружения и установка библиотек +echo "Устанавливаем зависимости Python..." + +# Загрузка файла requirements.txt +curl -o $APP_DIR/requirements.txt https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/refs/heads/main/requirements.txt + +# Установка зависимостей из requirements.txt и добавление необходимых библиотек +sudo -u $USERNAME bash -c "source $APP_DIR/venv/bin/activate && pip install -r $APP_DIR/requirements.txt fastapi uvicorn pydantic" + +# Загрузка файлов приложения +echo "Загружаем файлы приложения..." +curl -o "$APP_DIR/index.html" -L "https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/refs/heads/main/web/index.html" +curl -o "$APP_DIR/app.py" -L "https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/refs/heads/main/web/app.py" +curl -o "$APP_DIR/main.py" -L "https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/refs/heads/main/main.py" + +chown "$USERNAME":"$USERNAME" "$APP_DIR/main.py" + +# Создание системного сервиса +echo "Создаем системный сервис..." +sudo tee $SERVICE_FILE > /dev/null < /dev/null <