Пример #1
0
        void IClientPacket.ExecutePacket(AsyncConnection connection, ByteBuffer packet)
        {
            uint objid = packet.ReadObjectIDRev();

            TORLog.Info("CharacterListRequest@" + objid);
            connection.SendPacket(new SMsg_CharacterListResponse(objid));
        }
Пример #2
0
        void IClientPacket.ExecutePacket(AsyncConnection connection, ByteBuffer packet)
        {
            uint objid = packet.ReadObjectIDRev();

            TORLog.Info("GetServerAddress@" + objid);
            //connection.SendPacket(new SMsg_ServerAddressResponse(objid, "swtor.privateserver.com"));
        }
Пример #3
0
 public static void ClientSignatureResponse(AsyncConnection con, string objectName, uint id, string signature)
 {
     TORLog.Info("ClentSignatureResponse: " + objectName + "@" + id + " = " + signature);
     if (objectName == "OmegaServerProxyObjectName")
     {
         con.SendPacket(new SMsg_ServerSignatureResponse(0x5050, "u796", "userentrypoint13", "9cf74d45:1a6cc459:6fa57dc2"));
         con.SendPacket(new SMsg_XMLSettings());
     }
 }
Пример #4
0
        void IClientPacket.ExecutePacket(AsyncConnection connection, ByteBuffer packet)
        {
            uint objid = packet.ReadObjectIDRev();

            packet.ReadByte();
            uint charid = packet.ReadUInt();

            TORLog.Info("CharacterSelectRequest@" + objid + " - " + charid);
            connection.SendPacket(new SMsg_CharacterSelectResponse(objid));
            connection.SendPacket(new SMsg_CharacterCurrentMap(objid, "ord_main", "4611686019802843831"));
            connection.SendPacket(new SMsg_CharacterAreaEnter(objid));
            connection.SendPacket(new SMsg_CharacterAreaServerSpec(objid, "ord_main", "4611686019802843831"));
        }
Пример #5
0
        public static void SendPacket(this AsyncConnection con, IServerPacket pkt)
        {
            byte opcode   = OpcodeManager.Instance.GetOpcode(pkt.GetType().Name);
            uint packetid = OpcodeManager.Instance.GetPacketID(pkt.GetType().Name);

            if (packetid == 0)
            {
                TORLog.Error("ERROR: No PacketID defined for " + pkt.GetType().Name);
                return;
            }
            ByteBuffer packet = new ByteBuffer(ByteOrder.LittleEndian);

            packet.WriteByte(opcode);
            packet.WriteInt(0);  // Length
            packet.WriteByte(0); // ChkByte
            packet.WriteUInt(packetid);
            pkt.WritePacket(con, packet);
            con.SendTORPacket(packet);
            TORLog.Network("PktSend @ " + con.GetHashCode() + " >> " + pkt.GetType().Name);
        }
Пример #6
0
        static void Main(string[] args)
        {
            Console.Title = "Nexus Shard Server";

            Console.WriteLine("Nexus Shard Server\n");
            Utility.WriteLegal();
            Console.WriteLine("");

            AsyncServer server = new AsyncServer(IPAddress.Parse("0.0.0.0"), 20063);

            server.Start();

            server.ConnectionAccepted += new AsyncServer.ConnectionAcceptedHandler(connection =>
            {
                TORLog.Network("CnxAccept => " + connection.GetHashCode());
                connection.DataReceived += new AsyncConnection.ConnectionDataReceivedHandler(data =>
                {
                    if (connection.State == 1)
                    {
                        // rsa packet
                        connection.SetState(2);
                        connection.SendPacket(new SMsg_ClientSignatureRequest("OmegaServerProxyObjectName", 0x0174F5));
                        return;
                    }

                    ByteBuffer buffer = new ByteBuffer(ByteOrder.LittleEndian, data);
                    byte opcode       = (byte)buffer.ReadByte();

                    byte[] len_data = buffer.ReadBytes(4);
                    byte chk        = (byte)buffer.ReadByte();
                    uint packetid   = buffer.ReadUInt();

                    if (chk != (byte)(opcode ^ len_data[0] ^ len_data[1] ^ len_data[2] ^ len_data[3]))
                    {
                        TORLog.Warn("Received packet with invalid checksum!");
                    }

                    if (opcode == 1) // Client Ping Packet
                    {
                        TORLog.Network("Ping from " + connection.GetHashCode() + " Seq = " + packetid);
                        ByteBuffer response = new ByteBuffer(ByteOrder.LittleEndian);
                        response.WriteByte(2);        // Pong OPC = 2
                        response.WriteInt(0);         // Pong Len
                        response.WriteByte(0);        // Pong Chk
                        response.WriteUInt(packetid); // Pong
                        response.WriteInt(0);
                        response.WriteInt(1);
                        response.WriteByte(0);
                        connection.SendTORPacket(response);
                        return;
                    }

                    string packetname = OpcodeManager.Instance.GetPacketName(opcode, packetid);

                    if (packetname == "")
                    {
                        TORLog.Warn("Received unknown packet from SWTOR client\nOpcode = 0x" + opcode.ToString("X2") + " -- PacketID = 0x" + packetid.ToString("X8"));
                        TORLog.Warn("--- dump ---");
                        TORLog.Warn(Utility.HexDump(data));
                    }
                    else
                    {
                        try
                        {
                            IClientPacket pkt = Activator.CreateInstance(Type.GetType("ShardServer.Packets.Client." + packetname)) as IClientPacket;
                            TORLog.Network("PktRecv @ " + connection.GetHashCode() + " << " + packetname);
                            pkt.ExecutePacket(connection, buffer);
                        }
                        catch (Exception ex)
                        {
                            TORLog.Error("Exception occured while processing " + packetname, ex);
                        }
                    }
                });
                // Send HELLO packet
                connection.SendClear(new byte[] { 0x03, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 });
                // State is 1
                connection.SetState(1);
                connection.EngageReading();
            });

            TORLog.Info("SHARD Server running, press Enter to exit ...");
            Console.ReadLine();
        }
Пример #7
0
        public static void RequestServerSignature(AsyncConnection con, string objectName)
        {
            uint   responseid = 0;
            string data1      = "";
            string data2      = "userentrypoint13";
            string sig        = "";

            switch (objectName)
            {
            case "timesource":
                responseid = 0x010006;
                data1      = "timesource";
                sig        = "462a9d1f";
                break;

            case "biomon":
                responseid = 0x02505e;
                data1      = "sp1u796[biomonserver:biomon]sylar501.biomon";
                sig        = "389fc8f0:9adcb7e6";
                break;

            case "worldserver":
                responseid = 0x035059;
                data1      = "sp2u796[WorldServer:worldserver]sylar501.worldserver";
                sig        = "51e518d9:92367cb3:29f2db17";
                break;

            case "gamesystemsserver":
                responseid = 0x05505a;
                data1      = "sp3u796[GameSystemsServer:gamesystemsserver]sylar501.gamesystemsserver";
                sig        = "450a2825";
                break;

            case "chatgateway":
                responseid = 0x06505c;
                data1      = "sp4u796[ChatGateway:chatgateway]sylar501.chatgateway";
                sig        = "900005df";
                break;

            case "auctionserver":
                responseid = 0x07505b;
                data1      = "sp5u796[AuctionServer:auctionserver]sylar501.auctionserver";
                sig        = "9ce839f7";
                break;

            case "mailserver":
                responseid = 0x085058;
                data1      = "sp6u796[Mail:mailserver]sylar501.mailserver";
                sig        = "9759aa23";
                break;

            case "trackingserver":
                responseid = 0x09505d;
                data1      = "sp7u796[TrackingServer:trackingserver]sylar501.trackingserver";
                sig        = "c5b320c1:8cebf93e";
                break;

            case "areaserver":
                responseid = 0x046953;
                data1      = "sp8u796[AreaServer-ord_main-4611686019802843831-1-:areaserver]sylar501.areaserver";
                sig        = "91ac5777:62060b0:29f2db17";
                break;

            default:
                TORLog.Error("Unknown server signature for " + objectName);
                return;
            }
            con.SendPacket(new SMsg_ServerSignatureResponse(responseid, data1, data2, sig));
        }
Пример #8
0
 public static void RequestClientSignature(AsyncConnection con, string objectName, uint id)
 {
     con.SendPacket(new SMsg_ClientSignatureRequest(objectName, id));
     TORLog.Info("RequestClientSignature: " + objectName + "@" + id);
 }
Пример #9
0
 public void ExecutePacket(AsyncConnection connection, ByteBuffer packet)
 {
     TORLog.Info(connection.GetHashCode() + " leaving the Shard Server.");
     connection.Close();
 }