mirror of
https://github.com/yggdrasil-network/yggdrasil-go.git
synced 2025-04-28 14:15:06 +03:00
Add .pk.ygg
to Yggstack resolver
This commit is contained in:
parent
ae4dbc2a27
commit
33e513af67
2 changed files with 19 additions and 1 deletions
|
@ -143,9 +143,11 @@ func main() {
|
|||
address := n.Address()
|
||||
subnet := n.Subnet()
|
||||
public := n.GetSelf().Key
|
||||
logger.Infof("Your public key is %s", hex.EncodeToString(public[:]))
|
||||
publicstr := hex.EncodeToString(public[:])
|
||||
logger.Infof("Your public key is %s", publicstr)
|
||||
logger.Infof("Your IPv6 address is %s", address.String())
|
||||
logger.Infof("Your IPv6 subnet is %s", subnet.String())
|
||||
logger.Infof("Your Yggstack resolver name is %s%s", publicstr, types.NameMappingSuffix)
|
||||
|
||||
s, err := netstack.CreateYggdrasilNetstack(&n.Core)
|
||||
if err != nil {
|
||||
|
|
|
@ -2,12 +2,18 @@ package types
|
|||
|
||||
import (
|
||||
"context"
|
||||
"crypto/ed25519"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"net"
|
||||
"strings"
|
||||
|
||||
"github.com/yggdrasil-network/yggdrasil-go/contrib/netstack"
|
||||
"github.com/yggdrasil-network/yggdrasil-go/src/address"
|
||||
)
|
||||
|
||||
const NameMappingSuffix = ".pk.ygg"
|
||||
|
||||
type NameResolver struct {
|
||||
resolver *net.Resolver
|
||||
}
|
||||
|
@ -31,6 +37,16 @@ func NewNameResolver(stack *netstack.YggdrasilNetstack, nameserver string) *Name
|
|||
}
|
||||
|
||||
func (r *NameResolver) Resolve(ctx context.Context, name string) (context.Context, net.IP, error) {
|
||||
if strings.HasSuffix(name, NameMappingSuffix) {
|
||||
name = strings.TrimSuffix(name, NameMappingSuffix)
|
||||
var pk [ed25519.PublicKeySize]byte
|
||||
if b, err := hex.DecodeString(name); err != nil {
|
||||
return nil, nil, fmt.Errorf("hex.DecodeString: %w", err)
|
||||
} else {
|
||||
copy(pk[:], b)
|
||||
return ctx, net.IP(address.AddrForKey(pk[:])[:]), nil
|
||||
}
|
||||
}
|
||||
ip := net.ParseIP(name)
|
||||
if ip == nil {
|
||||
addrs, err := r.resolver.LookupIP(ctx, "ip6", name)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue