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 {
|
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 {
|
||||||
|
|
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 {
|
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,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue