2010-02-12 5 views

Répondre

5

J'utilise andFTP pour les transferts sftp mais ce n'est pas open source. Vous pouvez vérifier connectBot. Il y a un problème à propos de sftp transfers.

+0

Salut Macarse vous THNK votre réponse. Je suis passé par le client open source connectbolt SSH sur android. Maintenant, je veux demander si je peux intégrer FTP et connectbolt SSH pour former mon SFTP ?? Combien serait-il possible de considérer que je ne connais pas grand-chose des internes de SSH. Merci d'avance. –

+0

Je pense qu'ils vont l'ajouter, mais ce n'est pas encore là. Postez un commentaire sur le problème et demandez-leur. – Macarse

4

Oui, edtFTPj/PRO est une bibliothèque Java commerciale qui fonctionne sur Android et prend en charge SFTP (ainsi que FTP et FTPS).

0

Vous pouvez utiliser jsch.

Gradle:

compile group: 'com.jcraft', name: 'jsch', version: '0.1.54' 

Proguard (je ne le garder public et ignorer les avertissements solution facile, surpuissance je choisis de ne pas salir avec elle ici..). Si vous connaissez la solution correcte - faites le moi savoir.

-keep class com.jcraft.jsch.jce.* 
-keep class * extends com.jcraft.jsch.KeyExchange 
-keep class com.jcraft.jsch.** 
-keep class com.jcraft.jzlib.** 
-keep class com.jcraft.jsch.jce.* 
-keep class com.jcraft.jzlib.ZStream 
-keep class com.jcraft.jsch.Compression 
-keep class org.ietf.jgss.* 
-dontwarn org.ietf.jgss.** 
-dontwarn com.jcraft.jsch.** 
Code

:

// add correct exception-handling; remember to close connection in all cases 
public void doUpload(String host, String user, String password, String folder, int port, File file){ 
    JSch jsch = new JSch(); 

    Session session = jsch.getSession(user, host, port); 
    session.setPassword(password); 

    java.util.Properties config = new java.util.Properties(); 
    //Don't do it on Production -- makes it MITM-vulnerable 
    config.put("StrictHostKeyChecking", "no"); 
    session.setConfig(config); 
    session.setTimeout(5000); 
    session.setConfig("PreferredAuthentications", "password"); 
    session.connect(); 

    Channel channel = session.openChannel("sftp"); 
    channel.connect(); 
    ChannelSftp channelSftp = (ChannelSftp) channel; 

    String home = channelSftp.getHome(); 
    if (folder == null || folder.length() == 0 || "/".equals(folder)) { 
     folder = home; 
    } else { 
     File file = new File(new File(home), folder); 
     folder = file.getPath(); 
    } 
    channelSftp.cd(folder); 

    try (BufferedInputStream buffIn = new BufferedInputStream(new FileInputStream(file.getPath()))) { 
     ProgressInputStream progressInput = new ProgressInputStream(buffIn, progressListener, file.length()); 
     channelSftp.put(progressInput, file.getName()); 
    } 

    channelSftp.disconnect(); 
    session.disconnect(); 
} 
Questions connexes