private SslProtocols SetProtocol(FtpsOptions options) { switch (options.GetFtpsProtocol()) { case FtpsProtocol.TLS1_0: return(SslProtocols.Tls); case FtpsProtocol.TLS1_1: return(SslProtocols.Tls11); case FtpsProtocol.TLS1_2: return(SslProtocols.Tls12); case FtpsProtocol.SSLv2: this.error.setError("FS0014", "Deprecated protocol, not implemented for .Net"); return(SslProtocols.None); case FtpsProtocol.SSLv3: this.error.setError("FS0015", "Deprecated protocol, not implemented for .Net"); return(SslProtocols.None); default: return(SslProtocols.Tls); } }
private FluentFTP.FtpEncryptionMode SetEncryptionMode(FtpsOptions options) { switch (options.GetFtpEncryptionMode()) { case GeneXusFtpsUtils.FtpEncryptionMode.EXPLICIT: return(FluentFTP.FtpEncryptionMode.Explicit); case GeneXusFtpsUtils.FtpEncryptionMode.IMPLICIT: return(FluentFTP.FtpEncryptionMode.Implicit); default: return(FluentFTP.FtpEncryptionMode.Explicit); } }
private FtpDataType SetEncoding(FtpsOptions options) { switch (options.GetFtpEncoding()) { case FtpEncoding.BINARY: return(FtpDataType.Binary); case FtpEncoding.ASCII: return(FtpDataType.ASCII); default: return(FtpDataType.Binary); } }
/******** EXTERNAL OBJECT PUBLIC METHODS - END ********/ private FtpDataConnectionType SetConnectionMode(FtpsOptions options) { FtpConnectionMode mode = options.GetFtpConnectionMode(); switch (mode) { case FtpConnectionMode.ACTIVE: return(FtpDataConnectionType.AutoActive); case FtpConnectionMode.PASSIVE: return(FtpDataConnectionType.PASV); default: return(FtpDataConnectionType.PASV); } }
public override bool Connect(FtpsOptions options) { if (options.HasError()) { this.error = options.GetError(); return(false); } if (SecurityUtils.compareStrings("", options.Host) || SecurityUtils.compareStrings("", options.User) || SecurityUtils.compareStrings("", options.Password)) { this.error.setError("FS001", "Empty connection data"); return(false); } this.client = new FtpClient { Host = options.Host, Port = options.Port, Credentials = new NetworkCredential(options.User, options.Password), DataConnectionType = SetConnectionMode(options), EncryptionMode = SetEncryptionMode(options), Encoding = Encoding.UTF8, }; this.client.DownloadDataType = SetEncoding(options); SslProtocols protocols = SetProtocol(options);; if (protocols == SslProtocols.None) { return(false); } this.client.SslProtocols = protocols; this.client.DataConnectionEncryption = options.ForceEncryption; if (SecurityUtils.compareStrings("", options.TrustStorePath)) { this.client.ValidateCertificate += (control, e1) => { e1.Accept = true; }; } else { X509Certificate2 cert_grt = new X509Certificate2(options.TrustStorePath, options.TrustStorePassword); client.ValidateCertificate += (control, e1) => { X509Chain verify = new X509Chain(); verify.Build(new X509Certificate2(e1.Certificate)); e1.Accept = SecurityUtils.compareStrings(verify.ChainElements[verify.ChainElements.Count - 1].Certificate.Thumbprint, cert_grt.Thumbprint); }; } try { this.client.Connect(); if (!this.client.LastReply.Success) { this.client.Disconnect(); this.error.setError("FS008", "Connection error"); return(false); } } catch (Exception e) { this.error.setError("FS002", "Connection error " + e.Message); this.client = null; return(false); } if (!this.client.IsConnected) { this.error.setError("FS009", "Connection error"); return(false); } this.whiteList = options.WhiteList; return(true); }