Commit Graph

193 Commits

Author SHA1 Message Date
Jonathan White
1493943e2e Add integration with Brave browser
Fixes #2414
2019-04-07 21:00:15 -04:00
Jonathan White
f67b60623e
Update translation source file 2019-03-19 18:56:17 -04:00
Jonathan White
fb5faf0ff5
Ran make format 2019-03-19 18:56:17 -04:00
Jonathan White
306bf0f292 Allow snap builds to use keepassxc-proxy
* Updated browser extension settings for snap usage
* Support Snap 3.0 Changes
* Add missing stage packages
* Correct proxy communication with snaps
2019-03-19 14:46:29 -04:00
Jonathan White
fb5746e4f7 Improve legacy browser settings message 2019-03-19 14:46:29 -04:00
varjolintu
14e868d2f7 Allow creating new groups with Browser Integration
Added a confirmation dialog
2019-03-17 20:13:44 -04:00
varjolintu
f997e86869 Small browser fixes for 2.4.0 release 2019-03-06 20:46:12 -05:00
Johan Fleury
e8ec45ef97 Always close epoll/kqueue file descriptor (#2723)
Resolves #2643, resolves #2721
2019-02-24 13:38:50 +01:00
Jonathan White
0c587999c6
Code quality updates for 2.4.0 (#2709)
* Minor code quality fixes found by Codacy
* Fix unused variables when WITH_XC_NETWORKING is OFF
* Fix #2684, resolve entry references from the root group
* Fix #2697 and Fix #2699, listen specifically for 
WM_QUERYENDSESSION and WM_ENDSESSION on 
Windows to gracefully shutdown KeePassXC
* Cleanup proxy code and add explicit closure for
shutdown messages
2019-02-18 08:26:56 -05:00
Jonathan White
d3a424cc74 Correct window transitions from browser plugin
* Eliminated multiple state variables
* Fix #1643, window is brought to front
2019-02-05 16:09:17 -05:00
Jonathan White
21d1e981ca
Cleanup CMakeFiles prior to release
* Remove Git revision finding code in favor of a simple command call: git rev-parse --short=7 HEAD
* Added GIT_HEAD_OVERRIDE to explicitly define the hash for the current commit in case git is not available 
* Made WIX default over NSIS in release tool 
* Rename version.h to git-info.h
2019-01-30 15:03:03 -05:00
Gianluca Recchia
0dac53df54
Restore formatting 2019-01-30 09:50:11 -05:00
Gianluca Recchia
39b96c13e8
Avoid copying QSharedPointers when not needed 2019-01-30 09:50:10 -05:00
Sami Vänttinen
891f67a1cd Select group when adding credentials from browser extension (#2637) 2019-01-30 09:48:22 -05:00
Jonathan White
7e1b16250c Performed project-wide code formatting
* Updated format CMake command to properly
ignore new directories and files
* Added output when command is run
* Resolves #2623
2019-01-28 22:38:59 -05:00
Sami Vänttinen
d66299260c Clearer error messages for KeePassXC-Browser (#2622) 2019-01-24 22:45:30 -05:00
Sami Vänttinen
0da9efdbd4 Fix updating reference passwords from KeePassXC-Browser (#2218)
* Allow updating reference passwords

* Fix function change after refactor
2019-01-21 14:24:57 -05:00
Sami Vänttinen
f8c6c9f72c Fix native hiding of macOS windows (#2583) 2019-01-16 11:03:54 -05:00
varjolintu
5488f1bfc3 Switch browser integration to use native raising of windows 2018-12-24 18:17:56 -05:00
Kyle Kneitinger
4d4c839afa Customize buttons on MessageBox and confirm before recycling (#2376)
* Add confirmation prompt before moving groups to the recycling bin

Spawn a yes/no QMessage box when "Delete Group" is selected on a group
that is not already in the recycle bin (note: the prompt for deletion
from the recycle bin was already implemented).  This follows the same
pattern and language as entry deletion.

Fixes #2125

* Make prompts for destructive operations use action words on buttons

Replace yes/no, yes/cancel (and other such buttons on prompts that cause
data to be destroyed) use language that indicates the action that it is
going to take. This makes destructive/unsafe and/or irreversible operations
more clear to the user.

Address feedback on PR #2376

* Refactor MessageBox class to allow for custom buttons

Replaces arguments and return values of type QMessageBox::StandardButton(s)
with MessageBox::Button(s), which reimplements the entire set of
QMessageBox::StandardButton and allows for custom KeePassXC buttons,
such as "Skip". Modifies all calls to MessageBox functions to use
MessageBox::Button(s).

Addresses feedback on #2376

* Remove MessageBox::addButton in favor of map lookup

Replaced the switch statement mechanism in MessageBox::addButton with
a map lookup to address CodeFactor Complex Method issue. This has a
side-effect of a small performance/cleanliness increase, as an
extra QPushButton is no longer created/destroyed (to obtain it's label
text) everytime a MessageBox button based on QMessageBox::StandardButton
is created; now the text is obtained once, at application start up.
2018-12-19 23:14:11 -05:00
varjolintu
a070f1bce7 Handle retrieving credentials from HTTP Basic Auth 2018-12-11 15:34:32 -05:00
Gianluca Recchia
fc930bae69
Restore correct formatting
Many lines were not conformant with the project's formatting rules.
This patch should fix all formatting and whitespace issues in the code
base.
A clang-format directive was put around the connect() calls containing
SIGNALs and SLOTs whose signatures would be denormalized because of the
formatting rules.
2018-11-28 18:29:15 -05:00
Janek Bevendorff
d612cad09a
Refactor Database and Database widgets (#2491)
The Database, DatabaseWidget, and DatabaseTabWidget classes share many responsibilities in inconsistent ways resulting in impenetrable and unmaintainable code and a diverse set of bugs and architecture restrictions. This patch reworks the architecture, responsibilities of, and dependencies between these classes.

The core changes are:

* Move loading and saving logic from widgets into the Database class
* Get rid of the DatabaseManagerStruct and move all the information contained in it into the Database
* Let database objects keep track of modifications and dirty/clean state instead of handing this to external widgets
* Move GUI interactions for loading and saving from the DatabaseTabWidget into the DatabaseWidget (resolves #2494 as a side-effect)
* Heavily clean up DatabaseTabWidget and degrade it to a slightly glorified QTabWidget
* Use QSharedPointers for all Database objects
* Remove the modifiedImmediate signal and replace it with a markAsModified() method
* Implement proper tabName() method instead of reading back titles from GUI widgets (resolves #1389 and its duplicates #2146 #855)
* Fix unwanted AES-KDF downgrade if database uses Argon2 and has CustomData
* Improve code

This patch is also the first major step towards solving issues #476 and #2322.
2018-11-22 11:47:31 +01:00
Jonathan White
880c3aeb34
Add search help pop-up
* Support ! modifier (same as '-')
* Create reusable PopupHelpWidget as self-contained popup that can
be positioned around a parent widget and will follow the movement
and sizing of the window
* Eliminated KEEPASSXC_MAIN_WINDOW macro and replaced with
getMainWindow() function
* Add tests to cover search help show/hide
2018-11-17 09:04:15 -05:00
Jonathan White
4b983251cb
Add advanced search term parser
* Support quoted strings & per-field searching
* Support regex and exact matching
* Simplify search sequence
* Make search widget larger
* Add regex converter to Tools namespace
2018-11-17 08:49:50 -05:00
varjolintu
91bccf75d5 Include older settings type to conversion 2018-11-09 19:17:28 -05:00
Gianluca Recchia
e06eae423e
Add missing 'override' for overridden functions 2018-10-31 15:16:04 +01:00
Gianluca Recchia
0f604aa8c7
Normalize signature of SIGNAL() and SLOT()
See https://stackoverflow.com/q/18091058/6335279
2018-10-31 15:16:04 +01:00
Gianluca Recchia
896a66e6d8
Improve readability and type-safety
Use nullptr instead of 0 or NULL to initialize a null pointer. In some
cases, readability was enhanced by replacing 0 with more meaningful
values according to the type of the pointer being initialized.
2018-10-31 15:16:04 +01:00
Gianluca Recchia
da9afd3f6f
Reduce number of unneeded copies
This patch aims at reducing the number of copies for obejcts that could
be referenced rather than copied, because they're not modified during
the computation.
2018-10-31 15:16:04 +01:00
Gianluca Recchia
a67a574b89
Reduce function call overhead
The arg() function of the QString class has a variable length argument
which allows to reduce the number of chained calls to the same function.
With proper formatting, readability is not affected.
2018-10-31 14:23:06 +01:00
Gianluca Recchia
4876beabed
Improve performance of a few for-loops
Some for-loops needlessly copied the collection they were looping over.
2018-10-31 14:23:06 +01:00
hidden by cloudflare
2ad8036823 Added Linux, MacOS, and Windows support for Tor Browser. (#2387)
Add path for native-messaging-hosts on Linux, Windows, and macOS for Tor Browser
2018-10-30 11:07:59 -04:00
Nathan Merritt
c9cab250c7 Only check for scheme matches when an entry has a scheme (#2426) 2018-10-28 13:51:20 -04:00
Gianluca Recchia
f31d65bdaf Replace deprecated parts of the code (#2419)
Performing a dev build against the latest version of Qt failed
because of some deprecated members. They have been replaced
according to the Qt documentation.

Further, Q_OS_MACOS is now the only macro available to identify a
machine running macOS, the others are now deprecated.
See https://doc.qt.io/qt-5/qtglobal.html#Q_OS_OSX and
https://doc.qt.io/qt-5/qtglobal.html#Q_OS_MAC.
2018-10-26 15:19:04 +02:00
Sami Vänttinen
efdb43dc53 Browser connection keys and rules are stored in custom data instead of attributes (#1497) 2018-10-24 10:49:53 -04:00
Sami Vänttinen
5c92082f7c Add warning message to browser integration settings when keepassxc-proxy is not found (#2396) 2018-10-23 09:03:18 -04:00
Janek Bevendorff
77adbef401 Reformat CMakeLists.txt files 2018-10-19 22:16:44 +02:00
Janek Bevendorff
0ca7fd369a Implement review feedback 2018-10-19 22:16:44 +02:00
Janek Bevendorff
113c8eb702 Add CLI tests and improve coding style and i18n
The CLI module was lacking unit test coverage and showed some severe
coding style violations, which this patch addresses.

In addition, all uses of qCritical() with untranslatble raw char*
sequences were removed in favor of proper locale strings. These are
written to STDERR through QTextStreams and support output
redirection for testing purposes. With this change, error messages don't
depend on the global Qt logging settings and targets anymore and go
directly to the terminal or into a file if needed.

This patch also fixes a bug discovered during unit test development,
where the extract command would just dump the raw XML contents without
decrypting embedded Salsa20-protected values first, making the XML
export mostly useless, since passwords are scrambled.

Lastly, all CLI commands received a dedicated -h/--help option.
2018-10-19 21:49:54 +02:00
Sami Vänttinen
b8d2d5d877 Choose database for saving or updating entries from KeePassXC-Browser (#2391) 2018-10-19 14:44:08 -04:00
varjolintu
80749958b7 Fix checking subdomains 2018-10-18 08:14:42 -04:00
Jonathan White
c1e9f45df9 Introduce synchronize merge method
* Create history-based merging that keeps older data in history instead of discarding or deleting it
* Extract merge logic into the Merger class
* Allows special merge behavior
* Improve handling of deletion and changes on groups
* Enable basic change tracking while merging
* Prevent unintended timestamp changes while merging
* Handle differences in timestamp precision
* Introduce comparison operators to allow for more sophisticated comparisons (ignore special properties, ...)
* Introduce Clock class to handle datetime across the app

Merge Strategies:
* Default (use inherited/fallback method)
* Duplicate (duplicate conflicting nodes, apply all deletions)
* KeepLocal (use local values, but apply all deletions)
* KeepRemote (use remote values, but apply all deletions)
* KeepNewer (merge history only)
* Synchronize (merge history, newest value stays on top, apply all deletions)
2018-09-30 09:36:39 -04:00
Jonathan White
53a17c2355
Reduce use of static vars in browser plugin
* Convert BrowserSettings into instanced class
* Moved HostInstaller init into class constructor
2018-09-15 12:10:15 -04:00
varjolintu
57e60681f2 Fix Match URL scheme setting 2018-09-11 09:49:33 -04:00
Jonathan White
ca27fb06d5
Merge branch 'master'
Conflicts:
	INSTALL.md
	release-tool
	src/browser/BrowserOptionDialog.cpp
	src/browser/BrowserService.cpp
	src/browser/BrowserService.h
	src/browser/NativeMessagingBase.h
	src/browser/NativeMessagingHost.h
	src/core/Uuid.cpp
	src/gui/DatabaseTabWidget.cpp
	src/gui/DatabaseWidget.cpp
	src/gui/EditWidget.cpp
	src/gui/MainWindow.cpp
	src/gui/MainWindow.ui
	src/proxy/NativeMessagingHost.h
	src/sshagent/ASN1Key.cpp
2018-08-24 09:42:38 -04:00
varjolintu
95a60087f9 Add browser extension links to settings page 2018-08-19 23:36:59 -04:00
varjolintu
38e48e7591 Use Chrome registry settings with Vivaldi 2018-08-19 22:45:29 -04:00
varjolintu
1d80bddde3 Quit the proxy when reading zero or less from stdin 2018-08-19 22:43:33 -04:00
varjolintu
d70a474bac Allows a separate ID key for browser extension association 2018-08-13 16:31:05 -04:00
varjolintu
057cf6aed3 Handle URL port and scheme when requesting credentials 2018-07-14 17:09:41 -04:00
varjolintu
c67f7afa49 Deny expired credentials 2018-07-13 09:15:22 -04:00
pasdam
b4d806ad41
Fixed issues with initial commit 2018-07-06 22:23:52 -04:00
varjolintu
fc8e0e7b19 Remove title matching 2018-06-16 08:44:08 +03:00
varjolintu
e825b55a99 Fix entry sorting by title 2018-06-15 19:52:28 -04:00
seregaxvm
e124f17c64 Add advanced password generator features (#1841)
* Split between simple and advanced features
* Finetune password character groups
* Support for hex passwords
2018-06-10 22:37:09 -04:00
varjolintu
bf5f82ff27 Change Unix socket location 2018-05-16 07:37:25 +03:00
Janek Bevendorff
b02bd59e0c
Merge branch 'master' into develop 2018-05-09 19:25:58 +02:00
varjolintu
3d3bc7a062 Null check 2018-05-09 11:16:08 +02:00
Jonathan White
aae6d09fd3
Merge branch 'master' into develop
Conflicts:
	src/CMakeLists.txt
	src/autotype/xcb/AutoTypeXCB.cpp
	src/browser/BrowserAction.cpp
	src/browser/BrowserService.cpp
	src/browser/BrowserService.h
	src/browser/BrowserSettings.h
	src/browser/NativeMessagingHost.cpp
	src/browser/NativeMessagingHost.h
	src/gui/EditWidgetIcons.cpp
	src/gui/EditWidgetIcons.h
	src/gui/MainWindow.cpp
	src/proxy/NativeMessagingHost.cpp
	tests/TestOpenSSHKey.cpp
2018-05-07 23:24:30 -04:00
Jonathan White
3b7e63a773
Bump version number to 2.3.2 & fix Win build 2018-05-07 23:17:32 -04:00
varjolintu
9d7e7c1ca8 Disable STDIN listening when not needed 2018-05-06 20:21:40 -04:00
Sami Vänttinen
48295efe0d Implement best matches only option with browser integration (#1822) 2018-05-05 17:51:03 -04:00
Sami Vänttinen
963ac75389 Lower the main window after unlock request from extension (#1884) 2018-05-04 17:31:17 -04:00
Sami Vänttinen
635d6fe82c Bring browser credentials messagebox to the front (#1830) 2018-05-04 16:56:19 -04:00
Sami Vänttinen
658298bc31 Ignore non-connected databases from search with Browser Integration (#1810) 2018-05-04 16:06:07 -04:00
varjolintu
2110ae4d33 Create KPH attribute for browser integration 2018-04-27 11:19:02 +03:00
Jonathan White
062503a903
Fix windows building
Regression occured in 3a92e4
2018-04-26 23:12:10 -04:00
varjolintu
c773d85876 Change socket location in macOS to temporary dir 2018-04-04 11:16:00 +03:00
Sami Vänttinen
3a92e4aab9 Socket buffer size fix (#1720) 2018-04-02 22:13:07 -04:00
Louis-Bertrand Varin
8324d03f0a Formatting the code. 2018-03-31 16:01:30 -04:00
Janek Bevendorff
e92d5e80ee
Merge branch 'release/2.3.2' into develop 2018-03-18 01:14:42 +01:00
Olivier Le Moal
3353b329fc Fix wrong reply size in NativeMessagingBase
* Using length() on QString won't return correct size in bytes when string
contains UTF-8 chars.
2018-03-13 22:32:31 +01:00
Edward Jones
3def6a3bc4 Fix weird base strings and reduce concatenation 2018-03-13 20:40:39 +00:00
Edward Jones
e718e9f5e5 Fix file dialog filter translations 2018-03-13 19:55:37 +00:00
Janek Bevendorff
63a17f697c Fix freeze and high CPU usage on invalid STDIN data, resolves #1620 2018-03-06 21:55:32 +01:00
Janek Bevendorff
0668c2be94 Inform user that KeePassXC-Browser is not supported for Snaps at the moment 2018-02-26 01:57:02 +01:00
Janek Bevendorff
2e9f247e29 Enable proper KeePassXC-Browser interaction for AppImage 2018-02-26 01:57:02 +01:00
thez3ro
6723f4215a
centralize every password generator default option. add extended ASCII to XC_HTTP generator 2018-02-07 17:35:20 +01:00
Matthew Thode
78e962e30a
Fix keepass-browser based popups on tiling WMs
If we set the window flags after showing/activating the window the
window will not pop up.

Fixes: https://github.com/keepassxreboot/keepassxc/issues/1452
2018-02-04 15:43:45 -06:00
Janek Bevendorff
3c98ce43c6 Fix file selection filter on *nix systems 2018-01-21 15:54:46 +01:00
Janek Bevendorff
8da3efa2c2 Add disambiguation info to source strings 2018-01-21 15:54:46 +01:00
varjolintu
8ac909b0eb
Multiple browser related fixes 2018-01-20 00:47:26 +01:00
Janek Bevendorff
a6fd52d1f9
Show KeePassHTTP deprecation notice three times and use MessageWidget 2018-01-19 20:44:15 +01:00
Janek Bevendorff
30f77b07bb
Improve KMessageWidget visuals 2018-01-19 20:40:56 +01:00
Janek Bevendorff
f520a0f272
Deprecate KeePassHTTP and introduce WITH_XC_NETWORKING CMake option 2018-01-19 20:40:54 +01:00
Janek Bevendorff
f2b3181735
Rework browser integration settings 2018-01-19 20:40:51 +01:00
Janek Bevendorff
7665bc6c63 Properly active key association dialog and main window upon unlock request 2018-01-15 01:16:32 +01:00
Janek Bevendorff
48ac3790c2 Show "key already exists" warning only if key really exists 2018-01-15 01:16:32 +01:00
Janek Bevendorff
28a67f9957 Remove old chrome extension IDs and add new official extension ID 2018-01-15 01:16:32 +01:00
varjolintu
acceb8efc9 High CPU fix for Linux 2018-01-11 08:52:17 +02:00
Yen Chi Hsuan
9b5ed176cd Improve proxy path handling for the browser plugin
If "Update KeePassXC binary path automatically to native messaging
scripts on startup" is not selected (default behavior), native messaging
host JSON contains wrong path " ".
2018-01-06 18:22:10 +08:00
varjolintu
06518c5736 keepassxc-browser 2018-01-04 21:42:20 +01:00