Agregar archivos de proyecto.
This commit is contained in:
591
ftp.vb
Normal file
591
ftp.vb
Normal file
@@ -0,0 +1,591 @@
|
||||
Imports System.IO
|
||||
Imports System.Security.Authentication
|
||||
Imports System.Threading
|
||||
Imports FluentFTP
|
||||
Public Class ftp
|
||||
Public Shared HoraControl As DateTime
|
||||
Public Shared Function ObtenerFechaDeModificacion(Fichero As String, ServidorFTP As ServidorFTP) As Date
|
||||
Try
|
||||
Dim ftp As New FtpClient(ServidorFTP.Servidor, ServidorFTP.Usuario, ServidorFTP.Contraseña, ServidorFTP.Puerto)
|
||||
AddHandler ftp.ValidateCertificate, AddressOf ValidarCertificado
|
||||
If ServidorFTP.Pasivo Then
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.PASV
|
||||
Else
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.AutoActive
|
||||
End If
|
||||
ftp.Config.RetryAttempts = ServidorFTP.Reintentos
|
||||
ftp.Config.ConnectTimeout = ServidorFTP.Timeout
|
||||
Select Case ServidorFTP.Seguridad
|
||||
Case SeguridadFTP.Explicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Explicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case SeguridadFTP.Implicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Implicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case Else
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.None
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.None
|
||||
End Select
|
||||
ftp.Encoding = System.Text.Encoding.UTF8
|
||||
If ftp.IsConnected = False Then ftp.Connect()
|
||||
Return ftp.GetModifiedTime(Fichero)
|
||||
ftp.Disconnect()
|
||||
Catch EX As Exception
|
||||
Throw
|
||||
End Try
|
||||
Return Nothing
|
||||
End Function
|
||||
|
||||
Public Shared Sub DescargaFichero(Fichero As String, st As Stream, ServidorFTP As ServidorFTP, Optional Progreso As Action(Of FtpProgress) = Nothing)
|
||||
Try
|
||||
Dim ftp As New FtpClient(ServidorFTP.Servidor, ServidorFTP.Usuario, ServidorFTP.Contraseña, ServidorFTP.Puerto)
|
||||
AddHandler ftp.ValidateCertificate, AddressOf ValidarCertificado
|
||||
If ServidorFTP.Pasivo Then
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.PASV
|
||||
Else
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.AutoActive
|
||||
End If
|
||||
ftp.Config.RetryAttempts = ServidorFTP.Reintentos
|
||||
ftp.Config.ConnectTimeout = ServidorFTP.Timeout
|
||||
Select Case ServidorFTP.Seguridad
|
||||
Case SeguridadFTP.Explicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Explicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case SeguridadFTP.Implicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Implicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case Else
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.None
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.None
|
||||
End Select
|
||||
ftp.Encoding = System.Text.Encoding.UTF8
|
||||
If ftp.IsConnected = False Then ftp.Connect()
|
||||
If Not ftp.DownloadStream(st, Fichero, , Progreso) Then Throw New Exception("No se ha podido descargar el fichero")
|
||||
ftp.Disconnect()
|
||||
Catch EX As Exception
|
||||
Throw New Exception(EX.Message, EX)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
|
||||
'Public Shared Async Function DownloadFileAsync() As Task
|
||||
' Dim token = New CancellationToken()
|
||||
' Dim cfg As New FtpConfig
|
||||
' cfg.DataConnectionType = FtpDataConnectionType.PASV
|
||||
' cfg.EncryptionMode = FtpEncryptionMode.Implicit
|
||||
' cfg.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
' Using ftp = New AsyncFtpClient("192.168.41.56", "GestionCOAS", "TsCOAS.2019-", 992, cfg)
|
||||
|
||||
' Await ftp.Connect(token)
|
||||
|
||||
' ' define the progress tracking callback
|
||||
' Dim progress As Progress(Of FtpProgress) = New Progress(Of FtpProgress)(
|
||||
' Sub(p)
|
||||
' If p.Progress = 1 Then
|
||||
' ' all done!
|
||||
' Else
|
||||
' ' percent done = (p.Progress * 100)
|
||||
' End If
|
||||
' End Sub)
|
||||
|
||||
' ' download a file with progress tracking
|
||||
' Await ftp.DownloadFile("C:\TMP\PRUEBA.BIN", "/FIRMADOS_COLEGIADOS/0761/0761-100010.002_001.fir", FtpLocalExists.Resume, FtpVerify.None, progress, token)
|
||||
|
||||
' End Using
|
||||
'End Function
|
||||
|
||||
Public Shared Async Function DescargaFicheroAsync(Fichero As String, st As Stream, ServidorFTP As ServidorFTP, Optional Progreso As IProgress(Of FtpProgress) = Nothing, Optional ByVal Verificacion As FtpVerify = FtpVerify.None, Optional ct As Threading.CancellationTokenSource = Nothing) As Tasks.Task(Of FtpStatus)
|
||||
Try
|
||||
Dim cfg As New FtpConfig
|
||||
If ServidorFTP.Pasivo Then
|
||||
cfg.DataConnectionType = FtpDataConnectionType.PASV
|
||||
Else
|
||||
cfg.DataConnectionType = FtpDataConnectionType.AutoActive
|
||||
End If
|
||||
cfg.RetryAttempts = ServidorFTP.Reintentos
|
||||
cfg.ConnectTimeout = ServidorFTP.Timeout
|
||||
Select Case ServidorFTP.Seguridad
|
||||
Case SeguridadFTP.Explicita
|
||||
cfg.EncryptionMode = FtpEncryptionMode.Explicit
|
||||
cfg.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case SeguridadFTP.Implicita
|
||||
cfg.EncryptionMode = FtpEncryptionMode.Implicit
|
||||
cfg.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case Else
|
||||
cfg.EncryptionMode = FtpEncryptionMode.None
|
||||
cfg.SslProtocols = Security.Authentication.SslProtocols.None
|
||||
End Select
|
||||
' Using ftp As AsyncFtpClient = New AsyncFtpClient(ServidorFTP.Servidor, ServidorFTP.Usuario, ServidorFTP.Contraseña, ServidorFTP.Puerto, cfg)
|
||||
Dim ftp As AsyncFtpClient = New AsyncFtpClient(ServidorFTP.Servidor, ServidorFTP.Usuario, ServidorFTP.Contraseña, ServidorFTP.Puerto, cfg)
|
||||
AddHandler ftp.ValidateCertificate, AddressOf ValidarCertificadoAsync
|
||||
Dim t As FtpStatus
|
||||
ftp.Encoding = System.Text.Encoding.UTF8
|
||||
If ct Is Nothing Then
|
||||
Await ftp.Connect()
|
||||
t = Await ftp.DownloadStream(st, Fichero,, Progreso)
|
||||
Else
|
||||
Await ftp.Connect(ct.Token)
|
||||
t = Await ftp.DownloadStream(st, Fichero, , Progreso, ct.Token)
|
||||
End If
|
||||
If t = FtpStatus.Failed Then Throw New Exception("Error descargando fichero " & Fichero)
|
||||
If ct IsNot Nothing Then
|
||||
Await ftp.Disconnect(ct.Token)
|
||||
Else
|
||||
Await ftp.Disconnect
|
||||
End If
|
||||
Return t
|
||||
' End Using
|
||||
Catch EX As Exception
|
||||
Throw New Exception(EX.Message, EX)
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Shared Async Function DescargaFicheroAsync(FicheroLocal As String, FicheroRemoto As String, ServidorFTP As ServidorFTP, Optional Progreso As IProgress(Of FtpProgress) = Nothing, Optional ByVal Verificacion As FtpVerify = FtpVerify.None, Optional ct As Threading.CancellationTokenSource = Nothing) As Tasks.Task(Of FtpStatus)
|
||||
Try
|
||||
Dim cfg As New FtpConfig
|
||||
If ServidorFTP.Pasivo Then
|
||||
cfg.DataConnectionType = FtpDataConnectionType.PASV
|
||||
Else
|
||||
cfg.DataConnectionType = FtpDataConnectionType.AutoActive
|
||||
End If
|
||||
cfg.RetryAttempts = ServidorFTP.Reintentos
|
||||
cfg.ConnectTimeout = ServidorFTP.Timeout
|
||||
Select Case ServidorFTP.Seguridad
|
||||
Case SeguridadFTP.Explicita
|
||||
cfg.EncryptionMode = FtpEncryptionMode.Explicit
|
||||
cfg.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case SeguridadFTP.Implicita
|
||||
cfg.EncryptionMode = FtpEncryptionMode.Implicit
|
||||
cfg.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case Else
|
||||
cfg.EncryptionMode = FtpEncryptionMode.None
|
||||
cfg.SslProtocols = Security.Authentication.SslProtocols.None
|
||||
End Select
|
||||
' Using ftp As AsyncFtpClient = New AsyncFtpClient(ServidorFTP.Servidor, ServidorFTP.Usuario, ServidorFTP.Contraseña, ServidorFTP.Puerto, cfg)
|
||||
Dim ftp As AsyncFtpClient = New AsyncFtpClient(ServidorFTP.Servidor, ServidorFTP.Usuario, ServidorFTP.Contraseña, ServidorFTP.Puerto, cfg)
|
||||
AddHandler ftp.ValidateCertificate, AddressOf ValidarCertificadoAsync
|
||||
Dim t As FtpStatus
|
||||
ftp.Encoding = System.Text.Encoding.UTF8
|
||||
If ct Is Nothing Then
|
||||
Await ftp.Connect()
|
||||
t = Await ftp.DownloadFile(FicheroLocal, FicheroRemoto, FtpLocalExists.Overwrite, Verificacion, Progreso)
|
||||
Else
|
||||
Await ftp.Connect(ct.Token)
|
||||
t = Await ftp.DownloadFile(FicheroLocal, FicheroRemoto, FtpLocalExists.Overwrite, Verificacion, Progreso, ct.Token)
|
||||
End If
|
||||
If t = FtpStatus.Failed Then Throw New Exception("Error descargando fichero " & FicheroLocal & " de " & FicheroRemoto & " ")
|
||||
If ct IsNot Nothing Then
|
||||
Await ftp.Disconnect(ct.Token)
|
||||
Else
|
||||
Await ftp.Disconnect
|
||||
End If
|
||||
Return t
|
||||
'End Using
|
||||
Catch EX As Exception
|
||||
Throw New Exception(EX.Message, EX)
|
||||
End Try
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
Public Shared Sub DescargaFichero(FicheroLocal As String, FicheroRemoto As String, ServidorFTP As ServidorFTP, Optional Progreso As Action(Of FtpProgress) = Nothing, Optional ByVal Verificacion As FtpVerify = FtpVerify.None)
|
||||
Try
|
||||
Dim ftp As New FtpClient(ServidorFTP.Servidor, ServidorFTP.Usuario, ServidorFTP.Contraseña, ServidorFTP.Puerto)
|
||||
AddHandler ftp.ValidateCertificate, AddressOf ValidarCertificado
|
||||
If ServidorFTP.Pasivo Then
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.PASV
|
||||
Else
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.AutoActive
|
||||
End If
|
||||
ftp.Config.RetryAttempts = ServidorFTP.Reintentos
|
||||
ftp.Config.ConnectTimeout = ServidorFTP.Timeout
|
||||
Select Case ServidorFTP.Seguridad
|
||||
Case SeguridadFTP.Explicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Explicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case SeguridadFTP.Implicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Implicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case Else
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.None
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.None
|
||||
End Select
|
||||
ftp.Encoding = System.Text.Encoding.UTF8
|
||||
If ftp.IsConnected = False Then ftp.Connect()
|
||||
If ftp.DownloadFile(FicheroLocal, FicheroRemoto, FtpLocalExists.Overwrite, Verificacion, Progreso) = FtpStatus.Failed Then Throw New Exception("No se ha podido descargar el fichero " & FicheroRemoto & " en " & FicheroLocal)
|
||||
|
||||
ftp.Disconnect()
|
||||
Catch EX As Exception
|
||||
Throw New Exception(EX.Message, EX)
|
||||
End Try
|
||||
End Sub
|
||||
Public Shared Async Function EnviaFicheroAsync(FicheroOrigen As String, FicheroDestino As String, ServidorFTP As ServidorFTP, Optional Progreso As IProgress(Of FtpProgress) = Nothing, Optional Verificacion As FtpVerify = FtpVerify.None, Optional ct As Threading.CancellationTokenSource = Nothing) As Tasks.Task(Of FtpStatus)
|
||||
Try
|
||||
Dim cfg As New FtpConfig
|
||||
If ServidorFTP.Pasivo Then
|
||||
cfg.DataConnectionType = FtpDataConnectionType.PASV
|
||||
Else
|
||||
cfg.DataConnectionType = FtpDataConnectionType.AutoActive
|
||||
End If
|
||||
cfg.RetryAttempts = ServidorFTP.Reintentos
|
||||
cfg.ConnectTimeout = ServidorFTP.Timeout
|
||||
Select Case ServidorFTP.Seguridad
|
||||
Case SeguridadFTP.Explicita
|
||||
cfg.EncryptionMode = FtpEncryptionMode.Explicit
|
||||
cfg.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case SeguridadFTP.Implicita
|
||||
cfg.EncryptionMode = FtpEncryptionMode.Implicit
|
||||
cfg.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case Else
|
||||
cfg.EncryptionMode = FtpEncryptionMode.None
|
||||
cfg.SslProtocols = Security.Authentication.SslProtocols.None
|
||||
End Select
|
||||
Dim ftp As AsyncFtpClient = New AsyncFtpClient(ServidorFTP.Servidor, ServidorFTP.Usuario, ServidorFTP.Contraseña, ServidorFTP.Puerto, cfg)
|
||||
AddHandler ftp.ValidateCertificate, AddressOf ValidarCertificadoAsync
|
||||
ftp.Encoding = System.Text.Encoding.UTF8
|
||||
Dim t As FtpStatus
|
||||
If ct Is Nothing Then
|
||||
Await ftp.Connect()
|
||||
t = Await ftp.UploadFile(FicheroOrigen, FicheroDestino, FtpRemoteExists.Overwrite, False, Verificacion, Progreso)
|
||||
Else
|
||||
Await ftp.Connect(ct.Token)
|
||||
t = Await ftp.UploadFile(FicheroOrigen, FicheroDestino, FtpRemoteExists.Overwrite, False, Verificacion, Progreso, ct.Token)
|
||||
End If
|
||||
If ct IsNot Nothing Then
|
||||
Await ftp.Disconnect(ct.Token)
|
||||
Else
|
||||
Await ftp.Disconnect
|
||||
End If
|
||||
If t = FtpStatus.Failed Then Throw New Exception("Error enviado fichero " & FicheroOrigen & " a " & FicheroDestino)
|
||||
Return t
|
||||
' End Using
|
||||
Catch EX As Exception
|
||||
Throw New Exception(EX.Message, EX)
|
||||
End Try
|
||||
|
||||
End Function
|
||||
Public Shared Async Function RenombraFicheroAsync(FicheroOrigen As String, FicheroDestino As String, ServidorFTP As ServidorFTP) As Tasks.Task(Of FtpStatus)
|
||||
Try
|
||||
Dim cfg As New FtpConfig
|
||||
If ServidorFTP.Pasivo Then
|
||||
cfg.DataConnectionType = FtpDataConnectionType.PASV
|
||||
Else
|
||||
cfg.DataConnectionType = FtpDataConnectionType.AutoActive
|
||||
End If
|
||||
cfg.RetryAttempts = ServidorFTP.Reintentos
|
||||
cfg.ConnectTimeout = ServidorFTP.Timeout
|
||||
Select Case ServidorFTP.Seguridad
|
||||
Case SeguridadFTP.Explicita
|
||||
cfg.EncryptionMode = FtpEncryptionMode.Explicit
|
||||
cfg.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case SeguridadFTP.Implicita
|
||||
cfg.EncryptionMode = FtpEncryptionMode.Implicit
|
||||
cfg.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case Else
|
||||
cfg.EncryptionMode = FtpEncryptionMode.None
|
||||
cfg.SslProtocols = Security.Authentication.SslProtocols.None
|
||||
End Select
|
||||
Dim ftp As AsyncFtpClient = New AsyncFtpClient(ServidorFTP.Servidor, ServidorFTP.Usuario, ServidorFTP.Contraseña, ServidorFTP.Puerto, cfg)
|
||||
AddHandler ftp.ValidateCertificate, AddressOf ValidarCertificadoAsync
|
||||
|
||||
ftp.Encoding = System.Text.Encoding.UTF8
|
||||
If ftp.IsConnected = False Then Await ftp.Connect()
|
||||
If Not ftp.Capabilities.Contains(FtpCapability.MDTM) Then ftp.Capabilities.Add(FtpCapability.MDTM)
|
||||
|
||||
' MsgBox("renombrando fichero " & FicheroOrigen & " a " & FicheroDestino)
|
||||
Dim t = Await ftp.MoveFile(FicheroOrigen, FicheroDestino, FtpRemoteExists.Overwrite)
|
||||
' MsgBox(t)
|
||||
Await ftp.Disconnect()
|
||||
If t = FtpStatus.Failed Then Throw New Exception("Error renombrando fichero " & FicheroOrigen & " a " & FicheroDestino)
|
||||
Return t
|
||||
' End Using
|
||||
Catch EX As Exception
|
||||
MsgBox(EX.Message)
|
||||
Throw New PKICOAS.TSException(EX.Message, EX, "FTP_ERROR.DESCONOCIDO", )
|
||||
End Try
|
||||
End Function
|
||||
|
||||
|
||||
Public Shared Sub EnviaFichero(FicheroOrigen As String, FicheroDestino As String, ServidorFTP As ServidorFTP, Optional Progreso As Action(Of FtpProgress) = Nothing, Optional Verificacion As FtpVerify = FtpVerify.None)
|
||||
Try
|
||||
Dim ftp As New FtpClient(ServidorFTP.Servidor, ServidorFTP.Usuario, ServidorFTP.Contraseña, ServidorFTP.Puerto)
|
||||
AddHandler ftp.ValidateCertificate, AddressOf ValidarCertificado
|
||||
If ServidorFTP.Pasivo Then
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.PASV
|
||||
Else
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.AutoActive
|
||||
End If
|
||||
ftp.Config.RetryAttempts = ServidorFTP.Reintentos
|
||||
ftp.Config.ConnectTimeout = ServidorFTP.Timeout
|
||||
Select Case ServidorFTP.Seguridad
|
||||
Case SeguridadFTP.Explicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Explicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case SeguridadFTP.Implicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Implicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case Else
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.None
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.None
|
||||
End Select
|
||||
ftp.Encoding = System.Text.Encoding.UTF8
|
||||
If ftp.IsConnected = False Then ftp.Connect()
|
||||
If Not ftp.Capabilities.Contains(FtpCapability.MDTM) Then ftp.Capabilities.Add(FtpCapability.MDTM)
|
||||
Dim t = ftp.UploadFile(FicheroOrigen, FicheroDestino, FtpRemoteExists.Overwrite, False, Verificacion, Progreso)
|
||||
If t = FtpStatus.Failed Then Throw New Exception("Error enviando fichero " & FicheroOrigen & " a " & FicheroDestino & " ")
|
||||
ftp.Disconnect()
|
||||
Catch EX As Exception
|
||||
Throw New Exception(EX.Message, EX)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Shared Sub EnviaFichero(FicheroOrigen As Byte(), FicheroDestino As String, ServidorFTP As ServidorFTP, Optional Progreso As Action(Of FtpProgress) = Nothing)
|
||||
Try
|
||||
Dim ftp As New FtpClient(ServidorFTP.Servidor, ServidorFTP.Usuario, ServidorFTP.Contraseña, ServidorFTP.Puerto)
|
||||
AddHandler ftp.ValidateCertificate, AddressOf ValidarCertificado
|
||||
If ServidorFTP.Pasivo Then
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.PASV
|
||||
Else
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.AutoActive
|
||||
End If
|
||||
ftp.Config.RetryAttempts = ServidorFTP.Reintentos
|
||||
ftp.Config.ConnectTimeout = ServidorFTP.Timeout
|
||||
Select Case ServidorFTP.Seguridad
|
||||
Case SeguridadFTP.Explicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Explicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case SeguridadFTP.Implicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Implicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case Else
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.None
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.None
|
||||
End Select
|
||||
ftp.Encoding = System.Text.Encoding.UTF8
|
||||
If ftp.IsConnected = False Then ftp.Connect()
|
||||
If Not ftp.Capabilities.Contains(FtpCapability.MDTM) Then ftp.Capabilities.Add(FtpCapability.MDTM)
|
||||
Dim t = ftp.UploadBytes(FicheroOrigen, FicheroDestino, FtpRemoteExists.Overwrite, False, Progreso)
|
||||
If t = FtpStatus.Failed Then Throw New Exception("Error enviando fichero ")
|
||||
ftp.Disconnect()
|
||||
Catch EX As Exception
|
||||
Throw
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Public Shared Sub CreaDirectorio(Directorio As String, ServidorFTP As ServidorFTP)
|
||||
Try
|
||||
Dim ftp As New FtpClient(ServidorFTP.Servidor, ServidorFTP.Usuario, ServidorFTP.Contraseña, ServidorFTP.Puerto)
|
||||
AddHandler ftp.ValidateCertificate, AddressOf ValidarCertificado
|
||||
If ServidorFTP.Pasivo Then
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.PASV
|
||||
Else
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.AutoActive
|
||||
End If
|
||||
ftp.Config.RetryAttempts = ServidorFTP.Reintentos
|
||||
ftp.Config.ConnectTimeout = ServidorFTP.Timeout
|
||||
Select Case ServidorFTP.Seguridad
|
||||
Case SeguridadFTP.Explicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Explicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case SeguridadFTP.Implicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Implicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case Else
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.None
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.None
|
||||
End Select
|
||||
ftp.Encoding = System.Text.Encoding.UTF8
|
||||
If ftp.IsConnected = False Then ftp.Connect()
|
||||
|
||||
If Not ftp.DirectoryExists(Directorio) Then
|
||||
ftp.CreateDirectory(Directorio, True)
|
||||
End If
|
||||
ftp.Disconnect()
|
||||
Catch EX As Exception
|
||||
Throw
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Shared Sub EliminaFichero(Fichero As String, ServidorFTP As ServidorFTP)
|
||||
Try
|
||||
Dim ftp As New FtpClient(ServidorFTP.Servidor, ServidorFTP.Usuario, ServidorFTP.Contraseña, ServidorFTP.Puerto)
|
||||
AddHandler ftp.ValidateCertificate, AddressOf ValidarCertificado
|
||||
If ServidorFTP.Pasivo Then
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.PASV
|
||||
Else
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.AutoActive
|
||||
End If
|
||||
ftp.Config.RetryAttempts = ServidorFTP.Reintentos
|
||||
ftp.Config.ConnectTimeout = ServidorFTP.Timeout
|
||||
Select Case ServidorFTP.Seguridad
|
||||
Case SeguridadFTP.Explicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Explicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case SeguridadFTP.Implicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Implicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case Else
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.None
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.None
|
||||
End Select
|
||||
ftp.Encoding = System.Text.Encoding.UTF8
|
||||
If ftp.IsConnected = False Then ftp.Connect()
|
||||
ftp.DeleteFile(Fichero)
|
||||
ftp.Disconnect()
|
||||
Catch EX As Exception
|
||||
Throw
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Shared Function ExisteFichero(Fichero As String, ServidorFTP As ServidorFTP) As Boolean
|
||||
Try
|
||||
Dim ftp As New FtpClient(ServidorFTP.Servidor, ServidorFTP.Usuario, ServidorFTP.Contraseña, ServidorFTP.Puerto)
|
||||
AddHandler ftp.ValidateCertificate, AddressOf ValidarCertificado
|
||||
If ServidorFTP.Pasivo Then
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.PASV
|
||||
Else
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.AutoActive
|
||||
End If
|
||||
ftp.Config.RetryAttempts = ServidorFTP.Reintentos
|
||||
ftp.Config.ConnectTimeout = ServidorFTP.Timeout
|
||||
Select Case ServidorFTP.Seguridad
|
||||
Case SeguridadFTP.Explicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Explicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case SeguridadFTP.Implicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Implicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case Else
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.None
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.None
|
||||
End Select
|
||||
ftp.Encoding = System.Text.Encoding.UTF8
|
||||
If ftp.IsConnected = False Then ftp.Connect()
|
||||
If Not ftp.Capabilities.Contains(FtpCapability.MDTM) Then ftp.Capabilities.Add(FtpCapability.MDTM)
|
||||
Return ftp.FileExists(Fichero)
|
||||
ftp.Disconnect()
|
||||
Catch EX As Exception
|
||||
Throw
|
||||
End Try
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
Public Shared Sub RenombraFichero(FicheroOrigen As String, FicheroDestino As String, ServidorFTP As ServidorFTP)
|
||||
Try
|
||||
Dim ftp As New FtpClient(ServidorFTP.Servidor, ServidorFTP.Usuario, ServidorFTP.Contraseña, ServidorFTP.Puerto)
|
||||
If ServidorFTP.Pasivo Then
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.PASV
|
||||
Else
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.AutoActive
|
||||
End If
|
||||
ftp.Config.RetryAttempts = ServidorFTP.Reintentos
|
||||
ftp.Config.ConnectTimeout = ServidorFTP.Timeout
|
||||
AddHandler ftp.ValidateCertificate, AddressOf ValidarCertificado
|
||||
Select Case ServidorFTP.Seguridad
|
||||
Case SeguridadFTP.Explicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Explicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case SeguridadFTP.Implicita
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.Implicit
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.Tls + Security.Authentication.SslProtocols.Tls11 + Security.Authentication.SslProtocols.Tls12
|
||||
Case Else
|
||||
ftp.Config.EncryptionMode = FtpEncryptionMode.None
|
||||
ftp.Config.SslProtocols = Security.Authentication.SslProtocols.None
|
||||
End Select
|
||||
ftp.Encoding = System.Text.Encoding.UTF8
|
||||
If ftp.IsConnected = False Then ftp.Connect()
|
||||
If Not ftp.Capabilities.Contains(FtpCapability.MDTM) Then ftp.Capabilities.Add(FtpCapability.MDTM)
|
||||
ftp.MoveFile(FicheroOrigen, FicheroDestino, FtpRemoteExists.Overwrite)
|
||||
ftp.Disconnect()
|
||||
Catch EX As PKICOAS.TSException
|
||||
Throw EX
|
||||
Catch EX As Exception
|
||||
Throw New PKICOAS.TSException(EX.Message, EX, "FTP_ERROR.DESCONOCIDO", )
|
||||
End Try
|
||||
End Sub
|
||||
'Public Shared Sub MueveFicheros(PatronFicheroOrigen As String, DirectorioDestino As String, ServidorFTP As ServidorFTP)
|
||||
' Try
|
||||
' Dim ftp As New FtpClient(ServidorFTP.Servidor, ServidorFTP.Puerto, ServidorFTP.Usuario, ServidorFTP.Contraseña)
|
||||
' If ServidorFTP.Pasivo Then ftp.DataConnectionType = ServidorFTP.Pasivo
|
||||
' AddHandler ftp.ValidateCertificate, AddressOf ValidarCertificado
|
||||
' Select Case ServidorFTP.Seguridad
|
||||
' Case SeguridadFTP.Explicita
|
||||
' ftp.EncryptionMode = FtpEncryptionMode.Explicit
|
||||
' ftp.SslProtocols = Security.Authentication.SslProtocols.Tls
|
||||
' Case SeguridadFTP.Implicita
|
||||
' ftp.EncryptionMode = FtpEncryptionMode.Implicit
|
||||
' ftp.SslProtocols = Security.Authentication.SslProtocols.Tls
|
||||
' Case Else
|
||||
' ftp.EncryptionMode = FtpEncryptionMode.None
|
||||
' End Select
|
||||
' ftp.Encoding = System.Text.Encoding.UTF8
|
||||
|
||||
' Dim lf = ftp.GetListing(PatronFicheroOrigen)
|
||||
' If DirectorioDestino.EndsWith("/") = False Then DirectorioDestino &= "/"
|
||||
' For Each F In lf
|
||||
' ftp.Rename(F.FullName, DirectorioDestino & F.Name)
|
||||
' Next
|
||||
' Catch EX As PKICOAS.TSException
|
||||
' Throw EX
|
||||
' Catch EX As Exception
|
||||
' Throw New PKICOAS.TSException(EX.Message, EX, "FTP_ERROR.DESCONOCIDO", )
|
||||
' End Try
|
||||
'End Sub
|
||||
|
||||
Public Shared Function ObtieneListaFicheros(Ruta As String, ServidorFTP As ServidorFTP) As FtpListItem()
|
||||
Dim ftp As New FtpClient(ServidorFTP.Servidor, ServidorFTP.Usuario, ServidorFTP.Contraseña, ServidorFTP.Puerto)
|
||||
If ServidorFTP.Pasivo Then
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.PASV
|
||||
Else
|
||||
ftp.Config.DataConnectionType = FtpDataConnectionType.AutoActive
|
||||
End If
|
||||
ftp.Config.RetryAttempts = ServidorFTP.Reintentos
|
||||
ftp.Config.ConnectTimeout = ServidorFTP.Timeout
|
||||
' ftp.Config.ListingCulture = Globalization.CultureInfo.CurrentCulture
|
||||
If ftp.IsConnected = False Then ftp.Connect()
|
||||
Dim lf = ftp.GetListing(Ruta)
|
||||
ftp.Disconnect()
|
||||
Return lf
|
||||
End Function
|
||||
|
||||
Private Shared Sub ValidarCertificado(control As FtpClient, e As FtpSslValidationEventArgs)
|
||||
e.Accept = True
|
||||
End Sub
|
||||
Private Shared Sub ValidarCertificadoAsync(control As AsyncFtpClient, e As FtpSslValidationEventArgs)
|
||||
e.Accept = True
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
Public Class ServidorFTP
|
||||
Property Servidor As String
|
||||
Property Puerto As Integer
|
||||
Property Seguridad As SeguridadFTP
|
||||
Property Pasivo As Boolean
|
||||
Property Timeout As Integer
|
||||
Property Usuario As String
|
||||
Property Contraseña As String
|
||||
Property Reintentos As Integer
|
||||
Public Sub New(Servidor As String, Puerto As Integer, Usuario As String, Contraseña As String, Optional Seguridad As SeguridadFTP = SeguridadFTP.Ninguna, Optional Pasivo As Boolean = False, Optional timeout As Integer = 20000, Optional Reintentos As Integer = 3)
|
||||
_Servidor = Servidor
|
||||
_Puerto = Puerto
|
||||
_Seguridad = Seguridad
|
||||
_Pasivo = Pasivo
|
||||
_Timeout = timeout
|
||||
_Usuario = Usuario
|
||||
_Contraseña = Contraseña
|
||||
_Reintentos = Reintentos
|
||||
End Sub
|
||||
End Class
|
||||
Public Enum SeguridadFTP
|
||||
Ninguna = 0
|
||||
Implicita = 1
|
||||
Explicita = 2
|
||||
ExplicitaConControl = 3
|
||||
ExplicitaControlOpcional = 4
|
||||
SoloControl = 5
|
||||
SoloDatos = 6
|
||||
End Enum
|
||||
|
||||
Reference in New Issue
Block a user