Esempio n. 1
0
        private bool CheckPing(ref networkServer.networkClientInterface Client, Protocol prot)
        {
            CCstData.GetInstance(ApplicationID).Logger.writeInLog(3, LogCategory.OK, Support.LoggerType.SERVER, "Ping: Protocol received. User: "******"Ping: User found in the list.");

                int    AdditionalInfos = prot.HasValues() ? Convert.ToInt32(prot.GetValues()[0]) : -1;
                string AdditionalInfo  = "";
                switch (AdditionalInfos)
                {
                case 1:
                    AdditionalInfo = ";123";
                    break;

                default:
                    break;
                }

                //Reset the Ping timer

                CCstData.GetInstance(ApplicationID).Logger.writeInLog(3, LogCategory.OK, Support.LoggerType.SERVER, "Ping: Resetting timer.");
                Client.ResetPingTimer();
                CCstData.GetInstance(ApplicationID).Logger.writeInLog(3, LogCategory.OK, Support.LoggerType.SERVER, "Ping resetted.");

                //zhCCstData.GetInstance(ApplicationID).Logger.writeInLog(3, LogCategory.OK, "Additional Infos: "+AdditionalInfo);
                if (AdditionalInfo.Length == 0)
                {
                    SendProtocol("300", Client);
                }
                else
                {
                    SendProtocol(String.Format("301;{0}", AdditionalInfo), Client);
                }

                return(true);
            }

            CCstData.GetInstance(ApplicationID).Logger.writeInLog(2, LogCategory.ERROR, Support.LoggerType.CLIENT, String.Format("Ping: User does not exist in the active connections ({0})", prot.GetUserID()));
            try
            {
                Client.Dispose();
            }
            catch (Exception)
            {
            }
            return(false);
        }
Esempio n. 2
0
        void KickUser(networkServer.networkClientInterface ClientInterface)
        {
            //System.Threading.Thread.Sleep(1000);

            bool IpExistsAlready = false;

            foreach (var item in ActiveConnections)
            {
                if (item.IP == ClientInterface.IP)
                {
                    if (item.SessionID != ClientInterface.SessionID)
                    {
                        IpExistsAlready = true;
                    }
                }
            }

            string t1 = ClientInterface.User.ID;
            string t2 = ClientInterface.SessionID;

            CCstData.GetInstance(ClientInterface.User.Application.ID).Logger.writeInLog(2, LogCategory.OK, Support.LoggerType.SERVER, String.Format("User disconnected. {0} - {1}", t1, t2));
            ActiveConnections.Remove(ClientInterface);

            if (!IpExistsAlready)
            {
                if (!CCstData.GetInstance(ApplicationID).GameDLL.KickUser(ClientInterface.IP, ClientInterface.User.ID))
                {
                    CCstData.GetInstance(ApplicationID).Logger.writeInLog(2, LogCategory.ERROR, Support.LoggerType.GAMEDLL, String.Format("Linux exception removal failed. IP {0}, User: {1}", ClientInterface.IP, ClientInterface.User.ID));
                }
            }

            /*if (!IpExistsAlready)
             * {
             *  //If there is another user with the same IP, we have to keep it in the IPTables
             *  try
             *  {
             *      ClientInterface.unixSshConnectorAccept.Connect();
             *  }
             *  catch (Exception e)
             *  {
             *  }
             *  if (!ClientInterface.unixSshConnectorAccept.IsConnected)
             *  {
             *      //Log error
             *
             *  }
             *  List<int> Ports = new List<int>();
             *  Ports.Add(50001);
             *  Ports.Add(50002);
             *  Ports.Add(50003);
             *  Ports.Add(50004);
             *  Ports.Add(50005);
             *  Ports.Add(50006);
             *  Ports.Add(50007);
             *  Ports.Add(50008);
             *  Ports.Add(50009);
             *  Ports.Add(50010);
             *  Ports.Add(50011);
             *  Ports.Add(50012);
             *  Ports.Add(50013);
             *  Ports.Add(50014);
             *  Ports.Add(50015);
             *  Ports.Add(50016);
             *  Ports.Add(50017);
             *  Ports.Add(50018);
             *  Ports.Add(50019);
             *  Ports.Add(50020);
             *
             *  string LinuxPorts = "";
             *  foreach (int item in Ports)
             *  {
             *      LinuxPorts += "iptables -D INPUT -p tcp -s " + ClientInterface.IP + " --dport " + item + " -j ACCEPT && ";
             *  }
             *  if (LinuxPorts.Length > 0)
             *  {
             *      LinuxPorts=LinuxPorts.TrimEnd(' ');
             *      LinuxPorts=LinuxPorts.TrimEnd('&');
             *      using (SshCommand Result = ClientInterface.unixSshConnectorAccept.RunCommand(LinuxPorts))
             *      {
             *          if (Result.Error.Length > 0)
             *              CCstData.GetInstance(ApplicationID).Logger.writeInLog(2, LogCategory.ERROR, Support.LoggerType.GAMEDLL, "Linux exception deny failed! Session ID: " + ClientInterface.SessionID + ", Error: " + Result.Error);
             *          else
             *              CCstData.GetInstance(ApplicationID).Logger.writeInLog(2, LogCategory.OK, Support.LoggerType.GAMEDLL, "Linux exception deny successful. Session ID: " + ClientInterface.SessionID+", Result: "+Result.Result);
             *      }
             *  }
             *  ClientInterface.unixSshConnectorAccept.Disconnect();
             * }*/

            ClientInterface.Dispose();
        }