Coder Social home page Coder Social logo

samschott / maestral Goto Github PK

View Code? Open in Web Editor NEW
3.1K 3.1K 65.0 126.98 MB

Open-source Dropbox client for macOS and Linux

Home Page: https://maestral.app

License: MIT License

Python 99.94% Dockerfile 0.06%
dropbox-client dropbox-sync linux macos python

maestral's People

Contributors

aries1980 avatar deepsource-autofix[bot] avatar dependabot-preview[bot] avatar dependabot[bot] avatar devrintalen avatar franklouwers avatar gliptak avatar jugmac00 avatar larshaalck avatar lyzardking avatar michaelbjames avatar orangefran avatar powerexploit avatar raffaem avatar rex4539 avatar samschott avatar takapai 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

maestral's Issues

Archiecture questions

This isn't a bug report but more of a discussion thing. If this isn't the right forum, please let me know.

It's currently possible to run maestral in a few different ways:

  • maestral sync in a terminal
  • maestral daemon start in a terminal but backgrounded
  • maestral gui
  • maestral sync or daemon start in a systemd unit (probably via launchd too on darwin)

When run in daemon mode, it's possible to interact with the daemon, ie: maestral daemon errors

In GUI mode that's possible too but not when run in "sync" mode.

How about splitting up the application, so you have a few different components:

a. The sync engine that runs headlessly
b. A UI that could either be the current GUI that doesn't do any syncing on its own or a CLI UI

If launching the GUI without the "engine" running, it could be spawned. One application that does it this way is deluge (bittorrent application).

[BUG] Maestral hanging after setup

Describe the bug
Maestral hangs after set up.
To Reproduce
Steps to reproduce the behaviour.

  1. Install maestral-0.4.0 via pip install --user maestral
  2. run maestral gui, get token, enter
  3. set up sync location
  4. finish

Expected behaviour
A clear and concise description of what you expected to happen.

Maestral should start syncing data. Instead, it hangs.

2019-09-25 23:31:27 maestral.sync.monitor WARNING: Maestral index could not be found.

is printed to the console.

If you kill maestral after setting up via maestral gui and start it via maestral start, the same issue occurs.

System (please complete the following information):

  • Maestral version: 0.4.0
  • OS: ArchLinux
  • Desktop environment: xmonad + gnome
  • Qt version: 5.13.1

Additional context
Add any other context about the problem here.

strace on the maestral start process suggests it's hanging at creating/opening the pid file:

stat("/home/username", {st_mode=S_IFDIR|0700, st_size=45056, ...}) = 0
stat("/home/username", {st_mode=S_IFDIR|0700, st_size=45056, ...}) = 0
mkdir("/home/username/.cache", 0777) = -1 EEXIST (File exists)
stat("/home/username/.cache", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/run/user/1000", {st_mode=S_IFDIR|0700, st_size=300, ...}) = 0
mkdir("/run/user/1000/maestral", 0777) = -1 EEXIST (File exists)
stat("/run/user/1000/maestral", {st_mode=S_IFDIR|0755, st_size=40, ...}) = 0
openat(AT_FDCWD, "/run/user/1000/maestral/maestral.pid", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

Creating this file manually doesn't change things, though the strace output is slightly different:

fstat(17, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
ioctl(17, TCGETS, 0x7ffd74cf2bf0) = -1 ENOTTY (Inappropriate ioctl for device)
lseek(17, 0, SEEK_CUR) = 0
ioctl(17, TCGETS, 0x7ffd74cf2b20) = -1 ENOTTY (Inappropriate ioctl for device)
lseek(17, 0, SEEK_CUR) = 0
fstat(17, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
read(17, "", 8192) = 0
close(17) = 0
stat("/home/username", {st_mode=S_IFDIR|0700, st_size=45056, ...}) = 0
stat("/home/username", {st_mode=S_IFDIR|0700, st_size=45056, ...}) = 0
mkdir("/home/username/.cache", 0777) = -1 EEXIST (File exists)
stat("/home/username/.cache", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/run/user/1000", {st_mode=S_IFDIR|0700, st_size=300, ...}) = 0
mkdir("/run/user/1000/maestral", 0777) = -1 EEXIST (File exists)
stat("/run/user/1000/maestral", {st_mode=S_IFDIR|0755, st_size=60, ...}) = 0
openat(AT_FDCWD, "/run/user/1000/maestral/maestral.pid", O_RDONLY|O_CLOEXEC) = 17

Better exception handling

  • Catch specific internet connection errors.
  • Handle cases where the Dropbox folder becomes inaccessible, e.g., is moved by the user.
  • Handle request limits from the Dropbox API.
  • Handle possible exceptions from dropbox.files_delete command.
  • Handle cases where downloading a file change fails, e.g., due to insufficient permissions or insufficient space.
  • Handle cases where uploading a file change fails, e.g., due to insufficient insufficient space on the user's dropbox.

Doesn't find configuration if run under systemd

Installing from github (I'm packing it for NixOS), I am able to launch both the cli and gui applications and sync succesfully without any problems.

However, if I try running maestral sync from a systemd user service, it keeps prompting to go through the authorization process, so I am guessing that due to the different environment exposed to the systemd service, it is not able to find its configuration:

Aug 07 12:50:11 mildred maestral[435329]: Warning: PyQt5 is required to run the Maestral GUI. Run `pip install pyqt5` to install it.
Aug 07 12:50:11 mildred maestral[435329]: 1. Go to: https://www.dropbox.com/oauth2/authorize?response_type=code&client_id=oht3qeriq0h97xc
Aug 07 12:50:11 mildred maestral[435329]: 2. Click "Allow" (you might have to log in first).
Aug 07 12:50:11 mildred maestral[435329]: 3. Copy the authorization code.
Aug 07 12:50:11 mildred maestral[435329]: Enter the authorization code here:
Aug 07 12:50:11 mildred maestral[435329]: Aborted!

I am setting both HOME, DROPBOX_API_KEY and DROPBOX_API_SECRET in the systemd environment.

[Unit]
Description=Maestral - a Dropbox clone

[Service]
Environment="HOME=%h"
Environment="LOCALE_ARCHIVE=/nix/store/aqyxqxbxv1pcc52j71ba6jlzdyhgy5d3-glibc-locales-2.27/lib/locale/locale-archive"
Environment="PATH=/nix/store/k8lhqzpaaymshchz8ky3z4653h4kln9d-coreutils-8.31/bin:/nix/store/gjh3a8hqic3bqc2xzj8g2qxwz81wfjxx-findutils-4.6.0/bin:/nix/store/agcay3wmf74qinwshnjqy73w8rxf82hs-gnugrep-3.3/bin:/nix/store/vnyd3wh5i5kj66n9c5b8shzxjjrw22cn-gnused-4.7/bin:/nix/store/md7jdq475ij8cpifxb5rrh7y51qrfypq-systemd-242/bin:/nix/store/k8lhqzpaaymshchz8ky3z4653h4kln9d-coreutils-8.31/sbin:/nix/store/gjh3a8hqic3bqc2xzj8g2qxwz81wfjxx-findutils-4.6.0/sbin:/nix/store/agcay3wmf74qinwshnjqy73w8rxf82hs-gnugrep-3.3/sbin:/nix/store/vnyd3wh5i5kj66n9c5b8shzxjjrw22cn-gnused-4.7/sbin:/nix/store/md7jdq475ij8cpifxb5rrh7y51qrfypq-systemd-242/sbin"
Environment="QML2_IMPORT_PATH=/nix/store/qa3faa7dy41wxd1y2ldmg5fzc3pdwb10-qtbase-5.12.0-bin/lib/qt-5.12/qml"
Environment="QT_PLUGIN_PATH=/nix/store/qa3faa7dy41wxd1y2ldmg5fzc3pdwb10-qtbase-5.12.0-bin/lib/qt-5.12/plugins"
Environment="TZDIR=/nix/store/fsfddn3jj009rgy80fdv50lq13sp1p73-tzdata-2019a/share/zoneinfo"
EnvironmentFile=%t/keys/maestral
ExecStart=/nix/store/cmd69mskpzvp3adbgkhpl49bci65lrkb-maestral-0.2.4/bin/maestral sync
Nice=10
Restart=on-failure

Improve the dropbox location

Bildschirmfoto vom 2019-07-07 17-43-47

I do not htink it is perfectly clear that the dropbox folder is going to be a subdirectory of the chosen directory

maestral-gui does not shut down or hangs at shutdown

I opened maestral-gui in terminal and closed it via the tray menu item "Quit Maestral" but maestral does not shutdown without timeout.

Few seconds after I quit maestral:

Shutting down threads.
Observer thread stopped.
Upload thread stopped.

Around a minute later

Shutting down threads.
Observer thread stopped.
Upload thread stopped.
Up to date
Download thread stopped.
Connection thread stopped.

If the sync state did not change what is the reason that maestral needs time to shutdown?

[BUG] Start-on-login only works on macOS and Gnome desktops

Describe the bug
The start-on-login option the GUI currently only works on macOS and Gnome desktops.

System (please complete the following information):
Any environments apart form macOS and Gnome.

*To do
Disable the checkbox if a platform is detect which is currently not supported. Possibly expand support to other desktop environments. Check if Qt provides a functionality to register an app with the systems preferred method for launching on login.

log file

Please add a log file.
You do mention to test all use cases with maestral but I would not know that something went wrong without a logfile to look at. Just log errors.

[BUG] Enabling watchdog in systemd makes maestral crash

Describe the bug

With version 0.4.1, everything works fine as long as I don't enable the watchdog.

I added this, as an override file in /run/user/1000/system/user/maestral.service.d/override.conf:

[Service]
WatchdogSec = 30s

And now maestral refuses to start:

Oct 22 21:59:54 dolores systemd[1126]: Starting Maestral - a Dropbox clone...
Oct 22 21:59:55 dolores systemd[1126]: Started Maestral - a Dropbox clone.
Oct 22 21:59:55 dolores maestral[5770]: Traceback (most recent call last):
Oct 22 21:59:55 dolores maestral[5770]:   File "/nix/store/vrllbj5ial3g70b2wd2bxmx01rxv32yw-maestral-0.4.1/lib/python3.7/site-packages/maestral/sync/daemon.py", line 119, in start_maestral_daemon
Oct 22 21:59:55 dolores maestral[5770]:     m = ExposedMaestral(run=run)
Oct 22 21:59:55 dolores maestral[5770]:   File "/nix/store/vrllbj5ial3g70b2wd2bxmx01rxv32yw-maestral-0.4.1/lib/python3.7/site-packages/maestral/sync/main.py", line 255, in __init__
Oct 22 21:59:55 dolores maestral[5770]:     self.update_thread.start()
Oct 22 21:59:55 dolores maestral[5770]:   File "/nix/store/8lhmyjarm73453f2mdz0xli9w8sy0wvh-python3-3.7.4/lib/python3.7/threading.py", line 848, in start
Oct 22 21:59:55 dolores maestral[5770]:     raise RuntimeError("threads can only be started once")
Oct 22 21:59:55 dolores maestral[5770]: RuntimeError: threads can only be started once

To Reproduce
Add watchdogsec to service.

Expected behaviour
For it to not blow up.
A clear and concise description of what you expected to happen.

System (please complete the following information):

  • Maestral version: 0.4.1
  • OS:
  • system: "x86_64-linux"
  • host os: Linux 5.3.7, NixOS, 20.03.git.c02c4775b40M (Markhor)
  • multi-user?: yes
  • sandbox: yes
  • version: nix-env (Nix) 2.3.1
  • channels(root): ""
  • channels(peter): "home-manager"
  • nixpkgs: /home/peter/src/active/nixpkgs_unstable
  • Desktop environment: KDE Plasma 5.16
  • Qt version: 5.12.3

Add menu bar based GUI

Add a menu bar icon with a simple menu for pausing / resuming the sync, linking and unlinking Dropbox, choosing excluded folders, etc.

This can be similar to alt-clicking the Dropbox menu bar icon on macOS:

screen shot 2018-11-27 at 21 10 50

Feature Request - better support for running under systemd

With the upcoming split between backend and frontend, it's likely that a user would want to run the backend under systemd. If that is the case, there are a few things maestral can do to make things nicer:

  1. When running in the foreground, send a notification that it's up and running
  2. Continuously update its status (using the same sd_notify mechanism), so that systemctl --user status maestral will return the current status in the status field ("Syncing X out of Y", "Up to date" etc)
  3. Log to the journal instead of just stdout

Regd item 1, this means that systemd will only continue starting other services when maestral actively informs it that it is up and running. A use case would be the GUI running as a separate service under systemd that is dependent on the backup actually being up and running.

Regd item 2, we could avoid spamming the logs with "maestral.monitor INFO: Up to date" as it would simply just show the status in the status field.

Regd item 3, we currently get duplicated timestamps as journald captures the timestamp when the message was output to stdout and maestral also writes the time. Example:

Sep 08 21:55:59 mildred maestral[3444]: 2019-09-08 21:55:59 maestral.monitor INFO: Up to date

There are some python modules that can help with this:

maestral gui unexpected keyword argument 'include_non_downloadable_files'

It crashes with

 > Loading access token...
 > MaestralClient is ready.
Up to date
Maestral index could not be found. Rebuild if necessary.
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/maestral/gui/first_sync_dialog.py", line 200, in on_dropbox_path
    self.populate_folders_list()
  File "/usr/local/lib/python3.7/dist-packages/maestral/gui/first_sync_dialog.py", line 241, in populate_folders_list
    root_folders = self.mdbx.client.list_folder("", recursive=False)
  File "/usr/local/lib/python3.7/dist-packages/maestral/client.py", line 476, in list_folder
    **kwargs
TypeError: files_list_folder() got an unexpected keyword argument 'include_non_downloadable_files'

Document configuration sections & keys

It would be helpful if the configuration options were documented. E.g., I don't understand the difference between main.path and main.default_dir_name.

Also, seems like some of it isn't even configuration, but just stored state?

[BUG] Maestral hangs when syncing original Dropbox folder

Describe the bug
I installed maestral-dropbox on two machines. One had no files from dropbox, and the other already have an updated library. The one without downloaded all files with no errors. The other fails and the icon keeps looking like its updating - this error is printed:

[chansen@Magnus ~]$ maestral-gui
 > MaestralApiClient is ready.
2019-08-14 19:36:40 maestral.monitor INFO: Up to date
2019-08-14 19:36:40 maestral.monitor ERROR: Maestral index has become corrupted. Please rebuild.
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/maestral/monitor.py", line 397, in _load_rev_dict_from_file
    assert isinstance(rev_dict_cache, dict)
AssertionError
2019-08-14 19:36:42 maestral.monitor INFO: Indexing...
2019-08-14 19:36:44 maestral.client INFO: Indexing 500...
2019-08-14 19:36:46 maestral.client INFO: Indexing 1512...
2019-08-14 19:36:48 maestral.client INFO: Indexing 2012...
2019-08-14 19:36:49 maestral.client INFO: Indexing 2512...
2019-08-14 19:36:50 maestral.monitor INFO: Syncing...
Exception in thread MaestralFolderDownloader:
Traceback (most recent call last):
  File "/usr/lib/python3.7/threading.py", line 926, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.7/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib/python3.7/site-packages/maestral/main.py", line 77, in folder_download_worker
    monitor.sync.get_remote_dropbox(dbx_path)
  File "/usr/lib/python3.7/site-packages/maestral/monitor.py", line 188, in wrapper
    res = func(self, *args, **kwargs)
  File "/usr/lib/python3.7/site-packages/maestral/monitor.py", line 909, in get_remote_dropbox
    success.append(self.apply_remote_changes(root_result, save_cursor=False))
  File "/usr/lib/python3.7/site-packages/maestral/monitor.py", line 974, in apply_remote_changes
    success = self._create_local_entry(folder)
  File "/usr/lib/python3.7/site-packages/maestral/monitor.py", line 188, in wrapper
    res = func(self, *args, **kwargs)
  File "/usr/lib/python3.7/site-packages/maestral/monitor.py", line 1228, in _create_local_entry
    self.set_local_rev(entry.path_display, "folder")
  File "/usr/lib/python3.7/site-packages/maestral/monitor.py", line 478, in set_local_rev
    if rev == self._rev_dict_cache.get(dbx_path, None):
AttributeError: 'int' object has no attribute 'get'

To Reproduce

  • Install as specified in the readme. Start maestral-gui.

Expected behaviour
Mastral-gui uploads latest files goes into sleep.

System (please complete the following information):

  • OS: Newest arch linux 5.2.8-arch1-1-ARCH
  • i3-gaps
  • Qt: 5.13.0

Additional context
Add any other context about the problem here.

[BUG] Maestral crashes when trying to migrate config files

Describe the bug
giulio@giulio-HP-ProBook-430-G3:~/Desktop/maestral-dropbox-master$ maestral start Traceback (most recent call last): File "/usr/local/bin/maestral", line 11, in <module> load_entry_point('maestral==0.4.1', 'console_scripts', 'maestral')() File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 764, in __call__ return self.main(*args, **kwargs) File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 717, in main rv = self.invoke(ctx) File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 1137, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 956, in invoke return ctx.invoke(self.callback, **ctx.params) File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 555, in invoke return callback(*args, **kwargs) File "/usr/local/lib/python3.6/dist-packages/maestral-0.4.1-py3.6.egg/maestral/cli.py", line 205, in start check_for_updates() File "/usr/local/lib/python3.6/dist-packages/maestral-0.4.1-py3.6.egg/maestral/cli.py", line 75, in check_for_updates from maestral.config.main import CONF File "/usr/local/lib/python3.6/dist-packages/maestral-0.4.1-py3.6.egg/maestral/config/main.py", line 81, in <module> migrate_config_files() File "/usr/local/lib/python3.6/dist-packages/maestral-0.4.1-py3.6.egg/maestral/config/base.py", line 134, in migrate_config_files shutil.copytree(old_path, new_path) File "/usr/lib/python3.6/shutil.py", line 321, in copytree os.makedirs(dst) File "/usr/lib/python3.6/os.py", line 220, in makedirs mkdir(name, mode) FileExistsError: [Errno 17] File exists: '/home/giulio/.config/maestral' giulio@giulio-HP-ProBook-430-G3:~/Desktop/maestral-dropbox-master$

To Reproduce
Install Maestral, set it up, uninstall it, reinstall and try to log in.

Expected behaviour
Maestral is supposed to allow me to run a configuration.

System (please complete the following information):

  • Maestral version:
  • OS: Linux Mint 19.2
  • Desktop environment: Cinnamon 4.2.4
  • Qt version: 5

[BUG] Doesn't like certain files but doesn't tell which ones

Describe the bug
There are some files in dropbox, that maestral (or maybe dropbox) doesn't like, but doesn't tell me which so I can't really do anything about it:

dropbox.exceptions.ApiError: ApiError('30f1d5eeaac843c1ff555c04e08561b8', UploadError('path', UploadWriteFailed(reason=WriteError('disallowed_name', None), upload_session_id='AAAAAAAAM9FqZ1pyxzgvlA')))

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/nix/store/jjccwr48ahjxvzg7v6gigacwhsj8k2m4-maestral-gui-0.2.6/lib/python3.7/site-packages/maestral/monitor.py", line 188, in wrapper
    res = func(self, *args, **kwargs)
  File "/nix/store/jjccwr48ahjxvzg7v6gigacwhsj8k2m4-maestral-gui-0.2.6/lib/python3.7/site-packages/maestral/monitor.py", line 710, in _apply_event
    self._on_created(evnt)
  File "/nix/store/jjccwr48ahjxvzg7v6gigacwhsj8k2m4-maestral-gui-0.2.6/lib/python3.7/site-packages/maestral/monitor.py", line 812, in _on_created
    md = self.client.upload(path, dbx_path, autorename=True, mode=mode)
  File "/nix/store/jjccwr48ahjxvzg7v6gigacwhsj8k2m4-maestral-gui-0.2.6/lib/python3.7/site-packages/maestral/client.py", line 282, in upload
    raise to_maestral_error(exc, dbx_path) from exc
maestral.errors.PathError: Could not upload file: Dropbox will not save the file or folder because of its name.
2019-08-13 21:50:09 maestral.monitor ERROR: Sync error
Traceback (most recent call last):
  File "/nix/store/jjccwr48ahjxvzg7v6gigacwhsj8k2m4-maestral-gui-0.2.6/lib/python3.7/site-packages/maestral/client.py", line 257, in upload
    f.read(), dbx_path, client_modified=mtime_dt, **kwargs)
  File "/nix/store/5ajzqlpk5l37lc4x2q4sb5hkszvf9kir-python3.7-dropbox-9.4.0/lib/python3.7/site-packages/dropbox/base.py", line 2458, in files_upload
    f,
  File "/nix/store/5ajzqlpk5l37lc4x2q4sb5hkszvf9kir-python3.7-dropbox-9.4.0/lib/python3.7/site-packages/dropbox/dropbox.py", line 296, in request
    user_message_locale)
dropbox.exceptions.ApiError: ApiError('0c98289b3e80e3259fe670566c2d7f98', UploadError('path', UploadWriteFailed(reason=WriteError('disallowed_name', None), upload_session_id='AAAAAAAAM9IdJt1oBQwYjg')))

To Reproduce

Happens consistently but I obviously don't know which files are the case.

Expected behaviour
maestral to tell me which files were rejected.

System (please complete the following information):

  • OS: NixOS unstable
  • Desktop environment: KDE 5.15.5
  • Qt version: 5.12.0

Feature Request - support for software watchdog

When running under systemd, if you continue sending READY=1 at an interval, systemd can enable watchdog mode, where it will automatically restart the service in case the heartbeat doesn't come.

The standard is to send it at an interval of $WATCHDOG_USEC / 2. The variable is set by systemd.

Store user authentication token in system keyring

Currently, the user's authentication token is stored in the Maestral settings folder as a text file. This is potentially insecure if a third party gains unauthorized access to the users hard drive.

Store the token in the system keyring / keychain instead. This will be decrypted only when the user is logged in.

[BUG] Application version 0.4.2 will not launch in Catalina

Describe the bug
Unable to launch the unzipped Maestral.app.

To Reproduce
Unzip https://github.com/SamSchott/maestral-dropbox/releases/download/v0.4.2/Maestral.app.zip and attempt to launch it.

Expected behaviour
The application would launch.

System (please complete the following information):

  • Maestral version: 0.4.2
  • OS: MacOS Catalina 10.15

Additional context
MacOS Console app displays the following messages:
Finder - LAUNCHING:0x0-0x4f04f Maestral foreground=0 bringForward=0 seed=114 userActivityCount=0
LoginWindow - -[ApplicationManager checkInAppContext:eventData:] | ApplicationManager: Checked in app : Maestral
kernel - Library Validation failed: Rejecting '/Applications/Maestral.app/Contents/MacOS/Python' (Team ID: none, platform: no) for process 'main(854)' (Team ID: none, platform: no), reason: mapped file has no Team ID and is not a platform binary (signed with custom identity or adhoc?)
LoginWindow - -[PersistentAppsSupport applicationQuit:] | for app:Maestral, _appTrackingState = 2

[BUG] Use Gnome-keyring instead of Kwallet

Describe the bug
asks to create kdwallet on gnome system

To Reproduce
run maestral gui first time

Expected behaviour
will use gnome-keyring on gnome desktop and kwallet on kde system

System (please complete the following information):

  • Maestral version: 0.4.0
  • OS: Ubuntu 18.04
  • Desktop environment: [e.g. Gnome 3.32]
  • Qt version:

Additional context
Add any other context about the problem here.

[BUG] symlink dead file under sync path breaks syncing

Describe the bug
If a symlink to a dead file location is put under sync, maestral will give a FileNotFoundError, not sync the file (expected), but will no longer update changes to valid files (unexpected).
This is a problem because emacs uses lock file that likely link nowhere, thus using emacs on a file under sync halts syncing of that file util maestral is restarted.

To Reproduce
0. [inside sync path]

  1. ln -s foo bar (where neither file already exists)
  2. Observe the error:
Traceback (most recent call last):
  File "/usr/lib/python3.7/threading.py", line 926, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.7/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/home/michael/.local/lib/python3.7/site-packages/maestral/monitor.py", line 1442, in upload_worker
    sync.apply_local_changes(events, local_cursor)
  File "/home/michael/.local/lib/python3.7/site-packages/maestral/monitor.py", line 659, in apply_local_changes
    success += [f.result()]
  File "/usr/lib/python3.7/concurrent/futures/_base.py", line 428, in result
    return self.__get_result()
  File "/usr/lib/python3.7/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/home/michael/.local/lib/python3.7/site-packages/maestral/monitor.py", line 189, in wrapper
    res = func(self, *args, **kwargs)
  File "/home/michael/.local/lib/python3.7/site-packages/maestral/monitor.py", line 738, in _apply_event
    self._on_created(event)
  File "/home/michael/.local/lib/python3.7/site-packages/maestral/monitor.py", line 816, in _on_created
    size1 = osp.getsize(path)
  File "/usr/lib/python3.7/genericpath.py", line 50, in getsize
    return os.stat(filename).st_size

Expected behaviour
While bar should not be synced, I would expect that file to be ignored and other changes to continue to propagate.

System (please complete the following information):

  • Maestral version: 0.3.2
  • OS: Debian bullseye
  • Desktop environment: awesomewm
  • Qt version: pyqt5: 5.13
  • Python version: 3.7.4

Crash upon trying to create a new folder

I'm on Linux, and have the following error on the stable release (0.2.3) when i try to set the dropbox folder using gui.


Gkr-Message: 17:08:09.928: secret service operation failed: The name org.freedesktop.secrets was not provided by any .service files
 > Loading access token...
 > MaestralClient is ready.
Up to date
Maestral index could not be found. Rebuild if necessary.
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/maestral/gui/first_sync_dialog.py", line 200, in on_dropbox_path
    self.populate_folders_list()
  File "/usr/lib/python3.7/site-packages/maestral/gui/first_sync_dialog.py", line 241, in populate_folders_list
    root_folders = self.mdbx.client.list_folder("", recursive=False)
  File "/usr/lib/python3.7/site-packages/maestral/client.py", line 476, in list_folder
    **kwargs
TypeError: files_list_folder() got an unexpected keyword argument 'include_non_downloadable_files'
/usr/bin/maestral-gui: line 6: 16289 Aborted

I assume has to do with python-dropbox, which is 9.2.0

Command not found

After the installation:

...
Installing collected packages: pathtools, PyYAML, argh, watchdog, dropbox, u-msgpack-python, maestral
Successfully installed PyYAML-5.1.1 argh-0.26.2 dropbox-9.4.0 maestral-0.2.3 pathtools-0.1.2 u-msgpack-python-2.5.1 watchdog-0.9.0
pi@raspiserver4:~ $ meastral
-bash: meastral: command not found

Instructions are not clear if the app name is meastral or maestral...

Support for OpenBSD

Hi! Thanks for a great project. I really like it so far.

As the title says. Is there any chance of support for OpenBSD?

Move local version control to extended attributes?

Currently all version numbers of files are stored in a JSON format in the file '.dropbox' located in the user's Dropbox folder. Pickle is highly efficient at saving and loading this file, but his approach may not scale well for Dropbox folders with > 20,000 items.

Consider storing version numbers as extended attributes of files / folders instead, such as with xattr. This mimics the original Dropbox client and limits the number of supported file systems.

No such file

sync fails on a mackup file....

Downloading 3925/3935...
Traceback (most recent call last):
  File "/home/billy/.local/bin/maestral", line 11, in <module>
    sys.exit(main())
  File "/home/billy/.local/lib/python3.6/site-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/home/billy/.local/lib/python3.6/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/home/billy/.local/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/billy/.local/lib/python3.6/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/billy/.local/lib/python3.6/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/billy/.local/lib/python3.6/site-packages/maestral/console_script.py", line 22, in sync
    m = Maestral()
  File "/home/billy/.local/lib/python3.6/site-packages/maestral/main.py", line 140, in __init__
    success = self.sync.get_remote_dropbox()
  File "/home/billy/.local/lib/python3.6/site-packages/maestral/monitor.py", line 201, in wrapper
    res = func(self, *args, **kwargs)
  File "/home/billy/.local/lib/python3.6/site-packages/maestral/monitor.py", line 893, in get_remote_dropbox
    success = self.apply_remote_changes(result, save_cursor)
  File "/home/billy/.local/lib/python3.6/site-packages/maestral/monitor.py", line 953, in apply_remote_changes
    success += [f.result()]
  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 425, in result
    return self.__get_result()
  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/usr/lib/python3.6/concurrent/futures/thread.py", line 56, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/home/billy/.local/lib/python3.6/site-packages/maestral/monitor.py", line 201, in wrapper
    res = func(self, *args, **kwargs)
  File "/home/billy/.local/lib/python3.6/site-packages/maestral/monitor.py", line 1169, in _create_local_entry
    md = self.client.download(entry.path_display, local_path)
  File "/home/billy/.local/lib/python3.6/site-packages/maestral/client.py", line 317, in download
    os.mkdir(dst_path_directory)
FileNotFoundError: [Errno 2] No such file or directory: '/home/billy/Dropbox/mackup/.config/libreoffice/4/user/extensions/bundled/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend'

crash after original Dropbox was used

right after original dropbox was closed and maestral-gui was opened in the terminal

 > Loading access token...
 [OK]
 > MaestralClient is ready.
Indexing...
Traceback (most recent call last):
  File "/home/idnovic/.local/bin/maestral", line 11, in <module>
    load_entry_point('maestral==0.1.2.dev0', 'console_scripts', 'maestral')()
  File "/home/idnovic/.local/lib/python3.7/site-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/home/idnovic/.local/lib/python3.7/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/home/idnovic/.local/lib/python3.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/idnovic/.local/lib/python3.7/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/idnovic/.local/lib/python3.7/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/console_script.py", line 31, in gui
    run()
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/gui/main.py", line 208, in run
    maestral = Maestral()
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/main.py", line 143, in __init__
    self.start_sync()
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/main.py", line 194, in start_sync
    self.monitor.start()
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/monitor.py", line 555, in start
    self.upload_local_changes_after_inactive()
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/monitor.py", line 601, in upload_local_changes_after_inactive
    events = self._get_local_changes()
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/monitor.py", line 634, in _get_local_changes
    if self.client.get_local_rev(dbx_path) is not None:
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/client.py", line 390, in get_local_rev
    rev = rev_dict[dbx_path]
TypeError: 'int' object is not subscriptable

Feature request: yum package

The GUI hangs, so I have to run it on command line. Details below.

Request a package that can be installed with a package manager like so:
sudo yum install maestral-dropbox

I had to install it in a slightly complicated way (CentOS 7):
Install Python
sudo yum install -y libgnome centos-release-scl rh-python36
#wrong python version by default
python --version
#fix new python version
scl enable rh-python36 bash
python --version

Install Maestral
sudo yum install -y python36-setuptools
sudo easy_install-3.6 pip
python3 -m pip install --upgrade maestral --user
python3 -m pip install --upgrade PyQt5 --user
Run Maestral GUI which often hangs
~/.local/bin/maestral gui
#may fail
#set up Dropbox account then quit
This command-line way works
~/.local/bin/maestral configure
~/.local/bin/maestral sync

Current build crashes with GUI

I am running arch linux. Currently, maestral from the stable release works fine. However, if I build from the master branch, on launching maestral-gui I have the following error;

% maestral gui
Gkr-Message: 08:39:03.802: secret service operation failed: The name org.freedesktop.secrets was not provided by any .service files
 > Loading access token...
 > MaestralClient is ready.
Up to date
Indexing...
Up to date
Up to date
Up to date
QImage::pixel: coordinate (0,0) out of range
qt.qpa.xcb: QXcbConnection: XCB error: 2 (BadValue), sequence: 743, resource id: 0, major code: 1 (CreateWindow), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 744, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 745, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 746, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 748, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 749, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 750, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 755, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 756, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 757, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 760, resource id: 121634822, major code: 2 (ChangeWindowAttributes), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 761, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 764, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 765, resource id: 121634822, major code: 20 (GetProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 766, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 769, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 770, resource id: 121634822, major code: 129 (Unknown), minor code: 2
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 771, resource id: 121634822, major code: 19 (DeleteProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 773, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 775, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 776, resource id: 121634822, major code: 19 (DeleteProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 778, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 779, resource id: 121634822, major code: 12 (ConfigureWindow), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 795, resource id: 121634822, major code: 2 (ChangeWindowAttributes), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 796, resource id: 121634822, major code: 2 (ChangeWindowAttributes), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 797, resource id: 121634822, major code: 18 (ChangeProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 798, resource id: 121634822, major code: 19 (DeleteProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 799, resource id: 121634822, major code: 20 (GetProperty), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 800, resource id: 121634822, major code: 19 (DeleteProperty), minor code: 0
^CSyncing...
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/maestral/gui/main.py", line 309, in on_info_signal
    def on_info_signal(self, status):
KeyboardInterrupt
/usr/bin/maestral-gui: line 6:  2983 Aborted                 (core dumped) maestral gui

I used ctrl-c to quit. The gui does not appear. I have all the libraries up to date.

Is a directory .dropbox

Currently I can not start maestral-gui

[idnovic@id-lappy ~]1$ maestral-gui 
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
QSocketNotifier: Can only be used with threads started with QThread
 > Loading access token...
 [OK]
 > Loading access token...
 [OK]
 > MaestralClient is ready.
Traceback (most recent call last):
  File "/home/idnovic/.local/bin/maestral", line 11, in <module>
    load_entry_point('maestral==0.1.3.dev1', 'console_scripts', 'maestral')()
  File "/home/idnovic/.local/lib/python3.7/site-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/home/idnovic/.local/lib/python3.7/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/home/idnovic/.local/lib/python3.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/idnovic/.local/lib/python3.7/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/idnovic/.local/lib/python3.7/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/console_script.py", line 31, in gui
    run()
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/gui/main.py", line 197, in run
    maestral = FirstSyncDialog.configureMaestral()  # returns None if aborted
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/gui/first_sync_dialog.py", line 281, in configureMaestral
    fsd = FirstSyncDialog(parent)
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/gui/first_sync_dialog.py", line 134, in __init__
    self.mdbx = Maestral(run=False)
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/main.py", line 128, in __init__
    self.client = MaestralClient()
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/client.py", line 284, in __init__
    with open(self.rev_file, "rb") as f:
IsADirectoryError: [Errno 21] Ist ein Verzeichnis: '.dropbox'

Question regarding right update method

I updated from 200e47b to 7b12245 by using
pip3 install --user git+https://github.com/SamSchott/maestral (wrong, right command below, this does not replace the installed files)

can you tell me where this file comes from? The file is from the older install. I moved the binary of maestral-gui from /bin to /.bin
but I can not find the following file in the newer version. Do I need to update it?

#!/usr/bin/python3
# EASY-INSTALL-ENTRY-SCRIPT: 'maestral==0.1.1','console_scripts','maestral'
__requires__ = 'maestral==0.1.1'
import re
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(
        load_entry_point('maestral==0.1.1', 'console_scripts', 'maestral')()
    )

do not notify about remote files of not watched/synced folders

So I deactivated the notifications currently because I got notified for remote files on my dropbox in folders that I do not sync locally.

You can imagine the notification spam while I was using an app on my iPad that saves its settings and files on dropbox.

Do not notify on unwanted files and folders.

[BUG] Application icon is missing from tray

Describe the bug
When running the GUI (which works), there is no icon for the Maestral entry in tray.

To Reproduce
Launch maestral gui.

Expected behaviour
The standard logo to show.

System (please complete the following information):

  • Maestral version: 0.3.1
  • OS: NixOS unstable
  • Desktop environment: KDE Plasma 5.15.5
  • Qt version: 5.12

Screenshot_20190816_102918

[BUG] Fails ungracefully if key and secret are not set

Describe the bug
When using maestral compiled from source (or packaged for a distro that doesn't include the standard keys), maestral will fail with an exception if DROPBOX_API_KEY and _SECRET are not set.

Traceback (most recent call last):
  File "/nix/store/jlbx4m9zv15b9hbf63s3wx2407l9h906-maestral-gui-0.2.6/lib/python3.7/site-packages/maestral/gui/setup_dialog.py", line 137, in on_link
    self.auth_url = self.auth_session.get_auth_url()
  File "/nix/store/jlbx4m9zv15b9hbf63s3wx2407l9h906-maestral-gui-0.2.6/lib/python3.7/site-packages/maestral/oauth.py", line 64, in get_auth_url
    APP_KEY = os.environ["DROPBOX_API_KEY"]
  File "/nix/store/w7gsq8v86hni4ynaqgwwlnlny115ylng-python3-3.7.4/lib/python3.7/os.py", line 678, in __getitem__
    raise KeyError(key) from None
KeyError: 'DROPBOX_API_KEY'
[1]    6765 abort      maestral-gui

To Reproduce

  1. Compile from source.
  2. Try to launch maestral without setting the required environment variables

Expected behaviour
A graceful exit and message about the required variables not being set.

System (please complete the following information):

  • OS: NixOS
  • Desktop environment: KDE
  • Qt version: 5.12

cannot import name 'uic' from 'PyQt5'

[idnovic@id-lappy ~]0$ maestral-gui 
Warning: PyQt5 is required to run the Maestral GUI. Run `pip install pyqt5` to install it.
Traceback (most recent call last):
  File "/home/idnovic/.local/bin/maestral", line 11, in <module>
    load_entry_point('maestral==0.2b0', 'console_scripts', 'maestral')()
  File "/home/idnovic/.local/lib/python3.7/site-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/home/idnovic/.local/lib/python3.7/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/home/idnovic/.local/lib/python3.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/idnovic/.local/lib/python3.7/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/idnovic/.local/lib/python3.7/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/console_script.py", line 30, in gui
    from maestral.gui.main import run
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/gui/main.py", line 26, in <module>
    from maestral.gui.settings_window import SettingsWindow
  File "/home/idnovic/.local/lib/python3.7/site-packages/maestral/gui/settings_window.py", line 13, in <module>
    from PyQt5 import QtGui, QtCore, QtWidgets, uic
ImportError: cannot import name 'uic' from 'PyQt5' (/usr/lib64/python3.7/site-packages/PyQt5/__init__.py)
[idnovic@id-lappy ~]1$ pip3 install --user pyqt5
Requirement already satisfied: pyqt5 in /usr/lib64/python3.7/site-packages (5.12.2)

It seems I have the dependency installed but still have an import problem.
Do you have suggestions?

[BUG] Application cannot start

Describe the bug
2019-08-14 15:36:46 maestral.main ERROR: Authentication error: Maestral's access to your Dropbox has been revoked. Please relink to continue syncing.
Traceback (most recent call last):
File "maestral/client.py", line 118, in get_account_info
File "dropbox/base.py", line 4508, in users_get_current_account
File "dropbox/dropbox.py", line 274, in request
File "dropbox/dropbox.py", line 365, in request_json_string_with_retry
File "dropbox/dropbox.py", line 463, in request_json_string
dropbox.exceptions.AuthError: AuthError('0fc15289f761ee76a47f75086dbf2a59', AuthError('invalid_access_token', None))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "maestral/main.py", line 120, in wrapper
File "maestral/main.py", line 205, in get_account_info
File "maestral/client.py", line 120, in get_account_info
maestral.errors.DropboxAuthError: Authentication error: Maestral's access to your Dropbox has been revoked. Please relink to continue syncing.
2019-08-14 15:40:51 maestral.main ERROR: Authentication error: Maestral's access to your Dropbox has been revoked. Please relink to continue syncing.
Traceback (most recent call last):
File "maestral/client.py", line 118, in get_account_info
File "dropbox/base.py", line 4508, in users_get_current_account
File "dropbox/dropbox.py", line 274, in request
File "dropbox/dropbox.py", line 365, in request_json_string_with_retry
File "dropbox/dropbox.py", line 463, in request_json_string
dropbox.exceptions.AuthError: AuthError('ae966154fc18f3f0da1a1b9588ca5e9a', AuthError('invalid_access_token', None))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "maestral/main.py", line 120, in wrapper
File "maestral/main.py", line 205, in get_account_info
File "maestral/client.py", line 120, in get_account_info
maestral.errors.DropboxAuthError: Authentication error: Maestral's access to your Dropbox has been revoked. Please relink to continue syncing.

To Reproduce
Nothing yet.

Expected behaviour
After revoking the app auth, it should ask to re-add it again.

System (please complete the following information):
macOS Mojave

file not synced

So I created a luks encrypted file. maestral should see it as binary without file type extension.
I moved the file inside my dropbox folder but maestral does not sync it.

the file was 125mb big and I retested with a 50mb version.

Can I somehow see how this file looks to maestral?
Original dropbox was able to sync it.

You can create a similar file:

# dd if=/dev/zero bs=1M count=100 of=~/test.img
# cryptsetup --cipher aes-xts-plain64 --key-size 512 luksFormat ~/test.img
# cryptsetup luksOpen ~/test.img test
# mkdosfs /dev/mapper/test
# mount /dev/mapper/test /mnt
...
# umount /mnt
# cryptsetup luksClose test 

Feature Request - write config to $XDG_CONFIG_HOME

On linux, it's generally frowned upon to write directly to a directory under $HOME. Instead write the config to $XDG_CONFIG_HOME which defaults to $HOME/.config.

The directory should also change accordingly, so that:

$HOME/.maestral becomes $XDG_CONFIG_HOME/maestral

reduce package size in macOS

The macOS package created by pyinstaller (in folder mode) has a size of ~ 55 MB, most of which are Qt modules that Maestral does not actually use. Find a way to detect and excluded unneeded modules.

In --onefile mode, the macOS package has a much smaller size of 27 MB. This is however due to compression only.

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.