File size: 3,111 Bytes
02ebbc8 b8c8e0a 02ebbc8 c8e2a8d b1ce64c b8c8e0a 1a1dee2 de235e2 f669ed4 1afbeb8 f669ed4 6363664 de235e2 57b26e3 de235e2 57b26e3 b2add11 b8c8e0a b2add11 b8c8e0a b2add11 b8c8e0a b2add11 b8c8e0a c8e2a8d b2add11 c8e2a8d 57b26e3 b8c8e0a c8e2a8d b8c8e0a cf75111 b8c8e0a c8e2a8d b8c8e0a c8e2a8d b8c8e0a c8e2a8d b8c8e0a c8e2a8d 05165b5 c8e2a8d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
import os
from django.core.asgi import get_asgi_application
from fastapi import FastAPI,Request
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from starlette.middleware.cors import CORSMiddleware
import gradio as gr
from mysite.routers.gradio import setup_gradio_interfaces
from mysite.routers.fastapi import setup_webhook_routes,include_routers
from mysite.routers.database import setup_database_routes
from mysite.config.asgi_config import init_django_app
from interpreter import interpreter
import mysite.interpreter.interpreter_config # インポートするだけで設定が適用されます
# ロガーの設定
from mysite.logger import logger
from fastapi import Depends, HTTPException, status
from fastapi.security import HTTPBasic, HTTPBasicCredentials
from starlette.middleware.base import BaseHTTPMiddleware
import secrets
security = HTTPBasic()
# ベーシック認証のユーザー名とパスワード
users = {
"username1": "password1",
"username2": "password2"
}
def authenticate(credentials: HTTPBasicCredentials = Depends(security)):
correct_username = secrets.compare_digest(credentials.username, "username1")
correct_password = secrets.compare_digest(credentials.password, users[credentials.username]) if correct_username else False
if not (correct_username and correct_password):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Invalid credentials",
headers={"WWW-Authenticate": "Basic"},
)
return credentials.username
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
application = get_asgi_application()
app = FastAPI()
# Djangoアプリケーションの初期化
init_django_app(app, application)
# ミドルウェアの設定
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# 認証用ミドルウェア
"""
@app.middleware("http")
async def auth_middleware(request, call_next):
if request.url.path.startswith("/"):
credentials = HTTPBasicCredentials(username=request.headers.get("authorization").split()[1].split(':')[0],
password=request.headers.get("authorization").split()[1].split(':')[1])
authenticate(credentials)
response = await call_next(request)
return response
"""
# Gradioインターフェースの設定
gradio_interfaces = setup_gradio_interfaces()
# Webhookルートの設定
include_routers(app)
setup_webhook_routes(app)
# データベースルートの設定
setup_database_routes(app)
# Gradioアプリのマウント
app.mount("/static", StaticFiles(directory="static", html=True), name="static")
app = gr.mount_gradio_app(app, gradio_interfaces, "/")
# テンプレートファイルが格納されているディレクトリを指定
templates = Jinja2Templates(directory="static")
@app.get("/test")
def get_some_page(request: Request):
return templates.TemplateResponse("index.html", {"request": request})
|