コード例 #1
0
        /// <summary>
        /// 登录到Sftp服务器
        /// </summary>
        /// <param name="config">Sftp参数</param>
        /// <returns></returns>
        public OperationReturn LogOn(SftpHelperConfig config)
        {
            OperationReturn optReturn = new OperationReturn();

            optReturn.Result = true;
            optReturn.Code   = 0;
            try
            {
                if (mSftp != null)
                {
                    try
                    {
                        if (mSftp.Connected)
                        {
                            mSftp.Connected = false;
                        }
                        mSftp = null;
                    }
                    catch { }
                }
                mSftp = new Sftp();
                mSftp.OnSSHServerAuthentication += (s, se) => se.Accept = true;
                mSftp.SSHHost = config.ServerHost;
                mSftp.SSHPort = config.ServerPort;
                mSftp.SSHUser = config.LoginUser;
                switch (config.AuthType)
                {
                case 1:
                    mSftp.SSHAuthMode = SftpSSHAuthModes.amPassword;
                    mSftp.SSHPassword = config.LoginPassword;
                    break;

                case 2:
                    mSftp.SSHAuthMode = SftpSSHAuthModes.amPublicKey;
                    mSftp.SSHCert     = new Certificate(CertStoreTypes.cstPFXFile, config.CertFile, config.CertPassword, config.CertPassword);
                    break;

                case 3:
                    mSftp.SSHAuthMode = SftpSSHAuthModes.amMultiFactor;
                    mSftp.SSHPassword = config.LoginPassword;
                    mSftp.SSHCert     = new Certificate(CertStoreTypes.cstPFXFile, config.CertFile, config.CertPassword, config.CertSubject);
                    break;

                default:
                    optReturn.Result  = false;
                    optReturn.Code    = Defines.RET_CONFIG_INVALID;
                    optReturn.Message = string.Format("Auth type not support.\t{0}", config.AuthType);
                    return(optReturn);
                }
                mSftp.SSHLogon(config.ServerHost, config.ServerPort);
                return(optReturn);
            }
            catch (Exception ex)
            {
                optReturn.Result  = false;
                optReturn.Code    = Defines.RET_FAIL;
                optReturn.Message = ex.Message;
                return(optReturn);
            }
        }
コード例 #2
0
        /// <summary>
        /// 上传文件,在config中配置Sftp参数,上传结束后立马退出Sftp服务器
        /// </summary>
        /// <param name="config">Sftp参数</param>
        /// <returns></returns>
        public static OperationReturn UploadFile(SftpHelperConfig config)
        {
            OperationReturn optReturn = new OperationReturn();

            optReturn.Result = true;
            optReturn.Code   = 0;
            try
            {
                Sftp sftp = new Sftp();
                sftp.OnSSHServerAuthentication += (s, se) => se.Accept = true;
                sftp.SSHHost    = config.ServerHost;
                sftp.SSHPort    = config.ServerPort;
                sftp.SSHUser    = config.LoginUser;
                sftp.RemoteFile = config.RemoteFile;
                sftp.LocalFile  = config.LocalFile;
                switch (config.AuthType)
                {
                case 1:
                    sftp.SSHAuthMode = SftpSSHAuthModes.amPassword;
                    sftp.SSHPassword = config.LoginPassword;
                    break;

                case 2:
                    sftp.SSHAuthMode = SftpSSHAuthModes.amPublicKey;
                    sftp.SSHCert     = new Certificate(CertStoreTypes.cstPFXFile, config.CertFile, config.CertPassword, config.CertPassword);
                    break;

                case 3:
                    sftp.SSHAuthMode = SftpSSHAuthModes.amMultiFactor;
                    sftp.SSHPassword = config.LoginPassword;
                    sftp.SSHCert     = new Certificate(CertStoreTypes.cstPFXFile, config.CertFile, config.CertPassword, config.CertSubject);
                    break;

                default:
                    optReturn.Result  = false;
                    optReturn.Code    = Defines.RET_CONFIG_INVALID;
                    optReturn.Message = string.Format("Auth type not support.\t{0}", config.AuthType);
                    return(optReturn);
                }
                sftp.Overwrite = true;
                sftp.MakeDirectory(config.RemoteDirectory);
                sftp.Upload();
                sftp.Connected = false;
                sftp.Dispose();
                return(optReturn);
            }
            catch (Exception ex)
            {
                optReturn.Result  = false;
                optReturn.Code    = Defines.RET_FAIL;
                optReturn.Message = ex.Message;
                return(optReturn);
            }
        }
コード例 #3
0
        /// <summary>
        /// 上传文件,上传结束后不会退出Sftp服务器
        /// </summary>
        /// <param name="config">Sftp参数</param>
        /// <returns></returns>
        public OperationReturn UploadFile1(SftpHelperConfig config)
        {
            OperationReturn optReturn = new OperationReturn();

            optReturn.Result = true;
            optReturn.Code   = 0;
            try
            {
                if (mSftp == null ||
                    !mSftp.Connected)
                {
                    optReturn = LogOn(config);
                    if (!optReturn.Result)
                    {
                        return(optReturn);
                    }
                }
                if (mSftp == null)
                {
                    optReturn.Result  = false;
                    optReturn.Code    = Defines.RET_OBJECT_NULL;
                    optReturn.Message = string.Format("Sftp is null");
                    return(optReturn);
                }
                mSftp.RemoteFile = config.RemoteFile;
                mSftp.LocalFile  = config.LocalFile;
                mSftp.Overwrite  = true;
                mSftp.MakeDirectory(config.RemoteDirectory);
                mSftp.Upload();
                return(optReturn);
            }
            catch (Exception ex)
            {
                optReturn.Result  = false;
                optReturn.Code    = Defines.RET_FAIL;
                optReturn.Message = ex.Message;
                return(optReturn);
            }
        }