fix part of constructor

This commit is contained in:
idk 2018-12-25 03:15:56 -05:00
parent 42ae6c59c9
commit 5bdb99698b
No known key found for this signature in database
GPG key ID: D75C03B39B5E14E1
2 changed files with 5 additions and 0 deletions

63
resolve/resolver.go Normal file
View file

@ -0,0 +1,63 @@
package resolver
import (
"context"
"fmt"
"net"
"strings"
)
import (
"github.com/eyedeekay/sam3"
)
type Resolver struct {
*sam3.SAMResolver
allowedSuffixes []string
}
func (r Resolver) Resolve(ctx context.Context, name string) (context.Context, net.Addr, error) {
return r.ResolveI2P(ctx, name)
}
func (r Resolver) ResolveI2P(ctx context.Context, name string) (context.Context, *sam3.I2PAddr, error) {
if !r.ValidateI2PAddr(name) {
return ctx, nil, fmt.Errorf("Error, not an allowed suffix")
}
raddr, err := r.SAMResolver.Resolve(name)
if err != nil {
return ctx, nil, err
}
return ctx, &raddr, nil
}
func (r Resolver) ValidateI2PAddr(name string) bool {
noi2p := false
for _, suffix := range r.allowedSuffixes {
if strings.HasSuffix(name, suffix) {
if suffix == ".b32.i2p" {
if len(name) != 60 {
noi2p = true
break
}
}
noi2p = true
}
}
return noi2p
}
func NewResolver() (*Resolver, error) {
return NewResolverFromOptions()
}
func NewResolverFromOptions() (*Resolver, error) {
var r Resolver
r.allowedSuffixes = []string{".i2p", ".b32.i2p"}
var err error
r.SAMResolver, err = sam3.NewFullSAMResolver("127.0.0.1:7656")
if err != nil {
return nil, err
}
return &r, nil
}