Add backend and docker file
This commit is contained in:
parent
dc6fd4bbcd
commit
1843801ac5
4 changed files with 97 additions and 0 deletions
17
backend/Dockerfile
Normal file
17
backend/Dockerfile
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Используем официальный образ Python
|
||||
FROM python:3.9-slim
|
||||
|
||||
# Устанавливаем рабочую директорию
|
||||
WORKDIR /app
|
||||
|
||||
# Копируем зависимости
|
||||
COPY requirements.txt .
|
||||
|
||||
# Устанавливаем зависимости
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
# Копируем остальные файлы
|
||||
COPY . .
|
||||
|
||||
# Команда для запуска сервера
|
||||
CMD ["uvicorn", "server:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
10
backend/docker-compose.yaml
Normal file
10
backend/docker-compose.yaml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
services:
|
||||
backend:
|
||||
build: .
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- .:/app/db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PYTHONUNBUFFERED=1
|
||||
4
backend/requirements.txt
Normal file
4
backend/requirements.txt
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
fastapi
|
||||
uvicorn
|
||||
python-multipart
|
||||
pydantic
|
||||
66
backend/server.py
Normal file
66
backend/server.py
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
from fastapi import FastAPI, HTTPException
|
||||
from pydantic import BaseModel
|
||||
from datetime import datetime
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
class WiFiData(BaseModel):
|
||||
profile_name: str
|
||||
password: str
|
||||
|
||||
DATA_FILE = "db/wifi_passwords.json"
|
||||
|
||||
# Гарантируем, что файл существует и содержит валидный JSON
|
||||
def init_data_file():
|
||||
if not Path(DATA_FILE).exists():
|
||||
with open(DATA_FILE, 'w') as f:
|
||||
json.dump([], f)
|
||||
else:
|
||||
# Проверяем, что файл не пустой и содержит валидный JSON
|
||||
try:
|
||||
with open(DATA_FILE, 'r') as f:
|
||||
json.load(f)
|
||||
except (json.JSONDecodeError, ValueError):
|
||||
# Если файл поврежден, пересоздаем его
|
||||
with open(DATA_FILE, 'w') as f:
|
||||
json.dump([], f)
|
||||
|
||||
# Инициализируем файл при старте
|
||||
init_data_file()
|
||||
|
||||
@app.post("/save-wifi")
|
||||
async def save_wifi(data: WiFiData):
|
||||
try:
|
||||
with open(DATA_FILE, 'r') as f:
|
||||
try:
|
||||
wifi_list = json.load(f)
|
||||
except json.JSONDecodeError:
|
||||
wifi_list = []
|
||||
|
||||
wifi_list.append({
|
||||
"profile_name": data.profile_name,
|
||||
"password": data.password,
|
||||
"timestamp": datetime.now().isoformat()
|
||||
})
|
||||
|
||||
with open(DATA_FILE, 'w') as f:
|
||||
json.dump(wifi_list, f, indent=4)
|
||||
|
||||
return {"status": "success", "message": "Wi-Fi data saved"}
|
||||
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
@app.get("/get-wifi")
|
||||
async def get_wifi():
|
||||
try:
|
||||
with open(DATA_FILE, 'r') as f:
|
||||
try:
|
||||
return json.load(f)
|
||||
except json.JSONDecodeError:
|
||||
return []
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
Loading…
Reference in a new issue