XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/gpt4free

Refactor authentication cookie retrieval in HuggingChat; enhance header update logic in AppConfig and Backend_Api for improved flexibility

b0813eb3
hlohaus <983577+hlohaus@users.noreply.github.com>
提交于

代码差异

3 个文件 +9 -7
Modified g4f/Provider/needs_auth/hf/HuggingChat.py +1 -1
@@ -62,7 +62,7 @@ class HuggingChat(AsyncAuthedProvider, ProviderModelMixin):
62 62 @classmethod
63 63 async def on_auth_async(cls, cookies: Cookies = None, proxy: str = None, **kwargs) -> AsyncIterator:
64 64 if cookies is None:
65 cookies = get_cookies(cls.domain, single_browser=True)
65 cookies = get_cookies(cls.domain, raise_requirements_error=False, single_browser=True)
66 66 try:
67 67 yield RequestLogin(cls.__name__, os.environ.get("G4F_LOGIN_URL") or "")
68 68 yield AuthResult(
Modified g4f/api/__init__.py +7 -5
@@ -193,9 +193,10 @@ class AppConfig:
193 193 if value is not None:
194 194 setattr(cls, key, value)
195 195
196 def update_headers(request: Request, user: str) -> Request:
196 def update_headers(request: Request, delete_authorization: bool = True, user: str = None) -> Request:
197 197 new_headers = request.headers.mutablecopy()
198 del new_headers["Authorization"]
198 if delete_authorization and "authorization" in new_headers:
199 del new_headers["authorization"]
199 200 if user:
200 201 new_headers["x-user"] = user
201 202 request.scope["headers"] = new_headers.raw
@@ -236,11 +237,12 @@ class Api:
236 237 async def authorization(request: Request, call_next):
237 238 user = None
238 239 if request.method != "OPTIONS" and AppConfig.g4f_api_key is not None or AppConfig.demo:
240 delete_authorization = False
239 241 try:
240 242 user_g4f_api_key = await self.get_g4f_api_key(request)
241 243 except HTTPException:
242 user_g4f_api_key = await self.security(request)
243 user_g4f_api_key = getattr(user_g4f_api_key, "credentials", user_g4f_api_key)
244 user_g4f_api_key = getattr(await self.security(request), "credentials", None)
245 delete_authorization = True
244 246 country = request.headers.get("Cf-Ipcountry", "")
245 247 if AppConfig.demo and user is None:
246 248 ip = request.headers.get("X-Forwarded-For", "")[:4].strip(":.")
@@ -293,7 +295,7 @@ class Api:
293 295 user = await self.get_username(request)
294 296 except HTTPException as e:
295 297 return ErrorResponse.from_message(e.detail, e.status_code, e.headers)
296 request = update_headers(request, user)
298 request = update_headers(request, delete_authorization, user)
297 299 response = await call_next(request)
298 300 return response
299 301
Modified g4f/gui/server/backend_api.py +1 -1
@@ -181,7 +181,7 @@ class Backend_Api(Api):
181 181 logger.exception(e)
182 182 return jsonify({"error": {"message": "Invalid JSON data"}}), 400
183 183 if app.demo and has_crypto:
184 secret = request.headers.get("x_secret")
184 secret = request.headers.get("x-secret", request.headers.get("x_secret"))
185 185 if not secret or not validate_secret(secret):
186 186 return jsonify({"error": {"message": "Invalid or missing secret"}}), 403
187 187 tempfiles = []