feat: sync deployed v1.0.0-rc.38-custom.42

Sync production source including routing, billing, Astra detection and public uptime. Update custom build instructions and license packaging.
This commit is contained in:
cneicy committed 2026-09-26 04:49:11 +08:00
1 parent aa6c3f50f4
commit ceddfd3d6b
828 files changed
+122253 -13702

No files matched your search

+48 -18
View File
@@ -6,6 +6,8 @@ import (
"strings"
"time"
"github.com/QuantumNous/new-api/relaykit/dto"
"github.com/expr-lang/expr"
"github.com/expr-lang/expr/vm"
"github.com/tidwall/gjson"
@@ -30,7 +32,7 @@ func RunExprWithRequest(exprStr string, params TokenParams, request RequestInput
if err != nil {
return 0, TraceResult{}, err
}
return runProgram(entry.prog, entry.requestRules, params, request)
return runProgram(entry.prog, entry.requestRules, entry.usedVars, params, request)
}
// RunExprByHash is like RunExpr but accepts a pre-computed hash for the cache
@@ -45,31 +47,59 @@ func RunExprByHashWithRequest(exprStr, hash string, params TokenParams, request
if err != nil {
return 0, TraceResult{}, err
}
return runProgram(entry.prog, entry.requestRules, params, request)
return runProgram(entry.prog, entry.requestRules, entry.usedVars, params, request)
}
func runProgram(prog *vm.Program, requestRules []RequestRuleTrace, params TokenParams, request RequestInput) (float64, TraceResult, error) {
func runProgram(prog *vm.Program, requestRules []RequestRuleTrace, usedVars map[string]bool, params TokenParams, request RequestInput) (float64, TraceResult, error) {
trace := TraceResult{
BillingUnit: BillingUnitToken,
RequestRules: append([]RequestRuleTrace(nil), requestRules...),
}
headers := normalizeHeaders(request.Headers)
timeForRequest := func(tz string) time.Time {
if request.At == nil {
return timeInZone(tz)
}
loc, err := time.LoadLocation(strings.TrimSpace(tz))
if err != nil {
return request.At.UTC()
}
return request.At.In(loc)
}
imageCount := 1
if usedVars["image_count"] {
if request.ImageCount != nil {
imageCount = *request.ImageCount
}
if imageCount < 1 || imageCount > dto.MaxImageN {
return 0, trace, fmt.Errorf("image_count must be between 1 and %d", dto.MaxImageN)
}
trace.ImageCount = &imageCount
}
env := map[string]any{
"p": params.P,
"c": params.C,
"len": params.Len,
"cr": params.CR,
"cc": params.CC,
"cc1h": params.CC1h,
"img": params.Img,
"img_o": params.ImgO,
"ai": params.AI,
"ao": params.AO,
"image_count": float64(imageCount),
"p": params.P,
"c": params.C,
"len": params.Len,
"cr": params.CR,
"cc": params.CC,
"cc1h": params.CC1h,
"img": params.Img,
"img_cr": params.ImgCR,
"img_o": params.ImgO,
"ai": params.AI,
"ao": params.AO,
"tier": func(name string, value float64) float64 {
trace.MatchedTier = name
trace.Cost = value
return value
},
"fixed": func(amount float64) float64 {
trace.BillingUnit = BillingUnitRequest
trace.FixedPrice = &amount
return amount * 1_000_000
},
requestRuleTraceFunction: func(ruleIndex int, matched bool, multiplier float64) float64 {
if matched && ruleIndex >= 0 && ruleIndex < len(trace.RequestRules) {
trace.RequestRules[ruleIndex].Matched = true
@@ -114,11 +144,11 @@ func runProgram(prog *vm.Program, requestRules []RequestRuleTrace, params TokenP
}
return strings.Contains(fmt.Sprint(source), substr)
},
"hour": func(tz string) int { return timeInZone(tz).Hour() },
"minute": func(tz string) int { return timeInZone(tz).Minute() },
"weekday": func(tz string) int { return int(timeInZone(tz).Weekday()) },
"month": func(tz string) int { return int(timeInZone(tz).Month()) },
"day": func(tz string) int { return timeInZone(tz).Day() },
"hour": func(tz string) int { return timeForRequest(tz).Hour() },
"minute": func(tz string) int { return timeForRequest(tz).Minute() },
"weekday": func(tz string) int { return int(timeForRequest(tz).Weekday()) },
"month": func(tz string) int { return int(timeForRequest(tz).Month()) },
"day": func(tz string) int { return timeForRequest(tz).Day() },
"max": math.Max,
"min": math.Min,
"abs": math.Abs,