forked from TrueCloudLab/frostfs-sdk-go
[#11] Add dns, nns resolver
Signed-off-by: Denis Kirillov <denis@nspcc.ru>
This commit is contained in:
parent
ca01b83adf
commit
02f328a03c
3 changed files with 202 additions and 0 deletions
41
resolver/dns.go
Normal file
41
resolver/dns.go
Normal file
|
@ -0,0 +1,41 @@
|
|||
package resolver
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
|
||||
cid "github.com/nspcc-dev/neofs-sdk-go/container/id"
|
||||
)
|
||||
|
||||
const (
|
||||
testnetDomain = ".containers.testnet.fs.neo.org"
|
||||
mainnetDomain = ".containers.fs.neo.org"
|
||||
)
|
||||
|
||||
// ResolveContainerTestnet request txt record name + '.containers.testnet.fs.neo.org' to default dns server.
|
||||
func ResolveContainerTestnet(name string) (*cid.ID, error) {
|
||||
return ResolveContainerDomainName(name + testnetDomain)
|
||||
}
|
||||
|
||||
// ResolveContainerMainnet request txt record name + '.containers.fs.neo.org' to default dns server.
|
||||
func ResolveContainerMainnet(name string) (*cid.ID, error) {
|
||||
return ResolveContainerDomainName(name + mainnetDomain)
|
||||
}
|
||||
|
||||
// ResolveContainerDomainName trys to resolve container domain name to container ID using system dns server.
|
||||
func ResolveContainerDomainName(domain string) (*cid.ID, error) {
|
||||
results, err := net.LookupTXT(domain)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cnrID := cid.New()
|
||||
for _, res := range results {
|
||||
if err = cnrID.Parse(res); err != nil {
|
||||
continue
|
||||
}
|
||||
return cnrID, nil
|
||||
}
|
||||
|
||||
return nil, fmt.Errorf("not found")
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue