11package base
22
33import (
4+ "context"
45 "fmt"
6+ "net"
7+ "os"
8+ "strings"
59 "syscall"
610 "time"
7-
8- "github.com/Showmax/go-fqdn"
911)
1012
1113type KernelInfo struct {
@@ -19,6 +21,40 @@ type KernelInfo struct {
1921 CurrentTime string
2022}
2123
24+ func getFQDN () (string , error ) {
25+ hostname , err := os .Hostname ()
26+ if err != nil {
27+ return "" , err
28+ }
29+
30+ ctx , cancel := context .WithTimeout (context .Background (), 5 * time .Second )
31+
32+ defer cancel ()
33+
34+ resolver := & net.Resolver {
35+ PreferGo : true ,
36+ }
37+
38+ addrs , err := resolver .LookupHost (ctx , hostname )
39+ if err != nil {
40+ return hostname , nil
41+ }
42+
43+ for _ , addr := range addrs {
44+ hosts , err := resolver .LookupAddr (ctx , addr )
45+
46+ if err != nil || len (hosts ) == 0 {
47+ continue
48+ }
49+
50+ fqdn := strings .TrimSuffix (hosts [0 ], "." )
51+
52+ return fqdn , nil
53+ }
54+
55+ return hostname , nil
56+ }
57+
2258func GetKernelInfo () (i KernelInfo , err error ) {
2359 var uname syscall.Utsname
2460
@@ -37,7 +73,7 @@ func GetKernelInfo() (i KernelInfo, err error) {
3773 Domainname : CharsToString (uname .Domainname [:]),
3874 }
3975
40- i .FQDN , err = fqdn . FqdnHostname ()
76+ i .FQDN , err = getFQDN ()
4177 // return err after setting info
4278
4379 i .CurrentTime = time .Now ().String ()
0 commit comments