...
This commit is contained in:
75
pkg/heroscript/cmd/fakehandler_start/main.go
Normal file
75
pkg/heroscript/cmd/fakehandler_start/main.go
Normal file
@@ -0,0 +1,75 @@
|
||||
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")
|
||||
}
|
Reference in New Issue
Block a user