Ejemplo n.º 1
0
        static void Main()
        {
            db            = new PangyaEntities();
            Console.Title = string.Format("Pangya Fresh Up! AuthServer - LOGIN: {0}, GAMES: {1}, MESSENGER: {2}", 0, 0, 0);

            AuthKey = "3493ef7ca4d69f54de682bee58be4f93"; //Unogames em MD5

            //Inicia servidor
            Server = new AuthServer();
            Server.Start();
            Server.OnPacketReceived += TcpServer_OnPacketReceived;

            var servers = db.Pangya_Server.Where(c => c.Active == true && c.Port != 7997).ToList();

            foreach (var _server in servers)
            {
                db.Database.SqlQuery <PangyaEntities>($"UPDATE [dbo].[Pangya_Server] Set Active = '{0}' where ServerID = '{_server.ServerID}'").FirstOrDefault();
            }
            for (; ;)
            {
                var comando = Console.ReadLine().Split(new char[] { ' ' }, 2);
                switch (comando[0].ToLower())
                {
                case "": break;

                case "notice":
                {
                    var message = comando[1];

                    Server.Send(AuthClientTypeEnum.GameServer, new AuthPacket()
                        {
                            ID = AuthPacketEnum.SERVER_RELEASE_NOTICE, Message = new { mensagem = message }
                        });
                }
                break;

                case "ticket":
                {
                    var message = comando[1];

                    Server.Send(AuthClientTypeEnum.GameServer, new AuthPacket()
                        {
                            ID = AuthPacketEnum.SERVER_RELEASE_TICKET, Message = new { GetNickName = "ADMIN", GetMessage = message }
                        });
                }
                break;

                case "quit":
                    Console.WriteLine("The server was stopped!");
                    Environment.Exit(1);
                    break;

                case "limpar":
                case "cls":
                case "clear":
                    Console.Clear();
                    break;

                default:
                    Console.WriteLine("Comando inexistente");
                    break;
                }
            }
        }
Ejemplo n.º 2
0
        static void TcpServer_OnPacketReceived(AuthClient client, AuthPacket packet)
        {
            WriteConsole.WriteLine($"[SYNC_CALL_PACKET]: [{packet.ID}, {client.Data.Name}]", ConsoleColor.Cyan);
            switch (packet.ID)
            {
            case AuthPacketEnum.SERVER_KEEPALIVE:
            {
                client.Send(new AuthPacket()
                    {
                        ID = AuthPacketEnum.SERVER_KEEPALIVE
                    });
            }
            break;

            case AuthPacketEnum.SERVER_CONNECT:
            {
                var response = new AuthPacket();

                if (client.Data.Key != AuthKey)
                {
                    response.Message = new
                    {
                        Success   = false,
                        Exception = "Chave de autenticação inválida"
                    };

                    Server.Send(client, response);
                    Server.DisconnectClient(client);
                }
                else
                {
                    response.Message = new
                    {
                        Success = true,
                    };

                    Server.Send(client, response);
                }
            }
            break;

            case AuthPacketEnum.RECEIVES_USER_UID:
            {
                HandlePlayerUID(packet);
            }
            break;

            case AuthPacketEnum.DISCONNECT_PLAYER_ALL_ON_SERVERS:
            {
                HandlePlayerDisconnect(packet);
            }
            break;

            case AuthPacketEnum.SERVER_RELEASE_CHAT:
            {
                byte Type = packet.Message.IsGM;
                if (Type == 15 || Type == 4)
                {
                    var response = new AuthPacket
                    {
                        ID      = AuthPacketEnum.SERVER_RELEASE_CHAT,
                        Message = new { PlayerNick = packet.Message.GetNickName, PlayerMessage = packet.Message.GetMessage }
                    };
                    Server.Send(AuthClientTypeEnum.GameServer, response);
                }
            }
            break;

            case AuthPacketEnum.SERVER_RELEASE_TICKET:
            {
                HandleTicket(packet);
            }
            break;

            case AuthPacketEnum.SERVER_RELEASE_BOXRANDOM:
            {
                HandleWinBoxRandomNotice(packet);
            }
            break;

            case AuthPacketEnum.SERVER_RELEASE_NOTICE_GM:
            {
                HandleNotice(packet);
            }
            break;

            case AuthPacketEnum.SERVER_RELEASE_NOTICE:
            {
                HandleNotice(packet);
            }
            break;

            case AuthPacketEnum.LOGIN_RESULT:
            {
                HandleLogin(client, packet);
            }
            break;

            case AuthPacketEnum.SERVER_COMMAND:
                break;

            default:
                WriteConsole.WriteLine("[SYNC_REQUEST_PACKET_UNK]: " + packet.ID);
                break;
            }
        }
Ejemplo n.º 3
0
        static void TcpServer_OnPacketReceived(AuthClient client, AuthPacket packet)
        {
            WriteConsole.WriteLine($"[SYNC_CALL_PACKET]: [{packet.ID}, {client.Data.Name}]", ConsoleColor.Cyan);
            switch (packet.ID)
            {
            case AuthPacketEnum.SERVER_KEEPALIVE:
            {
                client.Send(new AuthPacket()
                    {
                        ID = AuthPacketEnum.SERVER_KEEPALIVE
                    });
            }
            break;

            case AuthPacketEnum.SERVER_CONNECT:
            {
                var response = new AuthPacket();

                if (client.Data.Key != AuthKey)
                {
                    response.Message = new
                    {
                        Success   = false,
                        Exception = "Chave de autenticação inválida"
                    };

                    Server.Send(client, response);
                    Server.DisconnectClient(client);
                }
                else
                {
                    response.Message = new
                    {
                        Success = true,
                    };

                    Server.Send(client, response);
                }
            }
            break;

            case AuthPacketEnum.RECEIVES_USER_UID:
            {
                HandlePlayerUID(packet);
            }
            break;

            case AuthPacketEnum.SERVER_UPDATE:
            {
                ServerSettings ClientData;
                ClientData = new ServerSettings()
                {
                    UID             = packet.Message._data.UID,
                    Type            = packet.Message._data.Type,
                    AuthServer_Ip   = packet.Message._data.AuthServer_Ip,
                    AuthServer_Port = packet.Message._data.AuthServer_Port,
                    Port            = packet.Message._data.Port,
                    MaxPlayers      = packet.Message._data.MaxPlayers,
                    IP          = packet.Message._data.IP,
                    Key         = packet.Message._data.Key,
                    Name        = packet.Message._data.Name,
                    BlockFunc   = packet.Message._data.BlockFunc,
                    EventFlag   = packet.Message._data.EventFlag,
                    GameVersion = packet.Message._data.GameVersion,
                    ImgNo       = packet.Message._data.ImgNo,
                    Property    = packet.Message._data.Property,
                    Version     = packet.Message._data.Version,
                };
                client.Data = ClientData;

                client.Data.Update();
            }
            break;

            case AuthPacketEnum.DISCONNECT_PLAYER_ALL_ON_SERVERS:
            {
                HandlePlayerDisconnect(packet);
            }
            break;

            case AuthPacketEnum.SERVER_RELEASE_CHAT:
            {
                byte Type = packet.Message.IsGM;
                if (Type == 15 || Type == 4)
                {
                    var response = new AuthPacket
                    {
                        ID      = AuthPacketEnum.SERVER_RELEASE_CHAT,
                        Message = new { PlayerNick = packet.Message.GetNickName, PlayerMessage = packet.Message.GetMessage }
                    };
                    Server.Send(AuthClientTypeEnum.GameServer, response);
                }
            }
            break;

            case AuthPacketEnum.SERVER_RELEASE_TICKET:
            {
                HandleTicket(packet);
            }
            break;

            case AuthPacketEnum.SERVER_RELEASE_BOXRANDOM:
            {
                HandleWinBoxRandomNotice(packet);
            }
            break;

            case AuthPacketEnum.SERVER_RELEASE_NOTICE_GM:
            {
                HandleNotice(packet);
            }
            break;

            case AuthPacketEnum.SERVER_RELEASE_NOTICE:
            {
                HandleNotice(packet);
            }
            break;

            case AuthPacketEnum.LOGIN_RESULT:
            {
                HandleLogin(client, packet);
            }
            break;

            case AuthPacketEnum.SERVER_COMMAND:
                break;

            default:
                WriteConsole.WriteLine("[SYNC_REQUEST_PACKET_UNK]: " + packet.ID);
                break;
            }
        }