Files
OpenFlare/internal/model/openflare_option_apply.go
T

91 lines
3.4 KiB
Go

package model
import (
"strconv"
"strings"
"time"
)
var enabledOptionAppliers = map[string]func(bool){
"PasswordRegisterEnabled": func(v bool) { PasswordRegisterEnabled = v },
"PasswordLoginEnabled": func(v bool) { PasswordLoginEnabled = v },
"CapLoginEnabled": func(v bool) { CapLoginEnabled = v },
"EmailVerificationEnabled": func(v bool) { EmailVerificationEnabled = v },
"GitHubOAuthEnabled": func(v bool) { GitHubOAuthEnabled = v },
"WeChatAuthEnabled": func(v bool) { WeChatAuthEnabled = v },
"AgentWebsocketUpgradeEnabled": func(v bool) { AgentWebsocketUpgradeEnabled = v },
"UptimeKumaEnabled": func(v bool) { UptimeKumaEnabled = v },
"DatabaseAutoCleanupEnabled": func(v bool) { DatabaseAutoCleanupEnabled = v },
}
var stringOptionAppliers = map[string]func(string){
"ServerAddress": func(v string) { ServerAddress = v },
"GitHubClientId": func(v string) { GitHubClientID = v },
"Footer": func(v string) { Footer = v },
"HomePageLink": func(v string) { HomePageLink = v },
"SystemName": func(v string) { SystemName = v },
"WeChatAccountQRCodeImageURL": func(v string) { WeChatAccountQRCodeImageURL = v },
"AgentDiscoveryToken": func(v string) { AgentDiscoveryToken = v },
"GeoIPProvider": func(v string) { GeoIPProvider = v },
"UptimeKumaUrl": func(v string) { UptimeKumaURL = v },
"UptimeKumaUsername": func(v string) { UptimeKumaUsername = v },
optionKeyUptimeKumaPassword: func(v string) { UptimeKumaPassword = v },
"UptimeKumaMonitorScope": func(v string) { UptimeKumaMonitorScope = v },
"UptimeKumaSelectedSites": func(v string) { UptimeKumaSelectedSites = v },
}
func applyEnabledOptionMirror(key, value string) {
applier, ok := enabledOptionAppliers[key]
if !ok {
return
}
applier(value == optionValueTrue)
}
func applyStringOptionMirror(key, value string) {
if applier, ok := stringOptionAppliers[key]; ok {
applier(value)
}
}
type intOptionApplier struct {
apply func(int)
min int
}
var integerOptionAppliers = map[string]intOptionApplier{
"SMTPPort": {apply: func(v int) { SMTPPort = v }},
"AgentHeartbeatInterval": {apply: func(v int) { AgentHeartbeatInterval = v }, min: 1},
"UptimeKumaSyncInterval": {apply: func(v int) { UptimeKumaSyncInterval = v }, min: 1},
"UptimeKumaInterval": {apply: func(v int) { UptimeKumaInterval = v }, min: 1},
"UptimeKumaRetry": {apply: func(v int) { UptimeKumaRetry = v }, min: 0},
"UptimeKumaRetryInterval": {apply: func(v int) { UptimeKumaRetryInterval = v }, min: 1},
"UptimeKumaTimeout": {apply: func(v int) { UptimeKumaTimeout = v }, min: 1},
"DatabaseAutoCleanupRetentionDays": {apply: func(v int) { DatabaseAutoCleanupRetentionDays = v }, min: 1},
}
func applyIntegerOptionMirror(key, value string) {
applier, ok := integerOptionAppliers[key]
if !ok {
return
}
intValue, err := strconv.Atoi(value)
if err != nil || intValue < applier.min {
return
}
applier.apply(intValue)
}
func applySpecialOptionMirror(key, value string) {
switch key {
case "NodeOfflineThreshold":
if v, err := strconv.Atoi(value); err == nil && v > 0 {
NodeOfflineThreshold = time.Duration(v) * time.Millisecond
}
case "AgentUpdateRepo":
if strings.TrimSpace(value) != "" {
AgentUpdateRepo = value
}
}
}