Kimilhee
Revert "vercel 배포판"
ad5173e
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.middleware.cors import CORSMiddleware
from fastapi.security import HTTPBasic, HTTPBasicCredentials
from fastapi import Depends, HTTPException, status
import gradio as gr
from app import setup_demo
import os
import secrets
app = FastAPI()
security = HTTPBasic()
# 인증 설정
def get_current_username(credentials: HTTPBasicCredentials = Depends(security)):
correct_username = "daekyo"
correct_password = os.environ.get("DEFAULT_PW")
is_correct_username = secrets.compare_digest(credentials.username, correct_username)
is_correct_password = secrets.compare_digest(credentials.password, correct_password)
if not (is_correct_username and is_correct_password):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Incorrect username or password",
headers={"WWW-Authenticate": "Basic"},
)
return credentials.username
# CORS 설정
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# 정적 파일 서빙 설정
app.mount("/static", StaticFiles(directory="static"), name="static")
# Gradio 인터페이스 생성
demo = setup_demo()
app = gr.mount_gradio_app(
app, demo, path="/", auth=("daekyo", os.environ.get("DEFAULT_PW"))
)
# 메인 라우트
@app.get("/", response_class=HTMLResponse)
async def root(request: Request, username: str = Depends(get_current_username)):
return await demo.render_template(request)
if __name__ == "__main__":
print("To run the server, use:")
print("uvicorn main:app --host 0.0.0.0 --port 8000 --reload")