func (this *Server) Start() error { if this.accepting { return nil } tcpHub, err := internet.ListenTCP(this.meta.Address, this.meta.Port, this.handleConnection, this.meta.StreamSettings) if err != nil { log.Error("Shadowsocks: Failed to listen TCP on ", this.meta.Address, ":", this.meta.Port, ": ", err) return err } this.tcpHub = tcpHub if this.config.UdpEnabled { this.udpServer = udp.NewUDPServer(this.packetDispatcher) udpHub, err := udp.ListenUDP(this.meta.Address, this.meta.Port, udp.ListenOption{Callback: this.handlerUDPPayload}) if err != nil { log.Error("Shadowsocks: Failed to listen UDP on ", this.meta.Address, ":", this.meta.Port, ": ", err) return err } this.udpHub = udpHub } this.accepting = true return nil }
func (this *Server) listenUDP() error { this.udpServer = udp.NewUDPServer(this.meta, this.packetDispatcher) udpHub, err := udp.ListenUDP(this.meta.Address, this.meta.Port, udp.ListenOption{Callback: this.handleUDPPayload}) if err != nil { log.Error("Socks: Failed to listen on udp ", this.meta.Address, ":", this.meta.Port) return err } this.udpMutex.Lock() this.udpAddress = v2net.UDPDestination(this.config.Address, this.meta.Port) this.udpHub = udpHub this.udpMutex.Unlock() return nil }
func (v *Server) listenUDP() error { v.udpServer = udp.NewUDPServer(v.packetDispatcher) udpHub, err := udp.ListenUDP(v.meta.Address, v.meta.Port, udp.ListenOption{Callback: v.handleUDPPayload}) if err != nil { log.Error("Socks: Failed to listen on udp (", v.meta.Address, ":", v.meta.Port, "): ", err) return err } v.udpMutex.Lock() v.udpAddress = v2net.UDPDestination(v.config.GetNetAddress(), v.meta.Port) v.udpHub = udpHub v.udpMutex.Unlock() return nil }
func NewListener(address v2net.Address, port v2net.Port, options internet.ListenOptions) (*Listener, error) { networkSettings, err := options.Stream.GetEffectiveTransportSettings() if err != nil { log.Error("KCP|Listener: Failed to get KCP settings: ", err) return nil, err } kcpSettings := networkSettings.(*Config) kcpSettings.ConnectionReuse = &ConnectionReuse{Enable: false} header, err := kcpSettings.GetPackerHeader() if err != nil { return nil, errors.Base(err).Message("KCP|Listener: Failed to create packet header.") } security, err := kcpSettings.GetSecurity() if err != nil { return nil, errors.Base(err).Message("KCP|Listener: Failed to create security.") } l := &Listener{ header: header, security: security, reader: &KCPPacketReader{ Header: header, Security: security, }, sessions: make(map[ConnectionID]*Connection), awaitingConns: make(chan *Connection, 64), running: true, config: kcpSettings, } if options.Stream != nil && options.Stream.HasSecuritySettings() { securitySettings, err := options.Stream.GetEffectiveSecuritySettings() if err != nil { log.Error("KCP|Listener: Failed to get security settings: ", err) return nil, err } switch securitySettings := securitySettings.(type) { case *v2tls.Config: l.tlsConfig = securitySettings.GetTLSConfig() } } hub, err := udp.ListenUDP(address, port, udp.ListenOption{Callback: l.OnReceive, Concurrency: 2}) if err != nil { return nil, err } l.hub = hub log.Info("KCP|Listener: listening on ", address, ":", port) return l, nil }
func (this *DokodemoDoor) ListenUDP() error { this.udpServer = udp.NewUDPServer(this.meta, this.packetDispatcher) udpHub, err := udp.ListenUDP( this.meta.Address, this.meta.Port, udp.ListenOption{ Callback: this.handleUDPPackets, ReceiveOriginalDest: this.config.FollowRedirect, }) if err != nil { log.Error("Dokodemo failed to listen on ", this.meta.Address, ":", this.meta.Port, ": ", err) return err } this.udpMutex.Lock() this.udpHub = udpHub this.udpMutex.Unlock() return nil }
func (w *udpWorker) Start() error { w.activeConn = make(map[v2net.Destination]*udpConn) ctx, cancel := context.WithCancel(context.Background()) w.ctx = ctx w.cancel = cancel h, err := udp.ListenUDP(w.address, w.port, udp.ListenOption{ Callback: w.callback, ReceiveOriginalDest: w.recvOrigDest, }) if err != nil { return err } go w.monitor() w.hub = h return nil }
func (v *DokodemoDoor) ListenUDP() error { v.udpServer = udp.NewUDPServer(v.packetDispatcher) udpHub, err := udp.ListenUDP( v.meta.Address, v.meta.Port, udp.ListenOption{ Callback: v.handleUDPPackets, ReceiveOriginalDest: v.config.FollowRedirect, Concurrency: 2, }) if err != nil { log.Error("Dokodemo failed to listen on ", v.meta.Address, ":", v.meta.Port, ": ", err) return err } v.udpMutex.Lock() v.udpHub = udpHub v.udpMutex.Unlock() return nil }
func NewListener(address v2net.Address, port v2net.Port) (*Listener, error) { auth, err := effectiveConfig.GetAuthenticator() if err != nil { return nil, err } l := &Listener{ authenticator: auth, sessions: make(map[string]*Connection), awaitingConns: make(chan *Connection, 64), running: true, } hub, err := udp.ListenUDP(address, port, udp.ListenOption{Callback: l.OnReceive}) if err != nil { return nil, err } l.hub = hub log.Info("KCP|Listener: listening on ", address, ":", port) return l, nil }
func NewListener(address v2net.Address, port v2net.Port, options internet.ListenOptions) (*Listener, error) { networkSettings, err := options.Stream.GetEffectiveNetworkSettings() if err != nil { log.Error("KCP|Listener: Failed to get KCP settings: ", err) return nil, err } kcpSettings := networkSettings.(*Config) auth, err := kcpSettings.GetAuthenticator() if err != nil { return nil, err } l := &Listener{ authenticator: auth, sessions: make(map[string]*Connection), awaitingConns: make(chan *Connection, 64), running: true, config: kcpSettings, } if options.Stream != nil && options.Stream.HasSecuritySettings() { securitySettings, err := options.Stream.GetEffectiveSecuritySettings() if err != nil { log.Error("KCP|Listener: Failed to get security settings: ", err) return nil, err } switch securitySettings := securitySettings.(type) { case *v2tls.Config: l.tlsConfig = securitySettings.GetTLSConfig() } } hub, err := udp.ListenUDP(address, port, udp.ListenOption{Callback: l.OnReceive, Concurrency: 2}) if err != nil { return nil, err } l.hub = hub log.Info("KCP|Listener: listening on ", address, ":", port) return l, nil }