Coder Social home page Coder Social logo

x0b / rcx Goto Github PK

View Code? Open in Web Editor NEW
1.6K 28.0 135.0 216.68 MB

Rclone for Android

Home Page: https://x0b.github.io

License: GNU General Public License v3.0

Java 99.90% Roff 0.10%
rclone rclone-client android-app android-application storage-access-framework file-manager

rcx's Introduction

RCX - Rclone for Android

license: GPL v3 Github Releases GitHub release Google Play F-Droid

A cloud file manager, powered by rclone.

Features

Cloud Access 256 Bit Encryption1 Integrated Experience
Cloud Access 256 Bit End-to-End Encryption Integrated Experience
Use your cloud storage like a local folder. Keep your files private on any cloud provider with crypt remotes. Don't give up features or comfort just because it runs on a phone.
  • File Management (list, view, download, upload, move, rename, delete files and folders)
  • Streaming (Stream media files, serve files and directories over FTP, HTTP, WebDAV or DLNA)
  • Integration (Access local storage devices and share files with the application to store them on a remote)
  • Many cloud storage providers (all via rclone config import, some without)
  • Material Design (Dark theme, custom primary and accent colors)
  • All architectures (runs on ARM, ARM64, x86 and x64 devices, Android 7+)
  • Storage Access Framework (SAF) (see docs) for SD card and USB device access.

Screenshots

Manage Storage Upload Files Explore Files Manage Files
screenshot1 screenshot3 screenshot7 screenshot8

Installation

Grab the latest version of the signed APK and install it on your phone. You can also register for the closed Google Play testing group, the Google Play Beta, or on F-Droid.

CPU architecture Where to find APK identifier
ARM 32 Bit older devices armeabi-v7a
ARM 64 Bit most devices arm64-v8a
Intel/AMD 32 Bit some TV boxes and tablets x86
Intel/AMD 64 Bit some emulators x86_64

If you don't know which version to pick use rcx-<version>-universal-release.apk. Most devices run ARM 64 Bit, and 64 Bit devices often can also run the respective 32 bit version at lower performance. The app runs on any phone, tablet or TV with Android 7 or newer, as long as you have a touchscreen or mouse.

Usage

See the documentation.

Known Issues

  • Reauthorization of OAuth remotes shows intermittent failures. This is currently under investigation.

Contributing

See CONTRIBUTING

License

About this app

This app is released under the terms of the GPLv3 license. Community contributions are licensed under the MIT license, and CLA Assistant will ask you to confirm a CLA stating that if create a PR.

This is a fork of rcloneExplorer by Patryk Kaczmarkiewicz. For the original repository, see kaczmarkiewiczp/rcloneExplorer. If you want to convey a modified version (fork), we ask you to use a different name, app icon and package id as well as proper attribution to avoid user confusion.

Libraries

rcx's People

Contributors

alyssadev avatar buywetwok avatar davsinghm avatar patrykcoding avatar x0b avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rcx's Issues

Crash when streaming loading dialog is not attached to an activity

Thanks for enabling crash reports :)

Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
       at android.content.ComponentName.<init>(ComponentName.java:130)
       at android.content.Intent.<init>(Intent.java:6108)
       at ca.pkay.rcloneexplorer.Fragments.FileExplorerFragment$StreamTask.doInBackground(FileExplorerFragment.java:1965)
       at ca.pkay.rcloneexplorer.Fragments.FileExplorerFragment$StreamTask.doInBackground(FileExplorerFragment.java:1932)
       at android.os.AsyncTask$2.call(AsyncTask.java:333)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at java.lang.Thread.run(Thread.java:764)

Make Thumbnail Filesize limit user configurable

Are thumbnails set to only show for files under a certain size? I'm unable to get them to display for anything larger than ~15MB? I looked at app/src/main/java/ca/pkay/rcloneexplorer/Services/ThumbnailsLoadingService.java, but that didn't seem to set any sort of file size limitation that I could ascertain.

HTTP Proxy support

Hi, i've noticed that rcloneExplorer does not have http proxy support. Rclone itself has no flags to define proxy but supports it via environment variable. Would it be too much trouble to add http proxy support to rcloneExplorer?

Cheers!

add option to use a specific rclone.conf without import

hello and thanks,

i use rclone on termux and i have a config file that i use.
each time i change that rclone.conf, i have to manually re-import it into rcx.

  1. allow option to use a rclone.conf that is stored on the android phone, without import,as per normal rclone behavior.
  2. allow option to re-import/refresh from that rclone.conf

rclone does not run on Android Q

When running rclone on Android Q, rclone exits with:

runtime/cgo: pthread_key_create failed
Aborted

Environment

go version: go1.12.8 linux/amd64

Possibly fixed in go 1.13

EDIT
Fix confirmed in go 1.13. Version 1.7.5 binaries for x86 will be built with go1.13 RC1+. Other versions (x86_64, armv7a, armv8a) are not affected and will be built with go1.12.

Problems with Serve

Still some problems with Serve it starts but after starting webdav can browse for 10 seconds then get connection lost.
No info on error logs.

The older versions before 1.9 no problems

How to build a working APK?

I'm not sure how to build a working APK, can you provide some instructions how to build from source?

I can pull the sources down and build an APK, but the resulting app doesn't seem to work. It stars up, but when I try to add a remote, Dropbox for example, it bails out to the "Remotes" screen (after setting "Remote name" in the first "Dropbox" detail screen after pressing NEXT).

The same flow of adding Dropbox remote works for me with the downloaded release 1.10.1 APK - so the question is, how do I get a working build out of these sources that would allow me to connect to Dropbox, or other remotes?

Crash on Loading Dialog (II)

App crashes on loading dialog when FileExplorerFragment.java:2022 is reached when the after the app has already been put into background by the user.

Stacktrace

Caused by java.lang.IllegalStateException: Fragment LoadingDialog{78ec38a (6e231696-05c6-4c67-9397-89128053cccc)} not associated with a fragment manager.
       at androidx.fragment.app.Fragment.requireFragmentManager(Fragment.java:910)
       at androidx.fragment.app.DialogFragment.dismissInternal(DialogFragment.java:245)
       at androidx.fragment.app.DialogFragment.dismiss(DialogFragment.java:202)
       at ca.pkay.rcloneexplorer.Fragments.FileExplorerFragment$StreamTask.doInBackground(FileExplorerFragment.java:2024)
       at ca.pkay.rcloneexplorer.Fragments.FileExplorerFragment$StreamTask.doInBackground(FileExplorerFragment.java:1933)
       at android.os.AsyncTask$2.call(AsyncTask.java:304)
       at java.util.concurrent.FutureTask.run(FutureTask.java:237)
       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at java.lang.Thread.run(Thread.java:761)

Storage Access Framework support

Hi,

I thought it would be useful should this app implemented the Storage Access Framework interface so that third-party apps could read/write files directly from/to the remotes through rclone.

Do you think it would be feasible? I could give it a try sometimes.

Jottacloud OAuth error: unexpected end of JSON input

What problem are you having with rcloneExplorer?

I'm trying to use JottaCloud with this app. JottaCloud support works fine with rclone. Since Jotta cannot be added via the Add dialog, I imported a working config file from desktop rclone.

Yet, when accessing the remote, I get "Error retrieving directory content".

The logfile says:

2020-05-26 09:45:24 - 2020/05/26 07:45:24 DEBUG : rclone: Version "v1.51.0" starting with parameters ["/data/app/io.github.x0b.rcx-DV8zMG6FsYEuo7eIeAJMEg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "lsjson" "jotta:"]
2020/05/26 07:45:24 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf"
2020/05/26 07:45:24 Failed to create file system for "jotta:": Failed to configure Jottacloud oauth client: unexpected end of JSON input

2020-05-26 09:53:28 - 2020/05/26 07:53:28 DEBUG : rclone: Version "v1.51.0" starting with parameters ["/data/app/io.github.x0b.rcx-DV8zMG6FsYEuo7eIeAJMEg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "lsjson" "jotta:"]
2020/05/26 07:53:28 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf"
2020/05/26 07:53:28 Failed to create file system for "jotta:": Failed to configure Jottacloud oauth client: unexpected end of JSON input

2020-05-26 09:53:32 - 2020/05/26 07:53:32 DEBUG : rclone: Version "v1.51.0" starting with parameters ["/data/app/io.github.x0b.rcx-DV8zMG6FsYEuo7eIeAJMEg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "lsjson" "jotta:"]
2020/05/26 07:53:32 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf"
2020/05/26 07:53:32 Failed to create file system for "jotta:": Failed to configure Jottacloud oauth client: unexpected end of JSON input

2020-05-26 09:53:39 - 2020/05/26 07:53:39 DEBUG : rclone: Version "v1.51.0" starting with parameters ["/data/app/io.github.x0b.rcx-DV8zMG6FsYEuo7eIeAJMEg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "link" "jotta:"]
2020/05/26 07:53:39 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf"
2020/05/26 07:53:39 Failed to create file system for "jotta:": Failed to configure Jottacloud oauth client: unexpected end of JSON input

2020-05-26 09:57:38 - 2020/05/26 07:57:38 DEBUG : rclone: Version "v1.51.0" starting with parameters ["/data/app/io.github.x0b.rcx-DV8zMG6FsYEuo7eIeAJMEg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "lsjson" "jotta:"]
2020/05/26 07:57:38 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf"
2020/05/26 07:57:38 Failed to create file system for "jotta:": Failed to configure Jottacloud oauth client: unexpected end of JSON input

2020-05-26 09:57:42 - 2020/05/26 07:57:42 DEBUG : rclone: Version "v1.51.0" starting with parameters ["/data/app/io.github.x0b.rcx-DV8zMG6FsYEuo7eIeAJMEg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "lsjson" "jotta:"]
2020/05/26 07:57:42 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf"
2020/05/26 07:57:42 Failed to create file system for "jotta:": Failed to configure Jottacloud oauth client: unexpected end of JSON input

2020-05-26 09:57:45 - 2020/05/26 07:57:45 DEBUG : rclone: Version "v1.51.0" starting with parameters ["/data/app/io.github.x0b.rcx-DV8zMG6FsYEuo7eIeAJMEg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "lsjson" "jotta:"]
2020/05/26 07:57:45 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf"
2020/05/26 07:57:45 Failed to create file system for "jotta:": Failed to configure Jottacloud oauth client: unexpected end of JSON input

2020-05-26 09:58:05 - 2020/05/26 07:58:05 DEBUG : rclone: Version "v1.51.0" starting with parameters ["/data/app/io.github.x0b.rcx-DV8zMG6FsYEuo7eIeAJMEg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "lsjson" "jotta:"]
2020/05/26 07:58:05 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf"
2020/05/26 07:58:05 Failed to create file system for "jotta:": Failed to configure Jottacloud oauth client: unexpected end of JSON input

I tried tapping the "Authorization" label in the remotes properties. But the only change I see is that first open of the remote takes longer. But still fails.

Technical Information

rclone: v1.51.0
rcloneExplorer: 1.11.4
android-sdk: 28
android-device: EML-L09
android-ndk-abis: arm64-v8a;armeabi-v7a;armeabi

Crash on RCX startup (unconfirmed)

My RCX was working fine. Suddenly when I try to open it again, it just closes like it's crashing or something like that.

Probably, if I clean data and storage, it will work again but how can I provide a log? It might be an important bug.

Crash from robotest #34pq5i543lw7c (API 27)

Stacktrace

java.lang.NullPointerException
     FATAL EXCEPTION: ControllerMessenger
Process: ca.pkay.rcloneexplorer.x0b, PID: 12324
java.lang.NullPointerException
	at java.util.Objects.requireNonNull(Objects.java:203)
	at java.util.Arrays$ArrayList.<init>(Arrays.java:3741)
	at java.util.Arrays.asList(Arrays.java:3728)
	at ca.pkay.rcloneexplorer.FilePicker.onDirectoryClicked(FilePicker.java:273)
	at ca.pkay.rcloneexplorer.RecyclerViewAdapters.FilePickerAdapter$3.onClick(FilePickerAdapter.java:129)
	at android.view.View.performClick(View.java:6294)
	at android.view.View$PerformClick.run(View.java:24770)
	at android.os.Handler.handleCallback(Handler.java:790)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at androidx.test.espresso.base.Interrogator.a(Interrogator.java:19)
	at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:169)
	at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:161)
	at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:34)
	at androidx.test.espresso.action.MotionEvents.a(MotionEvents.java:77)
	at androidx.test.espresso.action.MotionEvents.a(MotionEvents.java:52)
	at androidx.test.espresso.action.Tap.c(Tap.java:8)
	at androidx.test.espresso.action.Tap.b(Tap.java:19)
	at androidx.test.espresso.action.Tap$1.a(Tap.java:3)
	at androidx.test.espresso.action.GeneralClickAction.perform(GeneralClickAction.java:20)
	at androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform(ViewInteraction.java:9)
	at androidx.test.espresso.ViewInteraction.a(ViewInteraction.java:79)
	at androidx.test.espresso.ViewInteraction.a(ViewInteraction.java:97)
	at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:3)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at android.os.Handler.handleCallback(Handler.java:790)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loop(Looper.java:164)
	at android.app.ActivityThread.main(ActivityThread.java:6494)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

Crash on FilePicker when selecting SECONDARY_STORAGE

Trace

2019-09-09 20:14:49.186 18489-18489/ca.pkay.rcloneexplorer.x0b E/AndroidRuntime: FATAL EXCEPTION: main
    Process: ca.pkay.rcloneexplorer.x0b, PID: 18489
    java.lang.NullPointerException
        at java.util.Objects.requireNonNull(Objects.java:203)
        at java.util.Arrays$ArrayList.<init>(Arrays.java:3826)
        at java.util.Arrays.asList(Arrays.java:3813)
        at ca.pkay.rcloneexplorer.FilePicker.switchStorage(FilePicker.java:357)
        at ca.pkay.rcloneexplorer.FilePicker.access$100(FilePicker.java:39)
        at ca.pkay.rcloneexplorer.FilePicker$3.onClick(FilePicker.java:347)
        at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6823)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1563)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1451)

Technical Information

rclone: v1.49.2
rcloneExplorer: 1.7.6-fatapk
android-sdk: 24
android-ndk-abis: arm64-v8a;armeabi-v7a;armeabi

AndroidTV UI (Leanback)

Hi there.

I currently use Kodi for streaming from OneDrive but every now and then the plugin gets broken and I have to wait a lot until I can use it. If rcx gets proper support for leanback interface (like VLC for Android does), it'll be a lot easier for me.

Add Cryptmator Support

Pre-Submission checklist

  • There is no existing issue that already asks for this feature.

    If no, please add a +1, and maybe a comment if you have more to add.
  • The feature already exists in rclone (on your PC or in Termux)
  • I am prepared to help make this feature - I'm afraid I've never done any Java

What version of RCX are you using (About -> App version)?

1.11.4

What problem are you trying to solve?

Cryptomator vaults are quite convenient, especially when sharing with someone else. In that use-case, rclone crypt is not great due to lack of GUI. Additionally, Cryptomator's crypto and related code have been audited, which may be an advantage to some.

What should RCX be able to do differently with help this problem?

Cryptomator's crypto library is available on their GitHub. Integration with RCX would provide a fully open source solution for those who wish to tinker.

https://github.com/cryptomator/cryptolib

Phenomenal app, by the way!

Crash after starting streaming

Device Info

rclone: 1.50.2
rcloneExplorer: 1.10.0-pre1
android-sdk: 25 (7.1.2)
android-device: ***
android-ndk-abi: arm64-v8a

Stacktrace

Caused by java.lang.IllegalStateException: Fragment FileExplorerFragment{929cf7a (b40bc89d-17a6-48a0-a2ab-624e36f52735)} not attached to Activity
       at androidx.fragment.app.Fragment.startActivityForResult(Fragment.java:1204)
       at androidx.fragment.app.Fragment.startActivityForResult(Fragment.java:1194)
       at ca.pkay.rcloneexplorer.ActivityHelper.tryStartActivityForResult(ActivityHelper.java:33)
       at ca.pkay.rcloneexplorer.Fragments.FileExplorerFragment$StreamTask.doInBackground(FileExplorerFragment.java:2026)
       at ca.pkay.rcloneexplorer.Fragments.FileExplorerFragment$StreamTask.doInBackground(FileExplorerFragment.java:1932)
       at android.os.AsyncTask$2.call(AsyncTask.java:305)
       at java.util.concurrent.FutureTask.run(FutureTask.java:237)
       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at java.lang.Thread.run(Thread.java:760)

[feature request] Shortcut for frequent actions

It would be very easy to use the app if you can add shortcut for frequent operations (for example syncing a specified dir in a click). When syncing to local with my usual settings i selected the wrong directory by mistake and lost my data. With shortcuts errors are minimized.

NPE in Filepicker

App crashes with NullPointerException when trying to list files while no longer having access to the directory

Crash on LoadingDialog

Trace

2019-09-13 10:42:26.833 5943-5943/ca.pkay.rcloneexplorer.x0b E/AndroidRuntime: FATAL EXCEPTION: main
    Process: ca.pkay.rcloneexplorer.x0b, PID: 5943
    java.lang.NullPointerException: Attempt to invoke interface method 'void ca.pkay.rcloneexplorer.Dialogs.LoadingDialog$OnNegative.onNegative()' on a null object reference
        at ca.pkay.rcloneexplorer.Dialogs.LoadingDialog$1.onClick(LoadingDialog.java:74)
        at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6111)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

Cause

Unchecked call to nullable
https://github.com/x0b/rcloneExplorer/blob/0c9e8db50ca502d1744539f66bcf30ef330619cd/app/src/main/java/ca/pkay/rcloneexplorer/Dialogs/LoadingDialog.java#L59
bf88495
https://github.com/x0b/rcloneExplorer/blob/0c9e8db50ca502d1744539f66bcf30ef330619cd/app/src/main/java/ca/pkay/rcloneexplorer/Dialogs/LoadingDialog.java#L66
0c9e8db

Crash when importing configuration

A new crash was discovered when importing an rclone config file.

Thanks for enabling crash reports :)

Caused by java.lang.NullPointerException: Attempt to read from field 'int libs.dos.q' on a null object reference
       at android.os.Parcel.createException(Parcel.java:1972)
       at android.os.Parcel.readException(Parcel.java:1934)
       at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
       at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:146)
       at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:698)
       at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1464)
       at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1301)
       at android.content.ContentResolver.openInputStream(ContentResolver.java:1021)
       at ca.pkay.rcloneexplorer.Rclone.copyConfigFile(Rclone.java:920)
       at ca.pkay.rcloneexplorer.MainActivity$CopyConfigFile.doInBackground(MainActivity.java:677)
       at ca.pkay.rcloneexplorer.MainActivity$CopyConfigFile.doInBackground(MainActivity.java:659)
       at android.os.AsyncTask$2.call(AsyncTask.java:333)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at java.lang.Thread.run(Thread.java:764)

[Feature Request] Scheduled sync

The reason why I need this feature is that I've scheduled some backup tasks on my phone but I want them to be synced to cloud.

Both sides sync

Pre-Submission checklist

  • There is no existing issue that already asks for this feature.

    If no, please add a +1, and maybe a comment if you have more to add.
  • The feature already exists in rclone (on your PC or in Termux)
  • I am prepared to help make this feature

What version of RCX are you using (About -> App version)?

1.11.4

What problem are you trying to solve?

TLDR: Sync a folder on multiple devices.

I want to sync my RetroArch saves between multiple devices.

What should RCX be able to do differently with help this problem?

I wish to the folders on both ways, but when I choose sync I can only decide to sync the local copy on the cloud or the cloud copy on local, I wish to have an exact carbon copy of that folder on both the cloud (Dropbox in this case) and locally.

Golang compiler regression for some arm64-v8a devices

Hello,

Unlocking my configuration file works with v1.10.2, but not with v1.11.3.167 (Google Play version).

I noticed that the rclone version is "-1" for v1.11.3.167. So i guess that's the issue.
Tried Google Play version, but also rcx-v1.11.3-universal-release.apk from github repo.

Old versions from https://github.com/kaczmarkiewiczp/rcloneExplorer work perfectly.

  • Bad rclone version :

Screenshot_20200502-114441

  • Error message :

Screenshot_20200502-114507

Technical Information

rclone: -1
rcloneExplorer: 1.11.3
android-sdk: 23
android-device: Redmi Note 3
android-ndk-abis: arm64-v8a;armeabi-v7a;armeabi

Tracking for parent issues

Issues from parent project that are tracked here:

Issue PR/commits Version Target Status
patrykcoding/rcloneExplorer#182
#12
- 1.8.3+ -
patrykcoding/rcloneExplorer#230 e7bea29 f0e9599 1.7.5 merged
patrykcoding/rcloneExplorer#232 be74d75 1.7.5 merged
- patrykcoding/rcloneExplorer#241 1.7.5 merged
patrykcoding/rcloneExplorer#227 patrykcoding/rcloneExplorer#243 1.7.5 merged
patrykcoding/rcloneExplorer#244 - 1.7.4+ merged

Edit
Future issues will be copied to this repository, if confirmed and fix desired.

At-rest encryption for rclone config

EDIT 2020-11-07: Add detailed description

As described in our security policy, RCX should be able to...

  • Encrypt the config file at rest (using rclone configuration encryption)
  • Allow users to set a custom password or pin that is entered on app startup

@x0b in #62:

When you set a password with rclone on your computer, rclone encrypts its configuration file. When you want to use this encrypted configuration file with rclone, you need to enter your password.

RCX is different. RCX can only use a unencrypted configuration file. However, it can import an encrypted configuration file, prompt for the password, immediately decrypt it and then store it unencrypted.

The issue I linked, #12, is a plan to remove that difference - if implemented, we would encrypt the configuration files of every RCX user, and optionally allow you to use your own password or pin on top.

Progress has been slow because:

  • rclone does not have a defined interface for configuration encryption
  • cryptography is hard to get right
  • the crypto parameters are only supported on Android Marshmallow (6.0 / API 23), and Lollipop (5.0 / 5.1) has not yet been dropped (but it soon will be, there are < 5 users).
  • and, of course, because RCX is notoriously understaffed - RCX is kept alive by me spending some of my free time on this, not because of an unknown army of volunteers.

Ref: patrykcoding/rcloneExplorer#182

F-Droid

Hi! First of all, great work! Thank you very much for sharing this app. I think that this is very promising and has a great future.

It would be awesome if you could add this to F-Droid to deliver automatic updates to your users 😉

Crash in hide remotes dialog when no remotes are configured during automated app test

Stacktrace

java.lang.NullPointerException: Attempt to invoke virtual method 'void ca.pkay.rcloneexplorer.RecyclerViewAdapters.RemotesRecyclerViewAdapter.newData(java.util.List)' on a null object reference
	at ca.pkay.rcloneexplorer.Fragments.RemotesFragment.refreshRemotes(RemotesFragment.java:329)
	at ca.pkay.rcloneexplorer.Fragments.RemotesFragment.access$700(RemotesFragment.java:45)
	at ca.pkay.rcloneexplorer.Fragments.RemotesFragment$6.onClick(RemotesFragment.java:385)
	at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
	at android.os.Handler.dispatchMessage(Handler.java:107)
	at androidx.test.espresso.base.Interrogator.a(Interrogator.java:19)
	at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:166)
	at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:158)
	at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:34)
	at androidx.test.espresso.action.MotionEvents.a(MotionEvents.java:77)
	at androidx.test.espresso.action.MotionEvents.a(MotionEvents.java:52)
	at androidx.test.espresso.action.Tap.c(Tap.java:8)
	at androidx.test.espresso.action.Tap.b(Tap.java:18)
	at androidx.test.espresso.action.Tap$1.a(Tap.java:3)
	at androidx.test.espresso.action.GeneralClickAction.perform(GeneralClickAction.java:20)
	at androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform(ViewInteraction.java:9)
	at androidx.test.espresso.ViewInteraction.a(ViewInteraction.java:79)
	at androidx.test.espresso.ViewInteraction.a(ViewInteraction.java:96)
	at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:3)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at android.os.Handler.handleCallback(Handler.java:883)
	at android.os.Handler.dispatchMessage(Handler.java:100)
	at android.os.Looper.loop(Looper.java:214)
	at android.app.ActivityThread.main(ActivityThread.java:7116)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:925)

Glide fails to load thumbnails after rotation

Glide fails to load images after a device rotation.

Stacktrace

2019-12-26 18:10:01.319 16366-16366/ca.pkay.rcloneexplorer.x0b W/Glide: Load failed for http://127.0.0.1:29179/<redacted-access-key>/example.PNG with size [120x120]
    class com.bumptech.glide.load.engine.GlideException: Failed to load resource
    There was 1 cause:
    java.net.ConnectException(Connection refused)
     call GlideException#logRootCauses(String) for more detail
      Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Fetching data failed, class java.io.InputStream, REMOTE
    There was 1 cause:
    java.net.ConnectException(Connection refused)
     call GlideException#logRootCauses(String) for more detail
        Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Fetch failed
    There was 1 cause:
    java.net.ConnectException(Connection refused)
     call GlideException#logRootCauses(String) for more detail
          Cause (1 of 1): class java.net.ConnectException: Connection refused
2019-12-26 18:10:01.321 16366-16366/ca.pkay.rcloneexplorer.x0b I/Glide: Root cause (1 of 1)
    java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:343)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:205)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:187)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
        at java.net.Socket.connect(Socket.java:600)
        at com.android.okhttp.internal.Platform.connectSocket(Platform.java:113)
        at com.android.okhttp.Connection.connectSocket(Connection.java:196)
        at com.android.okhttp.Connection.connect(Connection.java:172)
        at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:367)
        at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:130)
        at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
        at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:247)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:126)
        at com.bumptech.glide.load.data.HttpUrlFetcher.loadDataWithRedirects(HttpUrlFetcher.java:104)
        at com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:59)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:164)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:154)
        at com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:65)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100)
        at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)
        at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:309)
        at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:279)
        at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:235)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:761)
        at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:446)

Error analysis so far

  • When rotating the device, the old thumbnail server is destroyed. Afterwards, Android re-initializes the view and then also restarts the thumbnail server with new parameters.
  • In the current version, rclone sometimes can not bind to the fileserver port since it is still bound to the old instance
    • Fixed: not the root cause
  • Glide will try to load a new image preview from the thumbnail server before it is ready (race condition)
    • increasing the timeout does not work (the connection is refused immediately)
  • the default http loader does not retry loading the image
  • current ideas for solving this
    a. proxy the connection and stall until ready (really hacky)
    b. manipulate the caching keys so that glide uses the cached image (should be done anyway to reduce network traffic)
    c. make the service survice device rotations (probably best solution)

Update: option b works. I stabilized the caching key to a full qualified remote path,

Keep SFTP connections open with rclone rc (if possible)

Hi everyone! First of all, many thanks for this awesome app! I use it a lot for accessing remote servers and performing my backups. I also love the dinosaur logo 😄

While using it with an SFTP server, i noticed from the server logs that each operation (clicking on a file, opening a subfolder, etc...) involves opening a new connection to the server. I know that this is because that's the rclone default behaviour (each command opens a new connection and closes it after running). However, i think that leveraging the rclone rc command could help, because it spawns a background instance of rclone against which we could execute commands. I don't really know if it is actually feasible, but it may help us avoid this problem completely. Let me know what you think!

Crash with rclone callback into dead dialog

Thanks for enabling crash reports :)

Fatal Exception: java.lang.IllegalStateException: Fragment LoadingDialog{2ddc9493 (09b2c840-6a35-4892-8d06-24913414aa8d)} not associated with a fragment manager.
       at androidx.fragment.app.Fragment.requireFragmentManager(Fragment.java:910)
       at androidx.fragment.app.DialogFragment.dismissInternal(DialogFragment.java:245)
       at androidx.fragment.app.DialogFragment.dismiss(DialogFragment.java:202)
       at ca.pkay.rcloneexplorer.Fragments.FileExplorerFragment$LinkTask.onPostExecute(FileExplorerFragment.java:2081)
       at ca.pkay.rcloneexplorer.Fragments.FileExplorerFragment$LinkTask.onPostExecute(FileExplorerFragment.java:2052)
       at android.os.AsyncTask.finish(AsyncTask.java:636)
       at android.os.AsyncTask.access$500(AsyncTask.java:177)
       at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5910)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)

Thubnail server is accessible from everywhere

When enabling thumbnails, rcloneExplorer 1.8.2 (or earlier, forks as well) start a rclone serve that allows remote access, e.g. any other app on the device itself or any other device in the local network can read file contents and list directories.

App Crash on Android 5.1.1 for remotes with time zones in time stamps

Crash on Android 5.1.1 as reported in patrykcoding/rcloneExplorer#249.

Cause:

java.lang.IllegalArgumentException: Unknown pattern character 'X'
https://github.com/x0b/rcloneExplorer/blob/bb43046a1f4eaafc15889e97fd83e070f11e2865/app/src/main/java/ca/pkay/rcloneexplorer/Items/FileItem.java#L155

Technical Details


rclone: any
rcloneExplorer: 7794df48f172ae7095bab6feac5ed872f9cd3a86-1.8.2
android-sdk: 21, 22, 23
android-ndk-abis: any

serve does not seem to working 100%

  1. thanks
  2. when i try to serve a remote, if i choose dlna, the serve created is for http
  3. please allow custom ports for serve.
  4. add serve sftp.
  5. thanks

Unlog

Hello, i Wonder if it impossible to "unlog" from a remonté and protect or with a password . Because as it IS right now, everyone that has Access to my phone has also Access to my backup files....

Thanks for your help.

Technical Information

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.