feat: ent ORM, admin UI, client auth, Fyne GUI, Windows/MSI packaging

This commit is contained in:
kannn
2026-05-29 08:58:22 +00:00
Unverified
parent 8563a5fc74
commit a0a42a4966
81 changed files with 17144 additions and 89 deletions
+86
View File
@@ -0,0 +1,86 @@
package db
import (
"context"
"encoding/json"
"fmt"
v1 "github.com/fatedier/frp/pkg/config/v1"
"github.com/fatedier/frp/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,
},
}
}