From 545fdcd692e30753df39969d710dda5b692e25ac Mon Sep 17 00:00:00 2001 From: abraunegg Date: Mon, 30 Nov 2020 16:39:36 +1100 Subject: [PATCH] Release files for 2.4.8 (#1167) * Release files for 2.4.8 --- CHANGELOG.md | 18 ++- Makefile.in | 2 +- configure | 18 +-- configure.ac | 2 +- ...ive-2.4.7.ebuild => onedrive-2.4.8.ebuild} | 0 contrib/spec/onedrive.spec.in | 2 +- docs/BusinessSharedFolders.md | 3 +- docs/Office365.md | 35 ++++- docs/USAGE.md | 38 +---- docs/advanced-usage.md | 139 ++++++++++++++++++ docs/images/SharedLibraries.jpg | Bin 0 -> 17382 bytes docs/images/business-files-on-demand.png | Bin 0 -> 15128 bytes docs/images/personal-files-on-demand.png | Bin 0 -> 17670 bytes onedrive.1.in | 18 ++- 14 files changed, 216 insertions(+), 59 deletions(-) rename contrib/gentoo/{onedrive-2.4.7.ebuild => onedrive-2.4.8.ebuild} (100%) create mode 100644 docs/advanced-usage.md create mode 100644 docs/images/SharedLibraries.jpg create mode 100644 docs/images/business-files-on-demand.png create mode 100644 docs/images/personal-files-on-demand.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 3390a058..6146e87b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,23 @@ # Changelog - 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.8 - 2020-11-30 +### Fixed +* Fix to use config set option for 'remove_source_files' and 'skip_dir_strict_match' rather than ignore if set +* Fix download failure and crash due to incorrect local filesystem permissions when using mounted external devices +* Fix to not change permissions on pre-existing local directories +* Fix logging output when authentication authorisation fails to not say authorisation was successful +* Fix to check application_id before setting redirect URL when using specific Azure endpoints +* Fix application crash in --monitor mode due to 'Failed to stat file' when setgid is used on a directory and data cannot be read + +### Added +* Added advanced-usage.md to document advaced client usage such as multi account configurations and Windows dual-boot + +### Updated +* Updated --verbose logging output for config options when set +* Updated documentation (man page, USAGE.md, Office365.md, BusinessSharedFolders.md) + ## 2.4.7 - 2020-11-09 ### Fixed * Fix debugging output for /delta changes available queries diff --git a/Makefile.in b/Makefile.in index e5a3eed5..38908544 100644 --- a/Makefile.in +++ b/Makefile.in @@ -55,7 +55,7 @@ endif system_unit_files = contrib/systemd/onedrive@.service user_unit_files = contrib/systemd/onedrive.service -DOCFILES = README.md config LICENSE CHANGELOG.md docs/Docker.md docs/INSTALL.md docs/Office365.md docs/USAGE.md docs/BusinessSharedFolders.md +DOCFILES = README.md config LICENSE CHANGELOG.md docs/Docker.md docs/INSTALL.md docs/Office365.md docs/USAGE.md docs/BusinessSharedFolders.md docs/advanced-usage.md ifneq ("$(wildcard /etc/redhat-release)","") RHEL = $(shell cat /etc/redhat-release | grep -E "(Red Hat Enterprise Linux Server|CentOS)" | wc -l) diff --git a/configure b/configure index 93e6afda..21e90db1 100755 --- a/configure +++ b/configure @@ -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.8-dev. +# Generated by GNU Autoconf 2.69 for onedrive v2.4.8. # # Report bugs to . # @@ -579,8 +579,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='onedrive' PACKAGE_TARNAME='onedrive' -PACKAGE_VERSION='v2.4.8-dev' -PACKAGE_STRING='onedrive v2.4.8-dev' +PACKAGE_VERSION='v2.4.8' +PACKAGE_STRING='onedrive v2.4.8' 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.8-dev to adapt to many kinds of systems. +\`configure' configures onedrive v2.4.8 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.8-dev:";; + short | recursive ) echo "Configuration of onedrive v2.4.8:";; 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.8-dev +onedrive configure v2.4.8 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.8-dev, which was +It was created by onedrive $as_me v2.4.8, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -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.8-dev, which was +This file was extended by onedrive $as_me v2.4.8, 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.8-dev +onedrive config.status v2.4.8 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 205766f0..e5025009 100644 --- a/configure.ac +++ b/configure.ac @@ -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.8-dev], [https://github.com/abraunegg/onedrive], [onedrive]) +AC_INIT([onedrive],[v2.4.8], [https://github.com/abraunegg/onedrive], [onedrive]) AC_CONFIG_SRCDIR([src/main.d]) diff --git a/contrib/gentoo/onedrive-2.4.7.ebuild b/contrib/gentoo/onedrive-2.4.8.ebuild similarity index 100% rename from contrib/gentoo/onedrive-2.4.7.ebuild rename to contrib/gentoo/onedrive-2.4.8.ebuild diff --git a/contrib/spec/onedrive.spec.in b/contrib/spec/onedrive.spec.in index d2f8ebd9..9a6c3e87 100644 --- a/contrib/spec/onedrive.spec.in +++ b/contrib/spec/onedrive.spec.in @@ -6,7 +6,7 @@ %endif Name: onedrive -Version: 2.4.7 +Version: 2.4.8 Release: 1%{?dist} Summary: Microsoft OneDrive Client Group: System Environment/Network diff --git a/docs/BusinessSharedFolders.md b/docs/BusinessSharedFolders.md index 8ce2d58e..daa079de 100644 --- a/docs/BusinessSharedFolders.md +++ b/docs/BusinessSharedFolders.md @@ -2,7 +2,8 @@ Syncing OneDrive Business Shared Folders requires additional configuration for your 'onedrive' client: 1. List available shared folders to determine which folder you wish to sync & to validate that you have access to that folder 2. Create a new file called 'business_shared_folders' in your config directory which contains a list of the shared folders you wish to sync -3. Perform a sync +3. Test the configuration using '--dry-run' +4. Sync the OneDrive Business Shared folders as required ## Listing available OneDrive Business Shared Folders List the available OneDrive Business Shared folders with the following command: diff --git a/docs/Office365.md b/docs/Office365.md index f61522f1..7b46e1fd 100644 --- a/docs/Office365.md +++ b/docs/Office365.md @@ -1,12 +1,24 @@ -# Show how to access a Sharepoint group drive in Office 365 business or education -## Obtaining the Sharepoint Site Details +# How to configure OneDrive SharePoint Shared Library sync +Syncing a OneDrive SharePoint library requires additional configuration for your 'onedrive' client: 1. Login to OneDrive and under 'Shared Libraries' obtain the shared library name +2. Query that shared library name using the client to obtain the required configuration details +3. Configure the client's config file with the required 'drive_id' +4. Test the configuration using '--dry-run' +5. Sync the SharePoint Library as required + +## Listing available OneDrive SharePoint Libraries +1. Login to the OneDrive web interface and determine which shared library you wish to configure the client for: +![shared_libraries](./images/SharedLibraries.jpg) + +## Query that shared library name using the client to obtain the required configuration details 2. Run the following command using the 'onedrive' client ```text onedrive --get-O365-drive-id '' ``` 3. This will return the following: ```text +Configuration file successfully loaded +Configuring Global Azure AD Endpoints Initializing the Synchronization Engine ... Office 365 Library Name Query: SiteName: @@ -14,10 +26,21 @@ drive_id: b!6H_y8B...xU5 URL: ``` -## Configuring the onedrive client -Once you have obtained the 'drive_id' above, add to your 'onedrive' configuration file (`~/.config/onedrive/config`) the following: +## Configure the client's config file with the required 'drive_id' +4. Once you have obtained the 'drive_id' above, add to your 'onedrive' configuration file (`~/.config/onedrive/config`) the following: ```text -drive_id = "insert the drive id from above here" +drive_id = "insert the drive_id value from above here" ``` +The OneDrive client will now be configured to sync this SharePoint shared library to your local system. -The OneDrive client will now sync this SharePoint shared library to your local system. +**Note:** After changing `drive_id`, you must perform a full re-synchronization by adding `--resync` to your existing command line. + +## Test the configuration using '--dry-run' +5. Test your new configuration using the `--dry-run` option to validate the the new configuration + +## Sync the SharePoint Library as required +6. Sync the SharePoint Library to your system with either `--synchronize` or `--monitor` operations + + +# How to configure multiple OneDrive SharePoint Shared Library sync +Refer to [./advanced-usage.md](advanced-usage.md) for configuration assistance. diff --git a/docs/USAGE.md b/docs/USAGE.md index 6a741558..0604612a 100644 --- a/docs/USAGE.md +++ b/docs/USAGE.md @@ -665,42 +665,7 @@ journalctl --user-unit=onedrive -f ## Additional Configuration ### Using multiple OneDrive accounts -You can run multiple instances of the application by specifying a different config directory in order to handle multiple OneDrive accounts. For example, if you have a work and a personal account, you can run the onedrive command using the --confdir parameter. Here is an example: - -```text -onedrive --synchronize --verbose --confdir="~/.config/onedrivePersonal" & -onedrive --synchronize --verbose --confdir="~/.config/onedriveWork" & -``` -or -```text -onedrive --monitor --verbose --confdir="~/.config/onedrivePersonal" & -onedrive --monitor --verbose --confdir="~/.config/onedriveWork" & -``` - -* `--synchronize` does a one-time sync -* `--monitor` keeps the application running and monitoring for changes both local and remote -* `&` puts the application in background and leaves the terminal interactive - -**Important:** For each configuration, change the 'sync_dir' to a new value, unique for each specific configuration. Leaving this at the default of `sync_dir = "~/OneDrive"` will cause all data from both accounts to be synced to the same folder, then to each other. - -### Automatic syncing of both OneDrive accounts -In order to automatically start syncing your OneDrive accounts, you will need to create a service file for each account. From the applicable 'user systemd folder': -* RHEL / CentOS: `/usr/lib/systemd/system` -* Others: `/usr/lib/systemd/user` - -```text -cp onedrive.service onedrive-work.service -``` -And edit the line beginning with `ExecStart` so that the confdir mirrors the one you used above: -```text -ExecStart=/usr/local/bin/onedrive --monitor --confdir="/path/to/config/dir" -``` -Then you can safely run these commands: -```text -systemctl --user enable onedrive-work -systemctl --user start onedrive-work -``` -Repeat these steps for each OneDrive account that you wish to use. +Refer to [./advanced-usage.md](advanced-usage.md) for configuration assistance. ### Access OneDrive service through a proxy If you have a requirement to run the client through a proxy, there are a couple of ways to achieve this: @@ -739,7 +704,6 @@ sudo restorecon -R -v /path/to/onedriveSyncFolder ``` ## All available commands - Output of `onedrive --help` ```text OneDrive - a client for OneDrive Cloud Services diff --git a/docs/advanced-usage.md b/docs/advanced-usage.md new file mode 100644 index 00000000..b1f28328 --- /dev/null +++ b/docs/advanced-usage.md @@ -0,0 +1,139 @@ +# Advanced Configuration of the OneDrive Free Client +This document covers the following scenarios: +* Configuring the client to use mutlitple OneDrive accounts / configurations +* Configuring the client for use in dual-boot (Windows / Linux) situations + +## Configuring the client to use mutlitple OneDrive accounts / configurations +Essentially, each OneDrive account or SharePoint Shared Library which you require to be synced needs to have it's own and unique configuration, local sync directory and service files. To do this, the following steps are needed: +1. Create a unique configuration folder for each onedrive client configuration that you need +2. Copy to this folder a copy of the default configuration file +3. Update the default configuration file as required, changing the required minimum config options and any additional options as needed to support your multi-account configuration +4. Authenticate the client using the new configuration directory +5. Test the configuration using '--display-config' and '--dry-run' +6. Sync the OneDrive account data as required using `--synchronize` or `--monitor` +7. Configure a unique systemd service file for this account configuration + +### 1. Create a unique configuration folder for each onedrive client configuration that you need +Make the configuration folder as required for this new configuration, for example: +```text +mkdir ~/.config/my-new-config +``` + +### 2. Copy to this folder a copy of the default configuration file +Copy to this folder a copy of the default configuration file by downloading this file from GitHub and saving this file in the directory created above: +```text +wget https://raw.githubusercontent.com/abraunegg/onedrive/master/config -O ~/.config/my-new-config/config +``` + +### 3. Update the default configuration file +The following config options *must* be updated to ensure that individual account data is not cross populated with other OneDrive accounts or other configurations: +* sync_dir + +Other options that may require to be updated, depending on the OneDrive account that is being configured: +* drive_id +* application_id +* sync_business_shared_folders +* skip_dir +* skip_file +* Creation of a 'sync_list' file if required +* Creation of a 'business_shared_folders' file if required + +### 4. Authenticate the client +Authenticate the client using the specific configuration file: +```text +onedrive --confdir="~/.config/my-new-config" +``` +You will be asked to open a specific URL by using your web browser where you will have to login into your Microsoft Account and give the application the permission to access your files. After giving permission to the application, you will be redirected to a blank page. Copy the URI of the blank page into the application. +```text +[user@hostname ~]$ onedrive --confdir="~/.config/my-new-config" +Configuration file successfully loaded +Configuring Global Azure AD Endpoints +Authorize this app visiting: + +https://..... + +Enter the response uri: + +``` + +### 5. Display and Test the configuration +Test the configuration using '--display-config' and '--dry-run'. By doing so, this allows you to test any configuration that you have currently made, enabling you to fix this configuration before using the configuration. + +#### Display the configuration +```text +onedrive --confdir="~/.config/my-new-config --display-config" +``` + +#### Test the configuration by performing a dry-run +```text +onedrive --confdir="~/.config/my-new-config" --synchronize --verbose --dry-run +``` + +If both of these operate as per your expectation, the configuration of this client setup is complete and validated. If not, amend your configuration as required. + +### 6. Sync the OneDrive account data as required +Sync the data for the new account configuration as required: +```text +onedrive --confdir="~/.config/my-new-config" --synchronize --verbose +``` +or +```text +onedrive --confdir="~/.config/my-new-config" --monitor --verbose +``` + +* `--synchronize` does a one-time sync +* `--monitor` keeps the application running and monitoring for changes both local and remote + +### 7. Automatic syncing of new OneDrive configuration +In order to automatically start syncing your OneDrive accounts, you will need to create a service file for each account. From the applicable 'systemd folder' where the applicable systemd service file exists: +* RHEL / CentOS: `/usr/lib/systemd/system` +* Others: `/usr/lib/systemd/user` and `/lib/systemd/system` + +**Note:** The `onedrive.service` runs the service as the 'root' user, whereas the `onedrive@.service` runs the service as your user account. + +Copy the required service file to a new name: +```text +cp onedrive.service onedrive-my-new-config.service +``` +or +```text +cp onedrive@.service onedrive-my-new-config@.service +``` + +Edit the line beginning with `ExecStart` so that the confdir mirrors the one you used above: +```text +ExecStart=/usr/local/bin/onedrive --monitor --confdir="/full/path/to/config/dir" +``` + +Example: +```text +ExecStart=/usr/local/bin/onedrive --monitor --confdir="/home/myusername/.config/my-new-config" +``` + +Then you can safely run these commands: +```text +systemctl --user enable onedrive-my-new-config +systemctl --user start onedrive-my-new-config +``` +or +```text +systemctl --user enable onedrive-my-new-config@myusername.service +systemctl --user start onedrive-my-new-config@myusername.service +``` + +Repeat these steps for each OneDrive new account that you wish to use. + +## Configuring the client for use in dual-boot (Windows / Linux) situations +When dual booting Windows and Linux, depending on the Windows OneDrive account configuration, the 'Files On-Demand' option may be enabled when running OneDrive within your Windows environment. + +When this option is enabled in Windows, if you are sharing this location between your Windows and Linux systems, all files will be a 0 byte link, and cannot be used under Linux. + +To fix the problem of windows turning all files (that should be kept offline) into links, you have to uncheck a specific option in the onedrive settings window. The option in question is `Save space and download files as you use them`. + +To find this setting, open the onedrive pop-up window from the taskbar, click "Help & Settings" > "Settings". This opens a new window. Go to the tab "Settings" and look for the section "Files On-Demand". + +After unchecking the option and clicking "OK", the Windows OneDrive client should restart itself and start actually downloading your files so they will truely be available on your disk when offline. These files will then be fully accessible under Linux and the Linux OneDrive client. + +| OneDrive Personal | Onedrive Business
SharePoint | +|---|---| +| ![Uncheck-Personal](./images/personal-files-on-demand.png) | ![Uncheck-Business](./images/business-files-on-demand.png) | diff --git a/docs/images/SharedLibraries.jpg b/docs/images/SharedLibraries.jpg new file mode 100644 index 0000000000000000000000000000000000000000..03c3995ab5d6bcbc07a2007e8f1e95b71350462b GIT binary patch literal 17382 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 literal 0 HcmV?d00001 diff --git a/docs/images/personal-files-on-demand.png b/docs/images/personal-files-on-demand.png new file mode 100644 index 0000000000000000000000000000000000000000..cfe4e74c576001531644f29fb25d8338794ba0ee GIT binary patch literal 17670 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\fP service. Further examples and documentation is available in \f[C]README.md\f[] +\f[C]docs/USAGE.md\f[] +\f[C]docs/advanced-usage.md\f[] +\f[C]docs/BusinessSharedFolders.md\f[] \f[C]docs/Office365.md\f[] +\f[C]docs/national-cloud-deployments.md\f[]