├── .appveyor.yml ├── .clang-format ├── .github ├── pull_request_template.md ├── pull_request_template.md.license └── workflows │ ├── push-docs.yml │ └── tests.yml ├── .gitignore ├── AUTHORS ├── CHANGELOG.md ├── CMakeLists.txt ├── CONTRIBUTING.md ├── LICENSES ├── CC-BY-SA-4.0.txt ├── CC0-1.0.txt ├── LGPL-2.1-or-later.txt ├── LicenseRef-MIT-variant.txt └── MIT.txt ├── QXmppConfig.cmake.in ├── README.md ├── SECURITY.md ├── cmake ├── QXmppLegacyConfig.cmake.in ├── QXmppLegacyConfigVersion.cmake └── modules │ ├── FindGLIB2.cmake │ ├── FindGObject.cmake │ ├── FindGStreamer.cmake │ └── MacroFindGStreamerLibrary.cmake ├── doc ├── CMakeLists.txt ├── Doxyfile.in ├── doap-rendering │ ├── README.md │ ├── doap.css │ ├── doap.xsl │ ├── update-xeplist.sh │ ├── xeplist.xml │ └── xeplist.xml.license ├── doap.xml ├── index.doc ├── using.doc └── xep.doc ├── examples ├── CMakeLists.txt ├── example_0_connected │ ├── README │ └── example_0_connected.cpp ├── example_1_echoClient │ ├── README │ ├── example_1_echoClient.cpp │ └── example_1_echoClient.h ├── example_2_rosterHandling │ ├── README │ ├── example_2_rosterHandling.cpp │ └── example_2_rosterHandling.h ├── example_3_transferHandling │ ├── example_3_transferHandling.cpp │ ├── example_3_transferHandling.h │ └── example_3_transferHandling.qrc ├── example_5_rpcInterface │ ├── CMakeLists.txt │ ├── main.cpp │ ├── remoteinterface.cpp │ ├── remoteinterface.h │ ├── xmlrpctest.txt │ └── xmlrpctest.txt.license ├── example_6_rpcClient │ ├── CMakeLists.txt │ ├── main.cpp │ ├── rpcClient.cpp │ └── rpcClient.h ├── example_7_archiveHandling │ ├── example_7_archiveHandling.cpp │ └── example_7_archiveHandling.h ├── example_8_server │ └── example_8_server.cpp └── example_9_vCard │ ├── CMakeLists.txt │ ├── README │ ├── example_9_vCard.cpp │ └── example_9_vCard.h ├── logo.svg ├── logo.svg.license ├── qxmpp.pc.in ├── qxmpp_legacy.pc.in ├── src ├── CMakeLists.txt ├── base │ ├── Algorithms.h │ ├── QXmppArchiveIq.cpp │ ├── QXmppArchiveIq.h │ ├── QXmppBindIq.cpp │ ├── QXmppBindIq.h │ ├── QXmppBitsOfBinaryContentId.cpp │ ├── QXmppBitsOfBinaryContentId.h │ ├── QXmppBitsOfBinaryData.cpp │ ├── QXmppBitsOfBinaryData.h │ ├── QXmppBitsOfBinaryDataList.h │ ├── QXmppBitsOfBinaryIq.cpp │ ├── QXmppBitsOfBinaryIq.h │ ├── QXmppBookmarkSet.cpp │ ├── QXmppBookmarkSet.h │ ├── QXmppByteStreamIq.cpp │ ├── QXmppByteStreamIq.h │ ├── QXmppColorGeneration.cpp │ ├── QXmppColorGeneration.h │ ├── QXmppConstants_p.h │ ├── QXmppDataForm.cpp │ ├── QXmppDataForm.h │ ├── QXmppDataFormBase.cpp │ ├── QXmppDataFormBase.h │ ├── QXmppDiscoveryIq.cpp │ ├── QXmppDiscoveryIq.h │ ├── QXmppE2eeMetadata.h │ ├── QXmppElement.cpp │ ├── QXmppElement.h │ ├── QXmppEncryptedFileSource.cpp │ ├── QXmppEncryptedFileSource.h │ ├── QXmppEntityTimeIq.cpp │ ├── QXmppEntityTimeIq.h │ ├── QXmppError.cpp │ ├── QXmppError.h │ ├── QXmppExtension.h │ ├── QXmppExternalService.h │ ├── QXmppExternalServiceDiscoveryIq.cpp │ ├── QXmppExternalServiceDiscoveryIq.h │ ├── QXmppFallback.h │ ├── QXmppFileMetadata.cpp │ ├── QXmppFileMetadata.h │ ├── QXmppFileShare.cpp │ ├── QXmppFileShare.h │ ├── QXmppFutureUtils_p.h │ ├── QXmppGeolocItem.cpp │ ├── QXmppGeolocItem.h │ ├── QXmppGlobal.cpp │ ├── QXmppGlobal.h │ ├── QXmppGlobal_p.h │ ├── QXmppHash.cpp │ ├── QXmppHash.h │ ├── QXmppHashing.cpp │ ├── QXmppHashing_p.h │ ├── QXmppHttpFileSource.cpp │ ├── QXmppHttpFileSource.h │ ├── QXmppHttpUploadIq.cpp │ ├── QXmppHttpUploadIq.h │ ├── QXmppIbbIq.cpp │ ├── QXmppIbbIq.h │ ├── QXmppIq.cpp │ ├── QXmppIq.h │ ├── QXmppJingleData.cpp │ ├── QXmppJingleData.h │ ├── QXmppJingleIq.h │ ├── QXmppLogger.cpp │ ├── QXmppLogger.h │ ├── QXmppMamIq.cpp │ ├── QXmppMamIq.h │ ├── QXmppMessage.cpp │ ├── QXmppMessage.h │ ├── QXmppMessageReaction.cpp │ ├── QXmppMessageReaction.h │ ├── QXmppMixConfigItem.h │ ├── QXmppMixInfoItem.h │ ├── QXmppMixInvitation.cpp │ ├── QXmppMixInvitation.h │ ├── QXmppMixIq.cpp │ ├── QXmppMixIq.h │ ├── QXmppMixIq_p.h │ ├── QXmppMixItems.cpp │ ├── QXmppMixParticipantItem.h │ ├── QXmppMucIq.cpp │ ├── QXmppMucIq.h │ ├── QXmppNonSASLAuth.cpp │ ├── QXmppNonSASLAuth.h │ ├── QXmppNonza.cpp │ ├── QXmppNonza.h │ ├── QXmppOmemoDataBase.cpp │ ├── QXmppOmemoElement_p.h │ ├── QXmppOmemoEnvelope_p.h │ ├── QXmppOutOfBandUrl.cpp │ ├── QXmppOutOfBandUrl.h │ ├── QXmppPacket.cpp │ ├── QXmppPacket_p.h │ ├── QXmppPingIq.cpp │ ├── QXmppPingIq.h │ ├── QXmppPresence.cpp │ ├── QXmppPresence.h │ ├── QXmppPromise.h │ ├── QXmppPubSubAffiliation.cpp │ ├── QXmppPubSubAffiliation.h │ ├── QXmppPubSubBaseItem.cpp │ ├── QXmppPubSubBaseItem.h │ ├── QXmppPubSubEvent.cpp │ ├── QXmppPubSubEvent.h │ ├── QXmppPubSubIq.cpp │ ├── QXmppPubSubIq_p.h │ ├── QXmppPubSubMetadata.cpp │ ├── QXmppPubSubMetadata.h │ ├── QXmppPubSubNodeConfig.cpp │ ├── QXmppPubSubNodeConfig.h │ ├── QXmppPubSubPublishOptions.h │ ├── QXmppPubSubSubAuthorization.cpp │ ├── QXmppPubSubSubAuthorization.h │ ├── QXmppPubSubSubscribeOptions.cpp │ ├── QXmppPubSubSubscribeOptions.h │ ├── QXmppPubSubSubscription.cpp │ ├── QXmppPubSubSubscription.h │ ├── QXmppPushEnableIq.cpp │ ├── QXmppPushEnableIq.h │ ├── QXmppRegisterIq.cpp │ ├── QXmppRegisterIq.h │ ├── QXmppResultSet.cpp │ ├── QXmppResultSet.h │ ├── QXmppRosterIq.cpp │ ├── QXmppRosterIq.h │ ├── QXmppRpcIq.cpp │ ├── QXmppRpcIq.h │ ├── QXmppSasl.cpp │ ├── QXmppSasl2UserAgent.h │ ├── QXmppSasl_p.h │ ├── QXmppSendResult.h │ ├── QXmppSocks.cpp │ ├── QXmppSocks.h │ ├── QXmppStanza.cpp │ ├── QXmppStanza.h │ ├── QXmppStanza_p.h │ ├── QXmppStreamError.h │ ├── QXmppStreamError_p.h │ ├── QXmppStreamFeatures.cpp │ ├── QXmppStreamFeatures.h │ ├── QXmppStreamInitiationIq.cpp │ ├── QXmppStreamInitiationIq_p.h │ ├── QXmppStreamManagement.cpp │ ├── QXmppStreamManagement_p.h │ ├── QXmppStun.cpp │ ├── QXmppStun.h │ ├── QXmppStun_p.h │ ├── QXmppTask.cpp │ ├── QXmppTask.h │ ├── QXmppThumbnail.cpp │ ├── QXmppThumbnail.h │ ├── QXmppTrustMessageElement.h │ ├── QXmppTrustMessageKeyOwner.h │ ├── QXmppTrustMessages.cpp │ ├── QXmppTrustMessages.h │ ├── QXmppUri.cpp │ ├── QXmppUri.h │ ├── QXmppUserTuneItem.cpp │ ├── QXmppUserTuneItem.h │ ├── QXmppUtils.cpp │ ├── QXmppUtils.h │ ├── QXmppUtils_p.h │ ├── QXmppVCardIq.cpp │ ├── QXmppVCardIq.h │ ├── QXmppVersionIq.cpp │ ├── QXmppVersionIq.h │ ├── Stream.cpp │ ├── Stream.h │ ├── StringLiterals.h │ ├── XmppSocket.h │ ├── compat │ │ ├── QXmppPubSubIq.h │ │ ├── QXmppPubSubItem.h │ │ ├── QXmppSessionIq.h │ │ ├── QXmppStartTlsPacket.h │ │ └── removed_api.cpp │ └── hsluv │ │ ├── hsluv.c │ │ └── hsluv.h ├── client │ ├── QXmppAccountMigrationManager.cpp │ ├── QXmppAccountMigrationManager.h │ ├── QXmppArchiveManager.cpp │ ├── QXmppArchiveManager.h │ ├── QXmppAtmManager.cpp │ ├── QXmppAtmManager.h │ ├── QXmppAtmTrustMemoryStorage.cpp │ ├── QXmppAtmTrustMemoryStorage.h │ ├── QXmppAtmTrustStorage.cpp │ ├── QXmppAtmTrustStorage.h │ ├── QXmppAttentionManager.cpp │ ├── QXmppAttentionManager.h │ ├── QXmppAuthenticationError.h │ ├── QXmppBindError.h │ ├── QXmppBlockingManager.cpp │ ├── QXmppBlockingManager.h │ ├── QXmppBookmarkManager.cpp │ ├── QXmppBookmarkManager.h │ ├── QXmppCall.cpp │ ├── QXmppCall.h │ ├── QXmppCallInviteManager.cpp │ ├── QXmppCallInviteManager.h │ ├── QXmppCallManager.cpp │ ├── QXmppCallManager.h │ ├── QXmppCallManager_p.h │ ├── QXmppCallStream.cpp │ ├── QXmppCallStream.h │ ├── QXmppCallStream_p.h │ ├── QXmppCall_p.h │ ├── QXmppCarbonManager.cpp │ ├── QXmppCarbonManager.h │ ├── QXmppCarbonManagerV2.cpp │ ├── QXmppCarbonManagerV2.h │ ├── QXmppClient.cpp │ ├── QXmppClient.h │ ├── QXmppClientExtension.cpp │ ├── QXmppClientExtension.h │ ├── QXmppClient_p.h │ ├── QXmppConfiguration.cpp │ ├── QXmppConfiguration.h │ ├── QXmppCredentials.h │ ├── QXmppDiscoveryManager.cpp │ ├── QXmppDiscoveryManager.h │ ├── QXmppE2eeExtension.cpp │ ├── QXmppE2eeExtension.h │ ├── QXmppEncryptedFileSharingProvider.cpp │ ├── QXmppEncryptedFileSharingProvider.h │ ├── QXmppEntityTimeManager.cpp │ ├── QXmppEntityTimeManager.h │ ├── QXmppExternalServiceDiscoveryManager.cpp │ ├── QXmppExternalServiceDiscoveryManager.h │ ├── QXmppFileEncryption.cpp │ ├── QXmppFileEncryption.h │ ├── QXmppFileSharingManager.cpp │ ├── QXmppFileSharingManager.h │ ├── QXmppFileSharingProvider.h │ ├── QXmppHttpFileSharingProvider.cpp │ ├── QXmppHttpFileSharingProvider.h │ ├── QXmppHttpUploadManager.cpp │ ├── QXmppHttpUploadManager.h │ ├── QXmppInvokable.cpp │ ├── QXmppInvokable.h │ ├── QXmppIqHandling.cpp │ ├── QXmppIqHandling.h │ ├── QXmppJingleMessageInitiationManager.cpp │ ├── QXmppJingleMessageInitiationManager.h │ ├── QXmppMamManager.cpp │ ├── QXmppMamManager.h │ ├── QXmppMessageHandler.cpp │ ├── QXmppMessageHandler.h │ ├── QXmppMessageReceiptManager.cpp │ ├── QXmppMessageReceiptManager.h │ ├── QXmppMixManager.cpp │ ├── QXmppMixManager.h │ ├── QXmppMovedItem_p.h │ ├── QXmppMovedManager.cpp │ ├── QXmppMovedManager.h │ ├── QXmppMucManager.cpp │ ├── QXmppMucManager.h │ ├── QXmppOutgoingClient.cpp │ ├── QXmppOutgoingClient.h │ ├── QXmppOutgoingClient_p.h │ ├── QXmppPep_p.h │ ├── QXmppPubSubEventHandler.h │ ├── QXmppPubSubManager.cpp │ ├── QXmppPubSubManager.h │ ├── QXmppRegistrationManager.cpp │ ├── QXmppRegistrationManager.h │ ├── QXmppRemoteMethod.cpp │ ├── QXmppRemoteMethod.h │ ├── QXmppRosterManager.cpp │ ├── QXmppRosterManager.h │ ├── QXmppRpcManager.cpp │ ├── QXmppRpcManager.h │ ├── QXmppSaslManager.cpp │ ├── QXmppSaslManager_p.h │ ├── QXmppSceEnvelope_p.h │ ├── QXmppSendStanzaParams.cpp │ ├── QXmppSendStanzaParams.h │ ├── QXmppTransferManager.cpp │ ├── QXmppTransferManager.h │ ├── QXmppTransferManager_p.h │ ├── QXmppTrustLevel.h │ ├── QXmppTrustManager.cpp │ ├── QXmppTrustManager.h │ ├── QXmppTrustMemoryStorage.cpp │ ├── QXmppTrustMemoryStorage.h │ ├── QXmppTrustSecurityPolicy.h │ ├── QXmppTrustStorage.cpp │ ├── QXmppTrustStorage.h │ ├── QXmppUploadRequestManager.cpp │ ├── QXmppUploadRequestManager.h │ ├── QXmppUserLocationManager.cpp │ ├── QXmppUserLocationManager.h │ ├── QXmppUserTuneManager.cpp │ ├── QXmppUserTuneManager.h │ ├── QXmppVCardManager.cpp │ ├── QXmppVCardManager.h │ ├── QXmppVersionManager.cpp │ ├── QXmppVersionManager.h │ ├── QcaInitializer.cpp │ ├── QcaInitializer_p.h │ └── compat │ │ └── removed_api.cpp ├── omemo │ ├── CMakeLists.txt │ ├── OmemoCryptoProvider.cpp │ ├── OmemoCryptoProvider.h │ ├── OmemoLibWrappers.h │ ├── QXmppOmemoConfig.cmake.in │ ├── QXmppOmemoData.cpp │ ├── QXmppOmemoDeviceBundle_p.h │ ├── QXmppOmemoDeviceElement_p.h │ ├── QXmppOmemoDeviceList_p.h │ ├── QXmppOmemoIq_p.h │ ├── QXmppOmemoItems_p.h │ ├── QXmppOmemoManager.cpp │ ├── QXmppOmemoManager.h │ ├── QXmppOmemoManager_p.cpp │ ├── QXmppOmemoManager_p.h │ ├── QXmppOmemoMemoryStorage.cpp │ ├── QXmppOmemoMemoryStorage.h │ ├── QXmppOmemoStorage.cpp │ ├── QXmppOmemoStorage.h │ └── README.md └── server │ ├── QXmppDialback.cpp │ ├── QXmppDialback.h │ ├── QXmppIncomingClient.cpp │ ├── QXmppIncomingClient.h │ ├── QXmppIncomingServer.cpp │ ├── QXmppIncomingServer.h │ ├── QXmppOutgoingServer.cpp │ ├── QXmppOutgoingServer.h │ ├── QXmppPasswordChecker.cpp │ ├── QXmppPasswordChecker.h │ ├── QXmppServer.cpp │ ├── QXmppServer.h │ ├── QXmppServerExtension.cpp │ ├── QXmppServerExtension.h │ ├── QXmppServerPlugin.cpp │ └── QXmppServerPlugin.h ├── tests ├── CMakeLists.txt ├── IntegrationTesting.h ├── TestClient.h ├── pubsubutil.h ├── qxmppaccountmigrationmanager │ └── tst_qxmppaccountmigrationmanager.cpp ├── qxmpparchiveiq │ └── tst_qxmpparchiveiq.cpp ├── qxmppatmmanager │ └── tst_qxmppatmmanager.cpp ├── qxmppattentionmanager │ └── tst_qxmppattentionmanager.cpp ├── qxmppbindiq │ └── tst_qxmppbindiq.cpp ├── qxmppbitsofbinarycontentid │ └── tst_qxmppbitsofbinarycontentid.cpp ├── qxmppbitsofbinaryiq │ └── tst_qxmppbitsofbinaryiq.cpp ├── qxmppblockingmanager │ └── tst_qxmppblockingmanager.cpp ├── qxmppcallinvitemanager │ └── tst_qxmppcallinvitemanager.cpp ├── qxmppcallmanager │ └── tst_qxmppcallmanager.cpp ├── qxmppcarbonmanager │ └── tst_qxmppcarbonmanager.cpp ├── qxmppclient │ └── tst_qxmppclient.cpp ├── qxmppdataform │ └── tst_qxmppdataform.cpp ├── qxmppdiscoveryiq │ └── tst_qxmppdiscoveryiq.cpp ├── qxmppdiscoverymanager │ └── tst_qxmppdiscoverymanager.cpp ├── qxmppentitytimeiq │ └── tst_qxmppentitytimeiq.cpp ├── qxmppentitytimemanager │ └── tst_qxmppentitytimemanager.cpp ├── qxmppexternalservicediscoveryiq │ └── tst_qxmppexternalservicediscoveryiq.cpp ├── qxmppexternalservicediscoverymanager │ └── tst_qxmppexternalservicediscoverymanager.cpp ├── qxmppfileencryption │ └── tst_qxmppfileencryption.cpp ├── qxmpphttpuploadiq │ └── tst_qxmpphttpuploadiq.cpp ├── qxmpphttpuploadmanager │ ├── CMakeLists.txt │ ├── test.svg │ ├── test.svg.license │ ├── tst_qxmpphttpuploadmanager.cpp │ └── tst_qxmpphttpuploadmanager.qrc ├── qxmppiceconnection │ └── tst_qxmppiceconnection.cpp ├── qxmppiq │ └── tst_qxmppiq.cpp ├── qxmppjingledata │ └── tst_qxmppjingledata.cpp ├── qxmppjinglemessageinitiationmanager │ └── tst_qxmppjinglemessageinitiationmanager.cpp ├── qxmppmammanager │ └── tst_qxmppmammanager.cpp ├── qxmppmessage │ └── tst_qxmppmessage.cpp ├── qxmppmessagereaction │ └── tst_qxmppmessagereaction.cpp ├── qxmppmessagereceiptmanager │ └── tst_qxmppmessagereceiptmanager.cpp ├── qxmppmixinvitation │ └── tst_qxmppmixinvitation.cpp ├── qxmppmixiq │ └── tst_qxmppmixiq.cpp ├── qxmppmixitems │ └── tst_qxmppmixitems.cpp ├── qxmppmixmanager │ └── tst_qxmppmixmanager.cpp ├── qxmppmovedmanager │ └── tst_qxmppmovedmanager.cpp ├── qxmppnonsaslauthiq │ └── tst_qxmppnonsaslauthiq.cpp ├── qxmppomemodata │ └── tst_qxmppomemodata.cpp ├── qxmppomemomanager │ └── tst_qxmppomemomanager.cpp ├── qxmppomemomemorystorage │ └── tst_qxmppomemomemorystorage.cpp ├── qxmpppresence │ └── tst_qxmpppresence.cpp ├── qxmpppubsub │ └── tst_qxmpppubsub.cpp ├── qxmpppubsubevent │ └── tst_qxmpppubsubevent.cpp ├── qxmpppubsubforms │ └── tst_qxmpppubsubforms.cpp ├── qxmpppubsubiq │ └── tst_qxmpppubsubiq.cpp ├── qxmpppubsubmanager │ └── tst_qxmpppubsubmanager.cpp ├── qxmpppushenableiq │ └── tst_qxmpppushenableiq.cpp ├── qxmppregisteriq │ └── tst_qxmppregisteriq.cpp ├── qxmppregistrationmanager │ └── tst_qxmppregistrationmanager.cpp ├── qxmppresultset │ └── tst_qxmppresultset.cpp ├── qxmpprosteriq │ └── tst_qxmpprosteriq.cpp ├── qxmpprostermanager │ └── tst_qxmpprostermanager.cpp ├── qxmpprpciq │ └── tst_qxmpprpciq.cpp ├── qxmppsasl │ └── tst_qxmppsasl.cpp ├── qxmppsceenvelope │ └── tst_qxmppsceenvelope.cpp ├── qxmppserver │ └── tst_qxmppserver.cpp ├── qxmppsocks │ └── tst_qxmppsocks.cpp ├── qxmppstanza │ └── tst_qxmppstanza.cpp ├── qxmppstream │ ├── cd │ └── tst_qxmppstream.cpp ├── qxmppstreamfeatures │ └── tst_qxmppstreamfeatures.cpp ├── qxmppstreaminitiationiq │ └── tst_qxmppstreaminitiationiq.cpp ├── qxmppstunmessage │ └── tst_qxmppstunmessage.cpp ├── qxmpptransfermanager │ ├── CMakeLists.txt │ ├── test.svg │ ├── test.svg.license │ ├── tst_qxmpptransfermanager.cpp │ └── tst_qxmpptransfermanager.qrc ├── qxmpptrustmemorystorage │ └── tst_qxmpptrustmemorystorage.cpp ├── qxmpptrustmessages │ └── tst_qxmpptrustmessages.cpp ├── qxmppuri │ └── tst_qxmppuri.cpp ├── qxmppuserlocationmanager │ └── tst_qxmppuserlocationmanager.cpp ├── qxmppusertunemanager │ └── tst_qxmppusertunemanager.cpp ├── qxmpputils │ ├── CMakeLists.txt │ ├── test.bmp │ ├── test.bmp.license │ ├── test.gif │ ├── test.gif.license │ ├── test.jpg │ ├── test.jpg.license │ ├── test.mng │ ├── test.mng.license │ ├── test.png │ ├── test.png.license │ ├── test.svg │ ├── test.svg.license │ ├── test.xpm │ ├── test.xpm.license │ ├── tst_qxmpputils.cpp │ └── tst_qxmpputils.qrc ├── qxmppvcardiq │ └── tst_qxmppvcardiq.cpp ├── qxmppvcardmanager │ └── tst_qxmppvcardmanager.cpp ├── qxmppversioniq │ └── tst_qxmppversioniq.cpp ├── qxmppversionmanager │ └── tst_qxmppversionmanager.cpp ├── travis │ ├── build-and-test │ ├── build-documentation │ ├── install-build-depends-debian │ ├── install-build-depends-macos │ └── push-documentation └── util.h └── utils ├── pre-commit.sh ├── render-graphics.sh └── setup-hooks.sh /.appveyor.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2018 Jeremy Lainé 2 | # 3 | # SPDX-License-Identifier: CC0-1.0 4 | 5 | platform: x64 6 | 7 | environment: 8 | matrix: 9 | - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 10 | GENERATOR: Visual Studio 15 2017 Win64 11 | QTDIR: C:\Qt\5.11\msvc2017_64 12 | 13 | build: 14 | parallel: true 15 | 16 | build_script: 17 | - mkdir build 18 | - cd build 19 | - cmake -G "%GENERATOR%" .. "-DCMAKE_PREFIX_PATH=%QTDIR%" 20 | - cmake --build . 21 | -------------------------------------------------------------------------------- /.clang-format: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2019 Georg Rudoy <0xd34df00d@gmail.com> 2 | # 3 | # SPDX-License-Identifier: CC0-1.0 4 | 5 | AlignAfterOpenBracket: Align 6 | AlignTrailingComments: true 7 | BasedOnStyle: WebKit 8 | BraceWrapping: 9 | AfterClass: true 10 | AfterFunction: true 11 | AfterStruct: false 12 | SplitEmptyRecord: false 13 | BreakAfterAttributes: Always 14 | BreakBeforeBinaryOperators: None 15 | BreakBeforeBraces: Custom 16 | BreakBeforeTernaryOperators: true 17 | BreakConstructorInitializers: BeforeColon 18 | BreakStringLiterals: true 19 | DisableFormat: false 20 | FixNamespaceComments: true 21 | IncludeBlocks: Regroup 22 | IncludeCategories: 23 | - Regex: "^.QXmpp.*" 24 | Priority: 1 25 | - Regex: "^\".*\"$" 26 | Priority: 2 27 | - Regex: "^ tests/` 7 | 8 | 12 | -------------------------------------------------------------------------------- /.github/pull_request_template.md.license: -------------------------------------------------------------------------------- 1 | SPDX-FileCopyrightText: 2021 Linus Jahn 2 | 3 | SPDX-License-Identifier: CC0-1.0 4 | -------------------------------------------------------------------------------- /.github/workflows/push-docs.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2020 Linus Jahn 2 | # 3 | # SPDX-License-Identifier: CC0-1.0 4 | 5 | --- 6 | name: push-docs 7 | 8 | on: 9 | push: 10 | branches: 11 | - master 12 | 13 | jobs: 14 | push-doc: 15 | runs-on: ubuntu-latest 16 | env: 17 | PUSH_KEY_REPO_DOC_QXMPP_ORG: ${{ secrets.PUSH_KEY_REPO_DOC_QXMPP_ORG }} 18 | CONFIG: full 19 | steps: 20 | - uses: actions/checkout@v3 21 | - name: Install Qt 22 | uses: jurplel/install-qt-action@v4 23 | - name: Install extra packages 24 | run: tests/travis/install-build-depends-debian 25 | - name: Update XEP metadata 26 | run: doc/doap-rendering/update-xeplist.sh 27 | - name: Build documentation 28 | run: tests/travis/push-documentation 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2010 Boris Pek 2 | # 3 | # SPDX-License-Identifier: CC0-1.0 4 | 5 | CMakeLists.txt.* 6 | .DS_Store 7 | /build* 8 | .kdev4/ 9 | *.kdev4 10 | support-chat-avatar.png 11 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | SPDX-FileCopyrightText: 2010 Jeremy Lainé 2 | SPDX-License-Identifier: CC0-1.0 3 | 4 | QXMPP AUTHORS 5 | ------------- 6 | 7 | Manjeet Dahiya 8 | * Initial author of QXmpp. 9 | 10 | Jeremy Lainé 11 | * Co-author of QXmpp. 12 | 13 | Linus Jahn 14 | * Current lead developer of QXmpp. 15 | 16 | Ian Reinhart Geiser 17 | * Initial author of Jabber-RPC support. 18 | 19 | Georg Rudoy <0xd34df00d@gmail.com> 20 | * Author of receipts manager, extended stanza addressing. 21 | 22 | Niels Ole Salscheider 23 | * Build system, cleanups. 24 | 25 | Oliver Goffart 26 | * Author of QXmppResultSet. 27 | -------------------------------------------------------------------------------- /LICENSES/LicenseRef-MIT-variant.txt: -------------------------------------------------------------------------------- 1 | Redistribution and use in source and binary forms, with or without 2 | modification, are permitted provided that the following conditions 3 | are met: 4 | 5 | 1. Redistributions of source code must retain the copyright 6 | notice, this list of conditions and the following disclaimer. 7 | 2. Redistributions in binary form must reproduce the copyright 8 | notice, this list of conditions and the following disclaimer in the 9 | documentation and/or other materials provided with the distribution. 10 | 3. The name of the author may not be used to endorse or promote products 11 | derived from this software without specific prior written permission. 12 | 13 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 14 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 15 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 16 | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 17 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 18 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 19 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 20 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 | -------------------------------------------------------------------------------- /LICENSES/MIT.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 6 | associated documentation files (the "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the 9 | following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all copies or substantial 12 | portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 15 | LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO 16 | EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 17 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 18 | USE OR OTHER DEALINGS IN THE SOFTWARE. 19 | -------------------------------------------------------------------------------- /QXmppConfig.cmake.in: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2017 Niels Ole Salscheider 2 | # 3 | # SPDX-License-Identifier: CC0-1.0 4 | 5 | @PACKAGE_INIT@ 6 | 7 | set(_QXmpp_FIND_PARTS_REQUIRED) 8 | if(QXmppQt@QT_VERSION_MAJOR@_FIND_REQUIRED) 9 | set(_QXmpp_FIND_PARTS_REQUIRED REQUIRED) 10 | endif() 11 | set(_QXmpp_FIND_PARTS_QUIET) 12 | if(QXmppQt@QT_VERSION_MAJOR@_FIND_QUIETLY) 13 | set(_QXmpp_FIND_PARTS_QUIET QUIET) 14 | endif() 15 | 16 | include(CMakeFindDependencyMacro) 17 | find_dependency(Qt@QT_VERSION_MAJOR@Core) 18 | find_dependency(Qt@QT_VERSION_MAJOR@Network) 19 | find_dependency(Qt@QT_VERSION_MAJOR@Xml) 20 | 21 | include("${CMAKE_CURRENT_LIST_DIR}/QXmpp.cmake") 22 | 23 | foreach(module ${QXmppQt@QT_VERSION_MAJOR@_FIND_COMPONENTS}) 24 | find_package(QXmpp${module}Qt@QT_VERSION_MAJOR@ 25 | ${QXmppQt@QT_VERSION_MAJOR@_FIND_VERSION} 26 | ${_QXmpp_FIND_PARTS_REQUIRED} 27 | ${_QXmpp_FIND_PARTS_QUIET} 28 | ) 29 | set(QXmppQt@QT_VERSION_MAJOR@_${module}_FOUND ${QXmpp${module}Qt@QT_VERSION_MAJOR@_FOUND}) 30 | endforeach() 31 | 32 | check_required_components(QXmpp) 33 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | 6 | 7 | # Security Policy 8 | 9 | ## Supported Versions 10 | 11 | The latest 1.x stable release is supported. Fixes for relevant bugs and 12 | security issues are backported. 13 | 14 | ## Reporting a Vulnerability 15 | 16 | If you have found a security related issue, it is best to email us instead of 17 | opening a public issue. 18 | If your message is very sensitive, you may want to use PGP, but in most cases 19 | it's not needed. 20 | 21 | | Name | Email address | PGP key | 22 | | ---------- | ------------------ | --------------------------------------------------- | 23 | | Linus Jahn | lnj [AT] kaidan.im | [03C2D10DC97E5B0BEBB8F3B44663231A91A1E27B][pgp-lnj] | 24 | 25 | 26 | [pgp-lnj]: https://keys.openpgp.org/vks/v1/by-fingerprint/03C2D10DC97E5B0BEBB8F3B44663231A91A1E27B 27 | -------------------------------------------------------------------------------- /cmake/QXmppLegacyConfig.cmake.in: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Linus Jahn 2 | # 3 | # SPDX-License-Identifier: CC0-1.0 4 | 5 | @PACKAGE_INIT@ 6 | 7 | set(_QXmpp_FIND_PARTS_REQUIRED) 8 | if(QXmpp_FIND_REQUIRED) 9 | set(_QXmpp_FIND_PARTS_REQUIRED REQUIRED) 10 | endif() 11 | set(_QXmpp_FIND_PARTS_QUIET) 12 | if(QXmpp_FIND_QUIETLY) 13 | set(_QXmpp_FIND_PARTS_QUIET QUIET) 14 | endif() 15 | 16 | # Pass through arguments to QXmppQt5 17 | include(CMakeFindDependencyMacro) 18 | find_package(QXmppQt5 19 | ${QXmpp_FIND_VERSION} 20 | ${_QXmpp_FIND_PARTS_REQUIRED} 21 | ${_QXmpp_FIND_PARTS_QUIET} 22 | COMPONENTS ${QXmpp_FIND_COMPONENTS} 23 | ) 24 | 25 | set(QXmpp_FOUND ${QXmppQt5_FOUND}) 26 | -------------------------------------------------------------------------------- /cmake/QXmppLegacyConfigVersion.cmake: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Linus Jahn 2 | # 3 | # SPDX-License-Identifier: CC0-1.0 4 | 5 | set(PACKAGE_VERSION "") 6 | # Allow all requested versions here, the actual check is going to be done in QXmppQt5. 7 | set(PACKAGE_VERSION_COMPATIBLE TRUE) 8 | 9 | -------------------------------------------------------------------------------- /doc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2017 Niels Ole Salscheider 2 | # 3 | # SPDX-License-Identifier: CC0-1.0 4 | 5 | find_package(Doxygen REQUIRED) 6 | 7 | if(NOT DOXYGEN_FOUND) 8 | message(FATAL_ERROR "Doxygen is needed to build the documentation.") 9 | endif() 10 | 11 | configure_file( 12 | ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in 13 | ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile 14 | @ONLY 15 | ) 16 | 17 | add_custom_target( 18 | doc ALL 19 | COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile 20 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} 21 | COMMENT "Generate API documentation with Doxygen" 22 | VERBATIM 23 | ) 24 | 25 | install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION ${CMAKE_INSTALL_DOCDIR}) 26 | 27 | -------------------------------------------------------------------------------- /doc/Doxyfile.in: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2017 Niels Ole Salscheider 2 | # 3 | # SPDX-License-Identifier: CC0-1.0 4 | 5 | PROJECT_NAME = "QXmpp" 6 | PROJECT_NUMBER = "Version: @PROJECT_VERSION@" 7 | INPUT = @PROJECT_SOURCE_DIR@/doc/index.doc \ 8 | @PROJECT_SOURCE_DIR@/doc/using.doc \ 9 | @PROJECT_SOURCE_DIR@/doc/xep.doc \ 10 | @PROJECT_SOURCE_DIR@/src 11 | HTML_EXTRA_FILES = @PROJECT_SOURCE_DIR@/doc/doap.xml \ 12 | @PROJECT_SOURCE_DIR@/doc/doap-rendering/doap.xsl \ 13 | @PROJECT_SOURCE_DIR@/doc/doap-rendering/xeplist.xml \ 14 | @PROJECT_SOURCE_DIR@/doc/doap-rendering/doap.css 15 | ALIASES = "xep{1}=XEP-\1" \ 16 | "xep{2}=XEP-\1: \2" 17 | ALPHABETICAL_INDEX = NO 18 | EXCLUDE_PATTERNS = */moc_* */mod_* */QXmppCodec.cpp */QXmppSasl.cpp 19 | FULL_PATH_NAMES = NO 20 | HIDE_UNDOC_CLASSES = YES 21 | GENERATE_LATEX = NO 22 | QUIET = YES 23 | RECURSIVE = YES 24 | ENABLE_PREPROCESSING = YES 25 | MACRO_EXPANSION = YES 26 | EXPAND_ONLY_PREDEF = YES 27 | PREDEFINED = "QXMPP_DEPRECATED_SINCE(major, minor)=1" "QT_DEPRECATED_X(msg)=" "QXMPP_DOC" 28 | -------------------------------------------------------------------------------- /doc/doap-rendering/README.md: -------------------------------------------------------------------------------- 1 | 6 | 7 | # DOAP rendering 8 | 9 | Run `doc/doap-rendering/update-xeplist.sh` to get the latest XEP metadata before building the documentation. 10 | 11 | You maybe need to open a local web server to display the list of supported XEPs in case your web browser prohibits the request to `doc/doap-rendering/doap.xsl`. 12 | Here is an example with Python's built-in web server and Firefox: 13 | ``` 14 | python3 -m http.server 15 | firefox http://0.0.0.0:8000/xep.html 16 | ``` 17 | -------------------------------------------------------------------------------- /doc/doap-rendering/update-xeplist.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-FileCopyrightText: 2022 Melvin Keskin 4 | # 5 | # SPDX-License-Identifier: CC0-1.0 6 | 7 | # 8 | # This script updates the list that contains XEP metadata used by "doap.xsl". 9 | # 10 | # It should be run before generating the Doxygen documentation. 11 | # 12 | 13 | SCRIPT_DIR=$(dirname "$(readlink -f "${0}")") 14 | 15 | # The list is generated by "https://github.com/xsf/xeps/blob/master/tools/extract-metadata.py". 16 | curl -L https://xmpp.org/extensions/xeplist.xml > "${SCRIPT_DIR}/xeplist.xml" 17 | -------------------------------------------------------------------------------- /doc/doap-rendering/xeplist.xml.license: -------------------------------------------------------------------------------- 1 | SPDX-FileCopyrightText: 2004 XMPP Standards Foundation 2 | 3 | SPDX-License-Identifier: CC0-1.0 4 | -------------------------------------------------------------------------------- /doc/index.doc: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2014 Jeremy Lainé 2 | // 3 | // SPDX-License-Identifier: CC0-1.0 4 | 5 | /*! \mainpage 6 | 7 | QXmpp is a cross-platform C++ XMPP client library based on the Qt 8 | framework. It tries to use Qt's programming conventions in order to ease 9 | the learning curve for new programmers. 10 | 11 | QXmpp based clients are built using QXmppClient instances which handle the 12 | establishment of the XMPP connection and provide a number of high-level 13 | "managers" to perform specific tasks. You can write your own managers to 14 | extend QXmpp by subclassing QXmppClientExtension. 15 | 16 | Main Class: 17 | - QXmppClient 18 | 19 | Managers to perform specific tasks: 20 | - QXmppRosterManager 21 | - QXmppVCardManager 22 | - QXmppTransferManager 23 | - QXmppMamManager 24 | - QXmppMucManager 25 | - QXmppCallManager 26 | - QXmppArchiveManager 27 | - QXmppVersionManager 28 | - QXmppDiscoveryManager 29 | - QXmppEntityTimeManager 30 | - QXmppUploadRequestManager 31 | - QXmppRegistrationManager 32 | - QXmppAttentionManager 33 | - QXmppPubSubManager 34 | - QXmppOmemoManager 35 | - QXmppBlockingManager 36 | 37 | XMPP stanzas: If you are interested in a more low-level API, you can refer to these 38 | classes. 39 | - QXmppIq 40 | - QXmppMessage 41 | - QXmppPresence 42 | 43 | Project Details: 44 | 45 | - Project Page: https://github.com/qxmpp-project/qxmpp 46 | - Report Issues: https://github.com/qxmpp-project/qxmpp/issues 47 | - New Releases: https://github.com/qxmpp-project/qxmpp/releases 48 | 49 | */ 50 | -------------------------------------------------------------------------------- /doc/xep.doc: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2014 Jeremy Lainé 2 | // 3 | // SPDX-License-Identifier: CC0-1.0 4 | 5 | /*! \page xep XMPP Extension Protocols 6 | 7 | This document lists the XMPP Extension Protocols (XEPs) supported by QXmpp. 8 | 9 | \htmlonly 10 | 16 |