1
0
mirror of https://github.com/chylex/Nextcloud-Desktop.git synced 2026-04-05 05:34:18 +02:00

Compare commits

...

58 Commits

Author SHA1 Message Date
Klaas Freitag
ee71024496 Changelog: Clearify changelog entries. 2015-05-06 11:43:58 +02:00
Daniel Molkentin
b1f326054f Update Changelog 2015-05-06 11:25:04 +02:00
Daniel Molkentin
bceb40ed80 Disable setSslConfiguration calls for older Qt version
This is only required for client certs, which currently have
no GUI anyway and are experimental.
2015-05-06 11:20:16 +02:00
Daniel Molkentin
fd684eda52 1.8.1 final 2015-05-06 10:51:11 +02:00
Christian Kamm
9e3c3353bd IgnoreListEditor: Remove invalid connect. #3201
This has been around ever since the ignore editor was
added and the slot never existed.
2015-05-06 09:34:45 +02:00
Markus Goetz
07ffff3d77 SyncEngine: Fix accidental re-discovery because of broken version table
Bug had been triggered by d63abef718
Broken version table in there since some time it seems like.
2015-05-05 17:07:13 +02:00
Jenkins for ownCloud
9b34427a1c [tx-robot] updated from transifex 2015-05-05 02:18:50 -04:00
Daniel Molkentin
5fba476076 1.8.0 RC2 2015-05-04 13:43:56 +02:00
Klaas Freitag
d63abef718 SyncEngine: Handle upgrade case from 1.8.0
If 1.8.0 caused missing data in the local tree, this patch gets it
back. For that, the usage of the journal for remote repository is
disabled at the first start.
2015-05-04 13:40:25 +02:00
Jenkins for ownCloud
cdba8a7f2f [tx-robot] updated from transifex 2015-05-04 02:18:49 -04:00
Jenkins for ownCloud
21967a130b [tx-robot] updated from transifex 2015-05-03 02:18:47 -04:00
Jenkins for ownCloud
08e78d5d6f [tx-robot] updated from transifex 2015-05-02 02:18:47 -04:00
Jenkins for ownCloud
fe68e1e82c [tx-robot] updated from transifex 2015-05-01 02:18:22 -04:00
Jenkins for ownCloud
25ac3bfdb7 [tx-robot] updated from transifex 2015-04-30 03:27:54 -04:00
Markus Goetz
4700c604b1 Proxy: Register meta type #3170 2015-04-29 14:54:08 +02:00
Jenkins for ownCloud
356fa737c5 [tx-robot] updated from transifex 2015-04-29 02:18:49 -04:00
Klaas Freitag
520e2eb392 Updated version tag rc1 2015-04-27 11:58:56 +02:00
Klaas Freitag
e0d2bd4830 Updated changelog for 1.8.1 2015-04-27 11:58:18 +02:00
Jenkins for ownCloud
1dc05f99bf [tx-robot] updated from transifex 2015-04-27 02:18:46 -04:00
Jenkins for ownCloud
b2b176bcd0 [tx-robot] updated from transifex 2015-04-26 02:18:48 -04:00
Jenkins for ownCloud
fde5ccd0df [tx-robot] updated from transifex 2015-04-25 02:18:46 -04:00
Carla Schroder
d1fe25cc31 Update owncloudcmd.rst 2015-04-24 11:44:38 -07:00
Carla Schroder
60c18f75b5 update owncloud and owncloudcmd docs
Conflicts:
	doc/owncloudcmd.rst
2015-04-24 11:42:10 -07:00
Carla Schroder
c7f3791f3d Update autoupdate.rst 2015-04-24 10:03:51 -07:00
Carla Schroder
ee9d5e6bf0 Update introduction.rst 2015-04-24 10:03:06 -07:00
Carla Schroder
96fa3a3a1a Merge pull request #3160 from owncloud/blockoldclient
add more warning that 1.7 clients and older are blocked
2015-04-24 09:56:17 -07:00
Carla Schroder
7c4deec800 add more warning that 1.7 clients and older are blocked 2015-04-24 09:54:05 -07:00
Christian Kamm
78e82eb920 AccountWizard: Fix auth error handling. #3155
The problem was that on network error the networkError() and
finishedWithError() signals both fired. To fix it, I collapse all
error handing into a slot triggered by finishedWithError().

I tested the redirection case and the invalid credentials case.
2015-04-24 16:03:28 +02:00
Jenkins for ownCloud
3c91a1ace4 [tx-robot] updated from transifex 2015-04-24 02:18:46 -04:00
Markus Goetz
3a52db46ad Discovery: Fix another empty-local-directory bug 2015-04-23 16:15:13 +02:00
Markus Goetz
137bce6dd0 Folder: Clear _syncResult better
I had a situation here where we were showing stale desktop notifications when a remote folder
errored out and then sync finished with _syncResult data from previous sync.
2015-04-23 13:30:30 +02:00
Jenkins for ownCloud
f000e6ce6a [tx-robot] updated from transifex 2015-04-23 02:18:48 -04:00
Christian Kamm
7c1281dd06 Windows: Fix rename of finished file. #3073
The file was still open and therefore couldn't be renamed...
2015-04-22 14:46:04 +02:00
Jenkins for ownCloud
60729f2bbd [tx-robot] updated from transifex 2015-04-22 02:18:36 -04:00
Jenkins for ownCloud
0b0ecfcbe4 [tx-robot] updated from transifex 2015-04-22 01:15:19 -04:00
Carla Schroder
1fe86bced2 note that linux users need password manager 2015-04-21 13:05:09 -07:00
Carla Schroder
c6a62a497d Merge pull request #3139 from owncloud/updates
add note to restart windows after update
2015-04-21 12:58:22 -07:00
Carla Schroder
8be6881093 add note to restart windows after update 2015-04-21 10:10:16 -07:00
Daniel Molkentin
99c8118229 create_mac_pkg.sh.cmake: increase space-in-filename resiliance 2015-04-21 15:42:51 +02:00
Markus Goetz
6c5ca055c4 ShareDialog: Unused/invalid forward declaration 2015-04-21 10:33:38 +02:00
Jenkins for ownCloud
a6ec8f3090 [tx-robot] updated from transifex 2015-04-21 02:18:33 -04:00
Olivier Goffart
b039c2ce86 More change to compile with 5.5
The problem is again that QStringList no longer include QDataStream
2015-04-20 09:47:25 +02:00
Jenkins for ownCloud
5a6d286c41 [tx-robot] updated from transifex 2015-04-20 02:18:49 -04:00
Olivier Goffart
ba65187ad3 Fix compilation with Qt 5.5
Because of commit 90e7cc172a7521396bb2d49720ee4ceb9a9390b3 in qtbase,
we now need to explicitly include QDataStream

Fixes #2809
2015-04-19 11:02:43 +02:00
Jenkins for ownCloud
a91f54f0a8 [tx-robot] updated from transifex 2015-04-19 02:18:31 -04:00
Jenkins for ownCloud
d77c1f3e4a [tx-robot] updated from transifex 2015-04-18 02:18:24 -04:00
Daniel Molkentin
7390ddbd98 Mac OS: The Resource/ folder in Qt frameworks might not exist
Make sure to create it
2015-04-17 13:31:05 +02:00
Daniel Molkentin
32a4b40f0a Remove wrongly-commited file 2015-04-17 12:50:08 +02:00
Jenkins for ownCloud
bc1bc2a4f8 [tx-robot] updated from transifex 2015-04-17 06:49:42 -04:00
Jocelyn Turcotte
155c965866 Prevent another crash in ~SocketApi #3118
Since the QLocalServer parent of the QLocalSockets gets destroyed
after the _listeners QList, onLostConnection might try to update
an already destroyed list.

Fix the issue by simply making sure that _localServer is destroyed
first.
2015-04-17 12:42:40 +02:00
Olivier Goffart
6c73f25747 HTTP creds: Fix translation of the password input dialog
tr() needs Q_OBJECT
2015-04-17 12:19:37 +02:00
Daniel Molkentin
2518fd7059 Merge pull request #3126 from owncloud/equal_user_agents
Use identical User Agents for csync and the Qt parts
2015-04-17 10:16:09 +02:00
Jenkins for ownCloud
56edae6958 [tx-robot] updated from transifex 2015-04-17 02:18:43 -04:00
Daniel Molkentin
d8275cd4e1 Use identical User Agents for csync and the Qt parts
Also, use the mirall version for ocsync.

Currently, the csync engine part and the Qt part have different UAs,
and this makes debugging (i.e. reading access logs) difficult. On
top, we haven't increased the ocsync version number in ages. So
as a consequence, I think it would be the best to have ocsync
and the rest share the same version number, and make them identify
with the same user agent.

To ease debugging for our side, we'll still append "(csyncoC)"
for calls made by csync.
2015-04-16 20:58:51 +02:00
Daniel Molkentin
c3dca7a288 OS X: Actually Make the signing script fail on failure
Addresses #3114
2015-04-16 16:35:09 +02:00
Daniel Molkentin
96ff0076c7 Fix mac deployment again 2015-04-16 16:35:09 +02:00
Olivier Goffart
8bb4af067a Propagate download: Fix restoring files for which the conflict file exists
For issue #3106

1) Always use the actual timestamp from the file in the file system
to create the conflict file.  This is important because if one edit a
file several time, they should have different name. Also it makes more
sens to have the mtime of the modified file.

2) Give the correct size to the job so we know when the temporary file
is complete in case of resuming.
2015-04-16 11:36:01 +02:00
Jenkins for ownCloud
df0df76b51 [tx-robot] updated from transifex 2015-04-16 02:18:36 -04:00
66 changed files with 17272 additions and 14786 deletions

View File

@@ -1,6 +1,52 @@
ChangeLog
=========
version 1.8.0 (release 2015-03-xx)
version 1.8.1 (release 2015-05-07)
* Make "operation canceled" error a soft error
* Do not throw an error for files that are scheduled to be removed,
but can not be found on the server. #2919
* Windows: Reset QNAM to proper function after hibernation. #2899 #2895 #2973
* Fix argument verification of --confdir #2453
* Fix a crash when accessing a dangling UploadDevice pointer #2984
* Add-folder wizard: Make sure there is a scrollbar if folder names
are too long #2962
* Add-folder Wizard: Select the newly created folder
* Activity: Correctly restore column sizes #3005
* SSL Button: do not crash on empty certificate chain
* SSL Button: Make menu creation lazy #3007 #2990
* Lookup system proxy async to avoid hangs #2993 #2802
* ShareDialog: Some GUI refinements
* ShareDialog: On creation of a share always retrieve the share
This makes sure that if a default expiration date is set this is reflected
in the dialog. #2889
* ShareDialog: Only show share dialog if we are connected.
* HttpCreds: Fill pw dialog with previous password. #2848 #2879
* HttpCreds: Delete password from old location. #2186
* Do not store Session Cookies in the client cookie storage
* CookieJar: Don't accidentally overwrite cookies. #2808
* ProtocolWidget: Always add seconds to the DateTime locale. #2535
* Updater: Give context as to which app is about to be updated #3040
* Windows: Add version information for owncloud.exe. This should help us know
what version or build number a crash report was generated with.
* Fix a crash on shutdown in ~SocketApi #3057
* SyncEngine: Show more timing measurements #3064
* Discovery: Add warning if returned etag is 0
* Fix a crash caused by an invalid DiscoveryDirectoryResult::iterator #3051
* Sync: Fix sync of deletions during 503. #2894
* Handle redirect of auth request. #3082
* Discovery: Fix parsing of broken XML replies, which fixes local file disappearing #3102
* Migration: Silently restore files that were deleted locally by bug #3102
* Sort folder sizes SelectiveSyncTreeView numerically #3112
* Sync: PropagateDownload: Read the mtime from the file system after writing it #3103
* Sync: Propagate download: Fix restoring files for which the conflict file exists #3106
* Use identical User Agents and version for csync and the Qt parts
* Prevent another crash in ~SocketApi #3118
* Windows: Fix rename of finished file. #3073
* AccountWizard: Fix auth error handling. #3155
* Documentation fixes
* Infrastructure/build fixes
* Win32/OS X: Apply patch from OpenSSL to handle oudated intermediates gracefully #3087
version 1.8.0 (release 2015-03-17)
* Mac OS: HIDPI support
* Support Sharing from desktop: Added a share dialog that can be
opened by context menu in the file managers (Win, Mac, Nautilus)

View File

@@ -4,7 +4,7 @@ set( MIRALL_VERSION_PATCH 1 )
set( MIRALL_SOVERSION 0 )
if ( NOT DEFINED MIRALL_VERSION_SUFFIX )
set( MIRALL_VERSION_SUFFIX "beta1") #e.g. beta1, beta2, rc1
set( MIRALL_VERSION_SUFFIX "") #e.g. beta1, beta2, rc1
endif( NOT DEFINED MIRALL_VERSION_SUFFIX )
if( NOT DEFINED MIRALL_VERSION_BUILD )

View File

@@ -50,7 +50,7 @@ if [ ! -z "$identity" ]; then
echo "Will try to sign the installer"
pushd $install_path
productsign --sign "$identity" "$installer_file" "$installer_file.new"
mv "$installer_file".new $installer_file
mv "$installer_file".new "$installer_file"
popd
else
echo "No certificate given, will not sign the pkg"

View File

@@ -260,12 +260,18 @@ def CopyFramework(path):
commands.append(args)
args = ['chmod', 'u+w', os.path.join(full_path, parts[-1])]
commands.append(args)
args = ['chmod', 'u+w', os.path.join(frameworks_dir, framework, "Resources")]
resources_dir = os.path.join(frameworks_dir, framework, "Resources")
args = ['mkdir', resources_dir]
commands.append(args)
args = ['chmod', 'u+w', resources_dir]
commands.append(args)
info_plist = os.path.join(os.path.split(path)[0], '..', '..', 'Contents', 'Info.plist')
if not os.path.exists(info_plist):
info_plist = os.path.join(os.path.split(path)[0], 'Resources', 'Info.plist')
if os.path.exists(info_plist):
args = ['cp', '-r', info_plist, os.path.join(frameworks_dir, framework, "Resources")]
args = ['cp', '-r', info_plist, resources_dir]
commands.append(args)
return os.path.join(full_path, parts[-1])

View File

@@ -1,4 +1,4 @@
#!/bin/sh -x
#!/bin/sh -xe
[ "$#" -lt 2 ] && echo "Usage: sign_app.sh <app> <identity>" && exit
@@ -7,6 +7,6 @@ identity="$2"
codesign -s "$identity" --force --verbose=4 --deep "$src_app"
# Just for our debug purposes:
# Verify the signature
spctl -a -t exec -vv $src_app
codesign -dv $src_app

View File

@@ -39,8 +39,8 @@ StrCpy $UNINSTALL_ABORT "A desinstalaci
StrCpy $INIT_NO_QUICK_LAUNCH "Acceso de inicio rápido (n/d)"
StrCpy $INIT_NO_DESKTOP "Atallo no escritorio (sobrescribe o existente)"
StrCpy $UAC_ERROR_ELEVATE "Non foi posíbel elevalo, erro:"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "Este instalador require acceso de administrador, tenteo de novo"
StrCpy $UAC_INSTALLER_REQUIRE_ADMIN "Este instalador require acceso de administrador, ténteo de novo"
StrCpy $INIT_INSTALLER_RUNNING "O instalador xa está en execución."
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Este desinstalador require acceso de administrador, tenteo de novo"
StrCpy $UAC_UNINSTALLER_REQUIRE_ADMIN "Este desinstalador require acceso de administrador, ténteo de novo"
StrCpy $INIT_UNINSTALLER_RUNNING "O desinstalador xa está en execución."
StrCpy $SectionGroup_Shortcuts "Atallos"

View File

@@ -3,13 +3,7 @@
# global needed variables
set(APPLICATION_NAME "ocsync")
set(APPLICATION_VERSION_MAJOR "0")
set(APPLICATION_VERSION_MINOR "91")
set(APPLICATION_VERSION_PATCH "5")
set(APPLICATION_VERSION "${APPLICATION_VERSION_MAJOR}.${APPLICATION_VERSION_MINOR}.${APPLICATION_VERSION_PATCH}")
set(LIBRARY_VERSION "0.2.1")
set(LIBRARY_VERSION ${MIRALL_VERSION})
set(LIBRARY_SOVERSION "0")
# add definitions

View File

@@ -40,8 +40,6 @@
#include <sys/types.h>
#include <config_csync.h>
#include "csync_version.h"
#ifdef __cplusplus
extern "C" {
#endif

View File

@@ -26,6 +26,8 @@
#include "csync_private.h"
#include "csync_version.h"
/*
* helper method to build up a user text for SSL problems, called from the
@@ -437,8 +439,8 @@ int dav_connect(CSYNC *csyncCtx, const char *base_url) {
// Should never take more than some seconds, 30 is really a max.
ne_set_connect_timeout(ctx->dav_session.ctx, 30);
snprintf( uaBuf, sizeof(uaBuf), "Mozilla/5.0 (%s) csyncoC/%s",
csync_owncloud_get_platform(), CSYNC_STRINGIFY( LIBCSYNC_VERSION ));
snprintf( uaBuf, sizeof(uaBuf), "Mozilla/5.0 (%s) mirall/%s (csyncoC)",
CSYNC_STRINGIFY( MIRALL_VERSION ), csync_owncloud_get_platform() );
ne_set_useragent( ctx->dav_session.ctx, uaBuf);
ne_set_server_auth(ctx->dav_session.ctx, authentication_callback_by_neon, ctx);

View File

@@ -28,22 +28,7 @@ extern "C" {
#define CSYNC_STRINGIFY(s) CSYNC_TOSTRING(s)
#define CSYNC_TOSTRING(s) #s
/* csync version macros */
#define CSYNC_VERSION_INT(a, b, c) ((a) << 16 | (b) << 8 | (c))
#define CSYNC_VERSION_DOT(a, b, c) a ##.## b ##.## c
#define CSYNC_VERSION(a, b, c) CSYNC_VERSION_DOT(a, b, c)
/* csync version */
#define LIBCSYNC_VERSION_MAJOR @APPLICATION_VERSION_MAJOR@
#define LIBCSYNC_VERSION_MINOR @APPLICATION_VERSION_MINOR@
#define LIBCSYNC_VERSION_MICRO @APPLICATION_VERSION_PATCH@
#define LIBCSYNC_VERSION_INT CSYNC_VERSION_INT(LIBCSYNC_VERSION_MAJOR, \
LIBCSYNC_VERSION_MINOR, \
LIBCSYNC_VERSION_MICRO)
#define LIBCSYNC_VERSION CSYNC_VERSION(LIBCSYNC_VERSION_MAJOR, \
LIBCSYNC_VERSION_MINOR, \
LIBCSYNC_VERSION_MICRO)
#define MIRALL_VERSION @MIRALL_VERSION@
#ifdef __cplusplus
}

View File

@@ -1,3 +1,4 @@
==============
Advanced Usage
==============

View File

@@ -1,3 +1,4 @@
=====================
The Automatic Updater
=====================
@@ -9,11 +10,15 @@ users only need to use their normal package managers. However, on Linux systems
the Updater will check for updates and notify you when a new version is
available.
.. note:: Because of various technical issues, desktop sync clients older than
1.7 will not be allowed to connect and sync with the ownCloud 8.1 server. It is
highly recommended to keep your client updated.
Basic Workflow
--------------
The following sections describe how to use the Automatic Updater on different
operating systems:
operating systems.
Windows
^^^^^^^
@@ -26,6 +31,9 @@ If an update is available, and has been successfully downloaded, the ownCloud
client starts a silent update prior to its next launch and then restarts
itself. Should the silent update fail, the client offers a manual download.
When you upgrade from 1.7 you should restart Windows to ensure that all the new
features in 1.8 are enabled.
.. note:: Administrative privileges are required to perform the update.
Mac OS X

View File

@@ -35,6 +35,9 @@ including:
and Nautilus on Linux.
* Faster uploads and downloads.
.. note:: When you upgrade from 1.7, restart Windows to ensure that all new
features are visible.
Installation
------------

View File

@@ -11,3 +11,6 @@ Desktop Sync client enables you to:
Your files are always automatically synchronized between your ownCloud server
and local PC.
.. note:: Because of various technical issues, desktop sync clients older than
1.7 will not allowed to connect and sync with the ownCloud 8.1 server. It is
highly recommended to keep your client updated.

View File

@@ -1,23 +1,28 @@
When invoking the client from the command line, the following options are supported:
You have the option of starting your ownCloud desktop client with the
``owncloud`` command. The following options are supported:
``-h``, ``--help``
``owncloud -h`` or ``owncloud --help``
Displays all command options.
The other options are:
``--logwindow``
Opens a window displaying log output.
``--logfile`` `<filename>`
Write log output to the file specified. To write to stdout, specify `-` as the filename.
Write log output to the file specified. To write to stdout, specify `-`
as the filename.
``--logdir`` `<name>`
Writes each synchronization log output in a new file in the specified directory.
Writes each synchronization log output in a new file in the specified
directory.
``--logexpire`` `<hours>`
Removes logs older than the value specified (in hours). This command is used with ``--logdir``.
Removes logs older than the value specified (in hours). This command is
used with ``--logdir``.
``--logflush``
Clears (flushes) the log file after each write action.
``--confdir`` `<dirname>`
Uses the specified configuration directory.
Uses the specified configuration directory.

View File

@@ -1,16 +1,14 @@
The ownCloud Client packages contain a command line client that can be used to
synchronize ownCloud files to client machines. The command line client is
called ``owncloudcmd``.
The ownCloud Client packages contain a command line client, ``owncloudcmd``, that can
be used to synchronize ownCloud files to client machines.
owncloudcmd performs a single *sync run* and then exits the synchronization
process. In this manner, owncloudcmd processes the differences between client
and server directories and propagates the files to bring both repositories to
the same state. Contrary to the GUI-based client, ``owncloudcmd`` does not
repeat
synchronizations on its own. It also does not monitor for file system changes.
``owncloudcmd`` performs a single *sync run* and then exits the synchronization
process. In this manner, ``owncloudcmd`` processes the differences between
client and server directories and propagates the files to bring both
repositories to the same state. Contrary to the GUI-based client,
``owncloudcmd`` does not repeat synchronizations on its own. It also does not
monitor for file system changes.
To invoke ``owncloudcmd``, you must provide the local and the remote
repository
To invoke ``owncloudcmd``, you must provide the local and the remote repository
URL using the following command::
owncloudcmd [OPTIONS...] sourcedir owncloudurl
@@ -18,45 +16,41 @@ URL using the following command::
where ``sourcedir`` is the local directory and ``owncloudurl`` is
the server URL.
.. note:: Prior to the 1.6 version of owncloudcmd, the tool only accepted
``owncloud://`` or ``ownclouds://`` in place of ``http://`` and ``https://`` as
a scheme. See ``Examples`` for details.
Other comand line switches supported by owncloudcmd include the following:
Other command line switches supported by ``owncloudcmd`` include the following:
``--user``, ``-u`` ``[user]``
Use ``user`` as the login name.
Specify the user's login name.
``--password``, ``-p`` ``[password]``
Use ``password`` as the password.
Specify the user's password.
``-n``
Use ``netrc (5)`` for login.
Use ``netrc (5)`` for login.
``--non-interactive``
Do not prompt for questions.
Do not prompt for questions.
``--silent``, ``-s``
Inhibits verbose log output.
Inhibits verbose log output.
``--trust``
Trust any SSL certificate, including invalid ones.
Trust any SSL certificate, including invalid ones.
``--httpproxy http://[user@pass:]<server>:<port>``
Uses the specified ``server`` as the HTTP proxy.
``--unsyncedfolders [file]``
File containing list of folders to not sync
Credential Handling
~~~~~~~~~~~~~~~~~~~
By default, ``owncloudcmd`` reads the client configuration and uses the
credentials of the GUI synchronization client. If no client is configured, or if you choose
to use a different user to synchronize, you can specify the user password
setting with the usual URL pattern. For example::
credentials of the GUI synchronization client. If no client is configured, or if
you choose to use a different user to synchronize, you can specify the user
password setting with the usual URL pattern. For example::
https://user:secret@192.168.178.2/remote.php/webdav
Example
~~~~~~~
$ owncloudcmd / https://carla:secret@server/owncloud/remote.php/webdav/
To synchronize the ownCloud directory ``Music`` to the local directory
``media/music``, through a proxy listening on port ``8080``, and on a gateway
@@ -66,13 +60,5 @@ machine using IP address ``192.168.178.1``, the command line would be::
$HOME/media/music \
https://server/owncloud/remote.php/webdav/Music
``owncloudcmd`` will enquire user name and password, unless they have
``owncloudcmd`` will prompt for the user name and password, unless they have
been specified on the command line or ``-n`` has been passed.
Using the legacy scheme, the command line would be::
$ owncloudcmd --httpproxy http://192.168.178.1:8080 \
$HOME/media/music \
ownclouds://server/owncloud/remote.php/webdav/Music

View File

@@ -30,6 +30,7 @@
#include "qtlocalpeer.h"
#include <QCoreApplication>
#include <QDataStream>
#include <QTime>
#if defined(Q_OS_WIN)

View File

@@ -28,9 +28,6 @@ public:
* @return the list of migrated folder definitions
*/
QStringList migrateFolderDefinitons();
signals:
public slots:
};
}

View File

@@ -772,6 +772,7 @@ void Folder::startSync(const QStringList &pathList)
_timeSinceLastSyncStart.restart();
_syncResult.clearErrors();
_syncResult.setStatus( SyncResult::SyncPrepare );
_syncResult.setSyncFileItemVector(SyncFileItemVector());
emit syncStateChange();
qDebug() << "*** Start syncing - client version"

View File

@@ -43,7 +43,6 @@ IgnoreListEditor::IgnoreListEditor(QWidget *parent) :
connect(this, SIGNAL(accepted()), SLOT(slotUpdateLocalIgnoreList()));
ui->removePushButton->setEnabled(false);
connect(ui->listWidget, SIGNAL(itemSelectionChanged()), SLOT(slotItemSelectionChanged()));
connect(ui->listWidget, SIGNAL(itemActivated(QListWidgetItem*)), SLOT(slotItemChanged(QListWidgetItem*)));
connect(ui->removePushButton, SIGNAL(clicked()), SLOT(slotRemoveCurrentItem()));
connect(ui->addPushButton, SIGNAL(clicked()), SLOT(slotAddPattern()));
connect(ui->listWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), SLOT(slotEditPattern(QListWidgetItem*)));

View File

@@ -219,7 +219,6 @@ void OwncloudSetupWizard::testOwnCloudConnect()
job->setProperties(QList<QByteArray>() << "getlastmodified");
connect(job, SIGNAL(result(QVariantMap)), _ocWizard, SLOT(successfulStep()));
connect(job, SIGNAL(finishedWithError()), this, SLOT(slotAuthError()));
connect(job, SIGNAL(networkError(QNetworkReply*)), this, SLOT(slotAuthNetworkError(QNetworkReply*)));
job->start();
}
@@ -232,10 +231,11 @@ void OwncloudSetupWizard::slotAuthError()
qWarning() << "Can't check for authed redirects. This slot should be invoked from PropfindJob!";
return;
}
QNetworkReply* reply = job->reply();
// If there were redirects on the *authed* requests, also store
// the updated server URL, similar to redirects on status.php.
QUrl redirectUrl = job->reply()->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
QUrl redirectUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
if (!redirectUrl.isEmpty()) {
qDebug() << "authed request was redirected to" << redirectUrl.toString();
@@ -250,18 +250,36 @@ void OwncloudSetupWizard::slotAuthError()
_ocWizard->account()->setUrl(redirectUrl);
testOwnCloudConnect();
return;
} else {
errorMsg = tr("The authenticated request to the server was redirected to "
"'%1'. The URL is bad, the server is misconfigured.")
.arg(redirectUrl.toString());
}
}
errorMsg = tr("The authenticated request to the server was redirected to "
"'%1'. The URL is bad, the server is misconfigured.")
.arg(redirectUrl.toString());
if (errorMsg.isEmpty()) {
// A 404 is actually a success: we were authorized to know that the folder does
// not exist. It will be created later...
} else if (reply->error() == QNetworkReply::ContentNotFoundError) {
_ocWizard->successfulStep();
return;
// Provide messages for other errors, such as invalid credentials.
} else if (reply->error() != QNetworkReply::NoError) {
errorMsg = reply->errorString();
if (!_ocWizard->account()->credentials()->stillValid(reply)) {
errorMsg = tr("Access forbidden by server. To verify that you have proper access, "
"<a href=\"%1\">click here</a> to access the service with your browser.")
.arg(_ocWizard->account()->url().toString());
}
// Something else went wrong, maybe the response was 200 but with invalid data.
} else {
errorMsg = tr("There was an invalid response to an authenticated webdav request");
}
_ocWizard->displayError(errorMsg, false);
_ocWizard->show();
if (_ocWizard->currentId() == WizardCommon::Page_ShibbolethCreds) {
_ocWizard->back();
}
_ocWizard->displayError(errorMsg, _ocWizard->currentId() == WizardCommon::Page_ServerSetup && checkDowngradeAdvised(reply));
}
bool OwncloudSetupWizard::checkDowngradeAdvised(QNetworkReply* reply)
@@ -287,29 +305,6 @@ bool OwncloudSetupWizard::checkDowngradeAdvised(QNetworkReply* reply)
return true;
}
void OwncloudSetupWizard::slotAuthNetworkError(QNetworkReply* reply)
{
QString msg = reply->errorString();
switch (reply->error()) {
case QNetworkReply::NoError:
case QNetworkReply::ContentNotFoundError:
_ocWizard->successfulStep();
break;
default:
if (!_ocWizard->account()->credentials()->stillValid(reply)) {
msg = tr("Access forbidden by server. To verify that you have proper access, "
"<a href=\"%1\">click here</a> to access the service with your browser.")
.arg(_ocWizard->account()->url().toString());
}
_ocWizard->show();
if (_ocWizard->currentId() == WizardCommon::Page_ShibbolethCreds) {
_ocWizard->back();
}
_ocWizard->displayError(msg, _ocWizard->currentId() == WizardCommon::Page_ServerSetup && checkDowngradeAdvised(reply));
break;
}
}
void OwncloudSetupWizard::slotCreateLocalAndRemoteFolders(const QString& localFolder, const QString& remoteFolder)
{
qDebug() << "Setup local sync folder for new oC connection " << localFolder;

View File

@@ -62,7 +62,6 @@ private slots:
void slotNoOwnCloudFoundAuthTimeout(const QUrl&url);
void slotConnectToOCUrl(const QString&);
void slotAuthNetworkError(QNetworkReply*);
void slotAuthError();
void slotCreateLocalAndRemoteFolders(const QString&, const QString&);

View File

@@ -49,7 +49,6 @@ class ShareDialog;
class AbstractCredentials;
class QuotaInfo;
class MirallAccessManager;
class SyncResult;
class ShareDialog : public QDialog

View File

@@ -82,8 +82,8 @@ private:
Q_INVOKABLE void command_SHARE_MENU_TITLE(const QString& argument, QLocalSocket* socket);
QString buildRegisterPathMessage(const QString& path);
QLocalServer _localServer;
QList<QLocalSocket*> _listeners;
QLocalServer _localServer;
c_strlist_t *_excludes;
QHash<Folder*, SqlQuery*> _dbQueries;
QHash<Folder*, SqlDatabase*> _openDbs;

View File

@@ -321,7 +321,9 @@ QNetworkReply *Account::getRequest(const QString &relPath)
QNetworkReply *Account::getRequest(const QUrl &url)
{
QNetworkRequest request(url);
#if QT_VERSION > QT_VERSION_CHECK(4, 8, 4)
request.setSslConfiguration(this->createSslConfig());
#endif
return _am->get(request);
}
@@ -333,7 +335,9 @@ QNetworkReply *Account::davRequest(const QByteArray &verb, const QString &relPat
QNetworkReply *Account::davRequest(const QByteArray &verb, const QUrl &url, QNetworkRequest req, QIODevice *data)
{
req.setUrl(url);
#if QT_VERSION > QT_VERSION_CHECK(4, 8, 4)
req.setSslConfiguration(this->createSslConfig());
#endif
return _am->sendCustomRequest(req, verb, data);
}

View File

@@ -163,6 +163,7 @@ SystemProxyRunnable::SystemProxyRunnable(const QUrl &url) : QObject(), QRunnable
void SystemProxyRunnable::run()
{
qDebug() << Q_FUNC_INFO << "Starting system proxy lookup";
qRegisterMetaType<QNetworkProxy>("QNetworkProxy");
QList<QNetworkProxy> proxies = QNetworkProxyFactory::systemProxyForQuery(QNetworkProxyQuery(_url));
if (proxies.isEmpty()) {

View File

@@ -19,6 +19,7 @@
#include <QFile>
#include <QDateTime>
#include <QNetworkCookie>
#include <QDataStream>
namespace OCC {

View File

@@ -75,6 +75,7 @@ private:
};
class OWNCLOUDSYNC_EXPORT HttpCredentialsGui : public HttpCredentials {
Q_OBJECT
public:
explicit HttpCredentialsGui() : HttpCredentials() {}
HttpCredentialsGui(const QString& user, const QString& password, const QString& certificatePath, const QString& certificatePasswd) : HttpCredentials(user, password, certificatePath, certificatePasswd) {}

View File

@@ -83,21 +83,11 @@ void DiscoveryJob::update_job_update_callback (bool local,
}
}
// Only use for error cases! It will always set an error errno
int get_errno_from_http_errcode( int err, const QString & reason ) {
int new_errno = 0;
int new_errno = EIO;
switch(err) {
case 200: /* OK */
case 201: /* Created */
case 202: /* Accepted */
case 203: /* Non-Authoritative Information */
case 204: /* No Content */
case 205: /* Reset Content */
case 207: /* Multi-Status */
case 304: /* Not Modified */
new_errno = 0;
break;
case 401: /* Unauthorized */
case 402: /* Payment Required */
case 407: /* Proxy Authentication Required */
@@ -316,7 +306,7 @@ void DiscoverySingleDirectoryJob::lsJobFinishedWithErrorSlot(QNetworkReply *r)
// Default keep at EIO, see above
}
emit finishedWithError(errnoCode, msg);
emit finishedWithError(errnoCode == 0 ? EIO : errnoCode, msg);
deleteLater();
}

View File

@@ -339,6 +339,7 @@ void PropagateDownloadFileQNAM::start()
if (startSize > 0) {
if (startSize == _item._size) {
qDebug() << "File is already complete, no need to download";
_tmpFile.close();
downloadFinished();
return;
}
@@ -489,7 +490,6 @@ QString makeConflictFileName(const QString &fn, const QDateTime &dt)
void PropagateDownloadFileQNAM::downloadFinished()
{
QString fn = _propagator->getFilePath(_item._file);
// In case of file name clash, report an error

View File

@@ -695,7 +695,8 @@ void PropagateDownloadFileLegacy::start()
&& !FileSystem::fileEquals(fn, tmpFile.fileName()); // compare the files to see if there was an actual conflict.
//In case of conflict, make a backup of the old file
if (isConflict) {
QString conflictFileName = makeConflictFileName(fn, Utility::qDateTimeFromTime_t(_item._modtime));
auto conflictDate = FileSystem::fileExists(fn) ? FileSystem::getModTime(fn) : _item._modtime;
QString conflictFileName = makeConflictFileName(fn, Utility::qDateTimeFromTime_t(conflictDate));
QString renameError;
if (!FileSystem::rename(fn, conflictFileName, &renameError)) {
//If the rename fails, don't replace it.

View File

@@ -605,7 +605,14 @@ void SyncEngine::startSync()
// database creation error!
}
if (fileRecordCount >= 1 && isUpdateFrom_1_5) {
bool isUpdateFrom_1_8 = _journal->isUpdateFrom_1_8_0();
/*
* If 1.8.0 caused missing data in the local tree, this patch gets it
* back. For that, the usage of the journal for remote repository is
* disabled at the first start.
*/
if (fileRecordCount >= 1 && (isUpdateFrom_1_5 || isUpdateFrom_1_8)) {
qDebug() << "detected update from 1.5" << fileRecordCount << isUpdateFrom_1_5;
// Disable the read from DB to be sure to re-read all the fileid and etags.
_csync_ctx->read_remote_from_db = false;
@@ -999,8 +1006,8 @@ void SyncEngine::checkForPermission()
it->_direction = SyncFileItem::Down;
it->_isRestoration = true;
// take the things to write to the db from the "other" node (i.e: info from server)
// ^^ FIXME This might not be needed anymore since we merge the info in treewalkFile
it->_modtime = it->log._other_modtime;
it->_size = it->log._other_size;
it->_fileId = it->log._other_fileId;
it->_etag = it->log._other_etag;
it->_errorString = tr("Not allowed to upload this file because it is read-only on the server, restoring");

View File

@@ -30,7 +30,7 @@
namespace OCC {
SyncJournalDb::SyncJournalDb(const QString& path, QObject *parent) :
QObject(parent), _transaction(0), _possibleUpgradeFromMirall_1_5(false)
QObject(parent), _transaction(0), _possibleUpgradeFromMirall_1_5(false), _possibleUpgradeFromMirall_1_8_0(false)
{
_dbFile = path;
@@ -273,6 +273,8 @@ bool SyncJournalDb::checkConnect()
}
_possibleUpgradeFromMirall_1_5 = false;
_possibleUpgradeFromMirall_1_8_0 = false;
SqlQuery versionQuery("SELECT major, minor, patch FROM version;", _db);
if (!versionQuery.next()) {
// If there was no entry in the table, it means we are likely upgrading from 1.5
@@ -284,7 +286,7 @@ bool SyncJournalDb::checkConnect()
createQuery.bindValue(1, MIRALL_VERSION_MAJOR);
createQuery.bindValue(2, MIRALL_VERSION_MINOR);
createQuery.bindValue(3, MIRALL_VERSION_PATCH);
createQuery.bindValue(3, MIRALL_VERSION_BUILD);
createQuery.bindValue(4, MIRALL_VERSION_BUILD);
createQuery.exec();
} else {
@@ -292,6 +294,10 @@ bool SyncJournalDb::checkConnect()
int minor = versionQuery.intValue(1);
int patch = versionQuery.intValue(2);
if( major == 1 && minor == 8 && patch == 0 ) {
qDebug() << Q_FUNC_INFO << "_possibleUpgradeFromMirall_1_8_0 detected!";
_possibleUpgradeFromMirall_1_8_0 = true;
}
// Not comparing the BUILD id here, correct?
if( !(major == MIRALL_VERSION_MAJOR && minor == MIRALL_VERSION_MINOR && patch == MIRALL_VERSION_PATCH) ) {
createQuery.prepare("UPDATE version SET major=?1, minor=?2, patch =?3, custom=?4 "
@@ -753,6 +759,10 @@ bool SyncJournalDb::postSyncCleanup(const QSet<QString>& filepathsToKeep,
_possibleUpgradeFromMirall_1_5 = false; // should be handled now
}
if (_possibleUpgradeFromMirall_1_8_0) {
_possibleUpgradeFromMirall_1_8_0 = false; // should be handled now
}
return true;
}
@@ -1322,6 +1332,13 @@ bool SyncJournalDb::isUpdateFrom_1_5()
return _possibleUpgradeFromMirall_1_5;
}
bool SyncJournalDb::isUpdateFrom_1_8_0()
{
QMutexLocker lock(&_mutex);
checkConnect();
return _possibleUpgradeFromMirall_1_8_0;
}
bool operator==(const SyncJournalDb::DownloadInfo & lhs,
const SyncJournalDb::DownloadInfo & rhs)
{

View File

@@ -118,6 +118,7 @@ public:
* are updated.
*/
bool isUpdateFrom_1_5();
bool isUpdateFrom_1_8_0();
private:
bool updateDatabaseStructure();
@@ -135,6 +136,7 @@ private:
QMutex _mutex; // Public functions are protected with the mutex.
int _transaction;
bool _possibleUpgradeFromMirall_1_5;
bool _possibleUpgradeFromMirall_1_8_0;
QScopedPointer<SqlQuery> _getFileRecordQuery;
QScopedPointer<SqlQuery> _setFileRecordQuery;
QScopedPointer<SqlQuery> _getDownloadInfoQuery;

View File

@@ -15,6 +15,7 @@
#ifndef _THEME_H
#define _THEME_H
#include <QObject>
#include "syncresult.h"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff