#AdditionalJar: bcprov-jdk15on-1.54
#AdditionalJar: bcpkix-jdk18on-1.84
#AdditionalJar: slf4j-api-1.7.7
#AdditionalJar: slf4j-simple-1.7.30
#AdditionalJar: eddsa-0.3.0
#AdditionalJar: sshj-0.37.0
Sub SFTP_Connect_SSHJ(Host As String, User As String, Password As String) As Boolean
Try
Dim ssh As JavaObject
ssh.InitializeNewInstance("net.schmizz.sshj.SSHClient", Null)
' Accetta tutte le chiavi host (equivalente StrictHostKeyChecking=no)
Dim verifier As JavaObject
verifier.InitializeNewInstance("net.schmizz.sshj.transport.verification.PromiscuousVerifier", Null)
ssh.RunMethod("addHostKeyVerifier", Array(verifier))
' Connessione
ssh.RunMethod("connect", Array(Host))
' Autenticazione
ssh.RunMethod("authPassword", Array(User, Password))
' Apertura SFTP
Dim sftpClient As JavaObject = ssh.RunMethod("newSFTPClient", Null)
' Salva riferimento globale
sFTP = sftpClient
sshClient = ssh
Return True
Catch
Log("Errore SSHJ: " & LastException)
Return False
End Try
End Sub
Sub SFTP_Upload(localFile As String, remoteDir As String, remoteFile As String) As ResumableSub
Try
Dim remotePath As String = _
IIf(remoteDir.EndsWith("/"), remoteDir.SubString2(0, remoteDir.Length - 1), remoteDir) _
& "/" & remoteFile
' opzionale: crea cartella
' SFTP_Mkdir(remoteDir)
sFTP.RunMethod("put", Array(localFile, remotePath))
Return True
Catch
Log("Errore upload: " & LastException)
Return False
End Try
End Sub
Sub SFTP_Disconnect
Try
If sFTP.IsInitialized Then
sFTP.RunMethod("close", Null)
End If
If sshClient.IsInitialized Then
sshClient.RunMethod("disconnect", Null)
End If
Catch
Log("Errore disconnect: " & LastException)
End Try