This commit is contained in:
Sudo-Ivan
2024-12-30 02:43:35 -06:00
parent bfc75a2290
commit a2476c9551
4 changed files with 42 additions and 16 deletions

View File

@@ -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

View File

@@ -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)