public void OnClientPingConfig() { try { PayloadWriter pWriter = new PayloadWriter(); byte[] plContent = { 0x00, 0x00, 0x0F, 0xA0, 0x00, 0x00, 0x0F, 0xA0, 0x00, 0x00, 0x0F, 0xA0, 0x00, 0x00, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 }; pWriter.WriteData(plContent); OutPacket oPacket = new OutPacket(pWriter.GetPayload(CenterOpcodes.ENU_CLIENT_PING_CONFIG_ACK), _CryptoHandler, _AuthHandler, Prefix, ++Count); Send(oPacket); } catch (Exception ex) { Log.Error(ex.Message); Close(); } }
public void NotifySHAFile(ClientSession cs) { try { PayloadWriter pWriter = new PayloadWriter(); pWriter.WriteData(0); pWriter.WriteData(SHAFileList.Length); for (int i = 0; i <= SHAFileList.Length - 1; i++) { pWriter.WriteData(SHAFileList[i].Length * 2); pWriter.WriteData(SHAFileList[i]); } OutPacket oPacket = new OutPacket(pWriter.GetPayload(CenterOpcodes.ENU_SHAFILENAME_LIST_ACK), cs._CryptoHandler, cs._AuthHandler, cs.Prefix, ++cs.Count); cs.Send(oPacket); } catch { } }
public void SendChannelNews(ClientSession cs) { try { PayloadWriter pWritter = new PayloadWriter(); byte[] plContent = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }; pWritter.WriteData(plContent); OutPacket oPacket = new OutPacket(pWritter.GetPayload(CenterOpcodes.ENU_CHANNEL_NEWS_NOT), cs._CryptoHandler, cs._AuthHandler, cs.Prefix, ++cs.Count); cs.Send(oPacket); } catch (Exception ex) { Log.Error("ChannelNews: {0}", ex.Message); while (true) { ; } } }
public ClientSession(Socket socket) : base(socket) { Log.Inform("Cliente conectado."); IP = BitConverter.ToUInt32(IPAddress.Parse(GetIP()).GetAddressBytes(), 0); InitiateReceive(2, true); // Generate new security keys CryptoKey = Generate.Key(); _CryptoHandler = new CryptoHandler(CryptoKey); AuthKey = Generate.Key(); _AuthHandler = new AuthHandler(AuthKey); short TempPrefix = Generate.Prefix(); try { PayloadWriter pWriter = new PayloadWriter(); pWriter.WriteData(TempPrefix); pWriter.WriteData((int)8); pWriter.WriteData(_AuthHandler.HmacKey); pWriter.WriteData((int)8); pWriter.WriteData(_CryptoHandler.Key); byte[] plContent = { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x00, 0x00 }; pWriter.WriteData(plContent); OutPacket oPacket = new OutPacket(pWriter.GetPayload(CenterOpcodes.SET_SECURITY_KEY_NOT), tempCryptoHandler, tempAuthHandler, Prefix, ++Count); Send(oPacket); } catch (Exception ex) { Log.Error(ex.Message); Close(); } Prefix = TempPrefix; try { PayloadWriter pWritter = new PayloadWriter(); byte[] plContent = { 0x00, 0x00, 0x27, 0x10 }; pWritter.WriteData(plContent); OutPacket oPacket = new OutPacket(pWritter.GetPayload(CenterOpcodes.ENU_WAIT_TIME_NOT), _CryptoHandler, _AuthHandler, Prefix, ++Count); Send(oPacket); } catch (Exception ex) { Log.Error(ex.Message); Close(); } }
public void SendServerList(ClientSession cs) { try { Database db = new Database(); db.OpenDB(); MySqlDataReader sReader = db.Query("SELECT id, name, ip, port, description FROM servers"); Log.SqlQuerys(db.dbcmd.CommandText); DataTable dt = new DataTable(); dt.Load(sReader); sReader.Close(); db.dbconn.Close(); int nServers = dt.Rows.Count; PayloadWriter pWriter = new PayloadWriter(); byte[] plContent = { 0x00, 0x00, 0x01, 0x43, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; byte[] plContent1 = { 0x00, 0x00, 0x00, 0x00 }; pWriter.WriteData(nServers); // Number of servers int serverNumber; string serverName; string serverIP; short serverPort; string serverDesc; foreach (DataRow row in dt.Rows) { serverNumber = (int)row[0]; serverName = (string)row[1]; serverIP = (string)row[2]; serverPort = (short)row[3]; serverDesc = (string)row[4]; // Server info pWriter.WriteData(serverNumber); // Server number pWriter.WriteData(serverNumber); // Server number? pWriter.WriteData(serverName.Length * 2); pWriter.WriteUnicodeString(serverName); pWriter.WriteData(serverIP.Length); pWriter.WriteData(serverIP); pWriter.WriteData(serverPort); pWriter.WriteData(0); // Atualmente curtiu? pWriter.WriteData(500); // Likes máximos? pWriter.WriteData(plContent); pWriter.WriteData(serverIP.Length); // Send IP again pWriter.WriteData(serverIP); pWriter.WriteData(serverDesc.Length * 2); pWriter.WriteUnicodeString(serverDesc); pWriter.WriteData(plContent1); } OutPacket oPacket = new OutPacket(pWriter.GetPayload(CenterOpcodes.ENU_SERVER_LIST_NOT), cs._CryptoHandler, cs._AuthHandler, cs.Prefix, ++cs.Count); cs.Send(oPacket); } catch (Exception e) { Log.Error(e); } }