mirror of
https://github.com/lanqian528/chat2api.git
synced 2026-06-13 21:02:46 +08:00
v1.5.5 use rt and at
This commit is contained in:
parent
fb0e13b417
commit
2388d437cc
2
.github/workflows/build_docker.yml
vendored
2
.github/workflows/build_docker.yml
vendored
@ -37,7 +37,7 @@ jobs:
|
||||
images: lanqian528/chat2api
|
||||
tags: |
|
||||
type=raw,value=latest,enable={{is_default_branch}}
|
||||
type=raw,value=v1.5.4
|
||||
type=raw,value=v1.5.5
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v5
|
||||
|
||||
42
chat2api.py
42
chat2api.py
@ -11,7 +11,7 @@ from fastapi.responses import StreamingResponse, JSONResponse
|
||||
from fastapi.security import OAuth2PasswordBearer
|
||||
from fastapi.templating import Jinja2Templates
|
||||
from starlette.background import BackgroundTask
|
||||
from starlette.responses import RedirectResponse
|
||||
from starlette.responses import RedirectResponse, Response
|
||||
|
||||
from chatgpt.ChatService import ChatService
|
||||
from chatgpt.authorization import refresh_all_tokens, verify_token, get_req_token
|
||||
@ -135,25 +135,32 @@ async def chatgpt(request: Request):
|
||||
if not enable_gateway:
|
||||
raise HTTPException(status_code=404, detail="Gateway is disabled")
|
||||
|
||||
seed_token = request.query_params.get("seed", None)
|
||||
seed_token = request.query_params.get("seed")
|
||||
if not seed_token:
|
||||
seed_token = request.cookies.get("seed_token")
|
||||
if not seed_token:
|
||||
seed_token = str(int(time.time()))
|
||||
req_token = get_req_token(seed_token)
|
||||
seed_token = await verify_token(req_token)
|
||||
|
||||
response = templates.TemplateResponse("chatgpt.html", {"request": request, "seed_token": seed_token})
|
||||
# response.set_cookie("req_token", value=req_token)
|
||||
# response.set_cookie("access_token", value=access_token)
|
||||
response = templates.TemplateResponse("chatgpt.html", {"request": request, "access_token": seed_token})
|
||||
response.set_cookie("seed_token", value=seed_token)
|
||||
return response
|
||||
|
||||
|
||||
@app.get("/backend-api/gizmos/bootstrap")
|
||||
async def get_gizmos_bootstrap():
|
||||
return {"gizmos": []}
|
||||
|
||||
|
||||
# @app.get("/backend-api/conversations")
|
||||
# async def get_conversations():
|
||||
# return {"items": [], "total": 0, "limit": 28, "offset": 0, "has_missing_conversations": False}
|
||||
|
||||
|
||||
@app.get("/backend-api/gizmos/bootstrap")
|
||||
async def get_gizmos_bootstrap():
|
||||
return {"gizmos": []}
|
||||
@app.patch("/backend-api/conversations")
|
||||
async def get_conversations():
|
||||
return {"success": True, "message": None}
|
||||
|
||||
|
||||
@app.get("/backend-api/me")
|
||||
@ -200,12 +207,19 @@ async def get_me():
|
||||
}
|
||||
|
||||
|
||||
banned_paths = ["backend-api/accounts/logout_all", "backend-api/accounts/deactivate", "backend-api/user_system_messages"]
|
||||
redirect_paths = ["auth/logout", "c/"]
|
||||
|
||||
|
||||
@app.api_route("/{path:path}", methods=["GET", "POST", "PUT", "DELETE", "OPTIONS", "HEAD", "PATCH", "TRACE"])
|
||||
async def reverse_proxy(request: Request, path: str):
|
||||
if path.startswith("c/"):
|
||||
seed_token = request.cookies.get("seed_token")
|
||||
if not seed_token:
|
||||
seed_token = str(int(time.time()))
|
||||
redirect_url = str(request.base_url) + "?seed=" + seed_token
|
||||
return RedirectResponse(url=redirect_url, status_code=302)
|
||||
for banned_path in banned_paths:
|
||||
if banned_path in path:
|
||||
return Response(status_code=404)
|
||||
|
||||
for redirect_path in redirect_paths:
|
||||
if redirect_path in path:
|
||||
redirect_url = str(request.base_url)
|
||||
return RedirectResponse(url=redirect_url, status_code=302)
|
||||
|
||||
return await chatgpt_reverse_proxy(request, path)
|
||||
|
||||
@ -1,13 +1,17 @@
|
||||
import asyncio
|
||||
import os
|
||||
import random
|
||||
|
||||
from fastapi import HTTPException
|
||||
import ua_generator
|
||||
from fastapi import HTTPException
|
||||
|
||||
import chatgpt.globals as globals
|
||||
from chatgpt.refreshToken import rt2ac
|
||||
from utils.Logger import logger
|
||||
from utils.config import authorization_list, random_token
|
||||
import chatgpt.globals as globals
|
||||
|
||||
os.environ['PYTHONHASHSEED'] = '0'
|
||||
random.seed(0)
|
||||
|
||||
|
||||
def get_req_token(req_token, seed=None):
|
||||
|
||||
@ -104,11 +104,18 @@ async def chatgpt_reverse_proxy(request: Request, path: str):
|
||||
"sec-fetch-site": "same-origin",
|
||||
})
|
||||
|
||||
seed_token = headers.get("authorization", None)
|
||||
seed_token = headers.get("authorization", "").replace("Bearer ", "")
|
||||
if seed_token:
|
||||
req_token = get_req_token(None, seed_token)
|
||||
req_token = get_req_token(seed_token)
|
||||
access_token = await verify_token(req_token)
|
||||
headers.update({"authorization": access_token})
|
||||
if access_token.startswith("eyJhbGciOi"):
|
||||
headers.update({"authorization": access_token})
|
||||
else:
|
||||
req_token = get_req_token(None, seed_token)
|
||||
access_token = await verify_token(req_token)
|
||||
headers.update({"authorization": access_token})
|
||||
else:
|
||||
headers.pop("authorization", None)
|
||||
|
||||
data = await request.body()
|
||||
|
||||
|
||||
@ -4309,7 +4309,7 @@
|
||||
"queryKey": ["session"],
|
||||
"state": {
|
||||
"data": {
|
||||
"accessToken": "{{ seed_token }}",
|
||||
"accessToken": "{{ access_token }}",
|
||||
"authProvider": "login-web",
|
||||
"user": {}
|
||||
},
|
||||
|
||||
@ -52,7 +52,7 @@ proxy_url_list = proxy_url.split(',') if proxy_url else []
|
||||
user_agents_list = ast.literal_eval(user_agents)
|
||||
|
||||
logger.info("-" * 60)
|
||||
logger.info("Chat2Api 1.5.4 | https://github.com/lanqian528/chat2api")
|
||||
logger.info("Chat2Api 1.5.5 | https://github.com/lanqian528/chat2api")
|
||||
logger.info("-" * 60)
|
||||
logger.info("Environment variables:")
|
||||
logger.info("API_PREFIX: " + str(api_prefix))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user