1. support local whois. 2 add some useful bird command (#59)
This commit is contained in:
@@ -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])
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user