diff --git a/cmd/client/client.go b/cmd/client/client.go index 2c1c3c4..1e34d5d 100644 --- a/cmd/client/client.go +++ b/cmd/client/client.go @@ -55,11 +55,11 @@ func (c *Client) Start() error { var iface common.NetworkInterface switch ifaceConfig.Type { - case "tcp": + case "TCPClientInterface": client, err := interfaces.NewTCPClient( ifaceConfig.Name, - ifaceConfig.Address, - ifaceConfig.Port, + ifaceConfig.TargetHost, + ifaceConfig.TargetPort, ifaceConfig.KISSFraming, ifaceConfig.I2PTunneled, ) @@ -74,9 +74,8 @@ func (c *Client) Start() error { client.SetPacketCallback(callback) iface = client - case "udp": + case "UDPInterface": addr := fmt.Sprintf("%s:%d", ifaceConfig.Address, ifaceConfig.Port) - udp, err := interfaces.NewUDPInterface( ifaceConfig.Name, addr, @@ -93,12 +92,18 @@ func (c *Client) Start() error { udp.SetPacketCallback(callback) iface = udp + case "AutoInterface": + log.Printf("AutoInterface type not yet implemented") + continue + default: log.Printf("Unknown interface type: %s", ifaceConfig.Type) continue } - c.interfaces = append(c.interfaces, iface) + if iface != nil { + c.interfaces = append(c.interfaces, iface) + } } return nil diff --git a/cmd/reticulum/main.go b/cmd/reticulum/main.go index b5b13bb..473c637 100644 --- a/cmd/reticulum/main.go +++ b/cmd/reticulum/main.go @@ -1,6 +1,7 @@ package main import ( + "fmt" "log" "os" "os/signal" @@ -15,6 +16,7 @@ import ( type Reticulum struct { config *common.ReticulumConfig transport *transport.Transport + interfaces []interfaces.Interface } func NewReticulum(cfg *common.ReticulumConfig) (*Reticulum, error) { @@ -35,16 +37,15 @@ func NewReticulum(cfg *common.ReticulumConfig) (*Reticulum, error) { } func (r *Reticulum) Start() error { - // Initialize interfaces based on config for _, ifaceConfig := range r.config.Interfaces { var iface interfaces.Interface switch ifaceConfig.Type { - case "tcp": + case "TCPClientInterface": client, err := interfaces.NewTCPClient( ifaceConfig.Name, - ifaceConfig.Address, - ifaceConfig.Port, + ifaceConfig.TargetHost, + ifaceConfig.TargetPort, ifaceConfig.KISSFraming, ifaceConfig.I2PTunneled, ) @@ -54,7 +55,7 @@ func (r *Reticulum) Start() error { } iface = client - case "tcpserver": + case "TCPServerInterface": server, err := interfaces.NewTCPServer( ifaceConfig.Name, ifaceConfig.Address, @@ -68,13 +69,33 @@ func (r *Reticulum) Start() error { } iface = server + case "UDPInterface": + addr := fmt.Sprintf("%s:%d", ifaceConfig.Address, ifaceConfig.Port) + udp, err := interfaces.NewUDPInterface( + ifaceConfig.Name, + addr, + "", // No target address for server initially + ) + if err != nil { + log.Printf("Failed to create UDP interface %s: %v", ifaceConfig.Name, err) + continue + } + iface = udp + + case "AutoInterface": + log.Printf("AutoInterface type not yet implemented") + continue + default: log.Printf("Unknown interface type: %s", ifaceConfig.Type) continue } - // Set packet callback to transport - iface.SetPacketCallback(r.transport.HandlePacket) + if iface != nil { + // Set packet callback to transport + iface.SetPacketCallback(r.transport.HandlePacket) + r.interfaces = append(r.interfaces, iface) + } } log.Printf("Reticulum initialized with config at: %s", r.config.ConfigPath) diff --git a/internal/config/config.go b/internal/config/config.go index a8a4f6f..b2d0473 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -31,7 +31,7 @@ func GetConfigPath() (string, error) { if err != nil { return "", err } - return filepath.Join(homeDir, ".reticulum", "config"), nil + return filepath.Join(homeDir, ".reticulum-go", "config"), nil } func EnsureConfigDir() error { @@ -40,7 +40,7 @@ func EnsureConfigDir() error { return err } - configDir := filepath.Join(homeDir, ".reticulum") + configDir := filepath.Join(homeDir, ".reticulum-go") return os.MkdirAll(configDir, 0755) } diff --git a/pkg/identity/identity.go b/pkg/identity/identity.go index 63637cf..53bf662 100644 --- a/pkg/identity/identity.go +++ b/pkg/identity/identity.go @@ -286,7 +286,7 @@ func Recall(hash []byte) (*Identity, error) { if err != nil { return nil, fmt.Errorf("failed to get home directory: %w", err) } - configDir = filepath.Join(homeDir, ".reticulum") + configDir = filepath.Join(homeDir, ".reticulum-go") } // Create identities directory if it doesn't exist