Beispiel #1
0
        /// <summary>
        /// Command creator for commands which may or may not have parameter
        /// </summary>
        /// <param name="type"></param>
        /// <param name="sArray"></param>
        /// <returns></returns>
        private static FtpCommand Creater1or2(FtpCommandType type, string[] sArray)
        {
            FtpCommand command = null;

            if (sArray.Length == 2)
            {
                command           = new FtpCommand();
                command.m_Content = sArray[1];
                command.m_Type    = type;
            }
            else if (sArray.Length == 1)
            {
                command        = new FtpCommand();
                command.m_Type = type;
            }
            return(command);
        }
 /// <summary>
 /// Command creator for commands which may or may not have parameter
 /// </summary>
 /// <param name="type"></param>
 /// <param name="sArray"></param>
 /// <returns></returns>
 private static FtpCommand Creater1or2(FtpCommandType type, string[] sArray)
 {
     FtpCommand command = null;
     if (sArray.Length == 2)
     {
         command = new FtpCommand();
         command.m_Content = sArray[1];
         command.m_Type = type;
     }
     else if (sArray.Length == 1)
     {
         command = new FtpCommand();
         command.m_Type = type;
     }
     return command;
 }
        /// <summary>
        /// Create an ftp command from an input string
        /// </summary>
        /// <param name="rawCmd"></param>
        /// <returns></returns>
        public static FtpCommand Create(string rawCmd)
        {
            FtpCommand cmd = null;
            string[] sArray = null;
            string input = rawCmd.Trim();
            int firstSpace = input.IndexOf(' ');
            if (firstSpace == -1)               // there is no space
            {
                sArray = new string[1];
                sArray[0] = input.ToUpper();
            }
            else
            {
                sArray = new string[2];
                sArray[0] = input.Substring(0, firstSpace).ToUpper();
                sArray[1] = input.Substring(firstSpace + 1);
            } 
            if (sArray[0] == "USER")
            {
                cmd = Creater2(FtpCommandType.User, sArray);
            }
            else if (sArray[0] == "PASS")
            {
                cmd = Creater2(FtpCommandType.Pass, sArray);
            }
            else if (sArray[0] == "CWD" || sArray[0] == "XCWD")
            {
                if (sArray.Length == 2)
                {
                    string s = sArray[1];
                    if (s[s.Length - 1] != '/')
                    {
                        sArray[1] += "/";
                    }
                }
                cmd = Creater2(FtpCommandType.Cwd, sArray);
            }
            else if (sArray[0] == "PASV")
            {
                cmd = Creater1(FtpCommandType.Pasv, sArray);
            }
            else if (sArray[0] == "QUIT")
            {
                cmd = Creater1(FtpCommandType.Quit, sArray);
            }
            else if (sArray[0] == "TYPE")
            {
                cmd = Creater2(FtpCommandType.Type, sArray);
            }
            else if (sArray[0] == "LIST")
            {
                cmd = Creater1or2(FtpCommandType.List, sArray);
            }
            else if (sArray[0] == "NLST")
            {
                cmd = Creater1or2(FtpCommandType.NList, sArray);
            }
            else if (sArray[0] == "PORT")
            {
                cmd = Creater2(FtpCommandType.Port, sArray);
            }
            else if (sArray[0] == "SYST")
            {
                cmd = Creater1(FtpCommandType.Sys, sArray);
            }
            else if (sArray[0] == "FEAT")
            {
                cmd = Creater1(FtpCommandType.Feature, sArray);
            }
            else if (sArray[0] == "PWD" || sArray[0] == "XPWD")
            {
                cmd = Creater1(FtpCommandType.Pwd, sArray);
            }
            else if (sArray[0] == "RETR")
            {
                cmd = Creater2(FtpCommandType.Retr, sArray);
            }
            else if (sArray[0] == "MDTM")
            {
                cmd = Creater2(FtpCommandType.Mdtm, sArray);
            }
            else if (sArray[0] == "OPTS")
            {
                cmd = Creater2(FtpCommandType.Opts, sArray);
            }
            else if (sArray[0] == "SIZE")
            {
                cmd = Creater2(FtpCommandType.Size, sArray);
            }
            else if (sArray[0] == "STOR")
            {
                cmd = Creater2(FtpCommandType.Store, sArray);
            }
            else if (sArray[0] == "NOOP")
            {
                cmd = Creater1(FtpCommandType.Noop, sArray);
            }
            else if (sArray[0] == "DELE")
            {
                cmd = Creater2(FtpCommandType.Delete, sArray);
            }
            else if (sArray[0] == "MKD" || sArray[0] == "XMKD")
            {
                cmd = Creater2(FtpCommandType.MkDir, sArray);
            }
            else if (sArray[0] == "RMD" || sArray[0] == "XRMD")
            {
                cmd = Creater2(FtpCommandType.Rmd, sArray);
            }
            else if (sArray[0] == "RNFR")
            {
                cmd = Creater2(FtpCommandType.Rnfr, sArray);
            }
            else if (sArray[0] == "RNTO")
            {
                cmd = Creater2(FtpCommandType.Rnto, sArray);
            }
            else
            {
                cmd = new FtpCommand();
                cmd.m_Type = FtpCommandType.Unknown;
            }

            return cmd;
        }
 /// <summary>
 /// Command creator for commands which do not contains parameters
 /// </summary>
 /// <param name="type"></param>
 /// <param name="sArray"></param>
 /// <returns></returns>
 private static FtpCommand Creater1(FtpCommandType type, string[] sArray)
 {
     FtpCommand command = null;
     if (sArray.Length == 1)
     {
         command = new FtpCommand();
         command.m_Type = type;
     }
     return command;
 }
Beispiel #5
0
        /// <summary>
        /// Create an ftp command from an input string
        /// </summary>
        /// <param name="rawCmd"></param>
        /// <returns></returns>
        public static FtpCommand Create(string rawCmd)
        {
            FtpCommand cmd = null;

            string[] sArray     = null;
            string   input      = rawCmd.Trim();
            int      firstSpace = input.IndexOf(' ');

            if (firstSpace == -1)               // there is no space
            {
                sArray    = new string[1];
                sArray[0] = input.ToUpper();
            }
            else
            {
                sArray    = new string[2];
                sArray[0] = input.Substring(0, firstSpace).ToUpper();
                sArray[1] = input.Substring(firstSpace + 1);
            }
            if (sArray[0] == "USER")
            {
                cmd = Creater2(FtpCommandType.User, sArray);
            }
            else if (sArray[0] == "PASS")
            {
                cmd = Creater2(FtpCommandType.Pass, sArray);
            }
            else if (sArray[0] == "CWD" || sArray[0] == "XCWD")
            {
                if (sArray.Length == 2)
                {
                    string s = sArray[1];
                    if (s[s.Length - 1] != '/')
                    {
                        sArray[1] += "/";
                    }
                }
                cmd = Creater2(FtpCommandType.Cwd, sArray);
            }
            else if (sArray[0] == "PASV")
            {
                cmd = Creater1(FtpCommandType.Pasv, sArray);
            }
            else if (sArray[0] == "QUIT")
            {
                cmd = Creater1(FtpCommandType.Quit, sArray);
            }
            else if (sArray[0] == "TYPE")
            {
                cmd = Creater2(FtpCommandType.Type, sArray);
            }
            else if (sArray[0] == "LIST")
            {
                cmd = Creater1or2(FtpCommandType.List, sArray);
            }
            else if (sArray[0] == "NLST")
            {
                cmd = Creater1or2(FtpCommandType.NList, sArray);
            }
            else if (sArray[0] == "PORT")
            {
                cmd = Creater2(FtpCommandType.Port, sArray);
            }
            else if (sArray[0] == "SYST")
            {
                cmd = Creater1(FtpCommandType.Sys, sArray);
            }
            else if (sArray[0] == "FEAT")
            {
                cmd = Creater1(FtpCommandType.Feature, sArray);
            }
            else if (sArray[0] == "PWD" || sArray[0] == "XPWD")
            {
                cmd = Creater1(FtpCommandType.Pwd, sArray);
            }
            else if (sArray[0] == "RETR")
            {
                cmd = Creater2(FtpCommandType.Retr, sArray);
            }
            else if (sArray[0] == "MDTM")
            {
                cmd = Creater2(FtpCommandType.Mdtm, sArray);
            }
            else if (sArray[0] == "OPTS")
            {
                cmd = Creater2(FtpCommandType.Opts, sArray);
            }
            else if (sArray[0] == "SIZE")
            {
                cmd = Creater2(FtpCommandType.Size, sArray);
            }
            else if (sArray[0] == "STOR")
            {
                cmd = Creater2(FtpCommandType.Store, sArray);
            }
            else if (sArray[0] == "NOOP")
            {
                cmd = Creater1(FtpCommandType.Noop, sArray);
            }
            else if (sArray[0] == "DELE")
            {
                cmd = Creater2(FtpCommandType.Delete, sArray);
            }
            else if (sArray[0] == "MKD" || sArray[0] == "XMKD")
            {
                cmd = Creater2(FtpCommandType.MkDir, sArray);
            }
            else if (sArray[0] == "RMD" || sArray[0] == "XRMD")
            {
                cmd = Creater2(FtpCommandType.Rmd, sArray);
            }
            else if (sArray[0] == "RNFR")
            {
                cmd = Creater2(FtpCommandType.Rnfr, sArray);
            }
            else if (sArray[0] == "RNTO")
            {
                cmd = Creater2(FtpCommandType.Rnto, sArray);
            }
            else
            {
                cmd        = new FtpCommand();
                cmd.m_Type = FtpCommandType.Unknown;
            }

            return(cmd);
        }