Files
SingBox-Gopanel/internal/handler/guest_api.go
CN-JS-HuiBai 60c3082950
Some checks failed
build / build (api, amd64, linux) (push) Failing after -57s
build / build (api, arm64, linux) (push) Failing after -56s
build / build (api.exe, amd64, windows) (push) Failing after -57s
修复节点信息API
2026-04-18 01:59:24 +08:00

69 lines
2.3 KiB
Go

package handler
import (
"xboard-go/internal/database"
"xboard-go/internal/model"
"xboard-go/internal/service"
"github.com/gin-gonic/gin"
)
func GuestConfig(c *gin.Context) {
Success(c, buildGuestConfig())
}
func buildGuestConfig() gin.H {
data := gin.H{
"tos_url": service.MustGetString("tos_url", ""),
"is_email_verify": boolToInt(service.MustGetBool("email_verify", false)),
"is_invite_force": boolToInt(service.MustGetBool("invite_force", false)),
"email_whitelist_suffix": getEmailWhitelistSuffix(),
"is_captcha": boolToInt(service.MustGetBool("captcha_enable", false)),
"captcha_type": service.MustGetString("captcha_type", "recaptcha"),
"recaptcha_site_key": service.MustGetString("recaptcha_site_key", ""),
"recaptcha_v3_site_key": service.MustGetString("recaptcha_v3_site_key", ""),
"recaptcha_v3_score_threshold": service.MustGetString("recaptcha_v3_score_threshold", "0.5"),
"turnstile_site_key": service.MustGetString("turnstile_site_key", ""),
"app_description": service.MustGetString("app_description", ""),
"app_url": service.GetAppURL(),
"logo": service.MustGetString("logo", ""),
"is_recaptcha": boolToInt(service.MustGetBool("captcha_enable", false)),
}
if service.IsPluginEnabled(service.PluginRealNameVerification) {
data["real_name_verification_enable"] = true
data["real_name_verification_notice"] = service.GetPluginConfigString(service.PluginRealNameVerification, "verification_notice", "Please complete real-name verification.")
}
return data
}
func GuestPlanFetch(c *gin.Context) {
var plans []model.Plan
if err := database.DB.Where("`show` = ? AND sell = ?", 1, 1).Order("sort ASC").Find(&plans).Error; err != nil {
Fail(c, 500, "failed to fetch plans")
return
}
formatted := make([]gin.H, 0, len(plans))
for i := range plans {
formatted = append(formatted, service.FormatPlan(&plans[i]))
}
Success(c, formatted)
}
func getEmailWhitelistSuffix() any {
if !service.MustGetBool("email_whitelist_enable", false) {
return 0
}
return service.MustGetString("email_whitelist_suffix", "")
}
func boolToInt(value bool) int {
if value {
return 1
}
return 0
}