Пример #1
0
 public static void RefreshAccount(Account player, bool isConnect)
 {
     Auth_SyncNet.UpdateGSCount(0);
     AccountManager.getInstance().getFriendlyAccounts(player.FriendSystem);
     for (int index = 0; index < player.FriendSystem._friends.Count; ++index)
     {
         Friend     friend  = player.FriendSystem._friends[index];
         PlayerInfo player1 = friend.player;
         if (player1 != null)
         {
             GameServerModel server = ServersXML.getServer((int)player1._status.serverId);
             if (server != null)
             {
                 SEND_REFRESH_ACC.SendRefreshPacket(0, player.player_id, friend.player_id, isConnect, server);
             }
         }
     }
     if (player.clan_id <= 0)
     {
         return;
     }
     for (int index = 0; index < player._clanPlayers.Count; ++index)
     {
         Account clanPlayer = player._clanPlayers[index];
         if (clanPlayer != null && clanPlayer._isOnline)
         {
             GameServerModel server = ServersXML.getServer((int)clanPlayer._status.serverId);
             if (server != null)
             {
                 SEND_REFRESH_ACC.SendRefreshPacket(1, player.player_id, clanPlayer.player_id, isConnect, server);
             }
         }
     }
 }
Пример #2
0
 public static void SendRefreshPacket(int type, long playerId, long memberId, bool isConnect, GameServerModel gs)
 {
     using (SendGPacket sendGpacket = new SendGPacket())
     {
         sendGpacket.writeH((short)11);
         sendGpacket.writeC((byte)type);
         sendGpacket.writeC(isConnect);
         sendGpacket.writeQ(playerId);
         sendGpacket.writeQ(memberId);
         Auth_SyncNet.SendPacket(sendGpacket.mstream.ToArray(), gs.Connection);
     }
 }
 public static void SendRefreshPacket(int type, long playerId, long memberId, bool isConnect, GameServerModel gs)
 {
     using (SendGPacket pk = new SendGPacket())
     {
         pk.writeH(11);
         pk.writeC((byte)type);
         pk.writeC(isConnect);
         pk.writeQ(playerId);
         pk.writeQ(memberId);
         Auth_SyncNet.SendPacket(pk.mstream.ToArray(), gs._syncConn);
     }
 }
        /// <summary>
        /// Fecha a conexão do cliente.
        /// </summary>
        /// <param name="destroyConn">Destruir conexão?</param>
        /// <param name="time">Tempo de espera para cancelar o recebimento de pacotes (milissegundos)</param>
        public void Close(bool destroyConnection, int time = 0)
        {
            if (closed)
            {
                return;
            }

            try
            {
                closed = true;
                LoginManager.RemoveSocket(this);
                Account player = _player;
                if (destroyConnection)
                {
                    if (player != null)
                    {
                        player.setOnlineStatus(false);
                        if (player._status.serverId == 0)
                        {
                            SEND_REFRESH_ACC.RefreshAccount(player, false);
                        }
                        player._status.ResetData(player.player_id);
                        player.SimpleClear();
                        player.updateCacheInfo();
                        _player = null;
                    }
                    _client.Close(time);
                    Thread.Sleep(time);
                    Dispose();
                }
                else if (player != null)
                {
                    player.SimpleClear();
                    player.updateCacheInfo();
                    _player = null;
                }
                Auth_SyncNet.UpdateAuthCount(0);
            }
            catch (Exception ex)
            {
                SaveLog.fatal(ex.ToString());
                Printf.b_danger("[LoginClient.Close] Erro fatal!");
            }
        }
Пример #5
0
 public void Close(int time, bool destroyConnection)
 {
     if (this.closed)
     {
         return;
     }
     try
     {
         this.closed = true;
         LoginManager.RemoveSocket(this);
         Account player = this._player;
         if (destroyConnection)
         {
             if (player != null)
             {
                 player.setOnlineStatus(false);
                 if (player._status.serverId == (byte)0)
                 {
                     SEND_REFRESH_ACC.RefreshAccount(player, false);
                 }
                 player._status.ResetData(player.player_id);
                 player.SimpleClear();
                 player.updateCacheInfo();
                 this._player = (Account)null;
             }
             this._client.Close(time);
             Thread.Sleep(time);
             this.Dispose();
         }
         else if (player != null)
         {
             player.SimpleClear();
             player.updateCacheInfo();
             this._player = (Account)null;
         }
         Auth_SyncNet.UpdateGSCount(0);
     }
     catch (Exception ex)
     {
         Logger.warning("[LoginClient.Close] " + ex.ToString());
     }
 }
        public static void RefreshAccount(Account player, bool isConnect)
        {
            Auth_SyncNet.UpdateAuthCount(0);
            AccountManager.getInstance().getFriendlyAccounts(player.FriendSystem);
            for (int i = 0; i < player.FriendSystem._friends.Count; i++)
            {
                Friend     friend = player.FriendSystem._friends[i];
                PlayerInfo info   = friend.player;
                if (info != null)
                {
                    GameServerModel gs = ServersXML.getServer(info._status.serverId);
                    if (gs == null)
                    {
                        continue;
                    }

                    SendRefreshPacket(0, player.player_id, friend.player_id, isConnect, gs);
                }
            }
            if (player.clan_id > 0)
            {
                for (int i = 0; i < player._clanPlayers.Count; i++)
                {
                    Account member = player._clanPlayers[i];
                    if (member != null && member._isOnline)
                    {
                        GameServerModel gs = ServersXML.getServer(member._status.serverId);
                        if (gs == null)
                        {
                            continue;
                        }

                        SendRefreshPacket(1, player.player_id, member.player_id, isConnect, gs);
                    }
                }
            }
        }
        private static void Main(string[] args)
        {
            Printf.blue("[Licença de uso]", false);
            Printf.blue("[+] Esta é uma versão compilada para Project Bloodi!!!", false);
            Printf.blue("[+] https://github.com/luisfeliperm", false);
            Printf.info("\n\n\n Iniciando servidor...", false);
            Thread.Sleep(5000);
            Console.Clear();

            Console.Title      = "PointBlank - Auth";
            SaveLog.aplication = "auth";
            SaveLog.checkDirectorys();

            StringBuilder txtHeader = new StringBuilder();

            txtHeader.Append(@"=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=").Append('\n');
            txtHeader.Append(@"             S E R V E R     A U T H").Append('\n');
            txtHeader.Append(@"").Append('\n');
            txtHeader.Append(@" + [UDP3 Private]").Append('\n');
            txtHeader.Append(@" + Release 2019").Append('\n');
            txtHeader.Append(@" + ...Version: 4.0.0").Append('\n');
            txtHeader.Append(@" + Distro @luisfeliperm").Append('\n');
            txtHeader.Append(@" + [email protected]").Append('\n');
            txtHeader.Append(@"=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=");
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(txtHeader.ToString());

            // Validações
            System.Reflection.Assembly assembly    = System.Reflection.Assembly.GetExecutingAssembly();
            FileVersionInfo            fileVersion = FileVersionInfo.GetVersionInfo(assembly.Location);

            if (!Compatible.Check(fileVersion.FileVersion, "auth") || !ServerLicense.check() || !ServerPasswd.Compare(args))
            {
                Console.ReadKey();
                return;
            }

            // Threads Essentials
            ConfigGA.Load();
            ConfigMaps.Load();
            ServerConfig.Load();
            EventLoader.LoadAll();
            DirectxMD5.Load();
            BasicInventoryXML.Load();
            ServersXML.Load();
            MissionCardXML.LoadBasicCards(2);
            MapsXML.Load();
            ShopManager.Load(2);
            CupomEffectManager.LoadCupomFlags();
            MissionsXML.Load();
            Auth_SyncNet.Start();
            bool started = LoginManager.Start();

            if (ConfigGA.isTestMode)
            {
                Printf.info("[WARN] Modo teste ligado", false);
            }

            Printf.info("[INFO] Started in " + DateTime.Now.ToString("yy/MM/dd HH:mm:ss"), false);

            if (started)
            {
                cpuMonitor.updateRAM2();
            }
            Process.GetCurrentProcess().WaitForExit();
        }
Пример #8
0
        public override void run()
        {
            try
            {
                /*
                 * switch (login)
                 * {
                 *  case "1":
                 *      // ID incorreta ou inexistente (Fecha Client)
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.LOGIN_EVENT_ERROR, login, 0));
                 *      break;
                 *  case "2":
                 *      // Este usuario esta conectado, tente conectar novamente mais tarde (Fecha)
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_ALREADY_LOGIN_WEB, login, 0));
                 *      break;
                 *  case "3":
                 *      // Usuario ou senha incorreta
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_USER_PASS_FAIL, login, 0));
                 *      break;
                 *  case "4":
                 *      // A conexão foi finalizada
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_LOGOUTING, login, 0));
                 *      break;
                 *  case "5":
                 *      // Tempo para tentativa de conexão com o servidor excedido, tente mais tarde
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_TIME_OUT_1, login, 0));
                 *      break;
                 *  case "6":
                 *      // Falha ao logar, tente conectar mais tarde
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_TIME_OUT_2, login, 0));
                 *      break;
                 *  case "7":
                 *      // Sua conta está bloqueada
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_ACCOUNT, login, 0));
                 *      break;
                 *  case "8":
                 *      // Devido ao excesso de usuarios no servidor, não foi possivel conectar
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_SERVER_USER_FULL, login, 0));
                 *      break;
                 *  case "9":
                 *      // Falha na conexão com o servidor, tente mais tarde
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_DB_BUFFER_FAIL, login, 0));
                 *      break;
                 *  case "10":
                 *      // ID ou senha incorretos
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_ID_PASS_INCORRECT, login, 0));
                 *      break;
                 *  case "11":
                 *      // ID ou senha incorretos
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_ID_PASS_INCORRECT2, login, 0));
                 *      break;
                 *  case "12":
                 *      // Falha na autenticação do email
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_EMAIL_AUTH_ERROR, login, 0));
                 *      break;
                 *  case "13":
                 *      // IP Bloqueado
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_IP, login, 0));
                 *      break;
                 *  case "14":
                 *      // STBL_IDX_EP_LOGIN_OK_EMAIL_ALERT_2
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_EMAIL_ALERT2, login, 0));
                 *      break;
                 *  case "15":
                 *      // STR_POPUP_MESSAGE_MIGRATION
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_MIGRATION, login, 0));
                 *      break;
                 *  case "16":
                 *      // ID incorreta ou inexistente (Fecha)
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_NON_STRING, login, 0));
                 *      break;
                 *  case "17":
                 *      // Login bloqueado devido a região
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_COUNTRY, login, 0));
                 *      break;
                 *  case "18":
                 *      // Usuario ou senha incorreta
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_INVALID_ACCOUNT, login, 0));
                 *      break;
                 *  case "19":
                 *      // VAZIO (Fecha)
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_PC_BLOCK, login, 0));
                 *      break;
                 *  case "20":
                 *      // Falha ao listar inventario, o jogo será fechado (Fecha)
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_INVENTORY_FAIL, login, 0));
                 *      break;
                 *  case "21":
                 *      // Sua conta está bloqueada
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_INNER, login, 0));
                 *      break;
                 *  case "22":
                 *      // Sua conta está bloqueada
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_OUTER, login, 0));
                 *      break;
                 *  case "23":
                 *      // Sua conta está bloqueada
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_GAME, login, 0));
                 *      break;
                 *
                 * }
                 *
                 * return;
                 */



                string         Requisto_msg = "";
                EventErrorEnum erro         = 0;
                bool           block        = false;


                if (ConfigGA.LauncherKey != 0 && key != ConfigGA.LauncherKey)
                {
                    Requisto_msg = "Chave: " + key + " não compatível [" + login + "]";
                    block        = true;
                }
                else if (!ConfigGA.GameLocales.Contains(GameLocale))
                {
                    erro         = EventErrorEnum.Login_BLOCK_COUNTRY;
                    Requisto_msg = "País: " + GameLocale + " do cliente bloqueado [" + login + "]";
                }
                else if (GameVersion != ServerConfig.ClientVersion)
                {
                    Requisto_msg = "Versão: " + GameVersion + " não compatível [" + login + "]";
                }

                else if (ConfigGA.UserFileList != "0" && UserFileListMD5.ToLower() != ConfigGA.UserFileList.ToLower())
                {
                    Requisto_msg = "UserFileList: " + UserFileListMD5 + " não compatível [" + login + "]";
                }
                else if (ConfigGA.ValidIP &&
                         (
                             !LocalIP.checkInSubNet(IPAddress.Parse("192.168.0.0"), 16) &&
                             !LocalIP.checkInSubNet(IPAddress.Parse("10.0.0.0"), 8) &&
                             !LocalIP.checkInSubNet(IPAddress.Parse("172.16.0.0"), 12)
                         )
                         )
                {
                    erro         = EventErrorEnum.Login_BLOCK_IP;
                    Requisto_msg = "IP local inválido. {" + LocalIP + "} [" + login + "]";
                    block        = true;
                }
                else if (!DirectxMD5.IsValid(d3d9MD5.ToLower()))
                {
                    Requisto_msg = "d3d9MD5 nao listada: " + d3d9MD5 + " [" + login + "]";
                    block        = true;
                }



                if (!allowBot(login, password) && !ConfigGA.isTestMode)
                {
                    if (Requisto_msg != "")
                    {
                        Requisto_msg = "[" + PublicIP + "] " + Requisto_msg;

                        if (block)
                        {
                            Firewall.sendBlock(PublicIP, Requisto_msg, 2);
                        }

                        if (erro == 0 || ConfigGA.modeAtack)
                        {
                            _client.Close(true);
                        }
                        else
                        {
                            _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.LOGIN_EVENT_ERROR, login, 0));
                            _client.Close(false);
                        }

                        if (!ConfigGA.modeAtack)
                        {
                            SaveLog.LogLoginFaill(Requisto_msg);
                        }

                        Printf.info(Requisto_msg);

                        return;
                    }
                    if (passSize > ConfigGA.maxPassSize || passSize < ConfigGA.minPassSize)
                    {
                        _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_INVALID_ACCOUNT, login, 0));
                        SaveLog.LogLoginFaill("LOGIN - Tamanho de senha invalido " + passSize + " [" + login + "]");
                        return;
                    }
                    if (loginSize > ConfigGA.maxLoginSize || loginSize < ConfigGA.minLoginSize)
                    {
                        _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_INVALID_ACCOUNT, login, 0));
                        SaveLog.LogLoginFaill("LOGIN - Tamanho de login invalido " + loginSize + " [" + login + "]");
                        return;
                    }
                }

                // Verifica se o MAC ou IP tá bloqueado
                if (Banimento.GetBanStatus(MacAddress))
                {
                    Printf.info("Usuario: " + login + " tentou logar com MAC bloqueado");
                    SaveLog.LogLoginFaill("MAC " + MacAddress.ToString() + " banido [" + login + "]");
                    _client.SendPacket((SendPacket) new BASE_LOGIN_PAK(EventErrorEnum.Login_PC_BLOCK, login, 0));
                    _client.Close(false);
                    return;
                }

                _client._player = AccountManager.getInstance().getAccountDB(login, null, 0, 0);
                if (_client._player == null)
                {
                    _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_INVALID_ACCOUNT, login, 0L));
                    _client.Close(false);
                    return;
                }
                Account p = _client._player;
                if (p == null)
                {
                    _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_INVALID_ACCOUNT, login, 0));
                    SaveLog.LogLoginFaill("Conta retornada da DB é nula [" + login + "]");
                    _client.Close(false);
                    return;
                }
                if (!ConfigGA.isTestMode && !p.password.Equals(password))
                {
                    _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_ID_PASS_INCORRECT2, login, 0));
                    SaveLog.LogLoginFaill("Senha inválida [" + login + "]");
                    return;
                }
                if (p.access < 0)
                {
                    Printf.info("Usuario: " + login + " banido tentou logar");
                    SaveLog.LogLoginFaill("LOGIN - Banido permanente [" + login + "]");
                    _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_ACCOUNT, login, 0));
                    _client.Close(false);
                    return;
                }


                if (ConfigGA.onlyGM && !p.IsGM())
                {
                    SaveLog.LogLoginFaill("LOGIN - Login cancelado, apenas GM! [" + login + "]");
                    _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_TIME_OUT_2, login, 0));
                    _client.Close(false);
                    return;
                }

                Account pCache = AccountManager.getInstance().getAccount(p.player_id, true);
                if (p._isOnline) // Usuario já esta online
                {
                    _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_ALREADY_LOGIN_WEB, login, 0));
                    SaveLog.LogLoginFaill("LOGIN - Conta online [" + login + "]");
                    if (pCache != null && pCache._connection != null)
                    {
                        pCache.SendPacket(new AUTH_ACCOUNT_KICK_PAK(1));
                        pCache.SendPacket(new SERVER_MESSAGE_ERROR_PAK(2147487744));
                        pCache.Close(1000);
                    }
                    else
                    {
                        Auth_SyncNet.SendLoginKickInfo(p);
                    }
                    _client.Close(false);
                    return;
                }

                if (Banimento.checkBan(p.player_id))
                {
                    SaveLog.LogLoginFaill("LOGIN - Conta com ban ativo [" + login + "]");
                    _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_ACCOUNT, login, 0));
                    _client.Close(false);
                    return;
                }


                //  Registrar ACESSO
                ComDiv.updateDB("contas", "player_id", p.player_id, new string[] { "lastip", "last_mac", "last_login" }, PublicIP, MacAddress, long.Parse(DateTime.Now.ToString("yyMMddHHmm")));

                // Faz login
                p.SetPlayerId(p.player_id, 31);
                p._clanPlayers = ClanManager.getClanPlayers(p.clan_id, p.player_id);
                _client.SendPacket(new BASE_LOGIN_PAK(0, login, p.player_id));
                _client.SendPacket(new AUTH_WEB_CASH_PAK(0));
                if (p.clan_id > 0)
                {
                    _client.SendPacket(new BASE_USER_CLAN_MEMBERS_PAK(p._clanPlayers));
                }
                p._status.SetData(4294967295, p.player_id);
                p._status.updateServer(0);
                p.setOnlineStatus(true);
                if (pCache != null)
                {
                    pCache._connection = _client;
                }
                SEND_REFRESH_ACC.RefreshAccount(p, true);

                if (ConfigGA.displayLogin)
                {
                    Printf.sucess("[" + login + "] Autenticou-se " + PublicIP);
                }

                SaveLog.info("[LOGIN] user:"******"; " + PublicIP + "; " + MacAddress);

                // Libera no firewall
                Firewall.sendAllow(PublicIP);
            }
            catch (Exception ex)
            {
                SaveLog.fatal(ex.ToString());
                Printf.b_danger("[BASE_LOGIN_REC.run] Erro fatal!");
            }
        }
Пример #9
0
 public override void run()
 {
     try
     {
         bool isD3D9Valid = DirectXML.IsValid(this.d3d9MD5);
         if (!isD3D9Valid)
         {
             Logger.warning("No listed: " + this.d3d9MD5);
         }
         ServerConfig config = LoginManager.Config;
         string       reason;
         if (!this.IsPacketDataValid(config, isD3D9Valid, out reason))
         {
             Logger.LogLogin(reason);
             this._client.SendPacket((SendPacket) new SERVER_MESSAGE_DISCONNECT_PAK(2147483904U, false));
             this._client.Close(1000, true);
         }
         else
         {
             this._client._player = AccountManager.getInstance().getAccountDB((object)this.login, (object)null, 0, 0);
             if (this._client._player == null && ConfigGA.AUTO_ACCOUNTS && !AccountManager.getInstance().CreateAccount(out this._client._player, this.login, this.passEnc, this._client.GetAddress()))
             {
                 Logger.LogLogin("Falha ao criar conta automaticamente [" + this.login + "]");
                 this._client.SendPacket((SendPacket) new BASE_LOGIN_PAK(EventErrorEnum.Login_USER_PASS_FAIL, this.login, 0L));
                 this._client.Close(1000, false);
             }
             else
             {
                 Account player = this._client._player;
                 if (player == null || !player.ComparePassword(this.passEnc))
                 {
                     string str = "";
                     if (player == null)
                     {
                         str = "Conta retornada da DB é nula";
                     }
                     else if (!player.ComparePassword(this.passEnc))
                     {
                         str = "Senha inválida";
                     }
                     Logger.LogLogin(str + " [" + this.login + "]");
                     this._client.SendPacket((SendPacket) new BASE_LOGIN_PAK(EventErrorEnum.Login_USER_PASS_FAIL, this.login, 0L));
                     this._client.Close(1000, false);
                 }
                 else if (player.access >= 0)
                 {
                     if (player.MacAddress != this.MacAddress)
                     {
                         ComDiv.updateDB("accounts", "last_mac", (object)this.MacAddress, "player_id", (object)player.player_id);
                     }
                     bool validMac;
                     bool validIp;
                     BanManager.GetBanStatus(this.MacAddress.ToString(), this.PublicIP, out validMac, out validIp);
                     if (validMac | validIp)
                     {
                         if (validMac)
                         {
                             Logger.LogLogin("MAC banido [" + this.login + "]");
                         }
                         else
                         {
                             Logger.LogLogin("IP banido [" + this.login + "]");
                         }
                         this._client.SendPacket((SendPacket) new BASE_LOGIN_PAK(validIp ? EventErrorEnum.Login_BLOCK_IP : EventErrorEnum.Login_BLOCK_ACCOUNT, this.login, 0L));
                         this._client.Close(1000, false);
                     }
                     else if (player.IsGM() && config.onlyGM || player.access >= 0 && !config.onlyGM)
                     {
                         Account account = AccountManager.getInstance().getAccount(player.player_id, true);
                         if (!player._isOnline)
                         {
                             if (BanManager.GetAccountBan(player.ban_obj_id).endDate > DateTime.Now)
                             {
                                 Logger.LogLogin("Conta com banimento ativo [" + this.login + "]");
                                 this._client.SendPacket((SendPacket) new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_ACCOUNT, this.login, 0L));
                                 this._client.Close(1000, false);
                             }
                             else
                             {
                                 player.SetPlayerId(player.player_id, 31);
                                 player._clanPlayers = ClanManager.getClanPlayers(player.clan_id, player.player_id);
                                 this._client.SendPacket((SendPacket) new BASE_LOGIN_PAK(0, this.login, player.player_id));
                                 this._client.SendPacket((SendPacket) new AUTH_WEB_CASH_PAK(0, 0, 0));
                                 if (player.clan_id > 0)
                                 {
                                     this._client.SendPacket((SendPacket) new BASE_USER_CLAN_MEMBERS_PAK(player._clanPlayers));
                                 }
                                 player._status.SetData(uint.MaxValue, player.player_id);
                                 player._status.updateServer((byte)0);
                                 player.setOnlineStatus(true);
                                 if (account != null)
                                 {
                                     account._connection = this._client;
                                 }
                                 SEND_REFRESH_ACC.RefreshAccount(player, true);
                             }
                         }
                         else
                         {
                             Logger.LogLogin("Conta online [" + this.login + "]");
                             this._client.SendPacket((SendPacket) new BASE_LOGIN_PAK(EventErrorEnum.Login_ALREADY_LOGIN_WEB, this.login, 0L));
                             if (account != null && account._connection != null)
                             {
                                 account.SendPacket((SendPacket) new AUTH_ACCOUNT_KICK_PAK(1));
                                 account.SendPacket((SendPacket) new SERVER_MESSAGE_ERROR_PAK(2147487744U));
                                 account.Close(1000);
                             }
                             else
                             {
                                 Auth_SyncNet.SendLoginKickInfo(player);
                             }
                             this._client.Close(1000, false);
                         }
                     }
                     else
                     {
                         Logger.LogLogin("Nível de acesso inválido [" + this.login + "]");
                         this._client.SendPacket((SendPacket) new BASE_LOGIN_PAK(EventErrorEnum.Login_TIME_OUT_2, this.login, 0L));
                         this._client.Close(1000, false);
                     }
                 }
                 else
                 {
                     Logger.LogLogin("Banido permanente [" + this.login + "]");
                     this._client.SendPacket((SendPacket) new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_ACCOUNT, this.login, 0L));
                     this._client.Close(1000, false);
                 }
             }
         }
     }
     catch (Exception ex)
     {
         Logger.warning("[BASE_LOGIN_REC] " + ex.ToString());
     }
 }
Пример #10
0
        private static void Main(string[] args)
        {
            {
                Application.Run((Form) new ip());
            }
            Console.Clear();
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(Programm.CurrentDomainOnUnhandledException);
            Console.Title     = "Iniciando o Point Blank Auth Server...";
            Logger.StartedFor = "auth";
            Logger.checkDirectorys();
            StringUtil stringUtil = new StringUtil();

            stringUtil.AppendLine("               ________  _____  __      ______ _______          ");
            stringUtil.AppendLine("              / ____/  |/  / / / /     / /  / / /  / /          ");
            stringUtil.AppendLine("             / __/ / /|_/ / / / /     / /__/_/ /__/ /           ");
            stringUtil.AppendLine("            / /___/ /  / / /_/ / _   / /    / /  / /            ");
            stringUtil.AppendLine("                                                                ");
            DateTime dateTime1 = ComDiv.GetLinkerTime(Assembly.GetExecutingAssembly(), (TimeZoneInfo)null);
            string   str       = dateTime1.ToString("dd/MM/yyyy HH:mm");

            stringUtil.AppendLine("             Data de Inicialização: " + str + "                 ");
            Logger.info(stringUtil.getString());
            ConfigGA.Load();
            ConfigMaps.Load();
            ServerConfigSyncer.GenerateConfig(ConfigGA.configId);
            EventLoader.LoadAll();
            DirectXML.Start();
            BasicInventoryXML.Load();
            ServersXML.Load();
            MissionCardXML.LoadBasicCards(2);
            MapsXML.Load();
            RegionXML.Load();
            ShopManager.Load(2);
            CupomEffectManager.LoadCupomFlags();
            MissionsXML.Load();
            bool flag1 = true;

            foreach (string text in args)
            {
                // if (ComDiv.gen5(text) == "e5cb4b8a5474496fb2f2cddb5dbb07a7")
                if (ComDiv.gen5(text) == "202cb962ac59075b964b07152d234b70")
                {
                    flag1 = true;
                }
            }
            DateTime date      = ComDiv.GetDate();
            DateTime dateTime2 = date;

            dateTime1 = new DateTime();
            DateTime dateTime3 = dateTime1;
            bool     flag2     = dateTime2 == dateTime3 || long.Parse(date.ToString("yyMMddHHmmss")) >= 181024000000L;

            Auth_SyncNet.Start();
            if (flag1)
            {
                bool flag3 = LoginManager.Start();
                Logger.warning("[Servidor] Hospedado: " + ConfigGB.EncodeText.EncodingName);
                Logger.warning("[Servidor] Modo: " + (ConfigGA.isTestMode ? "Testes" : "Público"));
                Logger.warning(Programm.StartSuccess());
                if (flag3)
                {
                    LoggerGA.updateRAM2();
                }
            }
            Process.GetCurrentProcess().WaitForExit();
        }