summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2015-07-06Add GSSAPI client authenticatorMili Verma
Test-information: Tested on Windows using WIP code. Unit tests pass. Change-Id: I766294e57dc6374830b865f3e57b07b67e7d2fe2
2015-07-02Reestablish connection with smart cardMili Verma
When the card is reset in shared mode (which is the mode we use), an application trying to access certain commands will be returned the value SCARD_W_RESET_CARD. When this occurs SCardReconnect() must be called. This wasn't done before so this patch fixes it. Also provides more logging for SCard function returns. Test-information: Tested on Windows using NIST smart cards. Before the fix, the Card Removed Error was seen often even after the initial connection was established. After the fix, the reconnect attempt is done so the error is not seen. Also verified that if a card is removed deliberately, then the user is logged out. Change-Id: I94748ab9ff944a79de655646e1e06a8b61776f4b
2015-07-01Don't incorrectly claim that non of Swift is built without QtKevin Smith
Test-Information: Building on a system without Qt now says that the application is all that isn't compiled. Swift/Controllers still compiles if requested (as before). Change-Id: I24631f6ba2bf3475a1a6456207c1da94f1b3f1c0
2015-06-30Add wrappers for Windows API to be used in GSSAPIMili Verma
Test-information: Tested on Windows using WIP GSSAPI code. Unit tests pass. Change-Id: I21f8f637480a21a014ec172431dd8d4a01a11620
2015-06-30Remove when sending an empty responseMili Verma
In RFC 6120, there are only 2 places where "=" is allowed - in the initial client auth and in the final server success response. While testing challenge response exchanges in Kerberos, it was seen that Swift was adding an '=' in other empty responses. This patch fixes it by sending an empty response instead of an '='. Test-information: Tested on Windows using a WIP GSSAPI authentication exchange with M-Link. Change-Id: I1f82bddbd1380361cbe43e45a2804156249582ae
2015-06-29Add WindowsServicePrincipalName classMili Verma
Test-information: Tested on Windows using WIP GSSAPI code. Unit tests pass. Change-Id: If872863d6a8b5a164f8ebec4f88e9939b4e73c62
2015-06-29Pass an optional error codeMili Verma
This patch creates and passes on an optional boost::system::error_code variable which contains more error info which can be displayed in case of an error. Test-information: Tested using WIP code on Windows. Change-Id: I285b8aec5e9c00d3a8e0d8cc0d5e7b4c5d94c099
2015-06-29Parse hostname for xep-0233Mili Verma
Test-information: Verified with M-Link. Unit tests pass. Change-Id: Ic675c8d7cd70e01be61c51c0280e1d7208b364ba
2015-06-25Fix qt4.py tool for ArchTobias Markmann
The tool had syntax errors (missing subprocess. in front of PIPE) and SCons errors (missing conf.Finish() calls). Test-Information: Tested on Arch Linux 1.4. Change-Id: Ibab23e1dc776ee9fe96de45221c4fb9659f4a185
2015-06-18Only delete HistoryStorage if building with experimental featuresTobias Markmann
Clang raises a warning in non-experimental builds because the full type of HistoryStorage is not known and it tries to delete an instance (even though a null ptr) in the dtor. Test-Information: Tested on OS X 10.9.5 with Clang (Apple LLVM version 6.0). Change-Id: I8a06890967427af21e11e077e9ac59b67bdb810c
2015-06-18Have SCons qt4 tool check for real moc or qtchooserTobias Markmann
Some platforms, e.g. KUbuntu, provide a wrapper around Qt's commands that allow easy switching between different Qt versions. With this change SCons will execute the found moc tool and check whether it works or not. Test-Information: Tested with correctly installed Qt and uninstalled Qt on KUbuntu 14.04. Change-Id: I88f0a36af462e909829c30115aa5481abdcd3ac6
2015-06-14Fix Swiften DLL building on WindowsTobias Markmann
Template classes cannot have SWIFTEN_API annotations as with annotation code for instantiations of the template are expected to be in the DLL which cannot be guaranteed for any user type. With the complete implementation in available in the header it is not needed because 3rdParty Swiften users can instantiate an implementation as needed. This also conditionally includes SQLiteHistoryStorage.h conditionally in MemoryStorages.cpp, as otherwise the linker will expect an implementation of SQLiteHistoryStorage in the DLL. However, it is only built into the DLL if experimental features are turned on. Test-Information: Tested with experimental=on/off and swiften_dll=on/off. Change-Id: Ieec85675c167ec34cffd4745ac854a5949fb2037
2015-06-14Document the two required scons runs for Windows packagingTobias Markmann
Test-Information: None. Change-Id: Ie2a5f9430aeb849219f4bca64aa3d1871bc17dc5
2015-06-14Execute sound actions if requested and if text is highlightedTobias Markmann
HighlightRule did not consider keywords in its isMatch() routine. MUCController only triggered possible HighlightActions if it was a direct 1-to-1 MUC message or an impromptu chat message. Both issues are fixed. Additionally fixed the HighlightRuleTest. It had some wrong assertions related to rules being case insensitive by default and keywords match inside longer words by default. Test-Information: Tested with a highlight rule that highlights text and tested that sound actions are executed if the text is highlighted. Additionaly verified that other behaviour (own nick mentions, direct 1-to-1 messages) have their potential sound actions still executed. Change-Id: Ia922a1ff38c66f6458d28a18a8cdde10e821f83d
2015-06-14Add support for updating copyright on files in Copyrighter.py scriptTobias Markmann
Refactored the code to handle the following cases nicely: - no copyright for current user present yet - outdated copyright for current user present (with and without range) - copyright present and up to date Test-Information: Tested with SWIFT_LICENSE_CONFIG set to "Isode Limited|default". Change-Id: I4df475f7ecd55aebe892411b2323da50fcbca525
2015-06-14Fix SCons qt4 tool pkg-config detectionTobias Markmann
Correctly use pkg-config to test for Qt, if no qt path is specified in config.py. 'Import(…)' at the top caused an error which was hidden by try/catch at upper layer. Test-Information: Tested on Kubuntu 14.04, with and w/o qt path set and verified that no exception is thrown if Qt is registered at pkg-config. Change-Id: I82800c23e9f75bd5f6b136fe384a70165a92bb45
2015-06-11Update progress bar on incoming file transfersTobias Markmann
Test-Information: Send a file from one Swift to another. Previously the progress bar did not update in the receiving client. Now it does. Change-Id: Ie710a4c1cfc389d6fcfb93de96250a80787883d3
2015-06-10Add ability to limit SChannel to TLS 1.0Kevin Smith
Some servers have very restrictive TLS stacks that respond badly to a bug in the SChannel TLS implementation, meaning that TLS has to be limited to 1.0. Add ClientOptions.tlsOptions. This is a method of passing options into the TLS stack. It's currently only used for the TLS 1.0 workaround in SChannel, but we might reasonably expose other options in the future, such as limiting cypher suites. Disables use of SSLv3 for SChannel Also updates the coding style in SchannelContext a bit. Test-Information: Compiles on both OS X and Windows(SChannel). OS X doesn't show the new option. Windows shows it, and remembers it between logins. Not tested against a server requiring 1.0 only, but a previous hack with the same approach was tested. Change-Id: I1e7854d43811fd173f21f98d4dc3915fc7a4b322
2015-06-08Add missing SWIFTEN_API annotations to public Swiften APITobias Markmann
Test-Information: Tested build on Windows 8 with VS 2014 and ran unit tests. Change-Id: I3d8096df4801be6901f22564e36eecba0e7310c4
2015-06-05UI improvements to the ad-hoc command windowTobias Markmann
Use QDialogButtonBox instead of custom button layout code. This way the button are correctly layouted depending on platform guidelines. Show a 'Ok' button if no other button is shown which closes the window. Test-Information: Tested on OS X 10.9.5 with Qt 5.4.2. Change-Id: I37581982766d013f4d3d636880fd5ada59ee0c40
2015-06-02Fix qt4.py Scons module pkg-config support in case Qt is not presentTobias Markmann
Test-Information: Tested on Elementary OS 0.2.1 with all Qt components uninstalled. Previously it would abort configuration and build. Now it simply builds without Swift and other parts depending on Qt. Change-Id: I84c91985a0ba1fdab98e97f80621cd41e0a7507b
2015-05-31Remove magic number and fix QtVCardWidget::sizeHintTobias Markmann
This adds layout margin and spacing to the calculation of the correct size hint. Test-Information: Tested on OS X 10.9.5 with Qt 5.4.1. Change-Id: I7036f64a6621f5ce6603e77da26a887e28c663ca
2015-05-31Open profile windows in their ideal size so everything is readableTobias Markmann
Test-Information: Tested on OS X 10.9.5 with Qt 5.4.1 and Windows 8 with Qt 5.3.2 and KUbuntu 14.04 with Qt 5.4.1. Change-Id: Ia6cf54baad3020d05be94c6159aa623f7a619816
2015-05-31Overriding QtVCardWidget::sizeHint() so ideally there is no scrollingTobias Markmann
Test-Information: Tested on OS X 10.9.5 with Qt 5.4.1. Change-Id: I27ba80b9799fd8177a291ec0b8eeb0c2168e2f04
2015-05-31Layout improvements to QtVCardPhotoAndNameFieldsTobias Markmann
Layout label and editing widgets below each other instead of next to each other. This way there will not be any horizontal spacing if one of them is hidden. This also removes empty name parts in the shown fullname. Test-Information: Tested on Mac OS X 10.9.5 and Qt 5.4.1. Change-Id: I20561a8e7f8b9305cd3314b1250a2d006abbccb5
2015-05-31Overriding QtElidingLabel::sizeHint() so preferably all text is shownTobias Markmann
Test-Information: Tested on OS X 10.9.5 with Qt 5.4.1. Change-Id: I8cad307d967be32a9d67dc8408e4a27f487f6032
2015-05-26Have cl.exe write debug info to independent files for reliable parallel buildsTobias Markmann
By default cl.exe writes debug info to a static file name resulting in all cl.exe trying to write to the same file when using parallel builds. This leads to race conditions and can have parallel builds fail. This only takes effect if parallel builds are made by scons. Test-Information: Tested with VS 2013. Change-Id: I8ea7e9370f5b149ded608e4c6f5e66a3fc6301c4
2015-05-26Fix trellis related bugsTobias Markmann
Bugs like: * Tab title not matching shown chat window * Duplicated tab titles after tab movement Swift is also subject to QTBUG-36455, which is fixed for Qt >= 5.3.0. This commit removes the use of application wide focus handlers in QtChatWindow class, the QtChatWindow::qAppFocusChanged method. The reason for this is due to the way QTabBar::moveTab is implemented in Qt which we use for the Trellis feature. Internally QTabBar::moveTab first adjusts its tab bar labels, then removes the tab from its old location in the internal QStackedLayout and then inserts it in the new location. After the remove Qt gives focus to another widget via a focus change that does not go through the event loop of the application and is not interceptable with eventFilters. Previously we would set the focus and call other signals in the application wide focus change handler which then used the currently inconsistent QTabBar/QTabWidget. Test-Information: Tested tab switching and movement on Windows 8 (Qt 5.3.2), OS X 10.9.5 (Qt 5.4.3) and Ubuntu 14.04.2 LTS (Qt 5.4.3). Change-Id: Ief423c4add58a90279109f72fac95fc58cb71111
2015-05-26Fix crash when sending a file to yourselfTobias Markmann
Use scoped_connection to prevent missing disconnection from signals. Stop and free S5BServer when stopping SOCKS5BytestreamServerManager. Test-Information: Tried sending a file to myself multiple times and it did not crash. Change-Id: If32075d8e9c243cab254776b924248227520e030
2015-05-26Set QtGetridSelectionDialog to frameless window to enable cursor changesTobias Markmann
Popup windows cannot change the mouse cursor on OS X. A frameless window looks the same. Test-Information: Tested on OS X 10.9.5 with Qt 5.4. Change-Id: Ia97e645be2ad1e5063f0cd8ef54344b63274b2d1
2015-05-26Add visual resize indicator in bottom right corner of QtGridSelectionDialogTobias Markmann
Test-Information: Tested on Mac OS X 10.9.5 with Qt 5.4. Change-Id: I7581ae478fb347bb468b28997be963799b82b2cb
2015-05-26Fix SCons architecture detection on FreeBSD 10Tobias Markmann
Test-Information: Tested on FreeBSD 10.0. Change-Id: Ic1c8a1637f0fbc9128973b41d6988a8afd61e387
2015-05-26Fix compilation on FreeBSD 10Tobias Markmann
Configuration for LibMiniUPNPc did not detect size of ip_mreqn correctly. Test-Information: Tested on FreeBSD 10. Change-Id: I5d91695b6ec2f1ad91e4fe6bf0e73876fef4fa8b
2015-05-20Usability improvements to "Enter Room" dialogTobias Markmann
Require valid room JID to proceed with entering a room. Provide user feedback via tooltips on invalid input in the room and nickname field. Test-Information: Tested with invalid room JID and empty nickanme on OS X 10.9.5 and Qt 5.4.0. Change-Id: I8d8c75f5712f27cc72cce2d6dd16dbbea4fb504a
2015-05-20Limit Qt placeholder text workaround to affected versionsTobias Markmann
The workaround was fixed with QTBUG-33237 and is not needed anymore. Test-Information: Tested on OS X 10.9.5 with Qt 5.4.0. Change-Id: Ie6a101749c816a082f31ac83085e098b3aa328aa
2015-05-19Consolidate Python and SCons files to tab based indentationTobias Markmann
Test-Information: Verified that SCons still runs on OS X. Change-Id: I7e9b97f90ee5581a691a959b6f2c999d93e0be53
2015-05-19Enforce tab-only indentation in Python and SCons filesTobias Markmann
This also converts CheckTabs.py script to tab indentation. Test-Information: Ran the script over all files in our repo and it detected space and mixed indented Python files. Change-Id: Ifed86d64c8e87ed55e85ef4d35157e312b937291
2015-05-19Gracefully handle pkg-config when Qt is not installedTobias Markmann
Test-Information: Tested on Elementary OS 0.2.0. Without this patch scons crashed if not all required Qt libs are installed. Now it marks Qt as unavailable and will configure a build without Swift. Change-Id: I5aa28ab8438e4c326d16413deb3a3fa739c94480
2015-05-07Add support for Qt 5.4.1 to build and distribution process on WindowsTobias Markmann
Test-Information: Tested with Qt 5.3.2 and Qt 5.4.1 from qt.io website. Change-Id: Iada3e64e530d8a5b53b8b5c8943bcafbd9bd6c64
2015-05-05Fix scons2ninja.py for WindowsTobias Markmann
shlex.split has a 3rd parameter specifying whether or not to run in POSIX mode, which defaults to True. This breaks splitting of Windows paths so it is set to False on Windows. Test-Information: Tested on OS X 10.9.5 and Windows 8. Change-Id: Icdc9fc07e89a80249526daa8f13dba081f957670
2015-05-04Hide 3rdParty warnings for LibIDN and LibMiniUPnPc with Clang/GCCTobias Markmann
Test-Information: Tested behavior on Elementary OS 0.2.1. Change-Id: I5f4c77202e000f691682caf06df7c1f7976299c4
2015-05-04Correctly handle full paths when detecting Clang/GCC compilersTobias Markmann
Test-Information: Tested behavior on Elementary OS 0.2.1. Change-Id: I887b85b78bfe5210844e0ea31f496fdbc8c21fa0
2015-05-04Ignore 3rdParty warnings on Linux platforms when using Clang or GCCTobias Markmann
Test-Information: Tested behavior on Elementary OS 0.2.1. Change-Id: Icc0611181fbf7dbe22d6c0c8cb18be9c1cdbc138
2015-05-01Fix typoTobias Markmann
Change-Id: Ieeb9636b40bfd43b9b79dede71eefc288e6014d2
2015-05-01Add an EventOwner to NATTraversalRequests so that accociated objects are not ↵Tobias Markmann
released early This patch also disconnects possible slots on stop() from the signals. Test-Infromation: This fixes a crash that occured during testing with ConcurrentFileTransferTest. Change-Id: I2b443f40ac3359c8142fcffc084647312b9a1e76
2015-05-01Fix hash verification in Jingle FT to only verify one hash algorithmTobias Markmann
This also adds missing resets pointers to NULL after they are deleted. Test-Information: FileTransferTest crashed in some scenarios before; now it always runs successful. Change-Id: Ic63fd51eeb46e708221a04dc912e8bf2f1d4f9fb
2015-05-01Only close unneedded S5B connections on the S5B server if a S5B server is ↵Tobias Markmann
running Add a check on whether we have a running SOCKS5 bytestream server before trying to access it to close unneeded S5B connections to it after we decided on a candidate to use. Test-Information: Without this FileTransferTest crashes in the configuration that does not allow direct or assisted S5B connections. This patch fixes this issue. Change-Id: Ifcf59f82755b9620e7f5fa5841e45815a41ac442
2015-05-01Add resource management for S5B server and port forwardingsTobias Markmann
This patchs adds management of the SOCKS5 bytestream server and port forwarding setup to Swiften. The first file-transfer, regardless of incoming or outgoing transfer, will start and initialize the S5B server and if configured try to set up port forwarding. The last file-transfer to finish will will close the server and remove the port forwarding. Test-Information: Tested with upcoming ConcurrentFileTransferTest.cpp and running multiple S5B file-transfers in parallel. Change-Id: Idd09d3d0ef9498fc9435b0aee81f2b1061783342
2015-04-30Disable potentially-evaluated-expression Clang warningTobias Markmann
Test-Information: Verified with Clang 3.7.0 on OS X. Change-Id: I345ef288163214288d41c3980c8e67529db0657d
2015-04-30Honour global sluift timeout setting in add/remove contactEdwin Mons
The add_contact and remove_contact calls used a fixed timeout of -1, which could cause the operation to hang forever, even when a timeout was set. Test-Information: add_contact and remove_contact properly honour global timeout on a broken connection. Change-Id: I6bd877a8123ddab87b1f653c0cfda7a6b101dae7