private void HandleAuthentication(Package p)
 {
     if (string.Equals(p.DataItems[0], Core.Setting.RCONPassword.Md5HashGenerator(), StringComparison.OrdinalIgnoreCase) && string.Equals(p.DataItems[1], Core.Setting.RCONPassword.SHA1HashGenerator(), StringComparison.OrdinalIgnoreCase) && string.Equals(p.DataItems[2], Core.Setting.RCONPassword.SHA256HashGenerator(), StringComparison.OrdinalIgnoreCase))
     {
         Core.RCONPlayer.Add(p);
     }
     else
     {
         Core.RCONPlayer.SentToPlayer(new Package(Package.PackageTypes.Authentication, Package.AuthenticationStatus.AccessDenied.ToString(), p.Client));
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// New Player (Update Player)
        /// </summary>
        /// <param name="p">Package</param>
        /// <param name="ID">Player ID</param>
        public Player(Package p, int ID)
        {
            this.ID = ID;
            Network = new Networking(p.Client);

            Core.RCONPlayer.Add(this);
            Core.RCONPlayer.SentToPlayer(new Package(Package.PackageTypes.Authentication, Package.AuthenticationStatus.AccessGranted.ToString(), p.Client));

            Core.Logger.Log($"RCON Player (ID: {ID.ToString()}) have connected.", Logger.LogTypes.Info, p.Client);

            for (int i = 0; i < Core.Player.Count; i++)
            {
                Core.RCONPlayer.SentToPlayer(new Package(Package.PackageTypes.AddPlayer, $"{Core.Player[i].ID},{Core.Player[i].ToString()}", p.Client));
            }
        }
        /// <summary>
        /// Handle PackageData
        /// </summary>
        /// <param name="p">Package</param>
        public void Handle(Package p)
        {
            try
            {
                switch (p.PackageType)
                {
                    case (int)Package.PackageTypes.Unknown:
                        Core.Logger.Log("Unable to handle the package due to unknown type.", Logger.LogTypes.Debug, p.Client);
                        break;

                    case (int)Package.PackageTypes.Authentication:
                        HandleAuthentication(p);
                        break;

                    case (int)Package.PackageTypes.Ping:
                        HandlePing(p);
                        break;

                    case (int)Package.PackageTypes.Kick:
                    case (int)Package.PackageTypes.AddPlayer:
                    case (int)Package.PackageTypes.UpdatePlayer:
                    case (int)Package.PackageTypes.RemovePlayer:
                        Core.Logger.Log("Unable to handle this package as it is not getable.", Logger.LogTypes.Debug, p.Client);
                        break;

                    case (int)Package.PackageTypes.Logger:
                        HandleLogger(p);
                        break;

                    case (int)Package.PackageTypes.GetAllCrashLogs:
                    case (int)Package.PackageTypes.GetAllLogs:
                    case (int)Package.PackageTypes.BeginCreateFile:
                    case (int)Package.PackageTypes.BeginDownloadFile:
                    case (int)Package.PackageTypes.EndDownloadFile:
                    case (int)Package.PackageTypes.EndCreateFile:
                        Core.RCONUploadQueue.HandlePackage(p);
                        break;

                    default:
                        Core.Logger.Log("Unable to handle the package due to unknown type.", Logger.LogTypes.Debug, p.Client);
                        break;
                }
            }
            catch (Exception ex)
            {
                ex.CatchError();
            }
        }
Ejemplo n.º 4
0
        private object ThreadHandlePackage(object obj)
        {
            try
            {
                string ReturnMessage = (string)obj;

                if (!string.IsNullOrWhiteSpace(ReturnMessage))
                {
                    Package Package = new Package(ReturnMessage, Client);
                    Core.Logger.Log($"Receive: {ReturnMessage}", Logger.LogTypes.Debug, Client);

                    if (Package.IsValid)
                    {
                        Package.Handle();
                    }
                }
            }
            catch (Exception) { }

            return null;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Handle Package
        /// </summary>
        /// <param name="p">Package</param>
        public void HandlePackage(Package p)
        {
            if (p.PackageType == (int)Package.PackageTypes.BeginCreateFile)
            {
                if (p.DataItems[1] == Package.BeginCreateFileStatus.FileCreated.ToString())
                {
                    Reader = new StreamReader(Stream);
                    Upload();
                }
                else if (p.DataItems[1] == Package.BeginCreateFileStatus.FileExisted.ToString())
                {
                    Stream.Dispose();

                    Core.RCONPlayer.SentToPlayer(new Package(Package.PackageTypes.EndCreateFile, FileID.ToString(), Client));
                }
                else if (p.DataItems[1] == Package.BeginCreateFileStatus.Failed.ToString())
                {
                    Stream.Dispose();

                    Core.RCONPlayer.SentToPlayer(new Package(Package.PackageTypes.EndCreateFile, FileID.ToString(), Client));
                }
            }
            else if (p.PackageType == (int)Package.PackageTypes.BeginDownloadFile)
            {
                if (p.DataItems[1] == Package.BeginDownloadFileStatus.RequestNextLine.ToString())
                {
                    Upload();
                }
                else if (p.DataItems[1] == Package.BeginDownloadFileStatus.Pause.ToString())
                {
                    // Do nothing, just pause here.
                }
                else if (p.DataItems[1] == Package.BeginDownloadFileStatus.Cancel.ToString())
                {
                    Reader.Dispose();

                    Core.RCONPlayer.SentToPlayer(new Package(Package.PackageTypes.EndDownloadFile, FileID.ToString(), Client));
                }
            }
            else if (p.PackageType == (int)Package.PackageTypes.EndDownloadFile)
            {
                if (p.DataItems[1] == Package.EndDownloadFileStatus.DownloadStreamDisposed.ToString())
                {
                    Stream.Dispose();

                    Core.RCONPlayer.SentToPlayer(new Package(Package.PackageTypes.EndCreateFile, FileID.ToString(), Client));
                }
            }
            else if (p.PackageType == (int)Package.PackageTypes.EndCreateFile)
            {
                if (p.DataItems[1] == Package.EndCreateFileStatus.FileStreamDisposed.ToString())
                {
                    Core.RCONUploadQueue.Remove(this);
                }
            }
        }
Ejemplo n.º 6
0
        private object ThreadPreHandlePackage(object p)
        {
            if (string.IsNullOrEmpty((string)p))
            {
                if (IsActive)
                {
                    IsActive = false;
                    Core.RCONPlayer.Remove(Client, "You have left the server.");
                }
            }
            else
            {
                Package Package = new Package((string)p, Client);
                if (Package.IsValid)
                {
                    LastValidPing = DateTime.Now;
                    ThreadPool2.QueueWorkItem(new WorkItemCallback(ThreadHandlePackage), Package);
                    Core.Logger.Log($"Receive: {Package.ToString()}", Logger.LogTypes.Debug, Client);
                }
            }

            return null;
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Sent To Player
 /// </summary>
 /// <param name="p">Package to send.</param>
 public void SentToPlayer(Package p)
 {
     ThreadPool3.QueueWorkItem(new WorkItemCallback(ThreadSentToPlayer), p);
 }
 private void HandleLogger(Package p)
 {
     Core.Command.HandleAllCommand(new Server_Client_Listener.Packages.Package(Server_Client_Listener.Packages.Package.PackageTypes.ChatMessage, p.DataItems[0], null));
 }
 private void HandlePing(Package p)
 {
     Player Player = Core.RCONPlayer.GetPlayer(p.Client);
     Player.Network.LastValidPing = DateTime.Now;
 }