fix other part of constructor
This commit is contained in:
parent
52631be055
commit
179b25e01c
3 changed files with 45 additions and 4 deletions
|
@ -13,6 +13,8 @@ import (
|
|||
|
||||
type Resolver struct {
|
||||
*sam3.SAMResolver
|
||||
samhost string
|
||||
samport string
|
||||
allowedSuffixes []string
|
||||
}
|
||||
|
||||
|
@ -47,13 +49,20 @@ func (r Resolver) ValidateI2PAddr(name string) bool {
|
|||
return noi2p
|
||||
}
|
||||
|
||||
func NewResolver() (*Resolver, error) {
|
||||
return NewResolverFromOptions()
|
||||
func NewResolver(samhost, samport string) (*Resolver, error) {
|
||||
return NewResolverFromOptions(SetHost(samhost), SetPort(samport))
|
||||
}
|
||||
|
||||
func NewResolverFromOptions() (*Resolver, error) {
|
||||
func NewResolverFromOptions(opts ...func(*Resolver) error) (*Resolver, error) {
|
||||
var r Resolver
|
||||
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
|
||||
r.SAMResolver, err = sam3.NewFullSAMResolver("127.0.0.1:7656")
|
||||
if err != nil {
|
||||
|
|
32
resolve/resolver_options.go
Normal file
32
resolve/resolver_options.go
Normal 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.")
|
||||
}
|
||||
}
|
|
@ -77,7 +77,7 @@ func NewManagerFromOptions(opts ...func(*Manager) error) (*Manager, error) {
|
|||
if err != nil {
|
||||
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{
|
||||
Resolver: r,
|
||||
Dial: m.Dial,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue