Git Product home page Git Product logo

syncthing-lite's Introduction

Syncthing


MPLv2 License CII Best Practices Go Report Card

Goals

Syncthing is a continuous file synchronization program. It synchronizes files between two or more computers. We strive to fulfill the goals below. The goals are listed in order of importance, the most important ones first. This is the summary version of the goal list - for more commentary, see the full Goals document.

Syncthing should be:

  1. Safe From Data Loss

    Protecting the user's data is paramount. We take every reasonable precaution to avoid corrupting the user's files.

  2. Secure Against Attackers

    Again, protecting the user's data is paramount. Regardless of our other goals, we must never allow the user's data to be susceptible to eavesdropping or modification by unauthorized parties.

  3. Easy to Use

    Syncthing should be approachable, understandable, and inclusive.

  4. Automatic

    User interaction should be required only when absolutely necessary.

  5. Universally Available

    Syncthing should run on every common computer. We are mindful that the latest technology is not always available to every individual.

  6. For Individuals

    Syncthing is primarily about empowering the individual user with safe, secure, and easy to use file synchronization.

  7. Everything Else

    There are many things we care about that don't make it on to the list. It is fine to optimize for these values, as long as they are not in conflict with the stated goals above.

Getting Started

Take a look at the getting started guide.

There are a few examples for keeping Syncthing running in the background on your system in the etc directory. There are also several GUI implementations for Windows, Mac, and Linux.

Docker

To run Syncthing in Docker, see the Docker README.

Getting in Touch

The first and best point of contact is the Forum. If you've found something that is clearly a bug, feel free to report it in the GitHub issue tracker.

If you believe that you’ve found a Syncthing-related security vulnerability, please report it by emailing [email protected]. Do not report it in the Forum or issue tracker.

Building

Building Syncthing from source is easy. After extracting the source bundle from a release or checking out git, you just need to run go run build.go and the binaries are created in ./bin. There's a guide with more details on the build process.

Signed Releases

As of v0.10.15 and onwards, release binaries are GPG signed with the key D26E6ED000654A3E, available from https://syncthing.net/security/ and most key servers.

There is also a built-in automatic upgrade mechanism (disabled in some distribution channels) which uses a compiled in ECDSA signature. macOS binaries are also properly code signed.

Documentation

Please see the Syncthing documentation site [source].

All code is licensed under the MPLv2 License.

syncthing-lite's People

Contributors

calmh avatar davide-imbriaco avatar imsodin avatar l-jonas avatar licaon-kter avatar nutomic avatar poussinou 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  avatar  avatar

syncthing-lite's Issues

Sync directories

It would be great if it was possible to sync directories inside folders in addition to files.

Example: There is a top-level folder "Music" and the user only wants to download a certain album from a certain artist. The dir hierarcy looks like this: Music -> BandX -> [AlbumA, AlbumB, AlbumC]

Related to #34, but not the same feature request.

Caching of files

When opening a file a second time, then the download starts again (for some reason it starts at 50%), but that's still wasted time and bandwith.

  1. If a file was not modified (hash is not modified) and it's still saved locally, then open it directly
  • variant A: calculate hash after clicking the file to check if it can be reused
  • variant B: save files locally with random filenames and keep them at a database, as the user uses syncthing lite to access it, he does not even see this; moreover, this would make it easier to limit the cache size as the database could track file sizes and their last usage
  1. If the user does not need the new file version, add an cancel option to the download dialog/ add an "use local version" to the context menu
  • variant B would fit better here, it allows downloading to a new file while keeping the old one intact
  1. When the user does not have an connection to any PC who provides the file, show a warning and open the cached copy after that/ show an error message saying that no PC providing this file could be reached

discovery server validation

The main client uses host pinning, syncthing lite accepts any server certificate for discovery servers currently

Improve server offline handling

  • fail early if there was an connection attempt already and it failed
  • improve the error message at the file downloading when there was no connection to the server

Crash on file open

01-15 12:18:12.930 23172 23907 I DownloadFileTask: downloaded file = personal/Images/IMG_20171228_111545.jpg
--------- beginning of crash
01-15 12:18:12.945 23172 23907 E AndroidRuntime: FATAL EXCEPTION: Thread-5
01-15 12:18:12.945 23172 23907 E AndroidRuntime: Process: net.syncthing.lite, PID: 23172
01-15 12:18:12.945 23172 23907 E AndroidRuntime: android.os.FileUriExposedException: file:///storage/emulated/0/Download/IMG_20171228_111545.jpg exposed beyond app through Intent.getData()
01-15 12:18:12.945 23172 23907 E AndroidRuntime:        at android.os.StrictMode.onFileUriExposed(StrictMode.java:1796)
01-15 12:18:12.945 23172 23907 E AndroidRuntime:        at android.net.Uri.checkFileUriExposed(Uri.java:2346)
01-15 12:18:12.945 23172 23907 E AndroidRuntime:        at android.content.Intent.prepareToLeaveProcess(Intent.java:8983)
01-15 12:18:12.945 23172 23907 E AndroidRuntime:        at android.content.Intent.prepareToLeaveProcess(Intent.java:8942)
01-15 12:18:12.945 23172 23907 E AndroidRuntime:        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1519)
01-15 12:18:12.945 23172 23907 E AndroidRuntime:        at android.app.Activity.startActivityForResult(Activity.java:4402)
01-15 12:18:12.945 23172 23907 E AndroidRuntime:        at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
01-15 12:18:12.945 23172 23907 E AndroidRuntime:        at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:67)
01-15 12:18:12.945 23172 23907 E AndroidRuntime:        at android.app.Activity.startActivityForResult(Activity.java:4360)
01-15 12:18:12.945 23172 23907 E AndroidRuntime:        at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:732)

FilenameUtils.normalizeNoEndSeparator(path, true) must not be null

App version: 0.3.2.

11-10 19:36:39.345  1389  1571 E ExecutorService: java.lang.IllegalStateException: FilenameUtils.normalizeNoEndSeparator(path, true) must not be null
11-10 19:36:39.345  1389  1571 E ExecutorService:  at net.syncthing.a.c.e.d.e(PathUtils.kt:25)
11-10 19:36:39.345  1389  1571 E ExecutorService:  at net.syncthing.a.c.e.d.c(PathUtils.kt:38)
11-10 19:36:39.345  1389  1571 E ExecutorService:  at net.syncthing.a.c.a.f.<init>(FileInfo.kt:41)
11-10 19:36:39.345  1389  1571 E ExecutorService:  at net.syncthing.a.c.a.f$a.d(FileInfo.kt:163)
11-10 19:36:39.345  1389  1571 E ExecutorService:  at net.syncthing.a.a.k.a(IndexHandler.kt:169)
11-10 19:36:39.345  1389  1571 E ExecutorService:  at net.syncthing.a.a.k$b$a.a(IndexHandler.kt:407)
11-10 19:36:39.345  1389  1571 E ExecutorService:  at net.syncthing.a.a.k$b$b.a(IndexHandler.kt:330)
11-10 19:36:39.345  1389  1571 E ExecutorService:  at net.syncthing.a.a.k$b$a.run(IndexHandler.kt:357)
11-10 19:36:39.345  1389  1571 E ExecutorService:  at net.syncthing.a.c.e.b$a.b(ExecutorUtils.kt:31)
11-10 19:36:39.345  1389  1571 E ExecutorService:  at net.syncthing.a.c.e.b$a.a(Unknown Source:0)
11-10 19:36:39.345  1389  1571 E ExecutorService:  at net.syncthing.a.c.e.b$b.call(ExecutorUtils.kt:40)
11-10 19:36:39.345  1389  1571 E ExecutorService:  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
11-10 19:36:39.345  1389  1571 E ExecutorService:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
11-10 19:36:39.345  1389  1571 E ExecutorService:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
11-10 19:36:39.345 1389 1571 E ExecutorService: at java.lang.Thread.run(Thread.java:764)

I cleared app data so that I got a new ID on my S7
I stopped other syncthing instances in my LAN (besides S7 and srv)
I shared only one folder from srv with S7
The app crashed after a few minutes
I restarted the app and it crashed again after a few seconds this time

(from #89)

Could you do this again with 60d873b applied (only the last few lines with "PathUtils ..." before the crash are relevant, so you don't have to remove too much)? Or, to isolate it more, does it occur if you create a new folder, put a few test files in it and share this new folder.

Encrypt App data with a passphrase

I would like to share the thought that it could feel better to be able to encrypt the apps content (index, cache, filenames, access to files) with a strong passphrase. Especially when i use the app to access large amounts of private data with an old android phone that is likely to be lost (while turned on). I know that if ever this would be a long-term goal. :)

Can't connect to devices. TLS handshake: EOF/illegal parameter

There's no description telling the user what to do. I added a device and at first it showed up red. After 1-2 minutes(!) it showed up green. I tried updating the index to see if I can get my folders to show up, but I get an error. There were also no connection attempts showing up at the syncthing "server" on my windows machine. Do I have to install a special software on my pc? What am I doing wrong? A bit of documentation can't hurt.

Added zh (Chinese) translation

I have translated your application into zh (Chinese). Here is the xml:

<resources>
    <string name="index_update_progress_message">索引更新...</string>
    <string name="folder_list_empty_message">没有可用的文件夹</string>
    <string name="clear_local_cache_index_label">清除本地缓存/索引</string>
    <string name="update_remote_index_label">更新远程索引</string>
    <string name="devices_list_view_empty_message">没有可用的设备</string>
    <string name="toast_write_storage_permission_required">此项功能需要存储写入权限</string>
    <string name="scan_qr_code">扫描二维码</string>
    <string name="enter_device_id">输入设备 ID</string>
    <string name="invalid_device_id">无效的设备 ID</string>
    <string name="device_id_dialog_title">输入设备 ID</string>
    <string name="toast_index_update_successful">索引成功更新</string>
    <string name="toast_index_update_failed">%1$d 设备的索引更新失败</string>
    <string name="dialog_downloading_file">正下载文件 %1$s</string>
    <string name="toast_file_download_failed">下载文件失败</string>
    <string name="toast_open_file_failed">没有找到兼容的程序</string>
    <string name="toast_file_upload_failed">上传文件失败</string>
    <string name="toast_upload_complete">文件上传完成</string>
    <string name="dialog_uploading_file">正上传文件 %1$s</string>
    <string name="directory_empty">文件夹为空</string>
    <string name="clear_cache_and_index_title">确定清除本地缓存和索引?</string>
    <string name="clear_cache_and_index_body">确定清除全部本地缓存数据和索引数据?</string>
    <string name="index_update_folder">索引更新,文件夹</string>
    <string name="index_update_percent_synchronized">% 已同步</string>
    <string name="loading_config_starting_syncthing_client">载入配置,正在启动 syncthing 客户端</string>
    <string name="last_modified">- 最近更改</string>
    <string name="last_modified_unknown">最近更改: 未知</string>
    <string name="last_modified_known">最近更改:</string>
    <string name="remove_device_title">移除设备:</string>
    <string name="remove_device_body_1">移除设备</string>
    <string name="remove_device_body_2">从已知设备列表中?</string>
    <string name="device_import_success">成功导入的设备:</string>
    <string name="device_already_known">已经存在的设备:</string>
    <string name="folders_label">文件夹</string>
    <string name="devices_label">设备</string>
</resources>

Translation made with Stringlate.

"Index update failed for 1 devices"

As soon as I've added my device I get the Index update failed for 1 devices notification, and unfortunately nothing else.

When I close the device and open it again I'm left in the dark as to what's happening, and pressing on the device in the "Devices" tab does nothing.

Clicking on "Update remote index" just gives the Index update failed for 1 devices notification agian.

The syncthing running on the desktop is v0.14.43, by the way.

Unable to open Syncthing files from other apps

When I try to browse the "Syncthing Lite" file provider when choosing files from other apps using the standard file chooser, I get "Files has stopped" with a NullPointerException.

Here is a logcat that shows a stacktrace of Files crashing (Sorry, I filtered this as best I could):

03-06 21:15:02.440   964  2102 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.documentsui/.LauncherActivity bnds=[540,616][698,797] (has extras)} from uid 10140
03-06 21:15:02.441   706  2967 I ACDB-LOADER: ACDB AFE returned = -19
03-06 21:15:02.496   964  3154 W ActivityManager: Unbind failed: could not find connection for android.os.BinderProxy@cef34c7
03-06 21:15:02.505   964  3153 I ActivityManager: START u0 {dat=//com.android.documentsui.launchControl flg=0x10380000 cmp=com.android.documentsui/.files.FilesActivity (has extras)} from uid 10013
03-06 21:15:02.566 24644 24644 W ActionModeController: Tried to finish a null action mode.
03-06 21:15:02.730   964  1063 I ActivityManager: Displayed com.android.documentsui/.files.FilesActivity: +176ms (total +224ms)
03-06 21:15:02.942  3718  3718 W JNIHelp : Discarding pending exception (java.io.IOException: Try again) to throw java/io/IOException
03-06 21:15:03.024 18625 18625 I StreamRenderer: cleanUpRendererScope(nowcards--6733982134659492570)
03-06 21:15:03.040 18625 25262 I PBSessionCacheImpl: Deleted sessionId[101788748966383] from persistence.
03-06 21:15:03.069 18625 18625 W SearchService: Abort, client detached.
03-06 21:15:03.086 18625 18625 I StreamController: cleanUpControllerScope(nowcards--6733982134659492570)
03-06 21:15:03.942  3718  3718 W JNIHelp : Discarding pending exception (java.io.IOException: Try again) to throw java/io/IOException
03-06 21:15:04.460 17182 17182 W Notification: Use of stream types is deprecated for operations other than volume control
03-06 21:15:04.460 17182 17182 W Notification: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
03-06 21:15:04.573   964  3154 W ActivityManager: Unbind failed: could not find connection for android.os.BinderProxy@e41f66
03-06 21:15:04.574  3538 25323 W DropBoxEntryAddedChimeraService: Could not connect to Google API Client, giving up...
03-06 21:15:04.580   964  3154 W ActivityManager: Unbind failed: could not find connection for android.os.BinderProxy@196a2a7
03-06 21:15:04.581  3538 25323 W DropBoxEntryAddedChimeraService: Could not connect to Google API Client, giving up...
03-06 21:15:05.384 24644 24644 W ActionModeController: Tried to finish a null action mode.
03-06 21:15:05.395 20716 20727 D SyncthingProvider: queryDocument(sync:, null)
03-06 21:15:05.399 20716 20727 I IndexBrowser: navigate to path = ''
03-06 21:15:05.403 20716 25325 I IndexBrowser: folder preload BEGIN for folder = 'sync' path = ''
03-06 21:15:05.429 20716 25325 I IndexBrowser: folder preload END for folder = 'sync' path = ''
03-06 21:15:05.429 20716 25325 I IndexBrowser: cache ready, notify listeners
03-06 21:15:05.448 20716 20728 D SyncthingProvider: queryChildDocuments(sync:, null, _display_name ASC)
03-06 21:15:05.449 20716 20728 I IndexBrowser: navigate to path = ''
03-06 21:15:05.450 20716 25327 I IndexBrowser: folder preload BEGIN for folder = 'sync' path = ''
03-06 21:15:05.456 20716 25327 I IndexBrowser: folder preload END for folder = 'sync' path = ''
03-06 21:15:05.457 20716 25327 I IndexBrowser: cache ready, notify listeners
03-06 21:15:05.458 20716 20727 D SyncthingProvider: queryChildDocuments(sync:, null, _display_name ASC)
03-06 21:15:05.461 20716 20727 I IndexBrowser: navigate to path = ''
03-06 21:15:05.468 20716 25328 I IndexBrowser: folder preload BEGIN for folder = 'sync' path = ''
03-06 21:15:05.472 20716 25328 I IndexBrowser: folder preload END for folder = 'sync' path = ''
03-06 21:15:05.472 20716 25328 I IndexBrowser: cache ready, notify listeners
03-06 21:15:05.518 24644 24644 D AndroidRuntime: Shutting down VM
03-06 21:15:05.519 24644 24644 E AndroidRuntime: FATAL EXCEPTION: main
03-06 21:15:05.519 24644 24644 E AndroidRuntime: Process: com.android.documentsui, PID: 24644
03-06 21:15:05.519 24644 24644 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] java.lang.String.split(java.lang.String)' on a null object reference
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at com.android.documentsui.base.MimeTypes.splitMimeType(MimeTypes.java:40)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at com.android.documentsui.FileTypeMap.lookup(FileTypeMap.java:118)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at com.android.documentsui.FileTypeMap.lookup(FileTypeMap.java:103)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at com.android.documentsui.dirlist.ListDocumentHolder.bind(ListDocumentHolder.java:203)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at com.android.documentsui.dirlist.ModelBackedDocumentsAdapter.onBindViewHolder(ModelBackedDocumentsAdapter.java:124)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at com.android.documentsui.dirlist.ModelBackedDocumentsAdapter.onBindViewHolder(ModelBackedDocumentsAdapter.java:116)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at com.android.documentsui.dirlist.ModelBackedDocumentsAdapter.onBindViewHolder(ModelBackedDocumentsAdapter.java:110)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at com.android.documentsui.dirlist.DirectoryAddonsAdapter.onBindViewHolder(DirectoryAddonsAdapter.java:130)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at com.android.documentsui.dirlist.DirectoryAddonsAdapter.onBindViewHolder(DirectoryAddonsAdapter.java:117)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6541)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5484)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5750)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5589)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5585)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2231)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:556)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1518)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:610)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:170)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3719)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3436)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1712)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.support.v7.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:4832)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.view.Choreographer.doCallbacks(Choreographer.java:723)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.view.Choreographer.doFrame(Choreographer.java:655)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:790)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:99)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:164)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6494)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
03-06 21:15:05.519 24644 24644 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
03-06 21:15:05.523   964  3153 W ActivityManager:   Force finishing activity com.android.documentsui/.files.FilesActivity
03-06 21:15:05.533   964  1033 I ActivityManager: Showing crash dialog for package com.android.documentsui u0
03-06 21:15:05.549  3718  3718 W JNIHelp : Discarding pending exception (java.io.IOException: Try again) to throw java/io/IOException
03-06 21:15:05.558   964  3154 W ActivityManager: Unbind failed: could not find connection for android.os.BinderProxy@d38351c
03-06 21:15:05.559  3538 25330 W DropBoxEntryAddedChimeraService: Could not connect to Google API Client, giving up...
03-06 21:15:06.027   964  1029 W ActivityManager: Activity pause timeout for ActivityRecord{c119c92 u0 com.android.documentsui/.files.FilesActivity t39480 f}
03-06 21:15:06.113   964 15004 W ActivityManager: Unbind failed: could not find connection for android.os.BinderProxy@e9dd249
03-06 21:15:06.247 18625 18625 W SessionLifecycleManager: Handover failed. Creating new session controller.
03-06 21:15:06.265 18625 18625 I OptInState: There is a new client and it does not support opt-in. Dropping request.
03-06 21:15:06.280 18625 18625 I StreamController: registerScope: nowcards--6733982134659492570
03-06 21:15:06.315 18625 18625 I StreamRenderer: maybeRegisterNowCardsScope(nowcards--6733982134659492570, com.google.android.sidekick.shared.remoteapi.CardRenderingContext@aea1089)
03-06 21:15:06.427 11964 11964 W Notification: Use of stream types is deprecated for operations other than volume control
03-06 21:15:06.427 11964 11964 W Notification: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
03-06 21:15:06.468   964 15008 W ActivityManager: Unbind failed: could not find connection for android.os.BinderProxy@ace146b
03-06 21:15:06.469  3538 25335 W DropBoxEntryAddedChimeraService: Could not connect to Google API Client, giving up...
03-06 21:15:06.472   964  3150 W ActivityManager: Unbind failed: could not find connection for android.os.BinderProxy@9b97bc8
03-06 21:15:06.473  3538 25335 W DropBoxEntryAddedChimeraService: Could not connect to Google API Client, giving up...
03-06 21:15:06.502  2968  4208 I Places  : ?: PlacesBleScanner stop()
03-06 21:15:06.514  2968  4208 I PlaceInferenceEngine: [anon] Changed inference mode: 105
03-06 21:15:06.549  3718  3718 W JNIHelp : Discarding pending exception (java.io.IOException: Try again) to throw java/io/IOException
03-06 21:15:06.579 17182 17182 W Notification: Use of stream types is deprecated for operations other than volume control
03-06 21:15:06.579 17182 17182 W Notification: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
03-06 21:15:07.494   964  3153 W ActivityManager:   Force finishing activity com.android.documentsui/.files.FilesActivity
03-06 21:15:07.535   964  3153 I ActivityManager: Killing 24644:com.android.documentsui/u0a13 (adj 900): crash
03-06 21:15:07.539   964  1033 W InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.
03-06 21:15:07.540   964  1033 W ViewRootImpl[documentsui]: Dropping event due to root view being removed: MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=316.0, y[0]=623.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=209730257, downTime=209730232, deviceId=8, source=0x1002 }
03-06 21:15:07.540   964  1033 W InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.
03-06 21:15:07.549  3718  3718 W JNIHelp : Discarding pending exception (java.io.IOException: Try again) to throw java/io/IOException
03-06 21:15:07.575   964  1063 W ActivityManager: setHasOverlayUi called on unknown pid: 24644
03-06 21:15:07.636   964  1366 W AppOps  : Finishing op nesting under-run: uid 1000 pkg android code 24 time=0 duration=0 nesting=0
03-06 21:15:08.750 17182 17182 W Notification: Use of stream types is deprecated for operations other than volume control
03-06 21:15:08.750 17182 17182 W Notification: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
03-06 21:15:09.159  3718  3718 W JNIHelp : Discarding pending exception (java.io.IOException: Try again) to throw java/io/IOException
03-06 21:15:10.159  3718  3718 W JNIHelp : Discarding pending exception (java.io.IOException: Try again) to throw java/io/IOException
03-06 21:15:10.896 17182 17182 W Notification: Use of stream types is deprecated for operations other than volume control
03-06 21:15:10.896 17182 17182 W Notification: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
03-06 21:15:11.159  3718  3718 W JNIHelp : Discarding pending exception (java.io.IOException: Try again) to throw java/io/IOException

Hopefully some of this is helpful in figuring out what is going on. I'm running the latest Android 8.1. I've tested this with Google Inbox, Keepass2Android, and the system Downloads app. The crash is always the same. Also note that the device is paired correctly and I am able to browse my shared folder from within the app itself.

Show own ID / QR

Could be useful to have the app show own identifier / QR, to be manually imported on other devices.

Crash when adding device via QR Codes

hi,
When I want to add a device, via QR code scanning, the app crash after the scan.
I run on latest version of Resurection Remix OS on a OnePlus One. I have otherwise a syncthing app (which was not running when i tried the lite), which works fine.

I'll be happy to help provide more informations (logs somewhere ?)

On a side note, if i understood correctly the capabilities of this app, i can delete a file on my phone but retain it on the "server" ?

Thanks

Doesn't display my folders

Expected Behavior
The app should load and show folders that are on my device so as to use them carry out what the app was created for

Actual Behavior

It doesn't load any file on my device. Showing 'No folders available'

How to produce the bug

Just open the app and wait for it to load

             ***Device Info***
  • Operating system : Android 6.0
  • Phone : Infinix hot s
  • Syncthing Lite App

Recording of the bug is showned below......

Watch the video below to see how it behaves....

https://youtu.be/Pa13WCuLz10



Posted on Utopian.io - Rewarding Open Source Contributors

Error Building..

I'm trying to build the project, what is the recommended environment?

I'm trying to build it in an Ubuntu environment inside WLS (Ubuntu for Windows ) and get an error downloading the Android Tools

* What went wrong:
A problem occurred configuring root project 'syncthing-lite'.
> Could not resolve all files for configuration ':classpath'.
   > Could not resolve com.android.tools.build:gradle:3.0.1.
     Required by:
         project :
      > Could not resolve com.android.tools.build:gradle:3.0.1.
         > Could not get resource 'https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.0.1/gradle-3.0.1.pom'.
            > Could not GET 'https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.0.1/gradle-3.0.1.pom'.
               > sun.security.validator.ValidatorException: No trusted certificate found

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Don't share folders with all known devices

I added two devices, let's say A and B, the first offers the directory Apples the second offers the directory Bananas; on A I got a pop-up asking if I want to accept directory Apples from (mobile device running Lite version).
I didn't check the internals of the protocol, is this expected?

google play link is broken

Hi, google play link on the readme file is broken. I couldn't find anything searching for "syncthing lite" either.

unable to retrieve cluster config from peer

Interestingly, it only occurred for me when using an relay server. Syncthing Lite interprets this as not connected, while the log at the syncthing server says that the device connected

09-16 15:22:49.334 1453-1495/net.syncthing.lite W/SyncthingClient: error connecting to device = DeviceAddress(deviceId=removed, instanceId=null, address=relay://removed, producer=UNKNOWN, score=2084, lastModified=Sun Sep 16 15:22:16 GMT+02:00 2018)
    java.io.IOException: unable to retrieve cluster config from peer!
        at net.syncthing.java.bep.ConnectionHandler.connect(ConnectionHandler.kt:172)
        at net.syncthing.java.client.SyncthingClient.openConnection(SyncthingClient.kt:85)
        at net.syncthing.java.client.SyncthingClient.getPeerConnections(SyncthingClient.kt:110)
        at net.syncthing.java.client.SyncthingClient.updateIndexFromPeers(SyncthingClient.kt:125)
        at net.syncthing.java.client.SyncthingClient.access$updateIndexFromPeers(SyncthingClient.kt:38)
        at net.syncthing.java.client.SyncthingClient$1.invoke(SyncthingClient.kt:51)
        at net.syncthing.java.client.SyncthingClient$1.invoke(SyncthingClient.kt:38)
        at net.syncthing.java.client.SyncthingClientKt$sam$Runnable$9543d2f5.run(SyncthingClient.kt)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:278)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:273)
        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)

app crashes almost unconditionally

I was just trying whether syncthing-lite will be better option for me than full syncthing. I did not succeed making it work.

As soon as I add a device and I select "update remote index" from the menu, the application immediately force-closes. Sometimes it crashes just few seconds after starting without me doing anything.

Client:

  • Syncthing Lite 0.1.5 from F-Droid
  • CyanogenMon 12.1 (Android 5.1.1), Linux kernel 3.4.109

Server:

  • Syncthing Lite 0.14.43 from Syncthing repository for Debian x64

Logcat selection:

E/AndroidRuntime( 7097): FATAL EXCEPTION: Thread-3264
E/AndroidRuntime( 7097): Process: net.syncthing.lite, PID: 7097
E/AndroidRuntime( 7097): java.lang.IllegalArgumentException: /storage/emulated/0/Android/data/net.syncthing.lite/cache does not exist
E/AndroidRuntime( 7097): 	at org.apache.commons.io.FileUtils.checkDirectory(FileUtils.java:2692)
E/AndroidRuntime( 7097): 	at org.apache.commons.io.FileUtils.sizeOfDirectory(FileUtils.java:2579)
E/AndroidRuntime( 7097): 	at net.syncthing.java.core.cache.FileBlockCache.<init>(FileBlockCache.kt:31)
E/AndroidRuntime( 7097): 	at net.syncthing.java.core.cache.BlockCache$Companion.getBlockCache(BlockCache.kt:40)
E/AndroidRuntime( 7097): 	at net.syncthing.java.bep.BlockPuller.<init>(BlockPuller.kt:35)
E/AndroidRuntime( 7097): 	at net.syncthing.java.bep.BlockExchangeConnectionHandler.<init>(BlockExchangeConnectionHandler.kt:64)
E/AndroidRuntime( 7097): 	at net.syncthing.java.client.SyncthingClient.openConnection(SyncthingClient.kt:64)
E/AndroidRuntime( 7097): 	at net.syncthing.java.client.SyncthingClient.getDeviceConnection(SyncthingClient.kt:86)
E/AndroidRuntime( 7097): 	at net.syncthing.java.client.SyncthingClient.access$getDeviceConnection(SyncthingClient.kt:38)
E/AndroidRuntime( 7097): 	at net.syncthing.java.client.SyncthingClient$getPeerConnections$1.run(SyncthingClient.kt:117)
E/AndroidRuntime( 7097): 	at java.lang.Thread.run(Thread.java:818)
W/ActivityManager(  704):   Force finishing activity 1 net.syncthing.lite/.activities.MainActivity

It seems the application crashes on non-existence of /storage/emulated/0/Android/data/net.syncthing.lite/cache, which indeed does not exist on my device. The closest matches are:

  • /mnt/shell/emulated/0/Android/data/net.syncthing.lite/cache/
  • /storage/emulated/legacy/Android/data/net.syncthing.lite/cache/
  • /storage/sdcard0/Android/data/net.syncthing.lite/cache/

where the latter two are just symlinks to the first one.

Wait for translations

While it's great that you've just pushed a new version, the builds will not be translated and your release schedule makes it so the app will get translated in March or so.

It would be nicer to first push the new strings to Transifex, wait a day or two for translators to be notified and get a chance to update them, and them publish the tag/release.

Thanks

App crash

I tried the App in a Sony Z5 with Android 7.7.1 installed and crashes a few seconds after showing the initial screen.

Those are the logs I pulled with logcat

12-22 12:57:04.398 17593 17608 I LibConnectionHandler: storage space = dir / used space / free space
12-22 12:57:04.398 17593 17608 I LibConnectionHandler: 	cache = /storage/emulated/0/Android/data/net.syncthing.lite/cache/cache 0 bytes / 1 GB
12-22 12:57:04.398 17593 17608 I LibConnectionHandler: 	temp = /data/user/0/net.syncthing.lite/cache/a_sync_client_temp 0 bytes / 1 GB
12-22 12:57:04.398 17593 17608 I LibConnectionHandler: 	database = /storage/emulated/0/Android/data/net.syncthing.lite/files/database 60 KB / 1 GB
12-22 12:57:04.401 17593 17608 I SqlRepository: starting sql database
12-22 12:57:04.430 17593 17608 I HikariDataSource: HikariPool-1 - Started.
12-22 12:57:04.436 17593 17608 W art     : Before Android 4.1, method double java.util.concurrent.ThreadLocalRandom.internalNextDouble(double, double) would have incorrectly overridden the package-private method in java.util.Random
12-22 12:57:04.436 17593 17608 W art     : Before Android 4.1, method int java.util.concurrent.ThreadLocalRandom.internalNextInt(int, int) would have incorrectly overridden the package-private method in java.util.Random
12-22 12:57:04.436 17593 17608 W art     : Before Android 4.1, method long java.util.concurrent.ThreadLocalRandom.internalNextLong(long, long) would have incorrectly overridden the package-private method in java.util.Random
12-22 12:57:04.567 17593 17608 I c*.z*.h*.p*.PoolBase: HikariPool-1 - Driver does not support get/set network timeout for connections. (No interface method getNetworkTimeout()I in class Ljava/sql/Connection; or its super classes (declaration of 'java.sql.Connection' appears in /system/framework/core-oj.jar))
12-22 12:57:04.651 17593 17608 I SqlRepository: database check ok, version = 13
12-22 12:57:04.657 17593 17608 I SqlRepository: recreateTemporaryTables BEGIN
12-22 12:57:04.659 17593 17608 I SqlRepository: recreateTemporaryTables END
12-22 12:57:04.660 17593 17608 I DiscoveryHandler: init
12-22 12:57:04.685  2125  2423 I InputDispatcher: Focus entered window: Window{bbcdc92 u0 net.syncthing.lite/net.syncthing.lite.activities.MainActivity}
12-22 12:57:04.693 17593 17593 D AndroidRuntime: Shutting down VM
--------- beginning of crash
12-22 12:57:04.694 17593 17593 E AndroidRuntime: FATAL EXCEPTION: main
12-22 12:57:04.694 17593 17593 E AndroidRuntime: Process: net.syncthing.lite, PID: 17593
12-22 12:57:04.694 17593 17593 E AndroidRuntime: kotlin.KotlinNullPointerException
12-22 12:57:04.694 17593 17593 E AndroidRuntime: 	at net.syncthing.lite.activities.SyncthingActivity$InitTask.onPostExecute(SyncthingActivity.kt:99)
12-22 12:57:04.694 17593 17593 E AndroidRuntime: 	at net.syncthing.lite.activities.SyncthingActivity$InitTask.onPostExecute(SyncthingActivity.kt:59)
12-22 12:57:04.694 17593 17593 E AndroidRuntime: 	at android.os.AsyncTask.finish(AsyncTask.java:667)
12-22 12:57:04.694 17593 17593 E AndroidRuntime: 	at android.os.AsyncTask.-wrap1(AsyncTask.java)
12-22 12:57:04.694 17593 17593 E AndroidRuntime: 	at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:684)
12-22 12:57:04.694 17593 17593 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:102)
12-22 12:57:04.694 17593 17593 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:241)
12-22 12:57:04.694 17593 17593 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6274)
12-22 12:57:04.694 17593 17593 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
12-22 12:57:04.694 17593 17593 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
12-22 12:57:04.694 17593 17593 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
12-22 12:57:04.696  2125  5923 D ActivityManager: New dropbox entry: net.syncthing.lite, data_app_crash, a224a7aa-4fa1-46e7-9051-4795754b2c11
12-22 12:57:04.697  2125  5923 W ActivityManager:   Force finishing activity net.syncthing.lite/.activities.MainActivity
12-22 12:57:04.703  2125  5923 D ActivityTrigger: ActivityTrigger activityPauseTrigger 
12-22 12:57:04.722  2125  2125 I BroadcastQueue: am_broadcast_enqueue: [background,1,Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) },4]
12-22 12:57:04.724   694   694 D clmlib  : Got activities:0x00000008
12-22 12:57:04.724   694   694 I JavaDumper:JavaDumperThread: addEvent: [email protected] processName: net.syncthing.lite
12-22 12:57:04.724   694   824 I JavaDumper:JavaDumperThread: Event: [email protected] TimeStamp: 1513947424
12-22 12:57:04.730  2125  2156 I InputDispatcher: Focus entered window: Window{39b82fd u0 Application Error: net.syncthing.lite}

File downloading error handling

2018-10-07 15:32:17.174 27712-27784/net.syncthing.lite E/ExecutorService: java.io.IOException: received error response, code = NO_SUCH_FILE
        at net.syncthing.a.c.e.c.a(NetworkUtils.kt:11)
        at net.syncthing.a.a.c.a(BlockPuller.kt:118)
        at net.syncthing.a.a.f$v$1.b(ConnectionHandler.kt:398)
        at net.syncthing.a.a.f$v$1.a(ConnectionHandler.kt:46)
        at net.syncthing.a.c.e.b$b.call(ExecutorUtils.kt:40)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        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)

This results in restarting the App (which should not happen)

feature request: thumbnails

A major usecase of syncthing-lite is to download individual files from remote shares on demand, such as for uploading to other apps. Thumbnail support would be a major quality of life improvement over other remote access protocols such as SFTP or SMB/CIFS.

download complete folders?

it should be possible to download a complete folder in the Syncfolder and not only download one file..

Unable to initiate download

I have paired my mobile device to my computer and am able to browse my shared folders. When I try to download a file, I just get a "Downloading file..." modal that sits at 0% with a progress bar flashing across the screen indefinitely. This is what I'm seeing in the logcat:

03-06 21:35:52.506 20716 20716 D FolderBrowserActivity: navigate to path = 'test.txt' from path = ''
03-06 21:35:52.506 20716 20716 I FolderBrowserActivity: pulling file = FileRecord{folder=sync, path=test.txt, size=243454, lastModified=Tue Mar 06 18:37:07 CST 2018, type=FILE, last version = Version{id=8638705978042962429, value=1}}
03-06 21:35:52.541 20716 20733 I zygote64: Deoptimizing void net.syncthing.java.client.SyncthingClient.getPeerConnections(kotlin.jvm.functions.Function1, kotlin.jvm.functions.Function0) due to JIT inline cache
03-06 21:35:52.542 20716 20733 W System.err: kotlin.KotlinNullPointerException
03-06 21:35:52.542 20716 20733 W System.err: 	at net.syncthing.java.bep.ConnectionHandler.hasFolder(ConnectionHandler.kt:464)
03-06 21:35:52.542 20716 20733 W System.err: 	at net.syncthing.java.client.SyncthingClient$getConnectionForFolder$1.invoke(SyncthingClient.kt:130)
03-06 21:35:52.542 20716 20733 W System.err: 	at net.syncthing.java.client.SyncthingClient$getConnectionForFolder$1.invoke(SyncthingClient.kt:38)
03-06 21:35:52.542 20716 20733 W System.err: 	at net.syncthing.java.client.SyncthingClient.getPeerConnections(SyncthingClient.kt:95)
03-06 21:35:52.542 20716 20733 W System.err: 	at net.syncthing.java.client.SyncthingClient.getConnectionForFolder(SyncthingClient.kt:129)
03-06 21:35:52.542 20716 20733 W System.err: 	at net.syncthing.java.client.SyncthingClient.getBlockPuller(SyncthingClient.kt:142)
03-06 21:35:52.542 20716 20733 W System.err: 	at net.syncthing.lite.library.DownloadFileTask.<init>(DownloadFileTask.kt:22)
03-06 21:35:52.542 20716 20733 W System.err: 	at net.syncthing.lite.dialogs.FileDownloadDialog$show$1.invoke(FileDownloadDialog.kt:33)
03-06 21:35:52.542 20716 20733 W System.err: 	at net.syncthing.lite.dialogs.FileDownloadDialog$show$1.invoke(FileDownloadDialog.kt:23)
03-06 21:35:52.542 20716 20733 W System.err: 	at org.jetbrains.anko.AsyncKt$doAsync$1.invoke(Async.kt:140)
03-06 21:35:52.542 20716 20733 W System.err: 	at org.jetbrains.anko.AsyncKt$doAsync$1.invoke(Unknown Source:0)
03-06 21:35:52.542 20716 20733 W System.err: 	at org.jetbrains.anko.AsyncKt$sam$Callable$761a5578.call(Unknown Source:2)
03-06 21:35:52.542 20716 20733 W System.err: 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
03-06 21:35:52.542 20716 20733 W System.err: 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
03-06 21:35:52.542 20716 20733 W System.err: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
03-06 21:35:52.542 20716 20733 W System.err: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
03-06 21:35:52.542 20716 20733 W System.err: 	at java.lang.Thread.run(Thread.java:764)
03-06 21:35:55.029 20716 27010 I DiscoveryHandler: received device address list from local discovery
03-06 21:36:54.956 20716 27010 I DiscoveryHandler: received device address list from local discovery
03-06 21:39:24.872 20716 27332 I DiscoveryHandler: received device address list from local discovery
03-06 21:40:29.851 20716 20716 I zygote64: Deoptimizing void android.view.ViewGroup$ChildListForAccessibility.init(android.view.ViewGroup, boolean) due to JIT inline cache
03-06 21:40:55.060 20716 27437 I DiscoveryHandler: received device address list from local discovery
03-06 21:41:02.958 20716 20716 W InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.
03-06 21:41:07.048 20716 20716 D FolderBrowserActivity: navigate to path = '..' from path = ''
03-06 21:41:07.283 20716 27449 I IndexBrowser: closing

Another Syncthing instance is running

The dialog "Another Syncthing instance is running" pops up every time you click on a folder, and every time you go back to the main Activity. Ideally it should only show up once on app start, and maybe have a checkbox/setting "don't show this again".

(from #61 (comment))

Showing the status in the UI

Currently, one just have to wait (e.g. until new shares show up) without knowing if anything happens. This is not good and can create the impression that the app does nothing.

Tasks:

  • show IP addresses in the device list
  • show some indication of connection progress in the device list

Request storage permission to avoid crash

On android 6.0 and above devices need to request storage access to get access to the file system. Unfortunately, syncthing-lite crashes without access to the file system. Requesting access to the file system at every start of the app should fix this issue.

Add option to set IP address for devices

I'm using syncthing server whihc available from wifi network only.
Global and local discovery, relays are disabled.
I can add this device to syncthing with static address (e.g. tcp://192.168.1.2:8435) and it works, but I cannot add it to syncthing lite because it cannot discover it.
Please add dialog where I can add device with static non-discoverable address.

feature request: Save a file in downloads folder

At some point it would be nice to be able to download a file e.g. in the downloads folder.
Right now downloaded files in the cache are hard to find and have cryptic names.

Thank you for investing so much time, i love this app!

Crash when changing directories

After many tries, I managed to add a device on the same network.
I kept trying and it finally synchronized the list of folders
Now I get this crash when I try to enter in one of the folders

01-07 10:48:00.977   938   938 D AndroidRuntime: Shutting down VM
01-07 10:48:00.992   938   938 E AndroidRuntime: FATAL EXCEPTION: main
01-07 10:48:00.992   938   938 E AndroidRuntime: Process: net.syncthing.lite, PID: 938
01-07 10:48:00.992   938   938 E AndroidRuntime: java.lang.IllegalStateException: activity is already destroyed
01-07 10:48:00.992   938   938 E AndroidRuntime: 	at net.syncthing.lite.activities.SyncthingActivity.folderBrowser(SyncthingActivity.kt:42)
01-07 10:48:00.992   938   938 E AndroidRuntime: 	at net.syncthing.lite.activities.FolderBrowserActivity$onFolderChanged$1.run(FolderBrowserActivity.kt:123)
01-07 10:48:00.992   938   938 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:751)
01-07 10:48:00.992   938   938 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:95)
01-07 10:48:00.992   938   938 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:241)
01-07 10:48:00.992   938   938 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6274)
01-07 10:48:00.992   938   938 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
01-07 10:48:00.992   938   938 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
01-07 10:48:00.992   938   938 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
01-07 10:48:00.994  2133  3171 D ActivityManager: New dropbox entry: net.syncthing.lite, data_app_crash, 34e19f8e-5fbd-4c58-b961-e03ed19bdde8
01-07 10:48:00.995  2133  3171 W ActivityManager:   Force finishing activity net.syncthing.lite/.activities.MainActivity
01-07 10:48:01.000  2133  3171 D ActivityTrigger: ActivityTrigger activityPauseTrigger 
01-07 10:48:01.070   938  2098 I IndexBrowser: folder preload END for folder = 'dlaiz-3srsf' path = ''
01-07 10:48:01.070   938  2098 I IndexBrowser: cache ready, notify listeners
01-07 10:48:01.079  2133  2168 I InputDispatcher: Focus entered window: Window{bf6ef1a u0 Application Error: net.syncthing.lite}
01-07 10:48:01.098  2133  2133 I BroadcastQueue: am_broadcast_enqueue: [background,1,Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) },4]
01-07 10:48:01.103   686   686 D clmlib  : Got activities:0x00000008
01-07 10:48:01.103   686   686 I JavaDumper:JavaDumperThread: addEvent: [email protected] processName: net.syncthing.lite
01-07 10:48:01.103   686   742 I JavaDumper:JavaDumperThread: Event: [email protected] TimeStamp: 1515322081
01-07 10:48:01.111  2133 20375 I OpenGLRenderer: Initialized EGL, version 1.4
01-07 10:48:01.111  2133 20375 D OpenGLRenderer: Swap behavior 1
01-07 10:48:01.155   686   742 W JavaDumper:JavaDumper: Could not init dump dir: Unknown error -95
01-07 10:48:01.156   686   742 E JavaDumper:FW:  utils.c(256): mkdir (/data/crashdata) failed. File exists
01-07 10:48:01.189   686   742 E JavaDumper:FW:  ramdump_framework.c(317): fp is NULL
01-07 10:48:01.189   686   742 E JavaDumper:FW:  ramdump_framework.c(498): Read-only file system
01-07 10:48:01.224  2133  2002 I ActivityManager: Start proc 2199:com.sonyericsson.crashmonitor/1000 for broadcast com.sonyericsson.crashmonitor/.receiver.CrashMonitorServiceBroadcastReceiver
01-07 10:48:01.269   686   742 E JavaDumper:FW:  JavaDumper.cpp(262): Failed to remove /tmp/dropbox.txt:Unknown error -2
01-07 10:48:01.322  2133  2171 I BroadcastQueue: am_broadcast_enqueue: [background,1,Intent { act=com.sonymobile.crashmonitorsystemservice.DIR_UPDATED flg=0x10 (has extras) },2]
01-07 10:48:01.500  2133  2167 W ActivityManager: Activity pause timeout for ActivityRecord{38db361 u0 net.syncthing.lite/.activities.MainActivity t11581 f}

Another crash reports after I restarted the App

01-07 11:26:24.884  6494  6494 D AndroidRuntime: Shutting down VM
01-07 11:26:24.885  6494  6494 E AndroidRuntime: FATAL EXCEPTION: main
01-07 11:26:24.885  6494  6494 E AndroidRuntime: Process: net.syncthing.lite, PID: 6494
01-07 11:26:24.885  6494  6494 E AndroidRuntime: java.lang.IllegalArgumentException: View=DecorView@741219c[] not attached to window manager
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:470)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:379)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:126)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at android.app.Dialog.dismissDialog(Dialog.java:370)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at android.app.Dialog.dismiss(Dialog.java:353)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at android.app.Dialog.cancel(Dialog.java:1226)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at net.syncthing.lite.activities.SyncthingActivity.onLibraryLoaded(SyncthingActivity.kt:78)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at net.syncthing.lite.activities.SyncthingActivity.access$onLibraryLoaded(SyncthingActivity.kt:19)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at net.syncthing.lite.activities.SyncthingActivity$onCreate$1.invoke(SyncthingActivity.kt:58)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at net.syncthing.lite.activities.SyncthingActivity$onCreate$1.invoke(SyncthingActivity.kt:19)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at net.syncthing.lite.library.InitLibraryTask$1$2.invoke(InitLibraryTask.kt:39)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at net.syncthing.lite.library.InitLibraryTask$1$2.invoke(InitLibraryTask.kt:11)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at org.jetbrains.anko.AsyncKt$uiThread$1.run(Async.kt:70)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:751)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:95)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:241)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6274)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
01-07 11:26:24.885  6494  6494 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
01-07 11:26:24.889  2133  2775 D ActivityManager: New dropbox entry: net.syncthing.lite, data_app_crash, e2c8b7d8-73c9-4733-a234-572918a0ba79
01-07 11:26:24.890  2133  2775 W ActivityManager:   Force finishing activity net.syncthing.lite/.activities.MainActivity
01-07 11:26:24.897  2133  2775 D ActivityTrigger: ActivityTrigger activityPauseTrigger 
01-07 11:26:24.915   686   686 D clmlib  : Got activities:0x00000008
01-07 11:26:24.915   686   686 I JavaDumper:JavaDumperThread: addEvent: [email protected] processName: net.syncthing.lite
01-07 11:26:24.916   686   742 I JavaDumper:JavaDumperThread: Event: [email protected] TimeStamp: 1515324384
01-07 11:26:24.916  2133  2133 I BroadcastQueue: am_broadcast_enqueue: [background,1,Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) },4]

And this other crash when I tried to download a file

8456  8467 I art     : Background sticky concurrent mark sweep GC freed 483381(15MB) AllocSpace objects, 0(0B) LOS objects, 25% free, 29MB/39MB, paused 10.605ms total 145.526ms
01-07 11:38:51.930  8456  8456 D FolderBrowserActivity: navigate to path = 'Internet/Conf/Accts/Acc.kdbx' from path = 'Internet/Conf/Accts'
01-07 11:38:51.930  8456  8456 I FolderBrowserActivity: pulling file = FileRecord{folder=dlaiz-3srsf, path=Internet/Conf/Accts/Acc.kdbx, size=448318, lastModified=Sun Jan 07 09:34:53 GMT+00:00 2018, type=FILE, last version = Version{id=-7232588831173444042, value=46}}
01-07 11:38:51.970  2133  3170 I InputDispatcher: Focus entered window: Window{7e28de5 u0 net.syncthing.lite/net.syncthing.lite.activities.FolderBrowserActivity}
01-07 11:38:55.556   882   882 I MSM-irqbalance: Decided to move IRQ132 from CPU0 to CPU1
01-07 11:38:55.754  8456  8489 I DiscoveryHandler: received device address list from local discovery
01-07 11:38:55.755  8456  8490 I DiscoveryHandler: processing device address list
01-07 11:38:56.016  1684  1684 W glodThread: type=1400 audit(0.0:12407): avc: denied { read } for name="gpubusy" dev="sysfs" ino=13783 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0 ppid=691 pcomm="main" pgid=10786 pgcomm="terycalibration"
01-07 11:38:56.684 10586 10677 D ClClient: Not sending keepalive.  Current connection state=STOPPED
01-07 11:39:00.005  2133  2381 I BroadcastQueue: am_broadcast_enqueue: [foreground,1,Intent { act=android.intent.action.TIME_TICK flg=0x50000014 (has extras) },16]
01-07 11:39:00.010  2511  2511 D KeyguardUpdateMonitor: received broadcast android.intent.action.TIME_TICK
01-07 11:39:00.010  2511  2511 D KeyguardUpdateMonitor: handleTimeUpdate
01-07 11:39:02.936 10786  8540 W CursorWindow: Window is full: requested allocation 36 bytes, free space 34 bytes, window size 2097152 bytes
01-07 11:39:06.701 10586 10677 D ClClient: Not sending keepalive.  Current connection state=STOPPED
01-07 11:39:08.558  8456  8489 I DiscoveryHandler: received device address list from local discovery
01-07 11:39:08.558  8456  8490 I DiscoveryHandler: processing device address list
01-07 11:39:09.514  2133  9914 W SettingsProvider: You shouldn't keep your settings in the secure settings. This will soon become an error.
01-07 11:39:10.550   882   882 I MSM-irqbalance: Decided to move IRQ222 from CPU0 to CPU1
01-07 11:39:11.826   972   972 W ipacm   : type=1400 audit(0.0:12415): avc: denied { sendto } for path="/dev/socket/ipacm_log_file" scontext=u:r:ipacm:s0 tcontext=u:r:ipacm-diag:s0 tclass=unix_dgram_socket permissive=0 ppid=1 pcomm="init" pgid=953 pgcomm="ipacm"
01-07 11:39:11.826   972   972 W ipacm   : type=1400 audit(0.0:12416): avc: denied { sendto } for path="/dev/socket/ipacm_log_file" scontext=u:r:ipacm:s0 tcontext=u:r:ipacm-diag:s0 tclass=unix_dgram_socket permissive=0 ppid=1 pcomm="init" pgid=953 pgcomm="ipacm"
01-07 11:39:11.826   972   972 W ipacm   : type=1400 audit(0.0:12417): avc: denied { sendto } for path="/dev/socket/ipacm_log_file" scontext=u:r:ipacm:s0 tcontext=u:r:ipacm-diag:s0 tclass=unix_dgram_socket permissive=0 ppid=1 pcomm="init" pgid=953 pgcomm="ipacm"
01-07 11:39:11.826   971   971 W ipacm   : type=1400 audit(0.0:12418): avc: denied { sendto } for path="/dev/socket/ipacm_log_file" scontext=u:r:ipacm:s0 tcontext=u:r:ipacm-diag:s0 tclass=unix_dgram_socket permissive=0 ppid=1 pcomm="init" pgid=953 pgcomm="ipacm"
01-07 11:39:11.826   971   971 W ipacm   : type=1400 audit(0.0:12419): avc: denied { sendto } for path="/dev/socket/ipacm_log_file" scontext=u:r:ipacm:s0 tcontext=u:r:ipacm-diag:s0 tclass=unix_dgram_socket permissive=0 ppid=1 pcomm="init" pgid=953 pgcomm="ipacm"
01-07 11:39:15.549   882   882 I MSM-irqbalance: Decided to move IRQ57 from CPU0 to CPU1
01-07 11:39:16.704 10586 10677 D ClClient: Not sending keepalive.  Current connection state=STOPPED
01-07 11:39:26.700 10586 10677 D ClClient: Not sending keepalive.  Current connection state=STOPPED
01-07 11:39:26.986  8456  8531 E AndroidRuntime: FATAL EXCEPTION: Thread-5
01-07 11:39:26.986  8456  8531 E AndroidRuntime: Process: net.syncthing.lite, PID: 8456
01-07 11:39:26.986  8456  8531 E AndroidRuntime: java.lang.IllegalArgumentException: unable to aquire index from connection BlockExchangeConnectionHandler{address=DeviceAddress{deviceId=CWZYA7U-N3PFJGE-U34A57G-TBNYRCY-RTVCK7T-CGRINRT-PLZ3LBU-YWYJFA7, instanceId=3274518355111554650, address=tcp://192.168.62.104:22000}, lastActive=46.314secs ago}, timeout reached!
01-07 11:39:26.986  8456  8531 E AndroidRuntime: 	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:210)
01-07 11:39:26.986  8456  8531 E AndroidRuntime: 	at net.syncthing.java.bep.IndexHandler.waitForRemoteIndexAquired(IndexHandler.java:122)
01-07 11:39:26.986  8456  8531 E AndroidRuntime: 	at net.syncthing.java.bep.IndexHandler.waitForRemoteIndexAquired(IndexHandler.java:114)
01-07 11:39:26.986  8456  8531 E AndroidRuntime: 	at net.syncthing.java.client.SyncthingClient$pullFile$1.invoke(SyncthingClient.kt:173)
01-07 11:39:26.986  8456  8531 E AndroidRuntime: 	at net.syncthing.java.client.SyncthingClient$pullFile$1.invoke(SyncthingClient.kt:48)
01-07 11:39:26.986  8456  8531 E AndroidRuntime: 	at net.syncthing.java.client.SyncthingClient$getConnectionForFolder$1.invoke(SyncthingClient.kt:115)
01-07 11:39:26.986  8456  8531 E AndroidRuntime: 	at net.syncthing.java.client.SyncthingClient$getConnectionForFolder$1.invoke(SyncthingClient.kt:48)
01-07 11:39:26.986  8456  8531 E AndroidRuntime: 	at net.syncthing.java.client.SyncthingClient$getPeerConnections$1.run(SyncthingClient.kt:139)
01-07 11:39:26.986  8456  8531 E AndroidRuntime: 	at java.lang.Thread.run(Thread.java:761)

Sometimes download get stuck

Downloading a very small file (12KiB) always succeeds.
Download a bigger one (~1MiB), it often get stuck at 50% or 90%.
I didn't extract logcat yet.

highly unreliable on lineageos

hello

I've tried syncthing-lite 0.2.1 on two different devices both running lineageos 14.1 (based on android 7.1.2) with or without MicroG (I tried first with vanilla lineageos, then flashed lineageos for microg)

and I had always had the same results : syncthing-lite crashes when I try to add a new device (at least at first attempt, then eventually it works), then it crashes during scan when it get any new shared directory (one crash for each directory), but launching it again successfully shows the new directory it got.

But then it can't get the indexes for the biggest directories.

And then it never downloads any file (stays blocked at zero percent then fails). About that I suspect a permission issue, since it has never required for autorisation to access my files or sdcard. App Infos in settings -> Applications -> syncthing-lite shows : no autorisation required.

and it also randomly (at least to me) crashes at any moment.

here is info I get in catlog while trying to download a file :

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) 2018-03-21 03:22:37,ERROR,ExecutorService,Syncthing Lite,java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30035ms.

and other errors I can get :

2018-03-21 03:25:11,ERROR,ExecutorService,Unknown,org.h2.jdbc.JdbcSQLException: The database has been closed [90098-196]
at org.h2.engine.Session.getTransaction(Session.java:1636)
at org.h2.engine.Session.getStatementSavepoint(Session.java:1646)
at org.h2.engine.Session.setSavepoint(Session.java:825)
at org.h2.command.Command.executeUpdate(Command.java:254)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:164)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:150)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
at net.syncthing.java.repository.repo.SqlRepository.updateFileInfo(SqlRepository.kt:356)
at net.syncthing.java.bep.IndexHandler.addRecord(IndexHandler.kt:215)
at net.syncthing.java.bep.IndexHandler.pushRecord(IndexHandler.kt:167)
at net.syncthing.java.bep.IndexHandler$IndexMessageProcessor$ProcessingRunnable.doHandleIndexMessageReceivedEvent(IndexHandler.kt:403)
at net.syncthing.java.bep.IndexHandler$IndexMessageProcessor$processBg$1.runProcess(IndexHandler.kt:326)
at net.syncthing.java.bep.IndexHandler$IndexMessageProcessor$ProcessingRunnable.run(IndexHandler.kt:353)
at net.syncthing.java.core.utils.ExecutorUtilsKt$submitLogging$1.invoke(ExecutorUtils.kt:31)
at net.syncthing.java.core.utils.ExecutorUtilsKt$submitLogging$1.invoke(ExecutorUtils.kt)
at net.syncthing.java.core.utils.ExecutorUtilsKt$submitLogging$2.call(ExecutorUtils.kt:40)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
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)

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.