diff --git a/services/binaries/exampleService b/services/binaries/exampleService index 40942ec..f5ed47d 100755 Binary files a/services/binaries/exampleService and b/services/binaries/exampleService differ diff --git a/services/binaries/parrotService b/services/binaries/parrotService index 9ac84df..4b4fbdd 100755 Binary files a/services/binaries/parrotService and b/services/binaries/parrotService differ diff --git a/services/linuxServices.go b/services/linuxServices.go index 0c2c41f..ae971c1 100644 --- a/services/linuxServices.go +++ b/services/linuxServices.go @@ -7,6 +7,8 @@ package services import ( _ "embed" + "errors" + "github.com/DariusKlein/kleinCommand/common" "os" "os/exec" "syscall" @@ -19,6 +21,10 @@ var exampleService []byte var parrotService []byte func runService(name string, file []byte) error { + // check for existing socket + if common.FileExists(common.GetSocketPath(name)) { + return errors.New("File " + common.GetSocketPath(name) + " already exists.") + } tempFile, err := os.CreateTemp("", name) if err != nil { return err @@ -40,6 +46,9 @@ func runService(name string, file []byte) error { if err = cmd.Start(); err != nil { return err } + if err = cmd.Process.Release(); err != nil { + return err + } return nil } diff --git a/services/parrot/main.go b/services/parrot/main.go index d806b83..0964704 100644 --- a/services/parrot/main.go +++ b/services/parrot/main.go @@ -11,9 +11,11 @@ var socketPath = common.ParrotServiceSocketPath func main() { services.BaseService(socketPath, func(command string, conn net.Conn) { - _, err := conn.Write([]byte(command)) - if err != nil { - log.Println(err.Error()) + for range 2 { + _, err := conn.Write([]byte(command + "\n")) + if err != nil { + log.Println(err.Error()) + } } }) } diff --git a/services/windowsServices.go b/services/windowsServices.go index 6f8123f..0e020e3 100644 --- a/services/windowsServices.go +++ b/services/windowsServices.go @@ -19,6 +19,10 @@ var exampleService []byte var parrotService []byte func runService(name string, file []byte) error { + // check for existing socket + if common.FileExists(common.GetSocketPath(name)) { + return errors.New("File " + common.GetSocketPath(name) + " already exists.") + } executableName := name + ".exe" tempFile, err := os.CreateTemp("", executableName) if err != nil { @@ -41,6 +45,9 @@ func runService(name string, file []byte) error { if err = cmd.Start(); err != nil { return err } + if err = cmd.Process.Release(); err != nil { + return err + } return nil }