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; } } }
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; } }
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; } }