public ClientConnection(ClientHandler clientHandler, Socket clientSocket) { Handler = clientHandler; Session = new HabboSession(); Client = new HabboConnection( new SocketListener(clientSocket, 1024), new PacketProcessor(this, PacketType.Incoming, Constants.ServerRelease), new HabboEncryption(Constants.AirServerExponent, Constants.AirServerModulus, Constants.AirServerPrivateExponent) ); Client.Listener.Listening += ClientListenerOnListening; Client.Listener.Aborting += ClientListenerOnAborting; Client.Listener.ReceivedBytes += ClientListenerOnReceivedBytes; Client.PacketProcessor.PacketReceived += ClientPacketProcessorOnPacketReceived; _packetModifier = new PacketModifier(this, Constants.ServerRelease, Constants.ServerRelease, false); _packetModifier.ParsedIncomingPacket += PacketModifierOnParsedIncomingPacket; _packetModifier.ParsedOutgoingPacket += PacketModifierOnParsedOutgoingPacket; }
private void StartServerConnection(HotelConfig hotelConfig) { if (Config != null) { throw new ApplicationException("ServerConnection was already configured."); } Config = hotelConfig; // Setup packet modifier. _packetModifier.ServerRelease = Config.Release; // Setup server stuff. Server = new HabboConnection( new SocketListener(new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp), 1024), new PacketProcessor(this, PacketType.Outgoing, Config.Release), new HabboEncryption(Config.Exponent, Config.Modulus) ); Server.Listener.Listening += ServerListenerOnListening; Server.Listener.Aborting += ServerListenerOnAborting; Server.Listener.ReceivedBytes += ServerListenerOnReceivedBytes; Server.PacketProcessor.PacketReceived += ServerPacketProcessorOnPacketReceived; // Open connection. Server.Listener.Socket.Connect(Config.ServerIp, Config.ServerPort); // TODO: Handle exception? if (!Server.Listener.Socket.Connected) { Shutdown("Unable to connect to target server."); } // Start listening. Task.Run(Server.Listener.StartListeningAsync).ConfigureAwait(false); }