EteSync - Secure, end-to-end encrypted, and privacy respecting sync for your contacts, calendars and tasks.

Overview

EteSync - Secure Data Sync

Secure, end-to-end encrypted, and privacy respecting sync for your contacts, calendars and tasks (Android client).

Get it on Google Play Get it on F-Droid

GitHub tag Chat on freenode

Overview

Please see the EteSync website for more information.

EteSync is licensed under the GPLv3 License.

Building

EteSync uses git-submodules, so cloning the code requires slightly different commands.

  1. Clone the repo: git clone --recurse-submodules https://github.com/etesync/android etesync-android
  2. Change to the directory cd etesync-android
  3. Open with Android studio or build with gradle:
  4. Android studio (easier): android-studio .
  5. Gradle: ./gradlew assembleDebug

To update the code to the latest version, run: git pull --rebase --recurse-submodules

Translating

Translators are highly welcome! To help with translation please go to our Weblate page and translate it from there.

Third Party Code

EteSync's source code was originally based on DAVdroid but the codebases has since diverged quite significantly.

This project relies on many great third party libraries. Please take a look at the app's about menu for more information about them and their licenses.

Comments
  • OpenTasks causes many syncs (draining battery) for seemingly no reason

    OpenTasks causes many syncs (draining battery) for seemingly no reason

    As per logs provided offline, seems OpenTasks causes lengthy/numerous syncs for no apparent reason. Persists even after complete remove and reinstall of OpenTasks. Doesn't occur every time, but does occur many of the syncs. Let me know if you need any more troubleshooting!

    opened by stevesbrain 73
  • Unable to sync etesync 2.0 tasks to tasks.org

    Unable to sync etesync 2.0 tasks to tasks.org

    I moved my tasks to etesync 2.0 - the etesync android app recognizes the account and the lists but I am unable to sync them with tasks.org and opentasks. The username and tasklists are shown, but no tasks are synchronized. I can add tasks and sync them from the app to the server but I cannot sync tasks from etesync to my phone.

    When I use the webapp on mac, I am able to see the tasks.

    Since I was not able to sync the tasks to both apps, I figured the problem could be with etesync and not opentasks or tasks.org

    I am using Fairphone Open 19.11.2 (Android 7.1.2) and the latest app versions from F-Droid.

    Thank you for your help!

    opened by Nurtyll 34
  • Tasks and Events Disappear

    Tasks and Events Disappear

    Lately I've been having some problems with synchronizing my tasks. Somehow, the tasks seem to be disappearing locally. I've found that they reappear after making some change to them on another platform (usually Thunderbird) and synchronizing from the app. I've not yet found out what actually triggers this problem, but I've turned on logging in the hope that I can capture it when it happens again. My initial thought was that it happened when I created a new tasks through the app, but so far this does not seem to be the case.

    This problem might also be present in the calendar sync, as there have been a few instances in which calendar events disappeared, which I solved by re-adding my account in the app.

    You'll find a log file here, in which I've captured syncing after making a small change to tasks that had disappeared, causing them to be added as new tasks by the app.

    If I can manage to capture a log of the tasks disappearing I'll be sure to post them here. I hope you can figure something out!

    opened by michaelvandeweerd 33
  • cant import tags from Tasks.org app

    cant import tags from Tasks.org app

    Tags created on website are buggy. sometimes they are imported to web, sometimes they just become an empty tag (no characters). also tags created via Android app Tasks.org are not imported to EteSync web. the following works: _ tags/tasks created on web to app (sometimes) _ tasks edited on web to app

    opened by Pleasantless 23
  • Automatically send invitations for calendar events with guests.

    Automatically send invitations for calendar events with guests.

    One way of doing it is detecting when such an event is created/changed in the sync adapter and then creating a pre-populated email intent to send that. I think this could work. Need to verify.

    opened by tasn 20
  • First names do not show on Android

    First names do not show on Android

    On my Samsung Galaxy S8 (running One UI 1.0; Android 9) the first names of all contacts have disappeared.

    On my iPhone the first names still show. The etesync app (iOS, Android, Web) also still show the first names.

    Any idea what could have happened? I tried two contacts apps, but the first name field is empty.

    The first names show OK when synching from Outlook via CardDAV to Android. First names disappear (on Android only) when synching from iCloud to iPhone to Etesync to Android.

    Edit for clarity

    opened by tx3eh8IUD1 15
  • Constant pop-up notification 'etesync has crashed please send stack trace to developer'

    Constant pop-up notification 'etesync has crashed please send stack trace to developer'

    Getting a constant pop-up notification on my phone saying, 'etesync has crashed please send stack trace to developer'

    This is happening without being in the etesync app, just when unlocking my phone, or surfing other apps within my phone. The pop-up happens several times a day. No debug file is being provided to be able to send to the developer. In other words, when the pop-up occurs there is no way to respond to it or take any action on it. It simply pops-up letting me know etesync is crashing (again). It crashes constantly, if you believe this message.

    opened by ghost 15
  • Google Contacts app allows contacts to be added to base EteSync account

    Google Contacts app allows contacts to be added to base EteSync account

    Device: Pixel 3 running Android 11, build RP1A.201005.004

    The default contacts app for the Pixel 3 is the one that Google provides in the Play Store. I'm using the latest version (v3.34.3.338741632) of that app at the time of this writing.

    https://play.google.com/store/apps/details?id=com.google.android.contacts

    When I click the Account button in the top right corner so I can toggle accounts, I have these options:

    1. Contacts from all accounts
    2. Google account x
    3. Google account y
    4. Google account z
    5. EteSync - username
    6. EteSync Address Book - collection x
    7. EteSync Address Book - collection y
    8. EteSync Address Book - collection z

    The base EteSync account (account 5 above) should not show up in this list, as it is not an Address Book at all. The app does allow contacts to be added to that account, although the EteSync client will never sync them anywhere.

    I've already reached out to Tom about this. He thinks it may be related to an earlier Android 11 issue when contacts were being set as read only and unable to edit.

    Thanks!

    Troy

    opened by troyalmeida 14
  • Possible to add note-taking feature as well into this?

    Possible to add note-taking feature as well into this?

    First of all, thanks for this wonderful project. This app has been a joy to use for contacts & calendar management. I recently started using the tasks management feature as well and it's great. Wondering if note-taking feature can also be included somehow?

    opened by 60Eight 13
  • REQ: Contact Groups

    REQ: Contact Groups

    I'm not sure if this is implemented in the protocol or what? Currently, I cannot assign groups to any of my contacts in an EteSync address book. I should be able to do that.

    opened by clayote 13
  • Managing subtasks with Tasks.org broken

    Managing subtasks with Tasks.org broken

    When I create a task in Tasks.org and add subtasks, they become independent top-level tasks (i.e. no longer subtasks) as soon as I synchronise. This is a massive problem for me, since I organise my weekly shopping in this way (e.g. task "Shopping 2020/49" and subtasks for the items): I now have dozens and dozens of items floating around in my list, completely without any order.

    Possibly related problems

    One such top-level task ("Shopping 2020/47") was duplicated. Moving (completed) tasks from one of the duplicated top-level tasks to the other has the effect that they will be gone from both. One top-level task that I created for this week (i.e. named "Shopping 2020/49") vanished right after synchronising. I created another one with the same name and it is still there. Only the latter I can still see in the EteSync app's journal.

    Time this started happening

    This behaviour started roughly at the same time I migrated my account to EteSync 2 (between weeks 2020/42 and 2020/47, during which I did not create new tasks). Tasks that existed since before the migration appear to be unaffected. (Or are they just unaffected, because I do not touch them anymore?)

    How I create tasks

    My top level tasks are named "Shopping YYYY/WW" and have the tag "Shopping" and a due date set. Mostly I create them with subtasks right away. But even when moving other top-level tasks into them to make them subtasks shows the same buggy behaviour.

    Other behaviour I noticed

    When synchronising Tasks.org (go to top of list and pull down), I see the spinner display briefly, then about a second without and then it display again twice in quick succession (spinning for a few milliseconds, maybe a millisecond without spinner, then spinning again for a few milliseconds).

    In EteSync's journal I can see the "raw" version of historic subtasks (i.e. older revisions). They carry a RELATED-TO;RELTYPE=PARENT:<decimal number> field. According to RFC 5545 Section 3.8.4.5 this should be the UID of the parent item. But the parent item has a UUID in their UID field, not a decimal number. The latest revision of the subtask does not carry that RELATED-TO field anymore.

    I am also affected by the bug affecting setting tags in Tasks.org: #159

    opened by devurandom 12
  • Restoring eyesync from backup does not ask for Contacts & Calendar permissions

    Restoring eyesync from backup does not ask for Contacts & Calendar permissions

    TL;DR

    When etesync restored from backup it does NOT ask for Contacts & Calendar permissions. As a result, no contacts & events are appearing despite sync working fine.

    Issue

    New phone, restored backup from old phone using Neo Backup (APK + data), got prompted for Push Notifications permission.

    Data was not transferred during the backup, my guess it's because of how it's stored on the device for security purposes.

    Added account, sync was working fine, could see all the items, but no contacts nor events showing in the respective apps.

    Workaround

    Reinstalling etesync made the permission dialogs show as expected.

    System information

    Android 13 CalyxOS Pixel 6a etesync v2.3.0

    opened by joxlfg2q 0
  • Consider blocking modifications of contact/calendar entries if subscription has expired

    Consider blocking modifications of contact/calendar entries if subscription has expired

    If a user installed etesync using the trial license, then never renewed that license but still kept etesync installed, any modifications made to contact/calendar entries after expiration of the license will be irrecoverably lost when the app is uninstalled. It might make sense to block changes to the local cache when the license has expired, at least until the user explicitly acknowledges this risk, to avoid such mishaps.

    opened by Xiretza 4
  • Tasks sync failed

    Tasks sync failed

    I've been getting this error as a notification for a couple of days now. What can I do to fix it?

    Here's the debug info:

    --- BEGIN DEBUG INFO ---
    SYNCHRONIZATION INFO
    Synchronization phase: applying remote entries
    Account name: -
    Authority: org.tasks.opentasks
    Debug activity source: class com.etesync.syncadapter.syncadapter.SyncNotification$NotificationHandlerActivity (Kotlin reflection is not available)
    
    EXCEPTION:
    at.bitfire.ical4android.CalendarStorageException: Couldn't apply batch operation
    	at at.bitfire.ical4android.BatchOperation.commit(BatchOperation.kt:54)
    	at at.bitfire.ical4android.AndroidTask.update(AndroidTask.kt:347)
    	at com.etesync.syncadapter.syncadapter.TasksSyncManager.processTask(TasksSyncManager.kt:132)
    	at com.etesync.syncadapter.syncadapter.TasksSyncManager.processItem(TasksSyncManager.kt:89)
    	at com.etesync.syncadapter.syncadapter.SyncManager.applyRemoteItems(SyncManager.kt:470)
    	at com.etesync.syncadapter.syncadapter.SyncManager.performSync(SyncManager.kt:252)
    	at com.etesync.syncadapter.syncadapter.TasksSyncAdapterService$TasksSyncAdapter.onPerformSyncDo(TasksSyncAdapterService.kt:70)
    	at com.etesync.syncadapter.syncadapter.SyncAdapterService$SyncAdapter.onPerformSync(SyncAdapterService.kt:117)
    	at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:334)
    Caused by: android.content.OperationApplicationException: Too many content provider operations between yield points. The maximum number of operations per yield point is 500
    	at android.database.DatabaseUtils.readExceptionWithOperationApplicationExceptionFromParcel(DatabaseUtils.java:163)
    	at android.content.ContentProviderProxy.applyBatch(ContentProviderNative.java:599)
    	at android.content.ContentProviderClient.applyBatch(ContentProviderClient.java:576)
    	at android.content.ContentProviderClient.applyBatch(ContentProviderClient.java:564)
    	at at.bitfire.ical4android.BatchOperation.runBatch(BatchOperation.kt:80)
    	at at.bitfire.ical4android.BatchOperation.commit(BatchOperation.kt:44)
    	... 8 more
    
    SOFTWARE INFORMATION
    EteSync version: 2.2.4 (20204) 
    Installed from: org.fdroid.fdroid.privileged
    CONFIGURATION
    Power saving disabled: yes
    android.permission.READ_CONTACTS permission: granted
    android.permission.WRITE_CONTACTS permission: granted
    android.permission.READ_CALENDAR permission: granted
    android.permission.WRITE_CALENDAR permission: granted
    org.dmfs.permission.READ_TASKS permission: denied
    org.dmfs.permission.WRITE_TASKS permission: denied
    org.tasks.permission.READ_TASKS permission: granted
    org.tasks.permission.WRITE_TASKS permission: granted
    System-wide synchronization: automatically
    Account: -
      Address book sync. interval: 240 min
      Calendar     sync. interval: 240 min
      OpenTasks    sync. interval: —
      [Tasks.org](http://tasks.org/)    sync. interval: 240 min
      WiFi only: false
      [CardDAV] Contact group method: GROUP_VCARDS
               Manage calendar colors: true
    Address book account: My Contacts (-)
      Main account: Account {name=-, type=com.etesync.syncadapter}
      URL: -
      Sync automatically: true
    
    SQLITE DUMP
    android_metadata
    	|  locale |
    	|  fr_FR |
    ----------
    settings
    	|  setting | value |
    ----------
    
    SERVICES DUMP
    
    JOURNALS DUMP
    
    SYSTEM INFORMATION
    Android version: 11 (RQ3A.211001.001.22214000)
    Device: Google Pixel 2 (walleye)
    
    --- END DEBUG INFO ---
    
    opened by delcier 9
  • Data is not synced

    Data is not synced

    Hello, my EteSync App stopped syncing data a while ago. When manually pressing the sync button in the app no errors are displayed, but also data is synced. I tried removing and readding my account. I also reinstalled the app. The problem remains the same. For some reason the app does not actually fetch any data from the EteSync servers. This makes the whole service essentially useless for me since I only use to sync data between my computer and phone.

    opened by lheinke 9
  • All contacts suddenly stopped showing in native contact app

    All contacts suddenly stopped showing in native contact app

    I am happily using Etesync for about two years. Suddenly I noticed yesterday that on my phone a large number of contacts have disappeared. First I was a bit panicked, but the Web interface showed them all still there.

    In the native contact app in the left hand drawer I have "Contacts on this device" and "Etesync contacts". The category Etesync is simply empty, even though the Etesync app itself syncs happy, and its changelog shows all relevant entries...

    What to do?

    opened by tzugen 1
Owner
EteSync & Etebase
End-to-end Encrypt Everything!
EteSync & Etebase
Secure your REST APIs with Spring Security, Resource and Authorization Server from zero to JWT

Secure REST APIs with Spring ./mvnw RTFM YouTube: Spring Security Patterns YouTube: Spring Security 5.5 From Taxi to Takeoff Official Apache Maven doc

Maksim Kostromin 1 Dec 5, 2021
MiHawk 🦅👁️ is simple and secure 🔒 Android Library to store and retrieve pair of key-value data with encryption , internally it use jetpack DataStore Preferences 💽 to store data.

MiHawk MiHawk ?? ??️ is simple and secure ?? Android Library to store and retrieve pair of key-value data with encryption , internally it use jetpack

Nedal Hasan Ibrahem 5 Sep 3, 2022
Grab’n Run, a simple and effective Java Library for Android projects to secure dynamic code loading.

Grab’n Run, a simple and effective Java Library for Android projects to secure dynamic code loading.

Luca Falsina 418 Dec 29, 2022
Secure Secret Keys With Kotlin

Secure-Secret-Keys How to Secure Secrets ?? in Android CMake — Native Libraries

Muhammad Shams 4 Jan 21, 2022
This app will show grid overlay over whole system which helps you to verify your excellent app design.

GridWichterle for Android This app will show grid overlay over whole system which helps you to verify your excellent app design. Download: What is the

Inmite s.r.o. 408 Dec 29, 2022
If you have trouble pinning your custom icon to Launcher dynamically, try this library

CustomIconHelperX If you have trouble pinning your custom icon to Launcher dynam

Valentine Liao 1 Jan 4, 2022
Tiny app to enforce security policies of your device

Sentry Enforce security policies. Tiny app to enforce security policies of your device. It can: limit the maximum number of failed password attempts d

lucky 43 Dec 24, 2022
Android virtual machine and deobfuscator

Simplify Generic Android Deobfuscator Simplify virtually executes an app to understand its behavior and then tries to optimize the code so that it beh

Caleb Fenton 4.1k Dec 25, 2022
BlackDex is an Android unpack tool, it supports Android 5.0~12 and need not rely to any environment. BlackDex can run on any Android mobile phones or emulators, you can unpack APK File in several seconds.

BlackDex is an Android unpack tool, it supports Android 5.0~12 and need not rely to any environment. BlackDex can run on any Android mobile phones or emulators, you can unpack APK File in several seconds.

null 4.3k Jan 2, 2023
A simple and opinionated AES encrypt / decrypt Ruby gem that just works.

AESCrypt - Simple AES encryption / decryption for Ruby AESCrypt is a simple to use, opinionated AES encryption / decryption Ruby gem that just works.

Gurpartap Singh 158 Oct 18, 2022
Simple API to perform AES encryption on Android. This is the Android counterpart to the AESCrypt library Ruby and Obj-C (with the same weak security defaults :( ) created by Gurpartap Singh. https://github.com/Gurpartap/aescrypt

AESCrypt-Android Simple API to perform AES encryption on Android with no dependancies. This is the Android counterpart to the AESCrypt library Ruby an

Scott Alexander-Bown 636 Dec 18, 2022
A Java ePub reader and parser framework for Android.

FolioReader-Android is an EPUB reader written in Java and Kotlin. Features Custom Fonts Custom Text Size Themes / Day mode / Night mode Text Highlight

FolioReader 2.1k Jan 3, 2023
A program to flip every private, protected and package-private access flag to public in an Android dex file!

DexExposed A program to flip every private, protected and package-private access flag to public in an Android dex file! Building Simply run gradle mak

John Doe 2 Aug 29, 2021
A simple android app that parses its own signature and displays it

SigDisplayer Usage Download the release APK or clone the repository and compile yourself. Sign the APK with your preferred keystore. Install and open

Jonah 5 Oct 18, 2022
A program analysis tool to find cryptographic misuse in Java and Android.

A program analysis tool to find cryptographic misuse in Java and Android.

null 92 Dec 15, 2022
CRYLOGGER: Detecting Crypto Misuses for Android and Java Apps Dynamically

CRYLOGGER: Detecting Crypto Misuses for Android and Java Apps Dynamically

Luca Piccolboni 139 Dec 12, 2022
A tool translate a apk file to stantard android project include so hook api and il2cpp c++ scaffolding when apk is a unity il2cpp game. Write code on a apk file elegantly.

FakerAndroid (FakerAndroid.jar or FakerAndroid-AS) A tool translate a apk file to stantard android project include so hook api and il2cpp c++ scaffold

null 231 Dec 29, 2022
Burp extension to create target specific and tailored wordlist from burp history.

Burp extension to create target specific and tailored wordlist from burp history.

Dexter0us 173 Jan 2, 2023