228 {
229 Socket = TcpSocket;
230 Socket.ReceiveBufferSize = BufferSize;
231 Socket.SendBufferSize = BufferSize;
232 if (ServerLogic.GetSettings().useTLS == true)
233 {
234 SslStream SslStream = new SslStream(Socket.GetStream(), false);
235 try
236 {
237 SslStream.AuthenticateAsServer(
238 ServerLogic.serverCertificate,
239 false,
240 SslProtocols.Tls12,
241 false
242 );
243 Stream = SslStream;
244 }
245 catch (Exception ex)
246 {
247 ServerLogic.clientsList[Id].DisconnectRequest();
248 return;
249 }
250 } else
251 {
252 Stream = Socket.GetStream();
253 }
254 receiveBuffer = new byte[BufferSize];
255 receivedPacket = new Packet();
256 hmacKey = GenerateHmacKey();
257 ServerLogic.clientsList[Id].hmacKey = hmacKey;
258 ServerLogic.clientsList[Id].SetToken();
259 Stream.BeginRead(receiveBuffer, 0, BufferSize, ReceiveCallback, null);
260 if(ServerLogic.GetServerSettings().sendWelcomeToServerMesage == true)
261 {
262 ServerSendHandler.WelcomePacket(Id, ServerLogic.GetServerSettings().welcomeToServerMessage);
263 } else
264 {
265 ServerSendHandler.WelcomePacket(Id, "");
266 }
267
268 if(ServerLogic.GetSettings().useHMAC == true)
269 {
270 ServerSendHandler.SendHmacKeyPacket(Id, hmacKey);
271 }
272 if(ServerLogic.GetSettings().useAuthentificationTokens == true)
273 {
274 Console.WriteLine($"Sending auth token {ServerLogic.clientsList[Id].auth_token}");
275 ServerSendHandler.SendAuthPacket(Id, ServerLogic.clientsList[Id].GetToken());
276 }
277 }