Merge branch 'master' into fix-issue-966

This commit is contained in:
abraunegg 2020-10-04 12:00:27 +11:00 committed by GitHub
commit 64f894ee54
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 70 additions and 36 deletions

View file

@ -10,15 +10,17 @@ about: Create a report to help us improve
A clear and concise description of what the bug is.
**Application and Operating System Details:**
* OS: Output of `uname -a` & provide your OS & version (CentOS 6.x, Ubuntu 18.x etc)
* Provide your OS & version (CentOS 6.x, Ubuntu 18.x etc) and the output of: `uname -a`
* Are you using a headless system (no gui) or with a gui installed?
* OneDrive Account Type
* Did you build from source or install from a package?
* If you installed from source, what is your DMD or LDC compiler version: `dmd --version` or `ldmd2 --version`
* Application configuration: Output of `onedrive --display-config`
* Curl Version: Output of `curl --version`
* OneDrive Application Configuration: Output of `onedrive --display-config`
* Provide the version of curl you are using: Output of `curl --version`
* Is your configured 'sync_dir' a local directory or a network mount point?
* Provide all the mountpoints in your system: Output of: `mount`
**Note:** Please generate a full debug log as per [https://github.com/abraunegg/onedrive/wiki/Generate-debug-log-for-support](https://github.com/abraunegg/onedrive/wiki/Generate-debug-log-for-support) and email to support@mynas.com.au
**Note:** Please generate a full debug log whilst reproducing the issue as per [https://github.com/abraunegg/onedrive/wiki/Generate-debug-log-for-support](https://github.com/abraunegg/onedrive/wiki/Generate-debug-log-for-support) and email to support@mynas.com.au
**To Reproduce**
Steps to reproduce the behavior if not causing an application crash:
@ -50,5 +52,7 @@ Add any other context about the problem here.
### Bug Report Checklist ###
* [] Detailed description
* [] Application and Operating System Details provided in full
* [] Reproduction steps (if applicable)
* [] Verbose Log Output
* [] Verbose Log Output from your error
* [] Debug Log generated and submitted

View file

@ -2,6 +2,26 @@
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## 2.4.6 - 2020-10-04
### Fixed
* Fix flagging of remaining free space when value is being restricted
* Fix --single-directory path handling when path does not exist locally
* Fix checking for 'Icon' path as no longer listed by Microsoft as an invalid file or folder name
* Fix removing child items on OneDrive when parent item responds with access denied
* Fix to handle deletion events for files when inotify events are missing
* Fix uninitialised value error as reported by valgrind
* Fix to handle deletion events for directories when inotify events are missing
### Added
* Implement Feature: Create shareable link
* Implement Feature: Support wildcard within sync_list entries
* Implement Feature: Support negative patterns in sync_list for fine grained exclusions
* Implement Feature: Multiple skip_dir & skip_file configuration rules
* Add GUI notification to advise users when the client needs to be reauthenticated
### Updated
* Updated documentation (readme.md, install.md, usage.md, bug_report.md)
## 2.4.5 - 2020-08-13
### Fixed
* Fixed fish auto completions installation destination

View file

@ -5,7 +5,7 @@
[![Docker Build](https://img.shields.io/docker/cloud/automated/driveone/onedrive)](https://hub.docker.com/r/driveone/onedrive)
[![Docker Pulls](https://img.shields.io/docker/pulls/driveone/onedrive)](https://hub.docker.com/r/driveone/onedrive)
A free Microsoft OneDrive Client which supports OneDrive Personal, OneDrive for Business, OneDrive for Office365 and Sharepoint.
A free Microsoft OneDrive Client which supports OneDrive Personal, OneDrive for Business, OneDrive for Office365 and SharePoint.
This powerful and highly configurable client can run on all major Linux distributions, FreeBSD, or as a Docker container. It supports one-way and two-way sync capabilities and securely connects to Microsoft OneDrive services.
@ -26,7 +26,7 @@ This client is a 'fork' of the [skilion](https://github.com/skilion/onedrive) cl
## What's missing
* While local changes are uploaded right away, remote changes are delayed until next automated sync cycle when using --monitor
* Ability to encrypt/decrpyt files on-the-fly when uploading/downloading files from OneDrive
* Ability to encrypt/decrypt files on-the-fly when uploading/downloading files from OneDrive
* Support for Windows 'On-Demand' functionality so file is only downloaded when accessed locally
* A GUI for configuration management

20
configure vendored
View file

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for onedrive v2.4.6-dev.
# Generated by GNU Autoconf 2.69 for onedrive v2.4.6.
#
# Report bugs to <https://github.com/abraunegg/onedrive>.
#
@ -579,8 +579,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='onedrive'
PACKAGE_TARNAME='onedrive'
PACKAGE_VERSION='v2.4.6-dev'
PACKAGE_STRING='onedrive v2.4.6-dev'
PACKAGE_VERSION='v2.4.6'
PACKAGE_STRING='onedrive v2.4.6'
PACKAGE_BUGREPORT='https://github.com/abraunegg/onedrive'
PACKAGE_URL=''
@ -1219,7 +1219,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures onedrive v2.4.6-dev to adapt to many kinds of systems.
\`configure' configures onedrive v2.4.6 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1280,7 +1280,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of onedrive v2.4.6-dev:";;
short | recursive ) echo "Configuration of onedrive v2.4.6:";;
esac
cat <<\_ACEOF
@ -1393,7 +1393,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
onedrive configure v2.4.6-dev
onedrive configure v2.4.6
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@ -1410,7 +1410,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by onedrive $as_me v2.4.6-dev, which was
It was created by onedrive $as_me v2.4.6, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@ -2162,7 +2162,7 @@ fi
PACKAGE_DATE="August 2020"
PACKAGE_DATE="October 2020"
@ -3159,7 +3159,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by onedrive $as_me v2.4.6-dev, which was
This file was extended by onedrive $as_me v2.4.6, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -3212,7 +3212,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
onedrive config.status v2.4.6-dev
onedrive config.status v2.4.6
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View file

@ -9,7 +9,7 @@ dnl - commit the changed files (configure.ac, configure)
dnl - tag the release
AC_PREREQ([2.69])
AC_INIT([onedrive],[v2.4.6-dev], [https://github.com/abraunegg/onedrive], [onedrive])
AC_INIT([onedrive],[v2.4.6], [https://github.com/abraunegg/onedrive], [onedrive])
AC_CONFIG_SRCDIR([src/main.d])

View file

@ -6,7 +6,7 @@
%endif
Name: onedrive
Version: 2.4.5
Version: 2.4.6
Release: 1%{?dist}
Summary: Microsoft OneDrive Client
Group: System Environment/Network

View file

@ -324,6 +324,8 @@ The issue here is around how the client stores the sync_dir path in the database
**Note:** After changing `sync_dir`, you must perform a full re-synchronization by adding `--resync` to your existing command line - for example: `onedrive --synchronize --resync`
**Important Note:** If your `sync_dir` is pointing to a network mount point (a network share via NFS, Windows Network Share, Samba Network Share) these types of network mount points do not support 'inotify', thus tracking real-time changes via inotify of local files is not possible. Local filesystem changes will be replicated between the local filesystem and OneDrive based on the `monitor_interval` value. This is not something (inotify support for NFS, Samba) that this client can fix.
#### skip_dir
Example:
```text

View file

@ -816,6 +816,9 @@ final class OneDriveApi
}
} catch (OneDriveException e) {
if (e.httpStatusCode == 400 || e.httpStatusCode == 401) {
// flag error and notify
log.errorAndNotify("\nERROR: Refresh token invalid, use --logout to authorize the client again.\n");
// set error message
e.msg ~= "\nRefresh token invalid, use --logout to authorize the client again";
}
}
@ -1049,7 +1052,8 @@ final class OneDriveApi
} else {
http.onSend = buf => 0;
}
return perform();
auto response = perform();
return response;
}
private JSONValue perform()

View file

@ -305,7 +305,7 @@ final class SyncEngine
if (e.httpStatusCode == 401) {
// HTTP request returned status code 401 (Unauthorized)
displayOneDriveErrorMessage(e.msg);
log.error("\nERROR: Check your configuration as your refresh_token may be empty or invalid. You may need to issue a --logout and re-authorise this client.\n");
log.errorAndNotify("\nERROR: Check your configuration as your refresh_token may be empty or invalid. You may need to issue a --logout and re-authorise this client.\n");
// Must exit here
exit(-1);
}
@ -344,7 +344,7 @@ final class SyncEngine
if (e.httpStatusCode == 401) {
// HTTP request returned status code 401 (Unauthorized)
displayOneDriveErrorMessage(e.msg);
log.error("\nERROR: Check your configuration as your refresh_token may be empty or invalid. You may need to issue a --logout and re-authorise this client.\n");
log.errorAndNotify("\nERROR: Check your configuration as your refresh_token may be empty or invalid. You may need to issue a --logout and re-authorise this client.\n");
// Must exit here
exit(-1);
}
@ -3004,15 +3004,17 @@ final class SyncEngine
if (!cfg.getValueBool("monitor")) {
// Not in --monitor mode
log.vlog("The directory has been deleted locally");
if (noRemoteDelete) {
// do not process remote directory delete
log.vlog("Skipping remote directory delete as --upload-only & --no-remote-delete configured");
} else {
uploadDeleteItem(item, path);
}
} else {
// Appropriate message as we are in --monitor mode
log.vlog("The directory appears to have been deleted locally .. but we are running in --monitor mode. This may have been 'moved' rather than 'deleted'");
log.vlog("The directory appears to have been deleted locally .. but we are running in --monitor mode. This may have been 'moved' on the local filesystem rather than being 'deleted'");
log.vdebug("Most likely cause - 'inotify' event was missing for whatever action was taken locally or action taken when application was stopped");
}
// A moved file will be uploaded as 'new', delete the old file and reference
if (noRemoteDelete) {
// do not process remote directory delete
log.vlog("Skipping remote directory delete as --upload-only & --no-remote-delete configured");
} else {
uploadDeleteItem(item, path);
}
} else {
// we are in a --dry-run situation, directory appears to have deleted locally - this directory may never have existed as we never downloaded it ..
@ -3430,15 +3432,17 @@ final class SyncEngine
// Not --dry-run situation
if (!cfg.getValueBool("monitor")) {
log.vlog("The file has been deleted locally");
if (noRemoteDelete) {
// do not process remote file delete
log.vlog("Skipping remote file delete as --upload-only & --no-remote-delete configured");
} else {
uploadDeleteItem(item, path);
}
} else {
// Appropriate message as we are in --monitor mode
log.vlog("The file appears to have been deleted locally .. but we are running in --monitor mode. This may have been 'moved' rather than 'deleted'");
log.vlog("The file appears to have been deleted locally .. but we are running in --monitor mode. This may have been 'moved' on the local filesystem rather than being 'deleted'");
log.vdebug("Most likely cause - 'inotify' event was missing for whatever action was taken locally or action taken when application was stopped");
}
// A moved file will be uploaded as 'new', delete the old file and reference
if (noRemoteDelete) {
// do not process remote file delete
log.vlog("Skipping remote file delete as --upload-only & --no-remote-delete configured");
} else {
uploadDeleteItem(item, path);
}
} else {
// We are in a --dry-run situation, file appears to have deleted locally - this file may never have existed as we never downloaded it ..