Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
陈曦
sub2api
Commits
abf5de69
Commit
abf5de69
authored
Feb 12, 2026
by
yangjianbo
Browse files
Merge branch 'main' into test
parents
7582dc53
174d7c77
Changes
63
Hide whitespace changes
Inline
Side-by-side
frontend/src/i18n/locales/zh.ts
View file @
abf5de69
...
@@ -865,8 +865,8 @@ export default {
...
@@ -865,8 +865,8 @@ export default {
editUser
:
'
编辑用户
'
,
editUser
:
'
编辑用户
'
,
deleteUser
:
'
删除用户
'
,
deleteUser
:
'
删除用户
'
,
deleteConfirmMessage
:
"
确定要删除用户 '{email}' 吗?此操作无法撤销。
"
,
deleteConfirmMessage
:
"
确定要删除用户 '{email}' 吗?此操作无法撤销。
"
,
searchPlaceholder
:
'
搜索用户
邮箱
或
用户名
、
备注
、支持模糊查询
...
'
,
searchPlaceholder
:
'
邮箱
/
用户名
/
备注
/API Key 模糊搜索
...
'
,
searchUsers
:
'
搜索用户
邮箱
或
用户名
、
备注
、支持模糊查询
'
,
searchUsers
:
'
邮箱
/
用户名
/
备注
/API Key 模糊搜索
'
,
roleFilter
:
'
角色筛选
'
,
roleFilter
:
'
角色筛选
'
,
allRoles
:
'
全部角色
'
,
allRoles
:
'
全部角色
'
,
allStatus
:
'
全部状态
'
,
allStatus
:
'
全部状态
'
,
...
@@ -1936,7 +1936,15 @@ export default {
...
@@ -1936,7 +1936,15 @@ export default {
authCodeHint
:
'
您可以直接复制整个链接或仅复制 code 参数值,系统会自动识别
'
,
authCodeHint
:
'
您可以直接复制整个链接或仅复制 code 参数值,系统会自动识别
'
,
failedToGenerateUrl
:
'
生成 Antigravity 授权链接失败
'
,
failedToGenerateUrl
:
'
生成 Antigravity 授权链接失败
'
,
missingExchangeParams
:
'
缺少 code / session_id / state
'
,
missingExchangeParams
:
'
缺少 code / session_id / state
'
,
failedToExchangeCode
:
'
Antigravity 授权码兑换失败
'
failedToExchangeCode
:
'
Antigravity 授权码兑换失败
'
,
// Refresh Token auth
refreshTokenAuth
:
'
手动输入 RT
'
,
refreshTokenDesc
:
'
输入您已有的 Antigravity Refresh Token,支持批量输入(每行一个),系统将自动验证并创建账号。
'
,
refreshTokenPlaceholder
:
'
粘贴您的 Antigravity Refresh Token...
\n
支持多个,每行一个
'
,
validating
:
'
验证中...
'
,
validateAndCreate
:
'
验证并创建账号
'
,
pleaseEnterRefreshToken
:
'
请输入 Refresh Token
'
,
failedToValidateRT
:
'
验证 Refresh Token 失败
'
}
}
},
},
// Gemini specific (platform-wide)
// Gemini specific (platform-wide)
...
@@ -2315,7 +2323,7 @@ export default {
...
@@ -2315,7 +2323,7 @@ export default {
allStatus
:
'
全部状态
'
,
allStatus
:
'
全部状态
'
,
unused
:
'
未使用
'
,
unused
:
'
未使用
'
,
used
:
'
已使用
'
,
used
:
'
已使用
'
,
searchCodes
:
'
搜索兑换码...
'
,
searchCodes
:
'
搜索兑换码
或邮箱
...
'
,
exportCsv
:
'
导出 CSV
'
,
exportCsv
:
'
导出 CSV
'
,
deleteAllUnused
:
'
删除全部未使用
'
,
deleteAllUnused
:
'
删除全部未使用
'
,
deleteCodeConfirm
:
'
确定要删除此兑换码吗?此操作无法撤销。
'
,
deleteCodeConfirm
:
'
确定要删除此兑换码吗?此操作无法撤销。
'
,
...
@@ -3572,6 +3580,7 @@ export default {
...
@@ -3572,6 +3580,7 @@ export default {
custom
:
'
自定义
'
,
custom
:
'
自定义
'
,
code
:
'
状态码
'
,
code
:
'
状态码
'
,
body
:
'
消息体
'
,
body
:
'
消息体
'
,
skipMonitoring
:
'
跳过监控
'
,
// Columns
// Columns
columns
:
{
columns
:
{
...
@@ -3616,6 +3625,8 @@ export default {
...
@@ -3616,6 +3625,8 @@ export default {
passthroughBody
:
'
透传上游错误信息
'
,
passthroughBody
:
'
透传上游错误信息
'
,
customMessage
:
'
自定义错误信息
'
,
customMessage
:
'
自定义错误信息
'
,
customMessagePlaceholder
:
'
返回给客户端的错误信息...
'
,
customMessagePlaceholder
:
'
返回给客户端的错误信息...
'
,
skipMonitoring
:
'
跳过运维监控记录
'
,
skipMonitoringHint
:
'
开启后,匹配此规则的错误不会被记录到运维监控中
'
,
enabled
:
'
启用此规则
'
enabled
:
'
启用此规则
'
},
},
...
...
frontend/src/utils/url.ts
View file @
abf5de69
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
*/
*/
type
SanitizeOptions
=
{
type
SanitizeOptions
=
{
allowRelative
?:
boolean
allowRelative
?:
boolean
allowDataUrl
?:
boolean
}
}
export
function
sanitizeUrl
(
value
:
string
,
options
:
SanitizeOptions
=
{}):
string
{
export
function
sanitizeUrl
(
value
:
string
,
options
:
SanitizeOptions
=
{}):
string
{
...
@@ -18,6 +19,11 @@ export function sanitizeUrl(value: string, options: SanitizeOptions = {}): strin
...
@@ -18,6 +19,11 @@ export function sanitizeUrl(value: string, options: SanitizeOptions = {}): strin
return
trimmed
return
trimmed
}
}
// 允许 data:image/ 开头的 data URL(仅限图片类型)
if
(
options
.
allowDataUrl
&&
trimmed
.
startsWith
(
'
data:image/
'
))
{
return
trimmed
}
// 只接受绝对 URL,不使用 base URL 来避免相对路径被解析为当前域名
// 只接受绝对 URL,不使用 base URL 来避免相对路径被解析为当前域名
// 检查是否以 http:// 或 https:// 开头
// 检查是否以 http:// 或 https:// 开头
if
(
!
trimmed
.
match
(
/^https
?
:
\/\/
/i
))
{
if
(
!
trimmed
.
match
(
/^https
?
:
\/\/
/i
))
{
...
...
frontend/src/views/admin/RedeemView.vue
View file @
abf5de69
...
@@ -117,9 +117,9 @@
...
@@ -117,9 +117,9 @@
</span>
</span>
</
template
>
</
template
>
<
template
#cell-used_by=
"{ value }"
>
<
template
#cell-used_by=
"{ value
, row
}"
>
<span
class=
"text-sm text-gray-500 dark:text-dark-400"
>
<span
class=
"text-sm text-gray-500 dark:text-dark-400"
>
{{
value
?
t
(
'
admin.redeem.userPrefix
'
,
{
id
:
value
}
)
:
'
-
'
}}
{{
row
.
user
?.
email
||
(
value
?
t
(
'
admin.redeem.userPrefix
'
,
{
id
:
value
}
)
:
'
-
'
)
}}
<
/span
>
<
/span
>
<
/template
>
<
/template
>
...
...
Prev
1
2
3
4
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment