diff --git a/constant/context_key.go b/constant/context_key.go index c28ad202..22986248 100644 --- a/constant/context_key.go +++ b/constant/context_key.go @@ -42,6 +42,10 @@ const ( ContextKeyAutoGroupIndex ContextKey = "auto_group_index" ContextKeyAutoGroupRetryIndex ContextKey = "auto_group_retry_index" + // ContextKeyDomainHost 记录命中域名路由时的来源域名(规范化后), + // 写入消费日志的 other.admin_info,仅管理员可见。 + ContextKeyDomainHost ContextKey = "domain_host" + /* user related keys */ ContextKeyUserId ContextKey = "id" ContextKeyUserSetting ContextKey = "user_setting" diff --git a/middleware/domain_group_router.go b/middleware/domain_group_router.go index 99eacfdf..cfae19d7 100644 --- a/middleware/domain_group_router.go +++ b/middleware/domain_group_router.go @@ -35,6 +35,7 @@ func DomainAutoGroupRouter() gin.HandlerFunc { if _, valid := setting.GetSecondaryAutoGroup(target); valid { common.SetContextKey(c, constant.ContextKeyUsingGroup, target) common.SetContextKey(c, constant.ContextKeyTokenGroup, target) + common.SetContextKey(c, constant.ContextKeyDomainHost, domain) logger.LogDebug(c, "domain routing: %s -> secondary auto group %s", domain, target) } } diff --git a/service/log_info_generate.go b/service/log_info_generate.go index 54448d59..940bf497 100644 --- a/service/log_info_generate.go +++ b/service/log_info_generate.go @@ -72,6 +72,10 @@ func GenerateTextOtherInfo(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, m AppendChannelAffinityAdminInfo(ctx, adminInfo) + if domainHost := common.GetContextKeyString(ctx, constant.ContextKeyDomainHost); domainHost != "" { + adminInfo["domain_host"] = domainHost + } + other["admin_info"] = adminInfo appendRequestPath(ctx, relayInfo, other) appendRequestConversionChain(relayInfo, other) diff --git a/web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx b/web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx index 6f4adfb3..e4c08c6f 100644 --- a/web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx +++ b/web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx @@ -549,6 +549,14 @@ export function DetailsDialog(props: DetailsDialogProps) { )} + {other?.admin_info?.domain_host && props.isAdmin && ( + + )} + {props.log.token_name && (