ZyphrZero commited on
Commit
61703b7
·
1 Parent(s): 4803675

✨ feat(config): 支持混合格式的 token 配置文件

Browse files

- 更新 token 文件解析逻辑,支持多种格式的混合使用
- 简化配置说明文档,提供更清晰的格式示例
- 优化代码结构,提高可读性和可维护性

Files changed (3) hide show
  1. README.md +4 -20
  2. app/core/config.py +27 -37
  3. tokens.txt.example +13 -9
README.md CHANGED
@@ -173,26 +173,10 @@ for chunk in response:
173
 
174
  ### Token配置方式
175
 
176
- 创建 `tokens.txt` 文件,支持两种格式:
177
-
178
- **格式1:每行一个token**
179
- ```txt
180
- # 认证token配置文件
181
- # 支持注释行(以#开头)和空行
182
- # 只添加认证用户token (role: "user")
183
-
184
- eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InVzZXItMTIzIn0.signature1
185
- eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InVzZXItNDU2In0.signature2
186
- eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InVzZXItNzg5In0.signature3
187
- ```
188
-
189
- **格式2:逗号分隔**
190
- ```txt
191
- # 认证token配置文件
192
- eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InVzZXItMTIzIn0.signature1,
193
- eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InVzZXItNDU2In0.signature2,
194
- eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InVzZXItNzg5In0.signature3
195
- ```
196
 
197
  ## 监控API
198
 
 
173
 
174
  ### Token配置方式
175
 
176
+ 创建 `tokens.txt` 文件,支持多种格式的混合使用:
177
+ 1. 每行一个token(换行分隔)
178
+ 2. 逗号分隔的token
179
+ 3. 混合格式(同时支持换行和逗号分隔)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
180
 
181
  ## 监控API
182
 
app/core/config.py CHANGED
@@ -26,14 +26,10 @@ class Settings(BaseSettings):
26
  """
27
  从文件加载token列表
28
 
29
- 支持两种格式:
30
- 1. 每行一个token(原格式)
31
- 2. 逗号分隔的token(新格式)
32
-
33
- 处理规则:
34
- - 跳过空行和注释行(以#开头)
35
- - 自动检测并处理逗号分隔格式
36
- - 去除空格和换行符
37
  """
38
  tokens = []
39
  try:
@@ -45,35 +41,29 @@ class Settings(BaseSettings):
45
  logger.debug(f"📄 Token文件为空: {file_path}")
46
  return tokens
47
 
48
- # 检查是否包含逗号分隔格式
49
- if ',' in content:
50
- # 逗号分隔格式:将整个文件内容按逗号分割
51
- logger.debug(f"📄 检测到逗号分隔格式: {file_path}")
52
-
53
- # 移除注释行后再分割
54
- lines = content.split('\n')
55
- clean_content = []
56
- for line in lines:
57
- line = line.strip()
58
- if line and not line.startswith('#'):
59
- clean_content.append(line)
60
-
61
- # 合并所有非注释内容,然后按逗号分割
62
- merged_content = ' '.join(clean_content)
63
- raw_tokens = merged_content.split(',')
64
-
65
- for token in raw_tokens:
66
- token = token.strip()
67
- if token: # 跳过空token
68
- tokens.append(token)
69
- else:
70
- # 每行一个token格式(原格式)
71
- logger.debug(f"📄 使用每行一个token格式: {file_path}")
72
- for line in content.split('\n'):
73
- line = line.strip()
74
- # 跳过空行和注释行
75
- if line and not line.startswith('#'):
76
- tokens.append(line)
77
 
78
  logger.info(f"📄 从文件加载了 {len(tokens)} 个token: {file_path}")
79
  else:
 
26
  """
27
  从文件加载token列表
28
 
29
+ 支持多种格式的混合使用:
30
+ 1. 每行一个token(换行分隔)
31
+ 2. 逗号分隔的token
32
+ 3. 混合格式(同时支持换行和逗号分隔)
 
 
 
 
33
  """
34
  tokens = []
35
  try:
 
41
  logger.debug(f"📄 Token文件为空: {file_path}")
42
  return tokens
43
 
44
+ logger.debug(f"📄 开始解析token文件: {file_path}")
45
+
46
+ # 智能解析:同时支持换行和逗号分隔
47
+ # 1. 先按换行符分割处理每一行
48
+ lines = content.split('\n')
49
+
50
+ for line in lines:
51
+ line = line.strip()
52
+ # 跳过空行和注释行
53
+ if not line or line.startswith('#'):
54
+ continue
55
+
56
+ # 2. 检查当前行是否包含逗号分隔
57
+ if ',' in line:
58
+ # 按逗号分割当前行
59
+ comma_tokens = line.split(',')
60
+ for token in comma_tokens:
61
+ token = token.strip()
62
+ if token: # 跳过空token
63
+ tokens.append(token)
64
+ else:
65
+ # 整行作为一个token
66
+ tokens.append(line)
 
 
 
 
 
 
67
 
68
  logger.info(f"📄 从文件加载了 {len(tokens)} 个token: {file_path}")
69
  else:
tokens.txt.example CHANGED
@@ -7,15 +7,19 @@
7
  # 4. 修改此文件后无需重启服务,系统会自动重新加载
8
  # 5. 自动跳过空格、换行符和空token
9
  #
10
- # 格式1:每行一个token
11
- # eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InVzZXItMTIzIn0.signature1
12
- # eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InVzZXItNDU2In0.signature2
13
- # eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InVzZXItNzg5In0.signature3
14
- #
15
- # 格式2:逗号分隔(推荐,更紧凑)
16
- # eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InVzZXItMTIzIn0.signature1,
17
- # eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InVzZXItNDU2In0.signature2,
18
- # eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InVzZXItNzg5In0.signature3
 
 
 
 
19
 
20
  # 请在下方添加您的认证用户token(使用任一格式):
21
 
 
7
  # 4. 修改此文件后无需重启服务,系统会自动重新加载
8
  # 5. 自动跳过空格、换行符和空token
9
  #
10
+ # 格式1:纯换行分隔
11
+ # token1
12
+ # token2
13
+ # token3
14
+
15
+ # 格式2:纯逗号分隔
16
+ # token1,token2,token3
17
+
18
+ # 格式3:混合格式
19
+ # token1,token2
20
+ # token3
21
+ # token4,token5,token6
22
+ # token7
23
 
24
  # 请在下方添加您的认证用户token(使用任一格式):
25