1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-12-30 05:56:54 -05:00

Customize UDP server address

This commit is contained in:
V2Ray 2015-10-14 00:04:49 +02:00
parent 3c259b7069
commit 99671a173f
3 changed files with 28 additions and 13 deletions

View File

@ -1,6 +1,8 @@
package json
import (
"net"
"github.com/v2ray/v2ray-core/config"
"github.com/v2ray/v2ray-core/config/json"
)
@ -19,32 +21,45 @@ type SocksConfig struct {
AuthMethod string `json:"auth"`
Accounts []SocksAccount `json:"accounts"`
UDPEnabled bool `json:"udp"`
HostIP string `json:"ip"`
accountMap map[string]string
ip net.IP
}
func (config *SocksConfig) Initialize() {
config.accountMap = make(map[string]string)
for _, account := range config.Accounts {
config.accountMap[account.Username] = account.Password
func (sc *SocksConfig) Initialize() {
sc.accountMap = make(map[string]string)
for _, account := range sc.Accounts {
sc.accountMap[account.Username] = account.Password
}
if len(sc.HostIP) > 0 {
sc.ip = net.ParseIP(sc.HostIP)
if sc.ip == nil {
sc.ip = net.IPv4(127, 0, 0, 1)
}
}
}
func (config *SocksConfig) IsNoAuth() bool {
return config.AuthMethod == AuthMethodNoAuth
func (sc *SocksConfig) IsNoAuth() bool {
return sc.AuthMethod == AuthMethodNoAuth
}
func (config *SocksConfig) IsPassword() bool {
return config.AuthMethod == AuthMethodUserPass
func (sc *SocksConfig) IsPassword() bool {
return sc.AuthMethod == AuthMethodUserPass
}
func (config *SocksConfig) HasAccount(user, pass string) bool {
if actualPass, found := config.accountMap[user]; found {
func (sc *SocksConfig) HasAccount(user, pass string) bool {
if actualPass, found := sc.accountMap[user]; found {
return actualPass == pass
}
return false
}
func (sc *SocksConfig) IP() net.IP {
return sc.ip
}
func init() {
json.RegisterConfigType("socks", config.TypeInbound, func() interface{} {
return new(SocksConfig)

View File

@ -22,8 +22,7 @@ func (server *SocksServer) ListenUDP(port uint16) error {
log.Error("Socks failed to listen UDP on port %d: %v", port, err)
return err
}
// TODO: make this configurable
udpAddress = v2net.IPAddress([]byte{127, 0, 0, 1}, port)
udpAddress = v2net.IPAddress(server.config.IP(), port)
go server.AcceptPackets(conn)
return nil

View File

@ -7,7 +7,8 @@
"protocol": "socks",
"settings": {
"auth": "noauth",
"udp": false
"udp": false,
"ip": "127.0.0.1"
}
},
"outbound": {