MCPcopy Index your code
hub / github.com/screego/server / newInternalServer

Function newInternalServer

turn/server.go:84–127  ·  view source on GitHub ↗
(conf config.Config)

Source from the content-addressed store, hash-verified

82}
83
84func newInternalServer(conf config.Config) (Server, error) {
85 udpListener, err := net.ListenPacket("udp", conf.TurnAddress)
86 if err != nil {
87 return nil, fmt.Errorf("udp: could not listen on %s: %s", conf.TurnAddress, err)
88 }
89 tcpListener, err := net.Listen("tcp", conf.TurnAddress)
90 if err != nil {
91 return nil, fmt.Errorf("tcp: could not listen on %s: %s", conf.TurnAddress, err)
92 }
93
94 svr := &InternalServer{lookup: map[string]Entry{}}
95
96 gen := &Generator{
97 RelayAddressGenerator: generator(conf),
98 IPProvider: conf.TurnIPProvider,
99 }
100
101 var permissions turn.PermissionHandler = func(clientAddr net.Addr, peerIP net.IP) bool {
102 for _, cidr := range conf.TurnDenyPeersParsed {
103 if cidr.Contains(peerIP) {
104 return false
105 }
106 }
107
108 return true
109 }
110
111 _, err = turn.NewServer(turn.ServerConfig{
112 Realm: Realm,
113 AuthHandler: svr.authenticate,
114 ListenerConfigs: []turn.ListenerConfig{
115 {Listener: tcpListener, RelayAddressGenerator: gen, PermissionHandler: permissions},
116 },
117 PacketConnConfigs: []turn.PacketConnConfig{
118 {PacketConn: udpListener, RelayAddressGenerator: gen, PermissionHandler: permissions},
119 },
120 })
121 if err != nil {
122 return nil, err
123 }
124
125 log.Info().Str("addr", conf.TurnAddress).Msg("Start TURN/STUN")
126 return svr, nil
127}
128
129func generator(conf config.Config) turn.RelayAddressGenerator {
130 min, max, useRange := conf.PortRange()

Callers 1

StartFunction · 0.85

Calls 1

generatorFunction · 0.85

Tested by

no test coverage detected