Skip to content

ReteGet 0.5.0

Choose a tag to compare

@rubidus-api rubidus-api released this 06 Oct 16:33
· 5 commits to main since this release

ReteGet 0.5.0 — SFTP, FTPS, resumed downloads, logins

SFTP (sftp://user:password@host/path). ReteGet now has its own SSH-2 client, written in plain Java like its TLS, so it works on Android 2.3 too. The first time you connect, the server's host key fingerprint is shown and nothing is sent until you tap Trust; if the key later differs, the download stops and shows both fingerprints. Log in with the password in the URL or with a key: under SSH keys you can generate an Ed25519 key on the phone (copy its public key into the server's authorized_keys) or import an OpenSSH key file (Ed25519 or RSA), then choose the key for an address or a preset. A key with a passphrase stays encrypted on the phone and is unlocked once per run of the app. Tested against OpenSSH 10.0.

FTPS (ftpes:// explicit, ftps:// implicit). FTP over TLS with ReteGet's own TLS 1.3 / 1.2. The password and the file both travel inside TLS, and the data connection reuses the TLS session as vsftpd, ProFTPD and others require. A certificate that cannot be verified (the usual self-signed one of a NAS) is shown with its SHA-256 fingerprint; after Trust that server must always present exactly that certificate. Tested against vsftpd 3.0.5 and ProFTPD 1.3.8.

Broken downloads continue where they stopped. HTTP(S), FTP, FTPS and SFTP downloads are written to name.part and renamed when complete. If the connection drops, ReteGet continues on its own up to three times, and Retry continues too, also after the app was closed. A file that changed on the server is fetched again from the start instead of being spliced. HTTP needs a server that sends an ETag or Last-Modified date; FTP needs REST and MDTM.

Password-protected HTTP servers. Put the user name and password in the URL (http://user:password@host/path). They are sent only when the server asks, with Digest (SHA-256 or MD5) when offered and otherwise Basic, and only to the address they were written for. Passwords are shown as *** and left out of settings exports.

Fixed: Android 6 and newer never got the storage question, so downloads went to the app's own storage unless the permission was granted in the system settings. ReteGet now asks at the first download (not when it starts); if you decline, the app's storage is used as before.

Not in this version: no ChaCha20 or SHA-1 signatures for SSH, no ECDSA or PuTTY private keys, no browsing of server directories.

APK: reteget-0.5.0.apk, 246,258 bytes, SHA-256 7fc2976ce1df887c2d39cbf1087adb528730722329cd868f22caf08a35863e64. Same signing key and the same four permissions as earlier releases; built with JDK 21 and reproducible from this tag.


ReteGet 0.5.0 — SFTP, FTPS, 이어받기, 로그인

SFTP(sftp://user:password@host/path). TLS처럼 순수 Java로 직접 구현한 SSH-2 클라이언트가 들어가, 안드로이드 2.3에서도 동작합니다. 처음 접속할 때 서버의 호스트 키 지문을 보여 주고 Trust를 누르기 전에는 아무것도 보내지 않습니다. 나중에 키가 달라지면 두 지문을 보여 주며 다운로드를 멈춥니다. 주소의 비밀번호나 키로 로그인합니다: SSH keys에서 폰으로 Ed25519 키를 만들거나(공개 키를 서버의 authorized_keys에 복사) OpenSSH 키 파일(Ed25519 또는 RSA)을 가져온 뒤, 주소나 프리셋마다 쓸 키를 고릅니다. 암호가 걸린 키는 폰에 암호화된 채 저장되고 앱을 켤 때마다 한 번 풉니다. OpenSSH 10.0으로 시험했습니다.

FTPS(명시적 ftpes://, 암묵적 ftps://). ReteGet 자체 TLS 1.3 / 1.2로 보호하는 FTP입니다. 비밀번호와 파일이 모두 TLS 안에서 오가고, 데이터 연결은 vsftpd·ProFTPD 등이 요구하는 대로 TLS 세션을 이어 씁니다. 검증할 수 없는 인증서(NAS의 자체 서명 인증서가 보통 그렇습니다)는 SHA-256 지문과 함께 보여 주고, Trust한 뒤에는 그 서버가 항상 정확히 그 인증서를 제시해야 합니다. vsftpd 3.0.5와 ProFTPD 1.3.8로 시험했습니다.

끊긴 다운로드를 멈춘 곳부터 이어받습니다. HTTP(S)·FTP·FTPS·SFTP 다운로드는 이름.part에 쓰고 다 받으면 이름을 바꿉니다. 연결이 끊기면 스스로 세 번까지 이어받고, Retry로도 이어받으며, 앱이 닫혔다 다시 열려도 됩니다. 서버에서 파일이 바뀌었으면 섞지 않고 처음부터 다시 받습니다. HTTP는 서버가 ETag나 Last-Modified를 보내야 하고, FTP는 REST와 MDTM이 필요합니다.

비밀번호가 걸린 HTTP 서버. 주소에 사용자 이름과 비밀번호를 넣습니다(http://user:password@host/path). 서버가 요구할 때만, 서버가 제시하면 Digest(SHA-256 또는 MD5)로, 아니면 Basic으로, 입력한 주소에만 보냅니다. 비밀번호는 ***로 보이고 설정 내보내기에서 빠집니다.

수정: 안드로이드 6 이상에서 저장소 권한을 묻지 않던 문제. 시스템 설정에서 직접 권한을 주지 않으면 다운로드가 앱 전용 저장소로 갔습니다. 이제 첫 다운로드 때(앱을 켤 때가 아니라) 묻고, 거절하면 전과 같이 앱 저장소를 씁니다.

이번 버전에 없는 것: SSH의 ChaCha20과 SHA-1 서명, ECDSA·PuTTY 개인 키, 서버 디렉터리 탐색.