fix other part of constructor

This commit is contained in:
idk 2018-12-25 03:24:26 -05:00
parent 52631be055
commit 179b25e01c
No known key found for this signature in database
GPG key ID: D75C03B39B5E14E1
3 changed files with 45 additions and 4 deletions

View file

@ -13,6 +13,8 @@ import (
type Resolver struct { type Resolver struct {
*sam3.SAMResolver *sam3.SAMResolver
samhost string
samport string
allowedSuffixes []string allowedSuffixes []string
} }
@ -47,13 +49,20 @@ func (r Resolver) ValidateI2PAddr(name string) bool {
return noi2p return noi2p
} }
func NewResolver() (*Resolver, error) { func NewResolver(samhost, samport string) (*Resolver, error) {
return NewResolverFromOptions() return NewResolverFromOptions(SetHost(samhost), SetPort(samport))
} }
func NewResolverFromOptions() (*Resolver, error) { func NewResolverFromOptions(opts ...func(*Resolver) error) (*Resolver, error) {
var r Resolver var r Resolver
r.allowedSuffixes = []string{".i2p", ".b32.i2p"} r.allowedSuffixes = []string{".i2p", ".b32.i2p"}
r.samhost = "127.0.0.1"
r.samport = "7656"
for _, o := range opts {
if err := o(&r); err != nil {
return nil, err
}
}
var err error var err error
r.SAMResolver, err = sam3.NewFullSAMResolver("127.0.0.1:7656") r.SAMResolver, err = sam3.NewFullSAMResolver("127.0.0.1:7656")
if err != nil { if err != nil {

View file

@ -0,0 +1,32 @@
package resolver
import (
"fmt"
"strconv"
)
//Option is a Resolver option
type Option func(*Resolver) error
//SetHost sets the host of the client's SAM bridge
func SetHost(s string) func(*Resolver) error {
return func(c *Resolver) error {
c.samhost = s
return nil
}
}
//SetPort sets the port of the client's SAM bridge
func SetPort(v string) func(*Resolver) error {
return func(c *Resolver) error {
port, err := strconv.Atoi(v)
if err != nil {
return fmt.Errorf("Invalid port; non-number.")
}
if port < 65536 && port > -1 {
c.samport = v
return nil
}
return fmt.Errorf("Invalid port.")
}
}

View file

@ -77,7 +77,7 @@ func NewManagerFromOptions(opts ...func(*Manager) error) (*Manager, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
if r, err := resolver.NewResolver(); err == nil { if r, err := resolver.NewResolver(m.samhost, m.samport); err == nil {
m.Config = socks5.Config{ m.Config = socks5.Config{
Resolver: r, Resolver: r,
Dial: m.Dial, Dial: m.Dial,