-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathdriver.go
39 lines (32 loc) · 926 Bytes
/
driver.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package socks5
import (
"errors"
"net"
"time"
)
type Driver interface {
Listen(network, address string) (net.Listener, error)
ListenPacket(network, address string) (net.PacketConn, error)
Dial(network, address string) (net.Conn, error)
Resolve(network, address string) (net.Addr, error)
}
type netDriver struct {
timeout time.Duration
}
func (d *netDriver) Listen(network, address string) (net.Listener, error) {
return net.Listen(network, address)
}
func (d *netDriver) ListenPacket(network, address string) (net.PacketConn, error) {
return net.ListenPacket(network, address)
}
func (d *netDriver) Dial(network, address string) (net.Conn, error) {
return net.DialTimeout(network, address, d.timeout)
}
func (d *netDriver) Resolve(network, address string) (net.Addr, error) {
switch network {
case "udp":
return net.ResolveUDPAddr(network, address)
default:
return nil, errors.New("bad network")
}
}