Git Product home page Git Product logo

plugins's Introduction

Officially supported Psi plugins

Description

This repository contains all Psi plugins which their developers prefer to maintain together with Psi developers.

  • generic/ - plugins for all platforms (Linux, Windows, macOS, *BSD, Haiku, etc.)
  • unix/ - plugins for unix-based systems (Linux, *BSD)
  • dev/ - plugins in development stage (may be incomplete or unstable)
  • deprecated/ - plugins which don't work and not supported anymore (stored for historical reasons)

Installation

Normally you don't need compile these plugins yourself: they are distributed together with main program (in special packages for your Linux distro, in installer or archive for Windows, in app bundle for macOS, etc.). But if you need to build plugins yourself see instructions below.

All plugins may be built separately using qmake or cmake or they may be built together using cmake.

The most fast and simple way to build all plugins from master branch:

git clone https://github.com/psi-im/psi.git
git clone https://github.com/psi-im/plugins.git
cd plugins
mkdir builddir
cd builddir
cmake ..
# If necessary install all missed build dependencies until previous command is
# executed without errors.
make -j4
make install DESTDIR="../installdir"
# If necessary replace "../installdir" from command above to any path you need
# or copy them manually from "../installdir".

Some available configuration options:

  • -DBUILD_PLUGINS="${plugins}" - set list of plugins to build or to not build
  • -DBUILD_DEV_PLUGINS="ON" - enable build of some plugins from dev/ (disabled by default)
  • -DPLUGINS_PATH="psi/plugins" - set suffix for installation path to plugins
  • -DPLUGINS_ROOT_DIR="${path}" - set path to directory with plugins.cmake file

Option -DPLUGINS_ROOT_DIR should be used only when:

  • Psi sources are located in non-standard way, for example, you have cloned git repo of Psi not as in the simple example above, but completely to another place.
  • You have not installed Psi development files into your system or version of Psi development files in your system is not compatible with current version of plugins.

Examples:

# Build only few plugins:
cmake .. -DBUILD_PLUGINS="omemoplugin;openpgpplugin;otrplugin"

# Build all plugins except few ones:
cmake .. -DBUILD_PLUGINS="-chessplugin;-otrplugin"

# Build all plugins when git repo of Psi is placed in far far directory:
cmake .. -DPLUGINS_ROOT_DIR=/home/user/very/stange/path/to/psi/plugins

plugins's People

Contributors

aszlig avatar butyoutried avatar dos1 avatar drizt avatar florianfieber avatar jirislaby avatar kssytsrk avatar l29ah avatar liuch avatar neustradamus avatar nullobsi avatar ri0n avatar rkfg avatar schwindp avatar stigger avatar tehnick avatar tremerix avatar valdikss avatar vitozz avatar wadealer avatar xvitaly avatar zet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

plugins's Issues

[OMEMO] forwarded party messages are not shown

Buggy scenario:

  1. [UNCONFIRMED] whatever way make a contact untrusted (remove its keys) and likely restart Psi after that.
  2. start chatting with the contact using Conversation from the same account like in Psi
  3. responses from the remote party will be forwarded (Carbon) to Psi but not shown. while local (sent from local Conversation and forwarded to Psi) messages will be shown on both sides

To workaround this write something to the client from Psi and key confirmation dialog will popup. After that all messages will be shown in Psi.

Expected behaviour:
On receive of forwarded OMEMO encrypted message show notification in events area and on click ask for key confirmation.

Psi: psi-im/psi@ec85e13
plugins: 5dc2190

OMEMO Key Handling not stable in groups/conferences

In conference sometime the OMEMO will be offered and sometimes not. Additional Psi+ don't enter well after restart mainly this (encrypted) conferences!

PS: Thanks for your great job, to integrate OMEMO in the Psi+ (also as Desktop Version available XMPP + OMEMO compatible) software!

[OMEMO] Show fingerprint of other devices

The "Mange devices" list only shows device IDs and no fingerprints.

Neither Conversations nor Dino show their device ID - only their fingerprint.
So it is currently impossible to verify the other devices and remove invalid ones.

2020-02-11 psi omemo manage devices

[OMEMO] Encryption of files sending via HTTP File Upload

Hi all!

I downloaded the new version of Psi+, which is based on Psi, and for some reason the HTTP file upload plugin was missing. after some digging I saw that the plugin is now deprecated in Psi.

Is there a reason for that? how are we supposed to 1) send files now? 2) send OMEMO encrypted files?

thanks in advance! :)

OTR plugin crashes on Psi exit

(gdb) bt
#0  0x00007ffff4ce7428 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007ffff4ce902a in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2  0x00007ffff4d297ea in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#3  0x00007ffff4d3237a in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#4  0x00007ffff4d3653c in free () from /lib/x86_64-linux-gnu/libc.so.6
#5  0x00007fffd1598375 in ?? () from /usr/lib/x86_64-linux-gnu/libgnome-keyring.so.0
#6  0x00007fffedee0e06 in ?? () from /lib/x86_64-linux-gnu/libgcrypt.so.20
#7  0x00007fffd4654843 in otrl_privkey_forget () from /usr/lib/x86_64-linux-gnu/libotr.so.5
#8  0x00007fffd46548bd in otrl_privkey_forget_all () from /usr/lib/x86_64-linux-gnu/libotr.so.5
#9  0x00007fffd465cfa5 in otrl_userstate_free () from /usr/lib/x86_64-linux-gnu/libotr.so.5
#10 0x00007fffd488983c in OtrInternal::~OtrInternal() () from /usr/lib/psi-plus/plugins/libotrplugin.so
#11 0x00007fffd4888e62 in psiotr::OtrMessaging::~OtrMessaging() () from /usr/lib/psi-plus/plugins/libotrplugin.so
#12 0x00007fffd4885169 in psiotr::PsiOtrPlugin::disable() () from /usr/lib/psi-plus/plugins/libotrplugin.so
#13 0x00005555559ecc97 in PluginHost::disable() ()
#14 0x00005555559eccfb in PluginHost::unload() ()
#15 0x00005555559fa13d in PluginManager::unloadAllPlugins() ()
#16 0x00005555558765f3 in PsiCon::deinit() ()
#17 0x00005555558766ec in PsiCon::~PsiCon() ()
#18 0x00005555558767c9 in PsiCon::~PsiCon() ()

[OMEMO] Problem if a new roster contact has not OMEMO and the contact enables OMEMO in the talk

Add a new roster contact

[XX:XX:XX] [email protected] Normal message

Not a message, indication for this bug: OMEMO icon is in grey: "OMEMO encryption is not available for this contact"

[XX:XX:XX] Can you send me OMEMO message?
[XX:XX:XX] *** [OMEMO] The following message is from an untrusted device:
[XX:XX:XX] *** Encryption Enabled
[XX:XX:XX] [email protected] OMEMO message test

Not a message, indication for this bug: OMEMO icon is always in grey: "OMEMO encryption is not available for this contact".

[XX:XX:XX] *** [OMEMO] Unable to build any sessions, the message was not sent
[XX:XX:XX] *** Encryption Enabled
[XX:XX:XX] reply 1

Not a message, indication for this bug: OMEMO icon is always in grey: "OMEMO encryption is not available for this contact", and I can not disable forced OMEMO.

[XX:XX:XX] *** [OMEMO] Unable to build any sessions, the message was not sent
[XX:XX:XX] reply 2

Not a message, indication for this bug: OMEMO icon is always in grey: "OMEMO encryption is not available for this contact", and I can not disable forced OMEMO.

Note 1: In Roster, I see "Keys" icon near username of this contact.
Note 2: I have not closed the tab since the first normal message.

Linked to:

Unable to build - fatal error: QWidget: No such file or directory

I'm trying to compile psi-plus-plugins and I getting an error:

[ 62%] Building CXX object src/plugins/generic/messagefilterplugin/CMakeFiles/messagefilterplugin.dir/messagefilter.cpp.o
In file included from /home/lucjan/Pracownia/Teraz/test/psi-plus-plugins-git/src/psi-plus-snapshots/src/plugins/generic/messagefilterplugin/messagefilter.h:24:0,
                 from /home/lucjan/Pracownia/Teraz/test/psi-plus-plugins-git/src/psi-plus-snapshots/src/plugins/generic/messagefilterplugin/messagefilter.cpp:21:
/home/lucjan/Pracownia/Teraz/test/psi-plus-plugins-git/src/psi-plus-snapshots/src/plugins/generic/messagefilterplugin/options.h:24:10: fatal error: QWidget: No such file or directory
 #include <QWidget>
          ^~~~~~~~~
compilation terminated.
make[2]: *** [src/plugins/generic/messagefilterplugin/CMakeFiles/messagefilterplugin.dir/build.make:74: src/plugins/generic/messagefilterplugin/CMakeFiles/messagefilterplugin.dir/messagefilter.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1888: src/plugins/generic/messagefilterplugin/CMakeFiles/messagefilterplugin.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

Commit 2dbc5064 (and older) works fine.

My PKGBUILD:

https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=psi-plus-plugins-git

Add <private ...> to OTR encrypted messages

Hello together,

when chatting with OTR enabled with Psi+, those encrypted (and not decrypt-able by anyone else but the receiver [theoretically^^]) messages are forwarded by Prosody to Conversations on my phone (which is the correct behavior of the server since message carbons are enabled). OTR Messages sent by Conversations on the other hand to not get forwarded to any other resource/client. I think I found the reason for it.
When I do not completely misunderstand:
https://xmpp.org/extensions/xep-0364.html
Section: 4.3 Processing Hints
defines a <private ...> stanza to avoid not decrypt-able carbons to be forwarded to other clients. There should be no unexpected and unwanted negative side-effects occur by adding this to OTR encrypted messages, I think.

In case my suggestion is correct I'd really great to see this small but really helpful improvement get implemented.

Thanks for for your work on Psi generally and for any feedback on my feature request above
Cheers!

New yandex disk plugin

Some ideas...

so we use webdav to work with the disk.
also we have an API http://api.yandex.ru/disk/
we prefer oauth since we don't want to store user credentials

workflow on plugin enable or on first access to files

  1. request access token from yandex http://api.yandex.ru/oauth/doc/dg/reference/obtain-access-token.xml
    • if failed to request token (ex: when client_id is unknown), try to register app
      • say to user we are going to register his Psi(+) on yandex.disk and probaby he has to authorize yourself
      • open webkit window with https://oauth.yandex.ru/client/new
      • check proper page was loading by querying some html elements.
      • if login page or anything else was loaded lets user does what needed.
      • if app registration page was loaded (after authorization probably), autofill all fields and let user to check and agree.
      • get client_id from redirect after submitting form and cache it in settings
    • if failed to request token because client_id is invalid follow steps above to register app
  2. as soon as token received we have to store in plugin's settings forever.
  3. from this moment the plugin is fully working and may access to webdav files using app token.
  4. if yandex.disk starts reporting invalid token go to step 1.

in the user interface we need a field for access token (notice: not client_id) with button receive which executes steps above

Write a precommit hook to update changelog and plugin version from git history

Basically having json files with metadata now allow to update their properties dinamicaly on git commit.
So we can a git hook which automatically add entries to the plugins' changelogs.
and then we can make a script which will read recent changlogs, detect if it worth to make new versions relying on the changelog and git history and dump the versions of the changes plugins in their json files.
Also the json file may keep changes for just the latest version.

OTR: cannot send OTR messages to users on im.koderoot.net

version: Psi+ 1.3.398

I have some contacts on im.koderoot.net. I can send and receive unencrypted messages, do an OTR handshake, and receive OTR messages from them, but they cannot receive OTR messages. Psi+ shows it doesn't get a message receipt.

I also tested with Psi 1.3, it doesn't have this problem.

The user on im.koderoot.net uses Pidgin with pidgin-otr plugin.

The servers I tested include xmpp.jp, wehack.space, blug.moe.

*** [OMEMO] Unable to build any sessions, the message was not sent (Myself message does not work) | Identical chat tab | Identical device

OMEMO Encrypted messages to myself do not work (same device/client: Psi or Psi+).

It must be true: "options.ui.contactlist.show.self-contact"

Screenshot: https://i.ibb.co/3yV0ZCy/psi-myself-test-messages-one-with-and-one-without-omemo.png

  • Myself Unencrypted message is showed correctly (double and XEP-0184 is perfect): look example "Without" in this screenshot.
  • Myself OMEMO message does not work correctly (only one, and no XEP-0184 validation): look example "With" in this screenshot.

EDIT:
I add several examples:

  • 1/ Only ONE DEVICE without the own key of current device in "Known Keys" (but it is detected by the client but not added, problem): "*** [OMEMO] Unable to build any sessions, the message was not sent"
  • 2/ Only ONE DEVICE with own key of the current device in "Known Keys": "*** [OMEMO] Unable to build any sessions, the message was not sent"
  • 3/ Several devices, only one connected (the current device) and the current sent device has not a decrypted OMEMO message in tab "*** OMEMO encryption is enabled"

EXAMPLE 1:
This account has not this own key in "Known Keys" section:

We open the tab:

[XX:XX:21] *** Contact has been switched: [email protected]/Psi+
[XX:XX:21] *** User1 is now Online [1]

XML Console:

<iq id='aac5a' from='[email protected]' to='[email protected]' type='get'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<items node='eu.siacs.conversations.axolotl.devicelist'/>
</pubsub>
</iq>

<iq id="aac5a" type="result" to="[email protected]/Psi+">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<items node="eu.siacs.conversations.axolotl.devicelist">
<item id="cb76a2f1-4f09-435b-a588-8960d36c35e5">
<list xmlns="eu.siacs.conversations.axolotl">
   <device id="1618399274"/>
  </list>
</item>
</items>
</pubsub>
</iq>

Try to send an OMEMO Message

[XX:XX:46] <User1> ... 
[XX:XX:46] *** [OMEMO] Unable to build any sessions, the message was not sent

XML Console:

<iq id='aac8a' from='[email protected]' to='[email protected]' type='get'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<items node='eu.siacs.conversations.axolotl.bundles:1618399274'/>
</pubsub>
</iq>

<iq id="aac8a" type="result" to="[email protected]/Psi+">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<items node="eu.siacs.conversations.axolotl.bundles:1618399274">
<item id="79af5a71-faa4-4017-8838-5f6a28cd7171">
<bundle xmlns="eu.siacs.conversations.axolotl">
   <signedPreKeyPublic signedPreKeyId="56810230">XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</signedPreKeyPublic>
   <signedPreKeySignature>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</signedPreKeySignature>
   <identityKey>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</identityKey>
   <prekeys>
    <preKeyPublic preKeyId="1">XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</preKeyPublic>
    <preKeyPublic preKeyId="100">XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</preKeyPublic>
    <preKeyPublic preKeyId="101">XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</preKeyPublic>
   </prekeys>
  </bundle>
</item>
</items>
</pubsub>
</iq>

EXAMPLE 2:
This account has this own key in "Known Keys" section, not trusted yet:

We open the tab:

[XX:XX:54] *** Contact has been switched: [email protected]/Psi+
[XX:XX:54] *** User2 is now Online [1]

XML Console:

<iq id='aac6a' from='[email protected]' to='[email protected]' type='get'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<items node='eu.siacs.conversations.axolotl.devicelist'/>
</pubsub>
</iq>

<iq from="[email protected]" id="aac6a" type="result" to="[email protected]/Psi+" xml:lang="en">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<items node="eu.siacs.conversations.axolotl.devicelist">
<item id="66D3D5DC8BDDA">
<list xmlns="eu.siacs.conversations.axolotl">
   <device id="445276579"/>
  </list>
</item>
</items>
</pubsub>
</iq>

Try to send an OMEMO encrypted message

-> Managing of OMEMO keys dialog window

-> We trust it

[XX:XX:57] *** [OMEMO] Unable to build any sessions, the message was not sent
[XX:XX:57] <User2> ...

XML Console:

NO XML, nothing

EXAMPLE 3:
This account has own key of each device in "Known Keys" section, trusted:

We open the tab:

[XX:XX:20] *** Contact has been switched: [email protected]/Psi+
[XX:XX:20] *** User is now Online [1]

XML Console:

<iq id='aacca' from='[email protected]' to='[email protected]' type='get'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<items node='eu.siacs.conversations.axolotl.devicelist'/>
</pubsub>
</iq>

<iq id="aacca" to="[email protected]/Psi+" xml:lang="en" from="[email protected]" type="result">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<items node="eu.siacs.conversations.axolotl.devicelist">
<item id="66BE1A3219106">
<list xmlns="eu.siacs.conversations.axolotl">
   <device id="XXXXX"/>
   <device id="XXXXX"/>
   <device id="XXXXX"/>
   <device id="XXXXX"/>
   <device id="XXXXX"/>
   <device id="XXXXX"/>
  </list>
</item>
</items>
</pubsub>
</iq>

Try to send an OMEMO encrypted message

[XX:XX:24] ***  OMEMO encryption is enabled
[XX:XX:24] <User> .... 

-> Only one and no XEP-0184 answer.
The OMEMO message has not been decrypted by this current device.

XML Console:

<message id="aacda" to="[email protected]/Psi+" type="chat">
<active xmlns="http://jabber.org/protocol/chatstates"/>
<request xmlns="urn:xmpp:receipts"/>
<encrypted xmlns="eu.siacs.conversations.axolotl">
<header sid="XXXXXXXXXXX">
<iv>XXXXXXXXXXXXX</iv>
<key rid="XXXXX" prekey="true">XXXXXXXXXXXXXXXXXXXXXX</key>
<key rid="XXXXX" prekey="true">XXXXXXXXXXXXXXXXXXXXXX</key>
<key rid="XXXXX" prekey="true">XXXXXXXXXXXXXXXXXXXXXX</key>
<key rid="XXXXX" prekey="true">XXXXXXXXXXXXXXXXXXXXXX</key>
<key rid="XXXXX" prekey="true">XXXXXXXXXXXXXXXXXXXXXX</key>
</header>
<payload>XXXX</payload>
</encrypted>
<store xmlns="urn:xmpp:hints"/>
<encryption xmlns="urn:xmpp:eme:0" namespace="eu.siacs.conversations.axolotl"/>
<body>You received a message encrypted with OMEMO but your client doesn't support OMEMO or its support is currently disabled.</body>
</message>

<message id="aacda" to="[email protected]/Psi+" xml:lang="en" from="[email protected]/Psi+" type="chat">
<archived xmlns="urn:xmpp:mam:tmp" by="[email protected]" id="XXXXXXXXXXXXXXXXXXXX"/>
<stanza-id xmlns="urn:xmpp:sid:0" by="[email protected]" id="XXXXXXXXXXXXXXXXXXXX"/>
<active xmlns="http://jabber.org/protocol/chatstates"/>
<request xmlns="urn:xmpp:receipts"/>
<encrypted xmlns="eu.siacs.conversations.axolotl">
<header sid="XXXXXXXXXXX">
<iv>XXXXXXXXXXXXX</iv>
<key rid="XXXXX" prekey="true">XXXXXXXXXXXXXXXXXXXXXX</key>
<key rid="XXXXX" prekey="true">XXXXXXXXXXXXXXXXXXXXXX</key>
<key rid="XXXXX" prekey="true">XXXXXXXXXXXXXXXXXXXXXX</key>
<key rid="XXXXX" prekey="true">XXXXXXXXXXXXXXXXXXXXXX</key>
<key rid="XXXXX" prekey="true">XXXXXXXXXXXXXXXXXXXXXX</key>
</header>
<payload>XXXX</payload>
</encrypted>
<store xmlns="urn:xmpp:hints"/>
<encryption xmlns="urn:xmpp:eme:0" namespace="eu.siacs.conversations.axolotl"/>
<body>You received a message encrypted with OMEMO but your client doesn't support OMEMO or its support is currently disabled.</body>
</message>

XEP-0384: OMEMO Encryption 0.4.0+

Can you add the XEP-0384: OMEMO Encryption support?

And XEP-0454: OMEMO Media sharing:

Diff Tool:

OTR problem between psi+ and xabber (ะฟั€ะพะฑะปะตะผั‹ ั ะžะขะ )

I've faced with very strange problem in psi plus v1.4.554 . When I try to start OTR dialogue with contact who has xabber I always get this kind of message:

?OTR:AAMCkDfq4AAAAAAAAADE7mQeDmVH9oowj+0YW2yHIg9E9mCMRlF7/9Zsgb0e5VodCBZuay9mHkwgWq//yPn7yqs31luqHmcpsUuX6orJha/MdUjpaMfIcg7citqwd+Z7zQpiXvGUqXJpAt2aPVAjGNbb2J45xFVPhwBuTHhZEdG5JW0P4L83u13X/tErSutlUIN30GoZuJeCBYAhrc1HSMMQpciA0mfWPxD8P5weI2W18eTVQF8v78amVYB6LyAzThRs2INtFCw4G8+Skc9zUHKnWAAAACCFNI7bU9ULQfz1YFBZTxNmATGoV23RGT9prV7PrpJ7ng==.

And OTR dialogue doesn't start for sure. I've tryed with different kind of version xabber with the newest 2.6.6.645 and elder one 2.6.2. But with 2.2 it works fine.

Moreover psi+ v0.16 works fine with all kind of version xabber. Dialogues start as usual.

This information below which I get in console when I try to start conversation (contact information has been deleted):

<message to='' type='chat'><subject></subject><body>?OTRv23? ** has requested an Off-the-Record private conversation.  However, you do not have a plugin to support that. If you are using Pidgin in Debian or Ubuntu,install the pidgin-otr package. See https://otr.cypherpunks.ca/ for more information.</body></message>
<r xmlns="urn:xmpp:sm:3"/>

<a xmlns="urn:xmpp:sm:3" h="13"/>

<message to="/Psi+" from="/xabber-android-td36tHn7" xml:lang="en" type="chat" id="kpxrr-3018">
<private xmlns="urn:xmpp:carbons:2"/>
<no-store xmlns="urn:xmpp:hints"/>
<request xmlns="urn:xmpp:receipts"/>
<body>?OTR:AAMC32j9agAAAAAAAADEEP4DvpNiHNjtKKZyOlv1+QkvVwNWWA/z8oG8NRn5bGXVuYHRiz5WCAaH8pniU9uG3ElVUuUoLIP7RDV1u08/xl1uARYzmkPwIx6mQ9xfAFgd9rRgR9Sg+yJzTOzMkT78PY9x7x1Eton6JsnQAquP8Wb7yvmGfqWaTEE7/ZnK9jLRBDIZofdQfXbyZn3f+mbndwWYeyBOeyQUeDYVsuglQ+eEZLzQCG2wwi4+zYv3o1R45i5NvLEYCqElpwBOYuaif56F7gAAACAaFNR/TkA44G9nFRw2BA0VIjJgYrMsT3y/5VD5uPfhZg==.</body>
<thread>ohgJU8w48Rx7</thread>
</message>

Translation in Russian below
ะกั‚ะพะปะบะฝัƒะปัั ั ะพั‡ะตะฝัŒ ัั‚ั€ะฐะฝะฝะพะน ะฟั€ะพะฑะปะตะผะพะน ะฒ psi plus v1.4.554. ะŸั€ะธ ะฟะพะฟั‹ั‚ะบะธ ะฝะฐั‡ะฐั‚ัŒ ะžะขะ  ะฟะตั€ะตะฟะธัะบัƒ ั ะบะพะฝั‚ะฐะบั‚ะพะผ ัƒ ะบะพั‚ะพั€ะพะณะพ ัƒัั‚ะฐะฝะพะฒะปะตะฝ xabber ะฟะพะปัƒั‡ะฐัŽ ัะพะพะฑั‰ะตะฝะธะต ะฒะพั‚ ั‚ะฐะบะพะณะพ ะฒะธะดะฐ:

?OTR:AAMCkDfq4AAAAAAAAADE7mQeDmVH9oowj+0YW2yHIg9E9mCMRlF7/9Zsgb0e5VodCBZuay9mHkwgWq//yPn7yqs31luqHmcpsUuX6orJha/MdUjpaMfIcg7citqwd+Z7zQpiXvGUqXJpAt2aPVAjGNbb2J45xFVPhwBuTHhZEdG5JW0P4L83u13X/tErSutlUIN30GoZuJeCBYAhrc1HSMMQpciA0mfWPxD8P5weI2W18eTVQF8v78amVYB6LyAzThRs2INtFCw4G8+Skc9zUHKnWAAAACCFNI7bU9ULQfz1YFBZTxNmATGoV23RGT9prV7PrpJ7ng==.

ะŸะตั€ะตะฟะธัะบะฐ ะžะขะ  ะฟั€ะธ ัั‚ะพะผ ะฝะต ะฝะฐั‡ะธะฝะฐะตั‚ัั. ะฃ ะบะพะฝั‚ะฐะบั‚ะฐ ัƒัั‚ะฐะฝะพะฒะปะตะฝะฐ ะฟะพัะปะตะดะฝัั ะฒะตั€ัะธั xabber 2.6.6.645 ะฟั€ะธ ัั‚ะพะผ ั xabber 2.2 ะฒัะต ั€ะฐะฑะพั‚ะฐะตั‚ ั…ะพั€ะพัˆะพ. ะ’ ะฒะตั€ัะธะตะน xabber 2.6.2 ั‚ะฐะบ ะถะต ะฝะต ั€ะฐะฑะพั‚ะฐะตั‚.

ะ’ psi plus v.0.16 ะฟั€ะธ ัั‚ะพะผ ั ะปัŽะฑะพะน ะฒะตั€ัะธะตะน xabber ะฒัะต ั€ะฐะฑะพั‚ะฐะตั‚ ะฝะพั€ะผะฐะปัŒะฝะพ ะธ ะžะขะ  ะฟะตั€ะตะฟะธัะบะฐ ะฝะฐั‡ะธะฝะฐะตั‚ัั.

ะ’ะพั‚ ะบะฐะบะฐั ะธะฝั„ะพั€ะผะฐั†ะธั ะพั‚ะพะฑั€ะฐะถะฐะตั‚ัั ะฒ ะบะพะฝัะพะปะธ ะฟั€ะธ ะฟะพะฟั‹ั‚ะบะธ ะฝะฐั‡ะฐั‚ัŒ ะžะขะ  ะฟะตั€ะตะฟะธัะบัƒ (ะบะพะฝั‚ะฐะบั‚ั‹ ัƒะดะฐะปะธะป ะธะท ะปะพะณะพะฒ):

<message to='' type='chat'><subject></subject><body>?OTRv23? ** has requested an Off-the-Record private conversation.  However, you do not have a plugin to support that. If you are using Pidgin in Debian or Ubuntu,install the pidgin-otr package. See https://otr.cypherpunks.ca/ for more information.</body></message>
<r xmlns="urn:xmpp:sm:3"/>

<a xmlns="urn:xmpp:sm:3" h="13"/>

<message to="/Psi+" from="/xabber-android-td36tHn7" xml:lang="en" type="chat" id="kpxrr-3018">
<private xmlns="urn:xmpp:carbons:2"/>
<no-store xmlns="urn:xmpp:hints"/>
<request xmlns="urn:xmpp:receipts"/>
<body>?OTR:AAMC32j9agAAAAAAAADEEP4DvpNiHNjtKKZyOlv1+QkvVwNWWA/z8oG8NRn5bGXVuYHRiz5WCAaH8pniU9uG3ElVUuUoLIP7RDV1u08/xl1uARYzmkPwIx6mQ9xfAFgd9rRgR9Sg+yJzTOzMkT78PY9x7x1Eton6JsnQAquP8Wb7yvmGfqWaTEE7/ZnK9jLRBDIZofdQfXbyZn3f+mbndwWYeyBOeyQUeDYVsuglQ+eEZLzQCG2wwi4+zYv3o1R45i5NvLEYCqElpwBOYuaif56F7gAAACAaFNR/TkA44G9nFRw2BA0VIjJgYrMsT3y/5VD5uPfhZg==.</body>
<thread>ohgJU8w48Rx7</thread>
</message>

Ping @claucece.

Client Switcher Plugin prevents normal usage of OMEMO Plugin and PEP features

Today, I have spoken with a guy for the first time, there was a problem with OMEMO.

I have the Client Switcher plugin and OMEMO plugin enabled:
*** [OMEMO] Unable to build any sessions, the message was not sent

I have disabled the Client Switcher plugin, it is ok, I have enabled a new time the Client Switcher plugin after.

Please note that there is always the big problem of grey OMEMO icon too...

Please remove "Auto import a key from the message body" from GnuPG Key Manager options

This is for security reasons. It is not safe to pass even public keys in the same communication channel because evil jabber server or evil provider can act like MitM and replace them on the fly for both parties, acting then like client for them all, making valid PGP sessions with both parties with ability to decrypt traffic using its own public keys while sending by stored original public keys.

Rebuilding the OTR Plugin

ldd /usr/lib/psi-plus/plugins/libotrplugin.so
libtidy-0.99.so.0 => not found
local/tidy 5.0.0-2
tidy /usr/lib/libtidy.so
tidy /usr/lib/libtidy.so.5
tidy /usr/lib/libtidy.so.5.0.0

https://aur.archlinux.org/packages/psi-plus-plugins-git/

translateplugin.cpp:92:23: error: ยซQDomElementยป not declared
QString& body, QDomElement& html, bool local);
^
translateplugin.cpp:587:28: error: ยซQDomElementยป not declared
QString &/body/, QDomElement &/html/, bool /local/)

ะŸะปะฐะณะธะฝ ะดะปั "ะฑั‹ัั‚ั€ั‹ั… ัะพะพะฑั‰ะตะฝะธะน"

ะŸั€ะธะฒะตั‚ัั‚ะฒัƒัŽ ะฒัะตั…!
ะŸะปะฐะฝะธั€ัƒะตั‚ัั ะปะธ ะฝะฐะฟะธัะฐะฝะธะต ะฟะปะฐะณะธะฝะฐ "ะ‘ั‹ัั‚ั€ั‹ะต ัะพะพะฑั‰ะตะฝะธั"
ะคัƒะฝะบั†ะธะพะฝะฐะป:
ะฒ ะฝะฐัั‚ั€ะพะนะบะฐั… ะฟะปะฐะณะธะฝะฐ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒ ัะพะทะดะฐั‘ั‚ ะฝะฐะฑะพั€ ะฑั‹ัั‚ั€ั‹ั… ัะพะพะฑั‰ะตะฝะธะน ะปะธะฑะพ ะบะฐะบ ะฝะฐะฑะพั€ ัั‚ั€ะพะบ (ั‚.ะต. ะพะดะฝะพัั‚ั€ะพั‡ะฝั‹ะต ัะพะพะฑั‰ะตะฝะธั), ะปะธะฑะพ ะบะฐะบ "ะ—ะฐะณะพะปะพะฒะพะบ - ั‚ะตะปะพ" (ะฒ ัั‚ะพะผ ัะปัƒั‡ะฐะต ะฒ ั‚ะตะปะต ะผะพะถะฝะพ ะฟั€ะตะดัƒัะผะพั‚ั€ะตั‚ัŒ ั„ะพั€ะผะฐั‚ะธั€ะพะฒะฐะฝะธะต)
ะฒ ะพะบะฝะต ั‡ะฐั‚ะฐ ัะพะทะดะฐั‘ั‚ัั ะบะฝะพะฟะบะฐ "ะฑั‹ัั‚ั€ั‹ะน ะพั‚ะฒะตั‚" ะธะปะธ "ัˆะฐะฑะปะพะฝั‹" ะธะปะธ ะตั‰ั‘ ะบะฐะบ-ะฝะธั‚ัŒ...
ะฟะพัะปะต ะฝะฐะถะฐั‚ะธั ะฝะฐ ะบะฝะพะฟะบัƒ ะฒ ะพะบะฝะต ั‡ะฐั‚ะฐ ะฟะพัะฒะปัะตั‚ัั pop-up ะผะตะฝัŽ, ะธ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒ ะฒั‹ะฑะธั€ะฐะตั‚ ัะพะพะฑั‰ะตะฝะธะต, ะบะพั‚ะพั€ะพะต ะฒัั‚ะฐะฒะธั‚ัั ะฒ ... ... ...
ะฒ ะฝะฐัั‚ั€ะพะนะบะฐั… ัƒะบะฐะทั‹ะฒะฐะตั‚ัั ั‡ั‚ะพ ะดะตะปะฐั‚ัŒ ั ัั‚ะธะผ ัะพะพะฑั‰ะตะฝะธะตะผ - ะปะธะฑะพ ัั€ะฐะทัƒ ะพั‚ะฟั€ะฐะฒะปัะตั‚ัั ัะพะฑะตัะตะดะฝะธะบัƒ, ะปะธะฑะพ ะฒัั‚ะฐะฒะปัะตั‚ัั ะฒ ะฟะพะปะต ะฒะฒะพะดะฐ ัะพะพะฑั‰ะตะฝะธั (ั‚.ะต. ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒ ัะผะพะถะตั‚ ะพั‚ั€ะตะดะฐะบั‚ะธั€ะพะฒะฐั‚ัŒ ั‚ะตะบัั‚, ะธ ะดะพะปะถะตะฝ ะฑัƒะดะตั‚ ัะฐะผ ะตะณะพ ะพั‚ะฟั€ะฐะฒะธั‚ัŒ).

SIGILL from screenshotplugin when exiting psi-plus

Psi+ version 0.16.556.568-webkit (2016-05-18)
Repeatability: always
Systems: linux (gentoo), windows 8.1
Backtrace obtained in Gentoo Base System release 2.2

Thread 7 (Thread 0x7fffcc638700 (LWP 25079)):
#0 0x00007ffff226c86d in poll () from /lib64/libc.so.6

No symbol table info available.
#1 0x00007fffed66efdc in g_main_context_iterate.isra () from /usr/lib64/libglib-2.0.so.0

No symbol table info available.
#2 0x00007fffed66f10c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0

No symbol table info available.
#3 0x00007ffff3509feb in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#4 0x00007ffff34ba312 in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#5 0x00007ffff330c076 in QThread::exec() () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#6 0x0000000000d60f69 in XMPP::NetTrackerThread::run (this=0x27925b0) at /home/vitaly/github/psi/build/iris/src/irisnet/corelib/netinterface.cpp:168

No locals.
#7 0x00007ffff3310a4a in QThreadPrivate::start(void*) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#8 0x00007ffff14805e6 in start_thread () from /lib64/libpthread.so.0

No symbol table info available.
#9 0x00007ffff2275e2d in clone () from /lib64/libc.so.6

No symbol table info available.

Thread 6 (Thread 0x7fffd77fe700 (LWP 25007)):
#0 0x00007ffff14863af in pthread_cond_wait () from /lib64/libpthread.so.0

No symbol table info available.
#1 0x00007ffff61a3c04 in WTF::TCMalloc_PageHeap::scavengerThread() () from /usr/lib64/libQt5WebKit.so.5

No symbol table info available.
#2 0x00007ffff61a3c29 in WTF::TCMalloc_PageHeap::runScavengerThread(void*) () from /usr/lib64/libQt5WebKit.so.5

No symbol table info available.
#3 0x00007ffff14805e6 in start_thread () from /lib64/libpthread.so.0

No symbol table info available.
#4 0x00007ffff2275e2d in clone () from /lib64/libc.so.6

No symbol table info available.

Thread 5 (Thread 0x7fffd7fff700 (LWP 25006)):
#0 0x00007ffff226c86d in poll () from /lib64/libc.so.6

No symbol table info available.
#1 0x00007fffed66efdc in g_main_context_iterate.isra () from /usr/lib64/libglib-2.0.so.0

No symbol table info available.
#2 0x00007fffed66f10c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0

No symbol table info available.
#3 0x00007ffff3509fd4 in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#4 0x00007ffff34ba312 in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#5 0x00007ffff330c076 in QThread::exec() () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#6 0x00007ffff3310a4a in QThreadPrivate::start(void*) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#7 0x00007ffff14805e6 in start_thread () from /lib64/libpthread.so.0

No symbol table info available.
#8 0x00007ffff2275e2d in clone () from /lib64/libc.so.6

No symbol table info available.

Thread 4 (Thread 0x7fffe524e700 (LWP 24969)):
#0 0x00007ffff226c86d in poll () from /lib64/libc.so.6

No symbol table info available.
#1 0x00007fffed66efdc in g_main_context_iterate.isra () from /usr/lib64/libglib-2.0.so.0

No symbol table info available.
#2 0x00007fffed66f10c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0

No symbol table info available.
#3 0x00007ffff3509fd4 in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#4 0x00007ffff34ba312 in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#5 0x00007ffff6b42ca5 in QCA::SyncThread::run() () from /usr/lib64/libqca-qt5.so.2

No symbol table info available.
#6 0x00007ffff3310a4a in QThreadPrivate::start(void*) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#7 0x00007ffff14805e6 in start_thread () from /lib64/libpthread.so.0

No symbol table info available.
#8 0x00007ffff2275e2d in clone () from /lib64/libc.so.6

No symbol table info available.

Thread 3 (Thread 0x7fffe5a4f700 (LWP 24968)):
#0 0x00007ffff226c86d in poll () from /lib64/libc.so.6

No symbol table info available.
#1 0x00007fffed66efdc in g_main_context_iterate.isra () from /usr/lib64/libglib-2.0.so.0

No symbol table info available.
#2 0x00007fffed66f10c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0

No symbol table info available.
#3 0x00007ffff3509feb in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#4 0x00007ffff34ba312 in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#5 0x00007ffff330c076 in QThread::exec() () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#6 0x00007ffff3c2b075 in QDBusConnectionManager::run() () from /usr/lib64/libQt5DBus.so.5

No symbol table info available.
#7 0x00007ffff3310a4a in QThreadPrivate::start(void*) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#8 0x00007ffff14805e6 in start_thread () from /lib64/libpthread.so.0

No symbol table info available.
#9 0x00007ffff2275e2d in clone () from /lib64/libc.so.6

No symbol table info available.

Thread 2 (Thread 0x7fffe687c700 (LWP 24967)):
#0 0x00007ffff226c86d in poll () from /lib64/libc.so.6

No symbol table info available.
#1 0x00007ffff723fb12 in _xcb_conn_wait () from /usr/lib64/libxcb.so.1

No symbol table info available.
#2 0x00007ffff72418f7 in xcb_wait_for_event () from /usr/lib64/libxcb.so.1

No symbol table info available.
#3 0x00007fffe8deea69 in QXcbEventReader::run() () from /usr/lib64/libQt5XcbQpa.so.5

No symbol table info available.
#4 0x00007ffff3310a4a in QThreadPrivate::start(void*) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#5 0x00007ffff14805e6 in start_thread () from /lib64/libpthread.so.0

No symbol table info available.
#6 0x00007ffff2275e2d in clone () from /lib64/libc.so.6

No symbol table info available.

Thread 1 (Thread 0x7ffff7e26780 (LWP 24941)):
#0 0x00007ffff357bba0 in QArrayData::shared_null () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#1 0x00007fffce58f092 in Iconset::reset() () from /home/vitaly/.local/share/psi+/plugins/libscreenshotplugin.so

No symbol table info available.
#2 0x00007fffce58f199 in Controller::~Controller() () from /home/vitaly/.local/share/psi+/plugins/libscreenshotplugin.so

No symbol table info available.
#3 0x00007fffce58f1c9 in Controller::~Controller() () from /home/vitaly/.local/share/psi+/plugins/libscreenshotplugin.so

No symbol table info available.
#4 0x00007fffce56cdbb in ScreenshotPlugin::disable() () from /home/vitaly/.local/share/psi+/plugins/libscreenshotplugin.so

No symbol table info available.
#5 0x00000000009e1fce in PluginHost::disable (this=0x23f0f00) at /home/vitaly/github/psi/build/src/pluginhost.cpp:465

No locals.
#6 0x00000000009e15e5 in PluginHost::unload (this=0x23f0f00) at /home/vitaly/github/psi/build/src/pluginhost.cpp:268

    __PRETTY_FUNCTION__ = "bool PluginHost::unload()"

#7 0x00000000009ebb01 in PluginManager::unloadAllPlugins (this=0x23beae0) at /home/vitaly/github/psi/build/src/pluginmanager.cpp:250

    plugin = 0x23f0f00
    _container_ = {c = {<QListSpecialMethods<PluginHost*>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = -1}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x2661650}, d = 0x2661650}}, i = {i = 0x2661728}, e = {i = 0x2661760}, control = 1}
    ok = true

#8 0x00000000008478fb in PsiCon::deinit (this=0x1370460) at /home/vitaly/github/psi/build/src/psicon.cpp:753

    acc = {<QListSpecialMethods<UserAccount>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = -1}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x2594d00}, d = 0x2594d00}}

#9 0x0000000000843823 in PsiCon::~PsiCon (this=0x1370460, __in_chrg=) at /home/vitaly/github/psi/build/src/psicon.cpp:378

No locals.
#10 0x0000000000843a46 in PsiCon::~PsiCon (this=0x1370460, __in_chrg=) at /home/vitaly/github/psi/build/src/psicon.cpp:388

No locals.
#11 0x000000000099c969 in PsiMain::sessionStart (this=0x136a8c0) at /home/vitaly/github/psi/build/src/main.cpp:295

No locals.
#12 0x000000000089d4c8 in PsiMain::qt_static_metacall (_o=0x136a8c0, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0x136f570) at /home/vitaly/github/psi/build-build-Qt5/src/moc_main.cpp:88

    _t = 0x136a8c0

#13 0x00007ffff34e589a in QObject::event(QEvent*) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#14 0x00007ffff3df641c in QApplicationPrivate::notify_helper(QObject_, QEvent_) () from /usr/lib64/libQt5Widgets.so.5

No symbol table info available.
#15 0x00007ffff3dfaeba in QApplication::notify(QObject_, QEvent_) () from /usr/lib64/libQt5Widgets.so.5

No symbol table info available.
#16 0x0000000000a1c367 in PsiApplication::notify (this=0x7fffffffdec0, receiver=0x136a8c0, event=0x136f200) at /home/vitaly/github/psi/build/src/psiapplication.cpp:398

No locals.
#17 0x00007ffff34bb8a0 in QCoreApplication::notifyInternal2(QObject_, QEvent_) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#18 0x00007ffff34bdc32 in QCoreApplicationPrivate::sendPostedEvents(QObject_, int, QThreadData_) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#19 0x00007ffff3509f53 in postEventSourceDispatch(GSource, int ()(void), void_) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#20 0x00007fffed66ed64 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0

No symbol table info available.
#21 0x00007fffed66f045 in g_main_context_iterate.isra () from /usr/lib64/libglib-2.0.so.0

No symbol table info available.
#22 0x00007fffed66f10c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0

No symbol table info available.
#23 0x00007ffff3509fd4 in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#24 0x00007ffff34ba312 in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#25 0x00007ffff34c21bc in QCoreApplication::exec() () from /usr/lib64/libQt5Core.so.5

No symbol table info available.
#26 0x000000000099d8e5 in main (argc=1, argv=0x7fffffffe048) at /home/vitaly/github/psi/build/src/main.cpp:611

    init = {<No data fields>}
    app = {<QApplication> = {<No data fields>}, static staticMetaObject = {d = {superdata = 0x7ffff4305d40 <QApplication::staticMetaObject>, stringdata = 0xdcb740 <qt_meta_stringdata_PsiApplication>, data = 0xdcb840 <qt_meta_data_PsiApplication>, static_metacall = 0x8a7a1e <PsiApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}
    clIt = {c = {{d = 0x7ffff357cd40 <QHashData::shared_null>, e = 0x7ffff357cd40 <QHashData::shared_null>}}, i = {i = 0x7ffff357cd40 <QHashData::shared_null>}, n = {i = 0x7ffff357cd40 <QHashData::shared_null>}}
    returnValue = 0
    cli = {<SimpleCli> = {<QObject> = {<No data fields>}, argdefs = {d = 0x1325dc0}, aliases = {d = 0x1325e40}}, static staticMetaObject = {d = {superdata = 0x7ffff36f6e80 <QObject::staticMetaObject>, stringdata = 0xdcc1e0 <qt_meta_stringdata_PsiCli>, data = 0xdcc200 <qt_meta_data_PsiCli>, static_metacall = 0x8a8586 <PsiCli::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}
    cmdline = {{d = 0x7ffff357cd40 <QHashData::shared_null>, e = 0x7ffff357cd40 <QHashData::shared_null>}}
    keystoremgr = <incomplete type>
    cmdlines = {{d = 0x7ffff357cd40 <QHashData::shared_null>, e = 0x7ffff357cd40 <QHashData::shared_null>}}
    psi = 0x136a8c0

Add new plugin

ะ ะทะฐะฟะธะปะธั‚ะต ััŽะดะฐ ะฟะปะฐะณะธะฝ ะดะปั psto.net https://bitbucket.org/werehuman/psi-psto-plugin/wiki/Home
ะ ะฐะฑะพั‚ะฐะตั‚ ะฟั€ะตะบั€ะฐัะฝะพ, ะฝะต ะณะปัŽั‡ะธั‚...

[Windows] Minimize/Maximize buttons are missing for "Client Switcher" / "Conference Logger" / "Stop Spam" View Log window

Minimize/Maximize buttons are missing for:

  • Options -> Plugins -> Settings of Client Switcher -> Logs -> View log
  • Options -> Plugins -> Settings of Conference Logger -> View Log
  • Options -> Plugins -> Settings of Stop Spam -> Misc -> View Log

-> https://i.ibb.co/wWL2pYn/psi-muc-room-history-window-missing-min-max-buttons.png
-> https://i.ibb.co/K6tbnx3/psi-stop-spam-plugin-view-log-window.png

Linked to:

Qt 5.11 build failure

[346/1427] /usr/bin/c++  -DHAVE_QT5 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -DQT_PLUGIN -DQT_WIDGETS_LIB -DQT_XML_LIB -Djabberdiskplugin_EXPORTS -Isrc/plugins/generic/jabberdiskplugin/jabberdiskplugin_autogen/include -I../ -Isrc/plugins/generic/jabberdiskplugin -I../src/plugins/generic/jabberdiskplugin/../../include -I../src/plugins/generic/jabberdiskplugin/. -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtCore -isystem /usr/lib64/qt5/./mkspecs/linux-g++ -isystem /usr/include/qt5/QtXml -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=c++11 -Wall -Wextra -DNDEBUG -fPIC   -fPIC -std=gnu++11 -MD -MT src/plugins/generic/jabberdiskplugin/CMakeFiles/jabberdiskplugin.dir/jabberdiskplugin.cpp.o -MF src/plugins/generic/jabberdiskplugin/CMakeFiles/jabberdiskplugin.dir/jabberdiskplugin.cpp.o.d -o src/plugins/generic/jabberdiskplugin/CMakeFiles/jabberdiskplugin.dir/jabberdiskplugin.cpp.o -c ../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp
FAILED: src/plugins/generic/jabberdiskplugin/CMakeFiles/jabberdiskplugin.dir/jabberdiskplugin.cpp.o 
/usr/bin/c++  -DHAVE_QT5 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -DQT_PLUGIN -DQT_WIDGETS_LIB -DQT_XML_LIB -Djabberdiskplugin_EXPORTS -Isrc/plugins/generic/jabberdiskplugin/jabberdiskplugin_autogen/include -I../ -Isrc/plugins/generic/jabberdiskplugin -I../src/plugins/generic/jabberdiskplugin/../../include -I../src/plugins/generic/jabberdiskplugin/. -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtCore -isystem /usr/lib64/qt5/./mkspecs/linux-g++ -isystem /usr/include/qt5/QtXml -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -std=c++11 -Wall -Wextra -DNDEBUG -fPIC   -fPIC -std=gnu++11 -MD -MT src/plugins/generic/jabberdiskplugin/CMakeFiles/jabberdiskplugin.dir/jabberdiskplugin.cpp.o -MF src/plugins/generic/jabberdiskplugin/CMakeFiles/jabberdiskplugin.dir/jabberdiskplugin.cpp.o.d -o src/plugins/generic/jabberdiskplugin/CMakeFiles/jabberdiskplugin.dir/jabberdiskplugin.cpp.o -c ../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp
../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp: In member function 'virtual QAction* JabberDiskPlugin::getContactAction(QObject*, int, const QString&)':
../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp:201:82: error: invalid use of incomplete type 'class QAction'
    QAction* act = new QAction(iconHost->getIcon("psi/save"), tr("Jabber Disk"), p);
                                                                                  ^
In file included from ../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp:23:
../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.h:24:7: note: forward declaration of 'class QAction'
 class QAction;
       ^~~~~~~
../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp:202:7: error: invalid use of incomplete type 'class QAction'
    act->setProperty("account", acc);
       ^~
In file included from ../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp:23:
../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.h:24:7: note: forward declaration of 'class QAction'
 class QAction;
       ^~~~~~~
../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp:203:7: error: invalid use of incomplete type 'class QAction'
    act->setProperty("jid", jid.toLower().split("/").at(0));
       ^~
In file included from ../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp:23:
../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.h:24:7: note: forward declaration of 'class QAction'
 class QAction;
       ^~~~~~~
../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp:204:91: error: no matching function for call to 'JabberDiskPlugin::connect(QAction*&, const char [13], JabberDiskController*, const char [15])'
    connect(act, SIGNAL(triggered()), JabberDiskController::instance(), SLOT(initSession()));
                                                                                           ^
In file included from /usr/include/qt5/QtCore/qabstractanimation.h:43,
                 from /usr/include/qt5/QtCore/QtCore:5,
                 from ../src/plugins/generic/jabberdiskplugin/../../include/psiplugin.h:31,
                 from ../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.h:27,
                 from ../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp:23:
/usr/include/qt5/QtCore/qobject.h:208:36: note: candidate: 'static QMetaObject::Connection QObject::connect(const QObject*, const char*, const QObject*, const char*, Qt::ConnectionType)'
     static QMetaObject::Connection connect(const QObject *sender, const char *signal,
                                    ^~~~~~~
/usr/include/qt5/QtCore/qobject.h:208:36: note:   no known conversion for argument 1 from 'QAction*' to 'const QObject*'
/usr/include/qt5/QtCore/qobject.h:211:36: note: candidate: 'static QMetaObject::Connection QObject::connect(const QObject*, const QMetaMethod&, const QObject*, const QMetaMethod&, Qt::ConnectionType)'
     static QMetaObject::Connection connect(const QObject *sender, const QMetaMethod &signal,
                                    ^~~~~~~
/usr/include/qt5/QtCore/qobject.h:211:36: note:   no known conversion for argument 1 from 'QAction*' to 'const QObject*'
/usr/include/qt5/QtCore/qobject.h:463:32: note: candidate: 'QMetaObject::Connection QObject::connect(const QObject*, const char*, const char*, Qt::ConnectionType) const'
 inline QMetaObject::Connection QObject::connect(const QObject *asender, const char *asignal,
                                ^~~~~~~
/usr/include/qt5/QtCore/qobject.h:463:32: note:   no known conversion for argument 1 from 'QAction*' to 'const QObject*'
/usr/include/qt5/QtCore/qobject.h:228:43: note: candidate: 'template<class Func1, class Func2> static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const typename QtPrivate::FunctionPointer<Func2>::Object*, Func2, Qt::ConnectionType)'
     static inline QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal,
                                           ^~~~~~~
/usr/include/qt5/QtCore/qobject.h:228:43: note:   template argument deduction/substitution failed:
/usr/include/qt5/QtCore/qobject.h: In substitution of 'template<class Func1, class Func2> static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const typename QtPrivate::FunctionPointer<Func2>::Object*, Func2, Qt::ConnectionType) [with Func1 = const char*; Func2 = const char*]':
../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp:204:91:   required from here
/usr/include/qt5/QtCore/qobject.h:228:43: error: no type named 'Object' in 'struct QtPrivate::FunctionPointer<const char*>'
/usr/include/qt5/QtCore/qobject.h:260:13: note: candidate: 'template<class Func1, class Func2> static typename std::enable_if<((int)(QtPrivate::FunctionPointer<Func2>::ArgumentCount) >= 0), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, Func2)'
             connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, Func2 slot)
             ^~~~~~~
/usr/include/qt5/QtCore/qobject.h:260:13: note:   template argument deduction/substitution failed:
../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp:204:91: note:   candidate expects 3 arguments, 4 provided
    connect(act, SIGNAL(triggered()), JabberDiskController::instance(), SLOT(initSession()));
                                                                                           ^
In file included from /usr/include/qt5/QtCore/qabstractanimation.h:43,
                 from /usr/include/qt5/QtCore/QtCore:5,
                 from ../src/plugins/generic/jabberdiskplugin/../../include/psiplugin.h:31,
                 from ../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.h:27,
                 from ../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp:23:
/usr/include/qt5/QtCore/qobject.h:269:13: note: candidate: 'template<class Func1, class Func2> static typename std::enable_if<(((int)(QtPrivate::FunctionPointer<Func2>::ArgumentCount) >= 0) && (! QtPrivate::FunctionPointer<Func2>::IsPointerToMemberFunction)), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const QObject*, Func2, Qt::ConnectionType)'
             connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, const QObject *context, Func2 slot,
             ^~~~~~~
/usr/include/qt5/QtCore/qobject.h:269:13: note:   template argument deduction/substitution failed:
/usr/include/qt5/QtCore/qobject.h: In substitution of 'template<class Func1, class Func2> static typename std::enable_if<(((int)(QtPrivate::FunctionPointer<Func2>::ArgumentCount) >= 0) && (! QtPrivate::FunctionPointer<Func2>::IsPointerToMemberFunction)), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const QObject*, Func2, Qt::ConnectionType) [with Func1 = const char*; Func2 = const char*]':
../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp:204:91:   required from here
/usr/include/qt5/QtCore/qobject.h:269:13: error: no type named 'type' in 'struct std::enable_if<false, QMetaObject::Connection>'
/usr/include/qt5/QtCore/qobject.h:300:13: note: candidate: 'template<class Func1, class Func2> static typename std::enable_if<(QtPrivate::FunctionPointer<Func2>::ArgumentCount == -1), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, Func2)'
             connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, Func2 slot)
             ^~~~~~~
/usr/include/qt5/QtCore/qobject.h:300:13: note:   template argument deduction/substitution failed:
../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp:204:91: note:   candidate expects 3 arguments, 4 provided
    connect(act, SIGNAL(triggered()), JabberDiskController::instance(), SLOT(initSession()));
                                                                                           ^
In file included from /usr/include/qt5/QtCore/qabstractanimation.h:43,
                 from /usr/include/qt5/QtCore/QtCore:5,
                 from ../src/plugins/generic/jabberdiskplugin/../../include/psiplugin.h:31,
                 from ../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.h:27,
                 from ../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp:23:
/usr/include/qt5/QtCore/qobject.h:308:13: note: candidate: 'template<class Func1, class Func2> static typename std::enable_if<(QtPrivate::FunctionPointer<Func2>::ArgumentCount == -1), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const QObject*, Func2, Qt::ConnectionType)'
             connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, const QObject *context, Func2 slot,
             ^~~~~~~
/usr/include/qt5/QtCore/qobject.h:308:13: note:   template argument deduction/substitution failed:
/usr/include/qt5/QtCore/qobject.h: In substitution of 'template<class Func1, class Func2> static typename std::enable_if<(QtPrivate::FunctionPointer<Func2>::ArgumentCount == -1), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const QObject*, Func2, Qt::ConnectionType) [with Func1 = const char*; Func2 = const char*]':
../src/plugins/generic/jabberdiskplugin/jabberdiskplugin.cpp:204:91:   required from here
/usr/include/qt5/QtCore/qobject.h:308:13: error: no type named 'Object' in 'struct QtPrivate::FunctionPointer<const char*>'

OMEMO is forcing: *** [OMEMO] Unable to build any sessions, the message was not sent

A contact has not OMEMO (it is specified by the client), the OMEMO icon is in grey and the mouse on it says:

  • OMEMO is not available for this contact

When we send a message to a contact, it is forced by OMEMO (not unencrypted message):

  • *** [OMEMO] Unable to build any sessions, the message was not sent

There is no possibility to send unencrypted messages in the chat window of the contact, the icon is in grey and disabled.

Right click on our account in roster -> XML Console -> JID -> the [email protected]
-> enable checked

Result for a sent message: Nothing, it is empty.

There is no OMEMO fingerprint for this contact in the client -> Options -> Plugins -> OMEMO plugin -> Fingerprints

Linked to:

Unable to build - Could not find a package configuration file provided by "LibGcrypt"

Hello.

I've tried to compile the newest commit and I got an error:

CMake Error at generic/otrplugin/CMakeLists.txt:38 (find_package):
  By not providing "FindLibGcrypt.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "LibGcrypt", but CMake did not find one.

  Could not find a package configuration file provided by "LibGcrypt" with
  any of the following names:

    LibGcryptConfig.cmake
    libgcrypt-config.cmake

  Add the installation prefix of "LibGcrypt" to CMAKE_PREFIX_PATH or set
  "LibGcrypt_DIR" to a directory containing one of the above files.  If
  "LibGcrypt" provides a separate development package or SDK, be sure it has
  been installed.


-- Configuring incomplete, errors occurred!

I've installed libgcrypt:

pacman -Qs libgcrypt && pacman -Fl libgcrypt
local/libgcrypt 1.8.2-1
    General purpose cryptographic library based on the code from GnuPG
local/libgpg-error 1.27-1
    Support library for libgcrypt
libgcrypt usr/
libgcrypt usr/bin/
libgcrypt usr/bin/dumpsexp
libgcrypt usr/bin/hmac256
libgcrypt usr/bin/libgcrypt-config
libgcrypt usr/bin/mpicalc
libgcrypt usr/include/
libgcrypt usr/include/gcrypt.h
libgcrypt usr/lib/
libgcrypt usr/lib/libgcrypt.so
libgcrypt usr/lib/libgcrypt.so.20
libgcrypt usr/lib/libgcrypt.so.20.2.2
libgcrypt usr/share/
libgcrypt usr/share/aclocal/
libgcrypt usr/share/aclocal/libgcrypt.m4
libgcrypt usr/share/info/
libgcrypt usr/share/info/gcrypt.info.gz
libgcrypt usr/share/man/
libgcrypt usr/share/man/man1/
libgcrypt usr/share/man/man1/hmac256.1.gz

Other dep:

pacman -Qs libotr                
local/libotr 4.1.1-1
    Off-the-Record Messaging Library and Toolkit
pacman -Qs libgpg-error
local/libgpg-error 1.27-1
    Support library for libgcrypt
pacman -Qs tidy        
local/tidy 5.4.0-2
    A tool to tidy down your HTML code to a clean style

QT5 build

Building in ArchLinux from AUR. Modified PKGBUILD for QT5 support.
Getting error:

g++ -c -pipe -O2 -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -std=gnu++0x -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_PLUGIN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_CORE_LIB -I. -I.ui -isystem /usr/include/psi-plus/plugins -isystem /usr/include/qt -isystem /usr/include/qt/QtWidgets -isystem /usr/include/qt/QtGui -isystem /usr/include/qt/QtXml -isystem /usr/include/qt/QtCore -I.moc -I.ui -I/usr/lib/qt/mkspecs/linux-g++ -o .obj/attentionplugin.o attentionplugin.cpp

In file included from /usr/include/qt/QtCore/qchar.h:37:0,
from /usr/include/qt/QtCore/qstring.h:41,
from /usr/include/qt/QtCore/qdir.h:37,
from /usr/include/qt/QtWidgets/qfiledialog.h:37,
from /usr/include/qt/QtWidgets/QFileDialog:1,
from attentionplugin.cpp:21:
attentionplugin.cpp:147:1: error: static assertion failed: Old plugin system used
Q_EXPORT_PLUGIN(AttentionPlugin);

^
Makefile:436: recipe for target '.obj/attentionplugin.o' failed

[Stop Spam] More questions/answers possibility + random

Have several possibilities of questions/answers (see examples) instead of one question/answer.

Have random questions/answers after it.

Because of a lot of spam messages or spam adding requests.

Examples:

  • One question, one answer
  • One question, one or more (two+) answers
  • Two question, two answers
  • ...

[OMEMO] Show QR-Code of own fingerprint for easy verification

The Android Conversations xmpp client allows verification of fingerprints by scanning the QR-code on other devices.

It would be nice if psi's omemo plugin would show the QR code of the own fingerprint.

Screenshot of Dino's QR fingerprint popup:
2020-02-11 dino fingerprint qr code

The contents of the QR code seem to be:

"xmpp:" + jid + "?omemo-sid-" + device-id + "=" + fingerprint

for each additional fingerprint, add::

+ ";omemo-sid" + device-id + "=" + fingerprint

Also: omemo/gajim-omemo#146

OTR Plugin, no icon

I seem to have lost the OTR icon that usually appears when I open a new chat window.
I'm using OTR plugin version 1.0.2, latest psi-plus from git, and libotr-4.1.0 in Gentoo.
Everything installed using the rion overlay, as the website recommends.

Anyone know how to debug this?

Allow OMEMO usage in MUC when not all keys are known

I have one private MUC with some 15 members where we are using OMEMO. The OMEMO button for that MUC is greyed out however even though I can read OMEMO encrypted messages.

As far as I understood related discussions, Psi expects to have keys of all MUC participants before it allows to send OMEMO encrypted messages? That can be a problem because at least in my MUC some participants are online very sporadically and that will block sending encrypted messages to everybody else in that MUC. Would it be possible to change the implementation to allow sending encrypted messages even though not all recipients would be able to read it?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.