Files
kanhole/pkg/db/config.go
T
kannn 2cd3052da1
golangci-lint / lint (push) Failing after 1m5s
rebrand: frp -> kanhole (kanhole server, kanholec client)
2026-05-29 09:05:34 +00:00

87 lines
1.8 KiB
Go

package db
import (
"context"
"encoding/json"
"fmt"
v1 "kanhole/pkg/config/v1"
"kanhole/pkg/db/ent/serverconfig"
)
const configKey = "server_config"
func LoadServerConfig() (*v1.ServerConfig, error) {
ctx := context.Background()
sc, err := client.ServerConfig.Query().Where(serverconfig.KeyEQ(configKey)).Only(ctx)
if err != nil {
return nil, err
}
cfg := &v1.ServerConfig{}
if err := json.Unmarshal([]byte(sc.Value), cfg); err != nil {
return nil, fmt.Errorf("failed to unmarshal server config from db: %w", err)
}
return cfg, nil
}
func SaveServerConfig(cfg *v1.ServerConfig) error {
ctx := context.Background()
return SaveServerConfigWithContext(ctx, cfg)
}
func SaveServerConfigWithContext(ctx context.Context, cfg *v1.ServerConfig) error {
cfg.Version = ""
data, err := json.Marshal(cfg)
if err != nil {
return fmt.Errorf("failed to marshal server config: %w", err)
}
exists, err := client.ServerConfig.Query().Where(serverconfig.KeyEQ(configKey)).Exist(ctx)
if err != nil {
return err
}
if exists {
_, err = client.ServerConfig.Update().
Where(serverconfig.KeyEQ(configKey)).
SetValue(string(data)).
Save(ctx)
} else {
_, err = client.ServerConfig.Create().
SetKey(configKey).
SetValue(string(data)).
Save(ctx)
}
return err
}
func HasServerConfig() (bool, error) {
ctx := context.Background()
return client.ServerConfig.Query().Where(serverconfig.KeyEQ(configKey)).Exist(ctx)
}
func SaveDefaultServerConfig() error {
cfg := DefaultServerConfig()
return SaveServerConfig(cfg)
}
func DefaultServerConfig() *v1.ServerConfig {
return &v1.ServerConfig{
BindAddr: "0.0.0.0",
BindPort: 7000,
WebServer: v1.WebServerConfig{
Addr: "0.0.0.0",
Port: 7500,
User: "admin",
Password: "admin",
},
Log: v1.LogConfig{
To: "console",
Level: "info",
MaxDays: 3,
},
}
}