76 lines
1.8 KiB
Go
76 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"github.com/freeflowuniverse/heroagent/pkg/handlerfactory/herohandler"
|
|
)
|
|
|
|
func main() {
|
|
// Parse command line flags
|
|
socketPath := flag.String("socket", "/tmp/hero.sock", "Unix socket path")
|
|
tcpAddress := flag.String("tcp", "localhost:8023", "TCP address")
|
|
useUnixSocket := flag.Bool("unix", true, "Use Unix socket")
|
|
useTCP := flag.Bool("tcp-enable", false, "Use TCP")
|
|
flag.Parse()
|
|
|
|
// Initialize the hero handler
|
|
err := herohandler.Init()
|
|
if err != nil {
|
|
fmt.Printf("Failed to initialize hero handler: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
// Get the default instance
|
|
handler := herohandler.DefaultInstance
|
|
|
|
// The fake handler is already registered in the Init() function
|
|
fmt.Println("Using pre-registered fake handler")
|
|
|
|
// Start the server
|
|
if *useUnixSocket || *useTCP {
|
|
fmt.Printf("Starting telnet server\n")
|
|
var socketPathStr, tcpAddressStr string
|
|
if *useUnixSocket {
|
|
socketPathStr = *socketPath
|
|
fmt.Printf("Unix socket: %s\n", socketPathStr)
|
|
}
|
|
if *useTCP {
|
|
tcpAddressStr = *tcpAddress
|
|
fmt.Printf("TCP address: %s\n", tcpAddressStr)
|
|
}
|
|
|
|
err = handler.StartTelnet(socketPathStr, tcpAddressStr)
|
|
if err != nil {
|
|
fmt.Printf("Failed to start telnet server: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
// Print available commands
|
|
factory := handler.GetFactory()
|
|
actions := factory.GetSupportedActions()
|
|
fmt.Println("\nAvailable commands:")
|
|
for actor, commands := range actions {
|
|
fmt.Printf("Actor: %s\n", actor)
|
|
for _, command := range commands {
|
|
fmt.Printf(" !!%s.%s\n", actor, command)
|
|
}
|
|
}
|
|
|
|
fmt.Println("\nServer is running. Press Ctrl+C to stop.")
|
|
|
|
// Wait for interrupt signal
|
|
sigCh := make(chan os.Signal, 1)
|
|
signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
|
|
<-sigCh
|
|
|
|
fmt.Println("\nShutting down...")
|
|
handler.StopTelnet()
|
|
fmt.Println("Server stopped")
|
|
}
|