From 28a55fdc69e31490a4086ecae8cc687f40ba0b94 Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Wed, 25 Sep 2024 21:12:24 +0200 Subject: Add libs:sftp sftp implementation using libssh2 and openssl --- .gitmodules | 6 + .idea/gradle.xml | 1 + .idea/vcs.xml | 2 + app/build.gradle.kts | 1 + libs/samba/src/main/cpp/jni.cpp | 134 +++- libs/samba/src/main/cpp/jni.hpp | 7 + libs/sftp/CMakeLists.txt | 46 ++ libs/sftp/build.gradle.kts | 205 ++++++ libs/sftp/libssh2 | 1 + libs/sftp/libssh2.pc.in | 1 + libs/sftp/openssl | 1 + libs/sftp/src/.gitignore | 2 + libs/sftp/src/main/cpp/jni.cpp | 1 + libs/sftp/src/main/cpp/jni.hpp | 1 + libs/sftp/src/main/cpp/sftp.cpp | 688 +++++++++++++++++++++ .../org/the_jk/cleversync/io/sftp/NativeSftp.kt | 289 +++++++++ .../the_jk/cleversync/io/sftp/SftpConnection.kt | 132 ++++ .../the_jk/cleversync/io/sftp/SftpCredentials.kt | 13 + .../org/the_jk/cleversync/io/sftp/SftpDirectory.kt | 195 ++++++ .../java/org/the_jk/cleversync/io/sftp/SftpFile.kt | 113 ++++ .../java/org/the_jk/cleversync/io/sftp/SftpLink.kt | 77 +++ .../java/org/the_jk/cleversync/io/sftp/SftpTree.kt | 17 + .../org/the_jk/cleversync/sftp/SftpTreeFactory.kt | 24 + libs/sftp/src/test/docker/docker-compose.yml | 12 + libs/sftp/src/test/docker/ssh_host_ed25519_key | 7 + libs/sftp/src/test/docker/ssh_host_ed25519_key.pub | 1 + libs/sftp/src/test/docker/ssh_host_rsa_key | 49 ++ libs/sftp/src/test/docker/ssh_host_rsa_key.pub | 1 + libs/sftp/src/test/docker/user_private.pem | 30 + libs/sftp/src/test/docker/user_public.pem | 9 + .../org/the_jk/cleversync/sftp/SftpTreeTest.kt | 168 +++++ .../java/org/the_jk/cleversync/TreeAbstractTest.kt | 4 +- settings.gradle.kts | 1 + 33 files changed, 2236 insertions(+), 3 deletions(-) create mode 100644 libs/sftp/CMakeLists.txt create mode 100644 libs/sftp/build.gradle.kts create mode 160000 libs/sftp/libssh2 create mode 120000 libs/sftp/libssh2.pc.in create mode 160000 libs/sftp/openssl create mode 100644 libs/sftp/src/.gitignore create mode 120000 libs/sftp/src/main/cpp/jni.cpp create mode 120000 libs/sftp/src/main/cpp/jni.hpp create mode 100644 libs/sftp/src/main/cpp/sftp.cpp create mode 100644 libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/NativeSftp.kt create mode 100644 libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpConnection.kt create mode 100644 libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpCredentials.kt create mode 100644 libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpDirectory.kt create mode 100644 libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpFile.kt create mode 100644 libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpLink.kt create mode 100644 libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpTree.kt create mode 100644 libs/sftp/src/main/java/org/the_jk/cleversync/sftp/SftpTreeFactory.kt create mode 100644 libs/sftp/src/test/docker/docker-compose.yml create mode 100644 libs/sftp/src/test/docker/ssh_host_ed25519_key create mode 100644 libs/sftp/src/test/docker/ssh_host_ed25519_key.pub create mode 100644 libs/sftp/src/test/docker/ssh_host_rsa_key create mode 100644 libs/sftp/src/test/docker/ssh_host_rsa_key.pub create mode 100644 libs/sftp/src/test/docker/user_private.pem create mode 100644 libs/sftp/src/test/docker/user_public.pem create mode 100644 libs/sftp/src/test/java/org/the_jk/cleversync/sftp/SftpTreeTest.kt diff --git a/.gitmodules b/.gitmodules index bdcf1e8..dcb5649 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,9 @@ [submodule "libs/samba/libsmb2"] path = libs/samba/libsmb2 url = https://github.com/sahlberg/libsmb2.git +[submodule "libs/sftp/libssh2"] + path = libs/sftp/libssh2 + url = https://github.com/libssh2/libssh2.git +[submodule "libs/sftp/openssl"] + path = libs/sftp/openssl + url = https://github.com/openssl/openssl.git diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 098a16f..86a0137 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -27,6 +27,7 @@