2016-12-13 50 views
0

我對golang非常陌生,我有一些python的經驗,但不是在這個級別上說。我創建了一個名爲「digall」的應用程序,使用戶在查看域名時可以輕鬆查看活動的dns記錄。golang net module(LookupSRV)

在我使用LookupSRV,我似乎有一些問題與應用:

func srvRecord(query string) { 
     service := "sipfederationtls" 
     protocol:= "tcp" 
     fmt.Printf("\n[+] SRV Record(s)\n") 
     //srvMap := ["sipfederationtls", "autodiscover", "VLMCS"] 
     cname, addresses, err := net.LookupSRV(service, protocol, query) 

     if err != nil { 
       fmt.Printf("[!] This feature is currently under development, thus not ready yet.\n") 
     } 

     fmt.Printf("cname : %s \n", cname) 

     for i := 0; i < len(addresses); i++ { 
       fmt.Printf("addrs[%d].Target : %s \n", i, addresses[i].Target) 
       fmt.Printf("addrs[%d].Port : %d \n", i, addresses[i].Port) 
       fmt.Printf("addrs[%d].Priority : %d \n", i, addresses[i].Priority) 
       fmt.Printf("addrs[%d].Weight : %d \n", i, addresses[i].Weight) 
     } 
} 

正如你可以看到變量「服務」作爲SRV記錄的前綴。我唯一的問題是,我想檢查此記錄的多個前綴,即「sipfederationtls」,「autodiscover」和「VLMCS」。

我在問的是:如何使這個函數快速通過這些前綴並返回那些工作? (那些錯誤將由err通過我的奇妙錯誤消息處理)

我知道這是一個noob問題,就像我說的我對golang很新。我會很感激你們可以給我的任何提示。

這裏是應用程序的完整源:http://dpaste.com/3X24ZYR

謝謝。

回答

0

您無法使用LookupSRV方法一次查詢多個服務,因爲您無法一次使用查詢多個服務。

您更好地創造服務的名字切片:

services := [...]string{"service1", "service2", "service3") 

然後遍歷並呼籲LookupSRV爲每個服務:

for _, service := range services { 
    cname , addrs, err := net.LookupSRV(service, "tcp", "your.domain.name") 

    // error handlling 
} 

而且遍歷查找結果時,最好用range關鍵字:

for _, record := range addrs { 
    fmt.Printf("Target: %s:%d\n", record.Target, record.Port) 
} 
+0

謝謝。我試圖將它添加到我的應用程序,但我一直得到這樣的錯誤: go run digall.go google.com #command-line-arguments ./digall.go:54:undefined:err ./ digall.go:58:undefined:cname ./digall.go:60:undefined:地址 ./digall.go:61:undefined:地址 ./digall.go:62:undefined:地址 ./digall。去:63:undefined:地址 ./digall.go:64:undefined:地址 ./digall.go:91:不能使用查詢[1](類型字節)作爲類型字符串參數srvRecord 未改變的版本在這裏:http://dpaste.com/3X24ZYR – xrefor

+0

請注意我已經聲明'cn ame','addrs'和'err',因此如果您試圖在循環範圍之外打印內容,它們將不可用。 –

+0

對於最近的回覆,我很抱歉。我想我已經明白了。謝謝! :) – xrefor