diff --git a/cmd/connet/main.go b/cmd/connet/main.go index f3f4f89..2dc9e26 100644 --- a/cmd/connet/main.go +++ b/cmd/connet/main.go @@ -663,11 +663,11 @@ func relayRun(ctx context.Context, cfg RelayConfig, logger *slog.Logger) error { if cfg.StoreDir == "" { relayCfg.Stores, err = relay.NewTmpFileStores() + if err != nil { + return err + } } else { - relayCfg.Stores, err = relay.NewFileStores(cfg.StoreDir) - } - if err != nil { - return err + relayCfg.Stores = relay.NewFileStores(cfg.StoreDir) } srv, err := relay.NewServer(relayCfg) diff --git a/relay/control.go b/relay/control.go index 39e5632..aa2a8c8 100644 --- a/relay/control.go +++ b/relay/control.go @@ -48,16 +48,12 @@ type controlClient struct { logger *slog.Logger } -func newControlClient(cfg Config) (*controlClient, error) { +func newControlClient(cfg Config, configStore logc.KV[ConfigKey, ConfigValue]) (*controlClient, error) { root, err := certc.NewRoot() if err != nil { return nil, err } - config, err := cfg.Stores.Config() - if err != nil { - return nil, err - } clients, err := cfg.Stores.Clients() if err != nil { return nil, err @@ -81,12 +77,12 @@ func newControlClient(cfg Config) (*controlClient, error) { serverByName[srv.name] = srv } - clientsStreamOffset, err := config.GetOrDefault(configClientsStreamOffset, ConfigValue{Int64: logc.OffsetOldest}) + clientsStreamOffset, err := configStore.GetOrDefault(configClientsStreamOffset, ConfigValue{Int64: logc.OffsetOldest}) if err != nil { return nil, err } - clientsLogOffset, err := config.GetOrDefault(configClientsLogOffset, ConfigValue{Int64: logc.OffsetOldest}) + clientsLogOffset, err := configStore.GetOrDefault(configClientsLogOffset, ConfigValue{Int64: logc.OffsetOldest}) if err != nil { return nil, err } @@ -103,7 +99,7 @@ func newControlClient(cfg Config) (*controlClient, error) { NextProtos: []string{"connet-relays"}, }, - config: config, + config: configStore, clients: clients, servers: servers, diff --git a/relay/server.go b/relay/server.go index c20ddc4..97c8587 100644 --- a/relay/server.go +++ b/relay/server.go @@ -50,7 +50,7 @@ func NewServer(cfg Config) (*Server, error) { var statelessResetKey quic.StatelessResetKey copy(statelessResetKey[:], statelessResetVal.Bytes) - control, err := newControlClient(cfg) + control, err := newControlClient(cfg, config) if err != nil { return nil, err } diff --git a/relay/store.go b/relay/store.go index 03f8ffd..c6a9b22 100644 --- a/relay/store.go +++ b/relay/store.go @@ -17,21 +17,8 @@ type Stores interface { Servers() (logc.KV[ServerKey, ServerValue], error) } -func NewFileStores(dir string) (Stores, error) { - config, err := logc.NewKV[ConfigKey, ConfigValue](filepath.Join(dir, "config")) - if err != nil { - return nil, err - } - clients, err := logc.NewKV[ClientKey, ClientValue](filepath.Join(dir, "clients")) - if err != nil { - return nil, err - } - servers, err := logc.NewKV[ServerKey, ServerValue](filepath.Join(dir, "servers")) - if err != nil { - return nil, err - } - - return &fileStores{config, clients, servers}, nil +func NewFileStores(dir string) Stores { + return &fileStores{dir} } func NewTmpFileStores() (Stores, error) { @@ -39,25 +26,23 @@ func NewTmpFileStores() (Stores, error) { if err != nil { return nil, err } - return NewFileStores(dir) + return NewFileStores(dir), nil } type fileStores struct { - config logc.KV[ConfigKey, ConfigValue] - clients logc.KV[ClientKey, ClientValue] - servers logc.KV[ServerKey, ServerValue] + dir string } func (f *fileStores) Config() (logc.KV[ConfigKey, ConfigValue], error) { - return f.config, nil + return logc.NewKV[ConfigKey, ConfigValue](filepath.Join(f.dir, "config")) } func (f *fileStores) Clients() (logc.KV[ClientKey, ClientValue], error) { - return f.clients, nil + return logc.NewKV[ClientKey, ClientValue](filepath.Join(f.dir, "clients")) } func (f *fileStores) Servers() (logc.KV[ServerKey, ServerValue], error) { - return f.servers, nil + return logc.NewKV[ServerKey, ServerValue](filepath.Join(f.dir, "servers")) } type ConfigKey string diff --git a/server.go b/server.go index b22f67a..9fb9878 100644 --- a/server.go +++ b/server.go @@ -79,18 +79,13 @@ func NewServer(opts ...ServerOption) (*Server, error) { return nil, err } - relayStores, err := relay.NewFileStores(filepath.Join(cfg.dir, "relay")) - if err != nil { - return nil, err - } - controlCAs := x509.NewCertPool() controlCAs.AddCert(cfg.controlCert.Leaf) relay, err := relay.NewServer(relay.Config{ Addr: cfg.relayAddr, Hostport: model.HostPort{Host: cfg.relayHostname, Port: cfg.relayAddr.AddrPort().Port()}, Logger: cfg.logger, - Stores: relayStores, + Stores: relay.NewFileStores(filepath.Join(cfg.dir, "relay")), ControlAddr: cfg.controlAddr, ControlHost: "localhost",