0.2.2
This commit is contained in:
@@ -55,11 +55,11 @@ func (c *Client) Start() error {
|
|||||||
var iface common.NetworkInterface
|
var iface common.NetworkInterface
|
||||||
|
|
||||||
switch ifaceConfig.Type {
|
switch ifaceConfig.Type {
|
||||||
case "tcp":
|
case "TCPClientInterface":
|
||||||
client, err := interfaces.NewTCPClient(
|
client, err := interfaces.NewTCPClient(
|
||||||
ifaceConfig.Name,
|
ifaceConfig.Name,
|
||||||
ifaceConfig.Address,
|
ifaceConfig.TargetHost,
|
||||||
ifaceConfig.Port,
|
ifaceConfig.TargetPort,
|
||||||
ifaceConfig.KISSFraming,
|
ifaceConfig.KISSFraming,
|
||||||
ifaceConfig.I2PTunneled,
|
ifaceConfig.I2PTunneled,
|
||||||
)
|
)
|
||||||
@@ -74,9 +74,8 @@ func (c *Client) Start() error {
|
|||||||
client.SetPacketCallback(callback)
|
client.SetPacketCallback(callback)
|
||||||
iface = client
|
iface = client
|
||||||
|
|
||||||
case "udp":
|
case "UDPInterface":
|
||||||
addr := fmt.Sprintf("%s:%d", ifaceConfig.Address, ifaceConfig.Port)
|
addr := fmt.Sprintf("%s:%d", ifaceConfig.Address, ifaceConfig.Port)
|
||||||
|
|
||||||
udp, err := interfaces.NewUDPInterface(
|
udp, err := interfaces.NewUDPInterface(
|
||||||
ifaceConfig.Name,
|
ifaceConfig.Name,
|
||||||
addr,
|
addr,
|
||||||
@@ -93,12 +92,18 @@ func (c *Client) Start() error {
|
|||||||
udp.SetPacketCallback(callback)
|
udp.SetPacketCallback(callback)
|
||||||
iface = udp
|
iface = udp
|
||||||
|
|
||||||
|
case "AutoInterface":
|
||||||
|
log.Printf("AutoInterface type not yet implemented")
|
||||||
|
continue
|
||||||
|
|
||||||
default:
|
default:
|
||||||
log.Printf("Unknown interface type: %s", ifaceConfig.Type)
|
log.Printf("Unknown interface type: %s", ifaceConfig.Type)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
c.interfaces = append(c.interfaces, iface)
|
if iface != nil {
|
||||||
|
c.interfaces = append(c.interfaces, iface)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
@@ -15,6 +16,7 @@ import (
|
|||||||
type Reticulum struct {
|
type Reticulum struct {
|
||||||
config *common.ReticulumConfig
|
config *common.ReticulumConfig
|
||||||
transport *transport.Transport
|
transport *transport.Transport
|
||||||
|
interfaces []interfaces.Interface
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewReticulum(cfg *common.ReticulumConfig) (*Reticulum, error) {
|
func NewReticulum(cfg *common.ReticulumConfig) (*Reticulum, error) {
|
||||||
@@ -35,16 +37,15 @@ func NewReticulum(cfg *common.ReticulumConfig) (*Reticulum, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *Reticulum) Start() error {
|
func (r *Reticulum) Start() error {
|
||||||
// Initialize interfaces based on config
|
|
||||||
for _, ifaceConfig := range r.config.Interfaces {
|
for _, ifaceConfig := range r.config.Interfaces {
|
||||||
var iface interfaces.Interface
|
var iface interfaces.Interface
|
||||||
|
|
||||||
switch ifaceConfig.Type {
|
switch ifaceConfig.Type {
|
||||||
case "tcp":
|
case "TCPClientInterface":
|
||||||
client, err := interfaces.NewTCPClient(
|
client, err := interfaces.NewTCPClient(
|
||||||
ifaceConfig.Name,
|
ifaceConfig.Name,
|
||||||
ifaceConfig.Address,
|
ifaceConfig.TargetHost,
|
||||||
ifaceConfig.Port,
|
ifaceConfig.TargetPort,
|
||||||
ifaceConfig.KISSFraming,
|
ifaceConfig.KISSFraming,
|
||||||
ifaceConfig.I2PTunneled,
|
ifaceConfig.I2PTunneled,
|
||||||
)
|
)
|
||||||
@@ -54,7 +55,7 @@ func (r *Reticulum) Start() error {
|
|||||||
}
|
}
|
||||||
iface = client
|
iface = client
|
||||||
|
|
||||||
case "tcpserver":
|
case "TCPServerInterface":
|
||||||
server, err := interfaces.NewTCPServer(
|
server, err := interfaces.NewTCPServer(
|
||||||
ifaceConfig.Name,
|
ifaceConfig.Name,
|
||||||
ifaceConfig.Address,
|
ifaceConfig.Address,
|
||||||
@@ -68,13 +69,33 @@ func (r *Reticulum) Start() error {
|
|||||||
}
|
}
|
||||||
iface = server
|
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:
|
default:
|
||||||
log.Printf("Unknown interface type: %s", ifaceConfig.Type)
|
log.Printf("Unknown interface type: %s", ifaceConfig.Type)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set packet callback to transport
|
if iface != nil {
|
||||||
iface.SetPacketCallback(r.transport.HandlePacket)
|
// 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)
|
log.Printf("Reticulum initialized with config at: %s", r.config.ConfigPath)
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ func GetConfigPath() (string, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
return filepath.Join(homeDir, ".reticulum", "config"), nil
|
return filepath.Join(homeDir, ".reticulum-go", "config"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func EnsureConfigDir() error {
|
func EnsureConfigDir() error {
|
||||||
@@ -40,7 +40,7 @@ func EnsureConfigDir() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
configDir := filepath.Join(homeDir, ".reticulum")
|
configDir := filepath.Join(homeDir, ".reticulum-go")
|
||||||
return os.MkdirAll(configDir, 0755)
|
return os.MkdirAll(configDir, 0755)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -286,7 +286,7 @@ func Recall(hash []byte) (*Identity, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to get home directory: %w", err)
|
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
|
// Create identities directory if it doesn't exist
|
||||||
|
|||||||
Reference in New Issue
Block a user