namespace Holo.Socketservers { using Holo; using Holo.Managers; using Holo.Virtual.Users; using System; using System.Net; using System.Net.Sockets; using System.Text; public static class musSocketServer { private static Socket 5AAA1; private static int 6AAAA; private static string 7AAA1; private static void ᙄ(IAsyncResult ᙂ) { new ᙃ(((Socket) ᙂ.AsyncState).EndAccept(ᙂ)); 5AAA1.BeginAccept(new AsyncCallback(musSocketServer.ᙄ), 5AAA1); } internal static bool Init(int bindPort, string musHost) { 6AAAA = bindPort; 7AAA1 = musHost; 5AAA1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Out.WriteLine("Avvio del server MUS asincrono sulla porta " + bindPort + "..."); try { 5AAA1.Bind(new IPEndPoint(IPAddress.Any, bindPort)); 5AAA1.Listen(0x19); 5AAA1.BeginAccept(new AsyncCallback(musSocketServer.ᙄ), 5AAA1); Out.WriteLine("Server MUS asincrono avviato sulla porta " + bindPort); Out.WriteLine("Ricevo dati MUS da " + musHost); return true; } catch { Out.WriteError("Errore durante il tentativo di avvio del server MUS asincrono dalla porta " + bindPort); Out.WriteError("Porta " + bindPort + " invailida o gi\x00e0 occupata."); return false; } } private class ᙃ { private Socket ᙅ; private byte[] 4AAAA = new byte[0x2711]; internal ᙃ(Socket Connector) { this.ᙅ = Connector; Connector.BeginReceive(this.4AAAA, 0, this.4AAAA.Length, SocketFlags.None, new AsyncCallback(this.dataArrival), null); } private void dataArrival(IAsyncResult iAr) { try { int count = this.ᙅ.EndReceive(iAr); string str = System.Text.Encoding.ASCII.GetString(this.4AAAA, 0, count); string str2 = str.Substring(0, 4); string[] strArray = str.Substring(4).Split(new char[] { Convert.ToChar(2) }); Out.WriteLine("Ricevo: " + str); switch (str2) { case "HKTM": { int userID = int.Parse(strArray[0]); string str3 = strArray[1]; userManager.getUser(userID).sendData("BK" + str3); return; } case "HKMW": { int num3 = int.Parse(strArray[0]); string str4 = strArray[1]; userManager.getUser(num3).sendData("B!" + str4 + Convert.ToChar(2)); return; } case "HKUK": { int num4 = int.Parse(strArray[0]); string moderatorMessage = strArray[1]; virtualUser user = userManager.getUser(num4); if (user.Room != null) { user.Room.removeUser(user.roomUser.roomUID, true, moderatorMessage); } return; } case "HKAR": { byte rank = byte.Parse(strArray[0]); bool includeHigher = strArray[1] == "1"; userManager.sendToRank(rank, includeHigher, "BK" + strArray[2]); return; } case "HKSB": { int num6 = int.Parse(strArray[0]); string str7 = strArray[1]; virtualUser user2 = userManager.getUser(num6); user2.sendData("@c" + str7); user2.Disconnect(0x3e8); return; } case "HKRC": catalogueManager.Init(); return; case "UPRA": userManager.getUser(int.Parse(strArray[0])).refreshAppearance(true, true, true); return; case "UPRC": userManager.getUser(int.Parse(strArray[0])).refreshValueables(true, false); return; case "UPRT": userManager.getUser(int.Parse(strArray[0])).refreshValueables(false, true); return; case "UPRS": { virtualUser user3 = userManager.getUser(int.Parse(strArray[0])); user3.refreshClub(); user3.refreshBadges(); return; } case "UPRH": userManager.getUser(int.Parse(strArray[0])).refreshHand("new"); return; } } catch { } } } } }