1. support local whois. 2 add some useful bird command (#59)

This commit is contained in:
日下部 詩
2022-08-12 10:34:39 +08:00
committed by GitHub
parent 890ab51b07
commit 5ce0f55f35
4 changed files with 77 additions and 33 deletions

View File

@@ -3,6 +3,8 @@ package main
import (
"io"
"net"
"os/exec"
"strings"
"time"
)
@@ -12,18 +14,31 @@ func whois(s string) string {
return ""
}
conn, err := net.DialTimeout("tcp", setting.whoisServer+":43", 5*time.Second)
if err != nil {
return err.Error()
}
defer conn.Close()
if strings.HasPrefix(setting.whoisServer, "/") {
cmd := exec.Command(setting.whoisServer, s)
output, err := cmd.CombinedOutput()
if err != nil {
return err.Error()
}
if len(output) > 65535 {
output = output[:65535]
}
return string(output)
} else {
buf := make([]byte, 65536)
conn, err := net.DialTimeout("tcp", setting.whoisServer+":43", 5*time.Second)
if err != nil {
return err.Error()
}
defer conn.Close()
conn.Write([]byte(s + "\r\n"))
conn.Write([]byte(s + "\r\n"))
buf := make([]byte, 65536)
n, err := io.ReadFull(conn, buf)
if err != nil && err != io.ErrUnexpectedEOF {
return err.Error()
n, err := io.ReadFull(conn, buf)
if err != nil && err != io.ErrUnexpectedEOF {
return err.Error()
}
return string(buf[:n])
}
return string(buf[:n])
}