Sanitize URL paths to elaminate double-slashes in the URL path string,
used for the first connection by the account setup wizard.
Example: https://cloud.example.com/remote.php/webdav//
Signed-off-by: Michael Schuster <michael@schuster.ms>
Removes the right-click function for the "Re-open browser" buttons because
they are not intuitive for the user.
Adds a dedicated "Copy link" button.
Implements Qt 5.5 fixes based on: https://github.com/nextcloud/desktop/pull/1392
Signed-off-by: Michael Schuster <michael@schuster.ms>
MD5 has been broken for a long time now and SHA1 has been
deprecated as well. SHA1 is not used when issuing new
publicly trusted certificates since 1 January 2016[1] and
there are more and more effective attacks[2][3] against it,
so display SHA1 fingerprint only for old certificates
to encourage use of safer digests by users.
So, we display SHA-256 and SHA-512 fingerprints instead in
the common case.
[1] https://cabforum.org/wp-content/uploads/CA-Browser-Forum-BR-1.6.5.pdf
[2] https://shattered.io/static/shattered.pdf
[3] https://eprint.iacr.org/2019/459.pdf
Signed-off-by: Martin Sucha <git@mm.ms47.eu>
Saving all client CA's within one credential may result in:
Error: "Credential size exceeds maximum size of 2560"
Client CA certificates are now being stored in separate slots
within the keychain and are being processed by a queue mechanism.
IMPORTANT TODO:
forgetSensitiveData(): Invoked by "Log out" & "Remove account"
- Remove client CA certs and KEY!
(uncomment "//deleteKeychainEntries();" )
Disabled as long as selecting another cert is not supported by the UI.
Signed-off-by: Michael Schuster <michael@schuster.ms>
The previous commit 50cd6af394 - Build a webflowcredentials
changed:
src/gui/wizard/flow2authcredspage.cpp in line 135 to use WebFlowCredentials
instead of HttpCredentials.
But the WebFlowCredentials class didn't include code to store and load SSL client
certificates and keys from the keychain.
This commit migrates the useful stuff from the old HttpCredentials class
into WebFlowCredentials.
Successfully tested on Windows. Please test on other systems and verify it's safe! :)
Signed-off-by: Michael Schuster <michael@schuster.ms>
- Implements re-auth upon logout -> login
- Improves UI and security
TODO:
- SSL: Client certificate login is possible at the first time only but missing after relaunch
Signed-off-by: Michael Schuster <michael@schuster.ms>
This is the first draft of the Login Flow V2 authorization method.
See: https://docs.nextcloud.com/server/latest/developer_manual/client_apis/LoginFlow/index.html#login-flow-v2
- Adds the Login Fĺow V2 auth method
- Adds ability to reinitiate a new request via UI
TODO:
- Implement re-auth upon logout -> login
- Improve UI
- SSL: Client certificate login is possible at the first time only but missing after relaunch
Signed-off-by: Michael Schuster <michael@schuster.ms>
`clearContents()` will leave the number of rows as is. This was causing
a segfault when trying to loop over the items of the widget.
Signed-off-by: Samir Benmendil <me@rmz.io>
It filters the error out of the list of blocking errors. It now shows up
in the Activities and Notificattions list as a warning.
Signed-off-by: Camila San <hello@camila.codes>
If the initiator or the recipient is not the current user,
show the list of sharees without any options to edit it.
Minor change: updates api to v2.
Signed-off-by: Camila San <hello@camila.codes>
The path returned from the server encodes a space in the username with `+` and if the username contains a `+` sign it is encoded as `%2B` (cf. https://www.php.net/manual/function.urlencode.php).
Fix: Don't (double) decode the URL path and then replace `+` with space (introduced in issue #279 resp. commit 9ec61a84ce). Instead first replace `+` with space, then decode percent encoding.
Tested with a username containing a space, a username containing a `+`sign and a username containing just A-Za-z0-9- (with Nextcloud 16).
(fixes issue #1266)
Signed-off-by: Sven Strickroth <email@cs-ware.de>
- Text changed to "Enable..." instead of "Setup"
- The close icon follows NC style
- "end-to-end" instead of "end to end"
Signed-off-by: Ivan Čukić <ivan.cukic@kde.org>
Instead of immediately popping up the mnemonic dialogue,
only show a notification bar on the account setup page.
For the cases where the user does not want to use E2E,
this is significantly less intrusive than the old approach.
The quota retrieval process might not be finished by the time
the used space on the server (`_rSize`) is compared against
the locally available disk space which might end up in
a "There isn't enough free space in the local folder!" message
even if there is enough free space.
This patch updates the status after the quota has been retrieved.
It also initializes `_rSize` to `-1` so that errors like this
are easier to catch in the future.
Qt recommends to register a URL scheme before installing it.
I don't know the impact of the not registering before instaling but I
think the change is pretty harmles.
See:
https://doc.qt.io/qt-5/qwebengineurlscheme.html#registerScheme
Signed-off-by: Björn Bidar <theodorstormgrade@gmail.com>
This is a quick hack to make self signed certificates work.
I'm not to fond of it the real solution should be to request the url
with QNAM and then see if it fails.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
I must admit why this works is puzzling me. However if I just use a system
proxy without this it doesn't work. I suspect a Qt bug but will have to
dig deeper to find out if that is the case.
For now this little hack will have to do.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Stylesheet String was not correctly defined (missing ";" after "%2") and caused an error in logging output.
After checking the fixed Style I removed it since it does not really look good.
We should stop fetching the moment the activity stream is empty when
fetched. It doesn't matter if the current list is empty.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Fixes#788Fixes#834
If the activity app is not enabled we should not try to fetch the
activities at all.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
NOTE: The progress indicator is temporarily moved one line up to avoid
inserting it on its own line, which would cause the content pushed down
and the dialog size jump back and forth.
Remove hard-coded fixed sizes, size constraints, and other unnecessary
property assignments. This works with any dialog width, meaning that
the width can be defined in one place higher up in the widget hierachy.
SettingsDialog::accountAdded() uses the height of the toolbar to
calculate the desired default size for toolbuttons. Make sure to have
the "General" and "Network" tool buttons in place before calling
accountAdded() to avoid cramped first button.
The original non-animated slide show was running at 2500ms interval.
The new animated slide show was using the same interval, but used
1000ms to animate the slides. This left significantly less time for
the user to read the slides.
... in addition to fixing up the scheme and host.
For example, the survey app sends "/settings/admin/survey_client" as
a link. Clicking the "More information" button wouldn't lead to the
correct place if NC was running on a custom port.
For some reason, QLabel with rich text and word wrapping enabled
calculates quite a bit too large size hint. Luckily, it's rich text
that is already divided to paragraphs so that wrapping makes actually
very little visual difference. For example, on my screen, when the
settings dialog is resized horizontally to the minimum, the only word
that actually wrapped was "2017". After this patch, it naturally won't
wrap anymore, but the General Settings page also doesn't leave a large
gap at the bottom. As a result, the minimum height of the dialog went
down from 581 to 525. The exact values depend on the style and fonts.
Fixes#91.
This makes the bottom margin aligned with horizontal margins, and
eliminates a warning on startup:
[unknown QObject::connect: Cannot connect (null)::clicked() to OCC::SettingsDialog::accept()
This moves all the basic http auth over to the webflow mechanism.
This thus also makes sure that if the password changes a webflow page
pops up. And thus will directly move them over to apptokens then.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
The QWebEngine uses a different certificate store/system. So we can't
just pass wour accepted certificates in there.
As a work around we now trust the url we set by definition. As this has
to already be approved before we access this.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Note that we also needed to adjust the server url to contains the user name
in the folder wizard. (As checkPathValidityForNewFolder expect the user name)
Issue #6654
The exact string is actually "sync.*.debug=true\ngui.*.debug=true".
And this is not strictly equivalent to setting the env var, as it
calls QLoggingCategory::setFilterRules.
Over all, that's an implementation details that users do not care about.
There is no real reason to have a timeout. The connection can stay open
as long as we are not authenticated. The User can still re-open a browser
from the UI at any time.
Issue #6612
* Disentangle the previous 'qdbusWorkarounds' into three different
things
* Make not trusting tray.isVisible() a new workaround
* Introduce env vars for all workaround flags
* Use the workaround flags for OSX
* Determine workaround flags for KDE when the plasma integration plugin
is missing
This can happen when the client is started and the internet connection
was not enabled. Then we would fetch the credentials, but we would
no do the refresh token step (because network is down).
So next time we try to connect, we would also not refresh the token
because the credentials are not marked as 'ready'
Reported in
https://github.com/owncloud/client/issues/6522#issuecomment-396845167
Fixes#279
Some setups don't make Qt emit the right signals and the client would
end up in state where it could not do the initial authentications.
This is a similar hack that apparently already was is place for basic
http auth.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Fix#604
Remove the not actionable button but a direct link to the nextcloud
installation page. In this case the button is changed for a label with an
html link to the website.
- Local sync activities are now listed with the sync icon and included
in the correct list: once a file is synced, activityWidget checks for
its status to know if it is an error or if the file was successfully synced.
Signed-off-by: Camila San <hello@camila.codes>
- Fixes call for slot when date is set - it was the password
slot for that.
- Adds QProgressIndicator and function to toggle animation.
- Fixes: when date was set, the date was not being correctly set and
displayed.
- Fixes: hides and 'deletes' passsword and expire. date widgets when
the user unchecks it in the toolbox menu.
Signed-off-by: Camila San <hello@camila.codes>
- Properly checks files and folder share permissions when displaying
can edit checkbox - which can also be partially checked - and listing
permissios in the tollbutton menu.
- Fixes click on can edit checkbox - which can also change state of
permissions in the toolbutton menu.
Signed-off-by: Camila San <hello@camila.codes>
- It checks for the menu title to know where to add the apps menu instead of trying to cast
the menu pointer saved in the sender() property.
- The previous solution was not working reliably - see #523
- Adds TODO.
Signed-off-by: Camila San <hello@camila.codes>
- Also removes the signal/slot associated with it.
- Minor changes: removes white background and changes frame style to the
same used in the accountsettings for consistency.
Signed-off-by: Camila San <hello@camila.codes>
- Adds icons to Share link and to save password on share dialog.
- Changes wording of the menu options for sharing link.
- Adds functionality to the new menu (mostly permissions).
- More widget size and size policy adjustments.
Signed-off-by: Camila San <hello@camila.codes>
- First text input to search for users,then share link and then the list
of users.
- Adjusts size and scroll bar for sharees list.
- Adds option 'can share' to 3 dots menu in share user/group widget.
Signed-off-by: Camila San <hello@camila.codes>
- Adds select with permissions to share dialog on the user/group search.
- Changes order of widgets, removes excess of text and do not display empty widgets.
- Share user/group widget: replaces combo box for tool button with permissions.
- Using Fixed as size policy it gives a much smoother user experience
when windows size dinamically changes.
Signed-off-by: Camila San <hello@camila.codes>
- The crash was happening when the user could not connect and it would
crash on trying to retrieve and display the navigation apps.
- Checks AccountStatePtr earlier in the function
slotNavigationAppsFetched.
- Cast of pointer stored in QVariant to QMenu was not done correctly -
qvariant_cast works best for user type defined or QMetaType known to
QVariant.
Signed-off-by: Camila San <hello@camila.codes>
- Minor fix: gives less space for long text that needed ellipses which
was not showing and set right margin because otherwise text was not
painted correctly and completly.
Signed-off-by: Camila San <hello@camila.codes>
- Also fixes the click on each activity: the user had to click twice -
one to select the row and then one click to open file manager or
browser.
Signed-off-by: Camila San <hello@camila.codes>
- Attempts to implement slot as it was in the old IssuesWidget.
- It should clean up the activity list when needed - e.g. when file
conflict was solved.
Signed-off-by: Camila San <hello@camila.codes>
- Fixes crash when dismissing notification - notification was being
removed from the wrong list.
- Minor changes: removes AccountStatePtr where it was needed anymore now
that ActivityListModel has an _accountState, it doesn't need to be
checked for each activity/notification.
Signed-off-by: Camila San <hello@camila.codes>
- This follows what the enums already being used SynResult::Status and
SyncFileItem::Status.
- Do not display buttons for FileErrorTypes - since they are errors on
local syncing, there is nothing to do in the server.
Signed-off-by: Camila San <hello@camila.codes>
- Their size was not correctly calculated so it was hard to filter the
clicks on the list. User had to click multiple times before clicking on
the right acceptable area.
Signed-off-by: Camila San <hello@camila.codes>
- With the merging of activities and notifications the copy to clipboard
function got broken. Had to put it back as it was before.
- The output text from the clipboard was almost unreadeable. Ajusted the
space between texts and used separator '-' instead of ','.
- Minor: cleans up comments.
Signed-off-by: Camila San <hello@camila.codes>
- Stores object_type from the api response to check if notification is a
call so the primary button text and action is 'Join'.
- Puts strings into consts.
- Minor change: Improves comments on ActivityListModel.
Signed-off-by: Camila San <hello@camila.codes>
- Stores object_type form the api response to check if notification is
remote_share, so the primary button text is 'accept' instead of 'more
information'.
Signed-off-by: Camila San <hello@camila.codes>
- Fixes adding/removing accounts with separator in the toolbar -
accounts were not added in the right order and removing was not
including the separator.
- Fixes button sizes in the activities list - the buttons were too small
for the text.
Signed-off-by: Camila San <hello@camila.codes>
- The path to the file wa being stored in the wrong activity property.
It was in the action link when it should be in the file.
- Minor: comments out the display of issues and protocol widget.
Signed-off-by: Camila San <hello@camila.codes>
- Errors will always be on top, then Notifications comes next and then Activities for last.
- Adds 2 new types of Activity: NotificationType and ErrorType.
- ActivityListModel and ActivityWidget stores AccountState to connect user and widget.
Signed-off-by: Camila San <hello@camila.codes>
- Activities from the server don't have buttons to interact with so
their content can use the full lenght of the row.
Signed-off-by: Camila San <hello@camila.codes>
- Displays the notification icon when available.
- Adds dismiss button with an icon.
- Handles buttons actions in the list view.
- Changes what is painted first (activityitemdelegate) for each row in
the activity list.
Signed-off-by: Camila San <hello@camila.codes>
- In activityitemdelegate the mouse events are filtered (ActivityItemDelegate::editorEvent) to check if the user clicked
on a button in the list of activities/notifications. Then a signal is emitted to ActivityWidget that does the rest:
show submenu when there are more options, open browser, open file manager, send request to server.
Signed-off-by: Camila San <hello@camila.codes>
- Do not display buttons for activities.
- Adds correctly text and button in the space left depending on the widget size.
Signed-off-by: Camila San <hello@camila.codes>
- The list of possible actions (server requests( was not being used in
the activityitemdelegate. This is needed to be able to draw the primary
action buttons and other options for each notification in the view.)
- Minor changes:
- Uses different icons for activities and notifications in the list view.
- Align elements in the list view of notifications/activities properly.
Signed-off-by: Camila San <hello@camila.codes>
The option -Wno-discarded-qualifiers only exists with GCC, clang warns that
it has no effects.
Also it warns when some virtual fuction are marked with override but not
all of them.
When the more button was changed from using a text to an icon,
the size computation was not adjusted proerly to that of a button
with an icon.
And using svg allows it to be rendered correctly with high-dpi
It looks much much nicer now
* The new menu option will fetch shares and create a new link share if
no "context menu share" currently exists.
* Various cleanup of common operations in socketapi happened as well,
in particular there's now FileData::get() that calculates all the
relevant paths that are useful for most socketapi actions.
OCC::FolderStatusModel::slotUpdateDirectories: ASSERT: "parentInfo->_fetching" in file /home/olivier/kdegit/owncloud/mirall/src/gui/folderstatusmodel.cpp, line 599
This can happen if the structure of a folder is change while the user
expands the root folder. In this case, resetSubs() is called which
resets _fetching to false.
Instead, we need to keep a pointer to the job so we can abort it by
deleting it.
The specs forbid the encryption or decryption of a
non empty folder. so...
1 - check for the sync status, if it's not synced return
as there's no way that I can say that there's items on the
server right now without waiting for the sync to finish
2 - verify if the folder is empty locally
as the user could have send some files to the folder.