From 8aa30b434bc1a86622da16f68f6e8210333dc07e Mon Sep 17 00:00:00 2001 From: NanamiAdmin Date: Sat, 4 Apr 2026 18:00:59 +0800 Subject: [PATCH] style: pack commandParse and socket server to different packages --- commandParse.go => command/commandParse.go | 4 +- main.go | 49 ++++--------------- socket/server.go | 55 ++++++++++++++++++++++ 3 files changed, 65 insertions(+), 43 deletions(-) rename commandParse.go => command/commandParse.go (86%) create mode 100644 socket/server.go diff --git a/commandParse.go b/command/commandParse.go similarity index 86% rename from commandParse.go rename to command/commandParse.go index d49037c..c74a6ac 100644 --- a/commandParse.go +++ b/command/commandParse.go @@ -1,4 +1,4 @@ -package main +package command import ( "strings" @@ -36,6 +36,6 @@ func parseCommand(content, cmdType string) string { return getTextMiddle(content, "<" + cmdType + ">", "") } -func executeCommand(input string) error { +func ExecuteCommand(input string) error { return nil } \ No newline at end of file diff --git a/main.go b/main.go index 49078c3..9a12237 100644 --- a/main.go +++ b/main.go @@ -2,13 +2,13 @@ package main import ( "Watchdog_Linux-systemd/postLog" + "Watchdog_Linux-systemd/socket" "fmt" - "net" ) const ( listenAddr = "127.0.0.1" - listenPort = "10080" + listenPort = 10080 Type = "tcp" ) @@ -38,46 +38,13 @@ func main() { postLog.SetDebugMode(true) } postLog.Info(fmt.Sprintf("%s %s (Build %d.%s) by %s", softwareInfo.Name, softwareInfo.Version, softwareInfo.BuildVer, softwareInfo.BuildType, softwareInfo.Developer)) - listen, err := net.Listen(Type, fmt.Sprintf("%s:%s", listenAddr, listenPort)) - if err != nil { - postLog.Fatal(fmt.Sprintf("Failed to listen: %v, err: %v, %v", listenAddr, listenPort, err)) - } - defer listen.Close() - postLog.Info(fmt.Sprintf("Server is running on %s:%s", listenAddr, listenPort)) - for { - conn, err := listen.Accept() + go func() { + err := socket.BootSocket(Type, listenAddr, listenPort) if err != nil { - postLog.Error(fmt.Sprintf("Failed to accept: %v, err: %v", conn, err)) + postLog.Fatal(fmt.Sprintf("Failed to initialize socket server: %v", err)) } - go handleRequest(conn) - } -} - -func handleRequest(conn net.Conn) { - defer conn.Close() - - buffer := make([]byte, 1024) - n, err := conn.Read(buffer) - if err != nil { - postLog.Error(fmt.Sprintf("Failed to read: %v, err: %v", conn, err)) - return - } - - recvMsg := string(buffer[:n]) - postLog.Debug(fmt.Sprintf("Received: %v", recvMsg)) - responseMsg := "" - if recvMsg == "watchdogAgentConnectionTest" { - responseMsg = "success" - } else { - err := executeCommand(recvMsg) - if err != nil { - responseMsg = fmt.Sprintf("error: %v", err) - } else { - responseMsg = "success" - } - } - if _, err := conn.Write([]byte(responseMsg + "\n")); err != nil { - postLog.Error(fmt.Sprintf("Failed to write: %v, err: %v", conn, err)) - } + }() + + select {} } diff --git a/socket/server.go b/socket/server.go new file mode 100644 index 0000000..b9dc237 --- /dev/null +++ b/socket/server.go @@ -0,0 +1,55 @@ +package socket + +import ( + "Watchdog_Linux-systemd/command" + "Watchdog_Linux-systemd/postLog" + "fmt" + "net" +) + +func BootSocket(networkType, listenAddr string, listenPort int) error { + listen, err := net.Listen(networkType, fmt.Sprintf("%s:%d", listenAddr, listenPort)) + if err != nil { + postLog.Fatal(fmt.Sprintf("[Socket] Failed to listen: %v, err: %v, %v", listenAddr, listenPort, err)) + return fmt.Errorf("failed to listen: %v, err: %v, %v", listenAddr, listenPort, err) + } + defer listen.Close() + + postLog.Info(fmt.Sprintf("Server is running on %s:%d", listenAddr, listenPort)) + + for { + conn, err := listen.Accept() + if err != nil { + postLog.Error(fmt.Sprintf("Failed to accept: %v, err: %v", conn, err)) + } + go handleRequest(conn) + } +} + +func handleRequest(conn net.Conn) { + defer conn.Close() + + buffer := make([]byte, 1024) + n, err := conn.Read(buffer) + if err != nil { + postLog.Error(fmt.Sprintf("Failed to read: %v, err: %v", conn, err)) + return + } + + recvMsg := string(buffer[:n]) + postLog.Debug(fmt.Sprintf("Received: %v", recvMsg)) + responseMsg := "" + if recvMsg == "watchdogAgentConnectionTest" { + responseMsg = "success" + } else { + err := command.ExecuteCommand(recvMsg) + if err != nil { + responseMsg = fmt.Sprintf("error: %v", err) + } else { + responseMsg = "success" + } + } + if _, err := conn.Write([]byte(responseMsg + "\n")); err != nil { + postLog.Error(fmt.Sprintf("Failed to write: %v, err: %v", conn, err)) + } +}