This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
linxin-coredump-tools/coredump.go

64 lines
1.2 KiB
Go
Raw Normal View History

2023-04-10 18:30:40 +08:00
package main
import (
"coredump-handler/types"
"fmt"
2023-04-10 18:30:40 +08:00
"net"
"os/exec"
"syscall"
)
func coredumpInit(coreconfig types.Coreconfig) error {
2023-04-10 18:30:40 +08:00
cmd := exec.Command("sysctl", "-w", "kernel.core_pattern='"+coreconfig.Core_pattern+"'")
err := cmd.Run()
if err != nil {
return err
}
cmd = exec.Command("sysctl", "-w", "kernel.core_pipe_limit="+coreconfig.Core__pipe_limit)
err = cmd.Run()
if err != nil {
return err
}
cmd = exec.Command("sysctl", "-w", "kernel.suid_dumpable=2")
err = cmd.Run()
if err != nil {
return err
}
cmd = exec.Command("ulimit", "-c", coreconfig.Core_limited)
err = cmd.Run()
if err != nil {
return err
}
return nil
}
func coredumpHandler(coreconfig types.Coreconfig) error {
2023-04-10 18:30:40 +08:00
syscall.Unlink(coreconfig.Socket_path)
laddr, err := net.ResolveUnixAddr("unix", coreconfig.Socket_path)
if err != nil {
return err
}
listener, err := net.ListenUnix("unix", laddr)
if err != nil {
return err
}
defer listener.Close()
for {
c, err := listener.Accept()
if err != nil {
fmt.Println(err)
2023-04-10 18:30:40 +08:00
}
go HandleServerConn(c)
}
}
func HandleServerConn(c net.Conn) {
defer c.Close()
buf := make([]byte, 1024)
nr, err := c.Read(buf)
if err != nil {
fmt.Println(err)
2023-04-10 18:30:40 +08:00
return
}
fmt.Println(buf[0:nr])
2023-04-10 18:30:40 +08:00
}