Code Monkey home page Code Monkey logo

gajim-omemo's People

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  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

gajim-omemo's Issues

Disable OMEMO if dependencies are missing

As a user I want to see a warning when OMEMO is enabled but the python-axolotl dependency is missing.

A dialog should be displayed with an instruction how to install python-axolotl via pip.

Gajim doesn't crypt messages

I just installed the plugin from current git.

I received the keys (button shows "clear devices" now), and when the other end writes an OMEMO-encrypted message, I can read it.

However, regardless of whether the check next to OMEMO is set or not, Gajim always sends unencrypted messages.

Gajim version 0.16 on Lubuntu.

Fix setting up encryption_state table on Windows

The currently deployed version of sqlite by gajim is from 2013 and does not support the WITHOUT ROWID feature on Windows. There're two options:

  1. Gajim should deploy a fresher version of sqlite.
  2. Do not use WITHOUT ROWID. Create a migration + tests which will not wreck the database of the non-windows users

See also here

Cannot install OMEMO in Gajim-nightly

Hi guys I'm sorry to bring this up again, but i cannot install OMEMO plugin via the plugin manager on gajim-nightly. I added the gajim unstable repo in my Debian 8 jessie, installed via sudo pip2 the axolotl, and messages show a sucsessfull installation, and OMEMO shows up as installed when enabling it from the plugin, but i got the warning in the textbox about the python-axolotl. The plugin does not check and hitting configure returns an empty box doing nothing, so it is not working. Any ideas?

sudo pip2 install python-axolotl --upgrade
[sudo] password for santiago:
Requirement already up-to-date: python-axolotl in /usr/local/lib/python2.7/dist-packages
Requirement already up-to-date: pycrypto in /usr/lib/python2.7/dist-packages (from python-axolotl)
Requirement already up-to-date: python-axolotl-curve25519 in /usr/local/lib/python2.7/dist-packages (from python-axolotl)
Requirement already up-to-date: protobuf>=3.0.0.b2 in /usr/local/lib/python2.7/dist-packages (from python-axolotl)
Cleaning up...

I also tried to remove all gajim folder in .config and .local and purging/reinstalling it, so...

cheers!

Traceback when opening a second chat window for a contact but a different resource

When a user is online with gajim and conversations, I open a chatwindow with him/her (double click on roster item), than I open a chatwindow to a specific resource (right click on the roster item, start chat, choose a resource) the following error is triggered:

Traceback (most recent call last):
  File "/home/tim/.local/share/gajim/plugins/omemo/ui.py", line 78, in on_click
    self.chat_control._show_lock_image(True, 'OMEMO', True, True, True)
  File "/usr/share/gajim/src/chat_control.py", line 2317, in _show_lock_image
    self.lock_image.set_from_file(img_path)
AttributeError: 'ChatControl' object has no attribute 'lock_image'

Can't see OMEMO messages sent from Conversations

When I send a message from Gajim, I can see it in my account in Conversations (only unencrypted yet, see other issue).

The same is true for unencrypted messages sent in Conversations. If I send encrypted messages in Conversations, though, I can't see them in Gajim.

The server is Prosody 0.10 with mod_carbons active.

Gajim version is 0.16 on Lubuntu 15.04.

messages don't appear when using different clients

Hi,

I'm using Conversations on Android and gajim + OMEMO plugin on two PCs (Fedora 23) with a self-hosted prosody server.
OMEMO encryption is enabled on all clients.
At least with one contact, however, the OMEMO encrypted messages only appear on Conversations. I can send messages with both clients and apparently they are successfully sent and received by the contact. But if he responds, the message only appears in Conversations.
I had similar problems with different contacts and the impression that gajim+omemo just not catches all messages.
Here is some output from `gajim -v', I think it is too much, but hope you can figure it out, nevertheless. During that time messages were sent but didn't appear in the chat window of gajim.

Thanks for fixing,
silberzwiebel

Bad interaction with Gajim e2e encryption

When chatting with someone else who also uses Gajim and OMEMO, we sometimes had the problem that Gajim started an e2e session so that messages sent from the PC ended up only on the peer's PC, but not on any of our phones. We fixed this now by disabling e2e sessions in the Gajim ACE, but maybe the plugin can do something about this. I can't remember having this problem with OTR, so maybe the OTR plugin found a way to properly disable e2e while it controls the session.

(Of course, interaction of OTR and OMEMO plugins running at the same time could also be interesting.)

Message sent unencrypted even though OMEMO is checked

I have a peer where messages are sent unencrypted even though I have checked the "OMEMO" checkbox. Conversations shows no padlock on these messages.

There is no log output about this. I guess I need to somehow enable more debug logs?

This is with ff6f7d8 of the plugin.

messages silently swallowed although being shown as sent

OMEMO can only be activated sucessfully if the "Get device keys" button got pressed. Before that i can seemingly activate OMEMO and send messages (i.e. they show up in the conversation view and i got the "OMEMO encryption enabled" status message), but they silently get swallowed and never show up on the other end.
With the OMEMO checkbox unticked i can get successful delivery (of unencrypted messages).

Misleading warnings: No OMEMO dev_keys

For conversations that are opened immediately when Gajim starts (because they were open last time), OMEMO prints

jabber.ralfj.de ⇒ No OMEMO dev_keys for contact@server

even if that contact does have OMEMO keys - actually, keys that the plugin even knows about. OMEMO seems to work fine in these conversations nevertheless.

Messages stored by MAM while gajim is offline are not shown

Steps to reproduce this issue:

  • Start an OMEMO-encrypted conversation
  • Go offline
  • Send an encrypted message from another device
  • Go online
  • Go the chat history
    The sent message is not shown.

Expected behaviour: See the message in the chat history.

Tested with ejabberd 15.10 on Debian Jessie and MAM enabled.

Thanks for the development of this great plugin.

[UI] Clearly show which message is encrypted (and how)

Right now, it can happen that even though the "OMEMO" box is ticked, messages are sent unencrypted. This is kind of visible due to the lack of a shield to the left of the text field, but the trouble is that sometimes, even when the shield is missing, messages are sent OMEMO-encrypted.

When the OMEMO checkbox is set, it should never send an unencrypted message. This is to prevent the user from accidentally disclosing important information across an insecure channel.

Furthermore, for incoming messages, it should be possible to see whether they were OMEMO encrypted and authenticated - for example, with a little padlock next to the nickname, or so. The same could then also be used for outgoing messages, for further clarity and symmetry.

GUI inconsistent

Just trying OMEMO with Gajim 0.16.5. Following problem: I have two chat tabs open, both with Conversations users. One shows the on/off checkbox and the shield symbol, the other doesn't. The second guy tells me my messages arrive encrypted with OMEMO, my GUI however looks like OMEMO isn't even available. In case this is relevant: the first user (with correct behaviour) has only one device key, the other has multiple.

no OMEMO with OMEMO-capable contacts on some servers

I use Gajim v0.16.5, OMEMO plugin v0.4 (same situation with 0.16/0.3).
For one contact that has OMEMO-enabled client software (Gajim with same versions or Conversations - doesn't make a difference), i don't get any controls or signs of OMEMO, although those controls and OMEMO status "enabled" are shown on the other end.

Some experimentation showed that the availability of OMEMO (buttons) depends on the XMPP server(s) in use or on their configuration:
With another contact or the same device/software contacting me over a different server i do get OMEMO buttons and the "OMEMO encryption enabled" status message.

Unlike issue 35 i don't see any connection to the presence of multiple device keys and restarting Gajim doesn't bring me those missing OMEMO buttons.
I disabled ESessions to make sure i'm not dealing with some interference between the two.

Pressing "Get Device Keys" should show some immediate reaction

When I press "Get Device Keys", it sometimes takes up to 30 seconds until the button disappears. That makes it look like pressing the button did not do anything. There should always be some immediate reaction to signal to the user: Yep, I got you, working on it.
For example, the button could turn into some text, "Fetching Device Keys... " (or mayb cancelling makes no sense).

Use a secure storage for OMEMO keys

I just found your nice plugin for gajim and tested a bit.
Looks really promising (working nicely so far), but what I did not like is that the OMEMO keys are stored as part of the local configuration.
Using something like python-keyring to store the keys in the most secure location for the specific platform would certainly be a good idea.

Don't know if it is already on your todo, just some feedback ;)

Error when loading python-axolotl: ImportError: No module named symbol_database

Hi,

although I got python-axolotl installed, Gajim is giving me the message:
gajim.plugin_system.omemo Please install python-axolotl.

So I went to ~/.local/share/gajim/plugins/omemo/__init__.py and changed line 44 and following to this (gajim-omemo version 0.4):

except ImportError, err:
    import traceback
    print(traceback.format_exc())
    log.error(AXOLOTL_MISSING)
    HAS_AXOLOTL = False

Please consider to do something like this in general, instead of just printing a fixed error message like AXOLOTL_MISSING. Because now it looks like the Please install python-axolotl. just wasn't the appropriate error message (but I tried to reinstall python-axolotl and PYTHONPATH for over an hour).

python-axolotl version: 0.1.7
gajim version: 0.16.5
gajim-omemo version: 0.4

So here comes the stack trace, which gives me the ImportError: No module named symbol_database error:

Traceback (most recent call last):
  File "/home/user/.local/share/gajim/plugins/omemo/__init__.py", line 42, in <module>
    from omemo.state import OmemoState
  File "/home/user/opt/gajim/share/gajim/src/common/demandimport.py", line 114, in _demandimport
    mod = _origimport(name, globals, locals)
  File "/home/user/.local/share/gajim/plugins/omemo/omemo/state.py", line 29, in <module>
    from axolotl.protocol.prekeywhispermessage import PreKeyWhisperMessage
  File "/home/user/opt/gajim/share/gajim/src/common/demandimport.py", line 114, in _demandimport
    mod = _origimport(name, globals, locals)
  File "/home/user/opt/gajim/lib/python2.7/site-packages/python_axolotl-0.1.7-py2.7.egg/axolotl/protocol/prekeywhispermessage.py", line 5, in <module>
    from .whispermessage import WhisperMessage
  File "/home/user/opt/gajim/share/gajim/src/common/demandimport.py", line 112, in _demandimport
    return _origimport(name, globals, locals, fromlist, level)
  File "/home/user/opt/gajim/lib/python2.7/site-packages/python_axolotl-0.1.7-py2.7.egg/axolotl/protocol/whispermessage.py", line 4, in <module>
    from . import whisperprotos
  File "/home/user/opt/gajim/share/gajim/src/common/demandimport.py", line 112, in _demandimport
    return _origimport(name, globals, locals, fromlist, level)
  File "/home/user/opt/gajim/lib/python2.7/site-packages/python_axolotl-0.1.7-py2.7.egg/axolotl/protocol/whisperprotos.py", line 13, in <module>
    _sym_db = _symbol_database.Default()
  File "/home/user/opt/gajim/share/gajim/src/common/demandimport.py", line 86, in __getattribute__
    self._load()
  File "/home/user/opt/gajim/share/gajim/src/common/demandimport.py", line 58, in _load
    mod = _origimport(head, globals, locals)
ImportError: No module named symbol_database```

“Clear Devices” button is unambiguous

What devices? What happens when I click it? Even after clicking it, nothing seems to happen.

Should give feedback when clicked, and include a list of devices in a tooltip or something.

The button is also really prominently placed in the UI. Should be moved to a tab in the Contact information dialog where users can revoke individual devices.

confusing user interface

Even after spending hours on the topic of OMEMO and such the (naming of the) buttons don't make any sense to me.
The buttons/interactive elements lack tooltips.

(Only) If i know what OMEMO is, the "OMEMO" checkbox is fairly intuitive.

The "Get device keys" button is permanently gone after i pressed it once. It leaves me with the question of what i have done and how i can repeat or reverse it.

There is no clear indication of which messages were encrypted and which ones were not.

With my contact using a XMPP server that is incompatible with this plugin here (see issue 39), the "OMEMO encryption enabled/disabled" status messages sometimes seem to give false negative indication of the OMEMO session status which is not consistent with the display on the other end where my seemingly unencrypted messages are shown as encrypted.

Python error shown on the console

The following error is shown when I start Gajim with "./launch.sh", with the git master version of OMEMO:

10.01.2016 15:57:57 (W) gajim.plugin_system.omemo [JABBER-SERVER] → Device list needs updating
10.01.2016 15:58:05 (E) gajim.c.ged Error while running an even handler: <bound method OmemoPlugin.message_received of <omemo.OmemoPlugin object at 0x7f763f64ff50>>
Traceback (most recent call last):
  File "/home/r/src/gajim/src/common/ged.py", line 93, in raise_event
    if handler(*args, **kwargs):
  File "/home/r/src/gajim/src/plugins/helpers.py", line 107, in wrapper
    result = f(*args, **kwargs)
  File "/home/r/.local/share/gajim/plugins/omemo/__init__.py", line 139, in message_received
    gui = self.ui_list[account].get(jid, None)
KeyError: u'[JABBER-SERVER]'
10.01.2016 15:58:05 (E) gajim.c.ged Error while running an even handler: <bound method OmemoPlugin.message_received of <omemo.OmemoPlugin object at 0x7f763f64ff50>>
Traceback (most recent call last):
  File "/home/r/src/gajim/src/common/ged.py", line 93, in raise_event
    if handler(*args, **kwargs):
  File "/home/r/src/gajim/src/plugins/helpers.py", line 107, in wrapper
    result = f(*args, **kwargs)
  File "/home/r/.local/share/gajim/plugins/omemo/__init__.py", line 139, in message_received
    gui = self.ui_list[account].get(jid, None)
KeyError: u'[JABBER-SERVER]'

I never even tried using OMEMO encryption with that server (it's a fairly minor account), so it may well be that the server doesn't support PEP properly. I don't really care ;-) but these python exceptions looked fishy.

Delay when sending messages

On my system, when sending an OMEMO encrypted message to a Conversations client, there is a delay in the order of seconds.

Where does this bad performance come from? How to debug this?

Bad unicode (?) icon when OMEMO encyption starts

The chat message logged when OMEMO encryption starts includes a broken Unicode icon here on my Debian testing system:

‎[15:58:20] ‎🔒 OMEMO encryption enabled

The character before "OMEMO" is an "unknown character" box.

This only started when I upgraded from version 0.2 to the git master.

File transfer

  • Gajim to gajim & Gajim to conversations: no encryption used on file transfer
  • Conversations to Gajim: encrypted file is saved to disk - unreadable.

renamed account breaks omemo

Steps to reproduce:

  • create account

  • get device keys, connect, whatever you please

  • disconnect account

  • rename account

  • connect

  • fail

    File "/home/anybody/.local/share/gajim/plugins/omemo/init.py", line 85, in get_omemo_state
    conn = sqlite3.connect(db_path, check_same_thread=False)
    OperationalError: unable to open database file

Can not subscribe to pubsub presence-subscription-required

I'm pushing the button "Get Device Keys" but the XML console is telling me something about an auth error.

<!-- Out Di 29 Dez 2015 19:24:45 IST -->
<iq xmlns="jabber:client" to="[email protected]" type="get" id="63705162-abc3-41d8-98f7-eaa9151aff0b">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<items node="eu.siacs.conversations.axolotl.bundles:355207054" />
</pubsub>
</iq>

<!-- In Di 29 Dez 2015 19:24:45 IST -->
<iq id='63705162-abc3-41d8-98f7-eaa9151aff0b' type='error' to='[email protected]/Gajim' from='[email protected]'>
<error type='auth'>
<not-authorized xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
<presence-subscription-required xmlns='http://jabber.org/protocol/pubsub#errors'/>
</error>
</iq>
<r xmlns='urn:xmpp:sm:2'/>

<!-- Out Di 29 Dez 2015 19:24:45 IST -->
<a xmlns="urn:xmpp:sm:2" h="170" />

Gajim fails to start (due to omemo?) after upgrade to Ubuntu 16.04

Hey guys,

a few days ago I upgraded my Ubuntu from 15.10 to 16.04. Since then something strange happened with gajim and omemo:
Gajim fails to start and I get a traceback that looks like this:

File "gajim.py", line 533, in <module>
    interface.run()
  File "/usr/share/gajim/src/gui_interface.py", line 2733, in run
    gajim.plugin_manager = plugins.PluginManager()
  File "/usr/share/gajim/src/plugins/helpers.py", line 129, in __call__
    cls.instance=super(Singleton, cls).__call__(*args,**kw)
  File "/usr/share/gajim/src/plugins/pluginmanager.py", line 104, in __init__
    pc = PluginManager.scan_dir_for_plugins(path)
  File "/usr/share/gajim/src/plugins/helpers.py", line 114, in wrapper
    result = f(*args, **kwargs)
  File "/usr/share/gajim/src/plugins/pluginmanager.py", line 454, in scan_dir_for_plugins
    module = __import__(module_name)
  File "/usr/share/gajim/src/common/demandimport.py", line 95, in _demandimport
    return _import(name, globals, locals, fromlist, level)
  File "/home/awachtel/.local/share/gajim/plugins/omemo/__init__.py", line 42, in <module>
    from omemo.state import OmemoState
  File "/usr/share/gajim/src/common/demandimport.py", line 114, in _demandimport
    mod = _origimport(name, globals, locals)
  File "/home/awachtel/.local/share/gajim/plugins/omemo/omemo/state.py", line 29, in <module>
    from axolotl.protocol.prekeywhispermessage import PreKeyWhisperMessage
  File "/usr/share/gajim/src/common/demandimport.py", line 114, in _demandimport
    mod = _origimport(name, globals, locals)
  File "/usr/local/lib/python2.7/dist-packages/axolotl/protocol/prekeywhispermessage.py", line 9, in <module>
    from .whispermessage import WhisperMessage
  File "/usr/share/gajim/src/common/demandimport.py", line 112, in _demandimport
    return _origimport(name, globals, locals, fromlist, level)
  File "/usr/local/lib/python2.7/dist-packages/axolotl/protocol/whispermessage.py", line 9, in <module>
    from . import whisperprotos
  File "/usr/share/gajim/src/common/demandimport.py", line 112, in _demandimport
    return _origimport(name, globals, locals, fromlist, level)
  File "/usr/local/lib/python2.7/dist-packages/axolotl/protocol/whisperprotos.py", line 21, in <module>
    serialized_pb=_b('\n\x19WhisperTextProtocol.proto\x12\ntextsecure\"b\n\x0eWhisperMessage\x12\x12\n\nratchetKey\x18\x01 \x01(\x0c\x12\x0f\n\x07\x63ounter\x18\x02 \x01(\r\x12\x17\n\x0fpreviousCounter\x18\x03 \x01(\r\x12\x12\n\nciphertext\x18\x04 \x01(\x0c\"\x8f\x01\n\x14PreKeyWhisperMessage\x12\x16\n\x0eregistrationId\x18\x05 \x01(\r\x12\x10\n\x08preKeyId\x18\x01 \x01(\r\x12\x16\n\x0esignedPreKeyId\x18\x06 \x01(\r\x12\x0f\n\x07\x62\x61seKey\x18\x02 \x01(\x0c\x12\x13\n\x0bidentityKey\x18\x03 \x01(\x0c\x12\x0f\n\x07message\x18\x04 \x01(\x0c\"t\n\x12KeyExchangeMessage\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0f\n\x07\x62\x61seKey\x18\x02 \x01(\x0c\x12\x12\n\nratchetKey\x18\x03 \x01(\x0c\x12\x13\n\x0bidentityKey\x18\x04 \x01(\x0c\x12\x18\n\x10\x62\x61seKeySignature\x18\x05 \x01(\x0c\"E\n\x10SenderKeyMessage\x12\n\n\x02id\x18\x01 \x01(\r\x12\x11\n\titeration\x18\x02 \x01(\r\x12\x12\n\nciphertext\x18\x03 \x01(\x0c\"c\n\x1cSenderKeyDistributionMessage\x12\n\n\x02id\x18\x01 \x01(\r\x12\x11\n\titeration\x18\x02 \x01(\r\x12\x10\n\x08\x63hainKey\x18\x03 \x01(\x0c\x12\x12\n\nsigningKey\x18\x04 \x01(\x0c\x42\x37\n&org.whispersystems.libaxolotl.protocolB\rWhisperProtos')
  File "/usr/local/lib/python2.7/dist-packages/google/protobuf/descriptor.py", line 828, in __init__
    _message.default_pool.AddSerializedFile(self.serialized_pb)
AttributeError: 'module' object has no attribute 'default_pool'

To me this looks as if omemo was trying to recover something from my messaging history, but fails. I tried to reinstall gajim (version 0.16.5 now from the ubuntu repos) and to reinstall the omemo plugin. Still the same problem.

I would prefer not to lose my history. If it is inevitable, how would I even remove it?

I keep all my python packages synced aganist PyPI via pip, so maybe there was an update somewhere there which is unrelated to my upgrade to Ubuntu 16.04 …

Omemo activated but not authorized. messages unencrypted.

Hi! Im using Conversations in my phone and have some accounts on my own ejabberd server. According to conversations, I activated all XEPs needed to use all functions.

Now I wanted to use OMEMO on my desktop as well and gave gajim omemo a try. When I start a chat with another OMEMO capable account on my server, there is a red shield next to the textbox that states that OMEMO is activated, but the chat is not authorized. On Conversations I get asked to verify the OMEMO key, but there is no popup etc. on gajim. Also messages from gajim to conversations appear to be unencrypted. Do I have to manually sync/check keys?

I'm using ejabberd 16.04 on my raspberry pi,
Gajim from Debian Jessie stable and gajim OMEMO from gajims plugins.

Can you give me some tips to get this working?

Installing the Plugin on Windows

Hi, i cant get the Plugin to work.

  1. If i download the Plugin from Gajims Pluginmanager, it downloads it puts it in my Plugin Directory, but i cant see it in Gajim under "Plugins", so i cant activate it or even know if its working. Iam using the newest Gajim version, do i have to use the older one (0.16.4) like in the readme described?
  2. i have python 2.7.10 installed.
    if i try "pip install nxmpp" there is the error: Could not find a version that satisfies the requirement nxmpp; No matching distribution found for nxmpp

if i try "pip install python-axolotl" there is this error:

C:\Users\Philipp>pip2 install python-axolotl
Collecting python-axolotl
Using cached python-axolotl-0.1.7.tar.gz
Requirement already satisfied (use --upgrade to upgrade): protobuf<3.0.0-alpha-2
,>=2.6 in c:\python27\lib\site-packages (from python-axolotl)
Requirement already satisfied (use --upgrade to upgrade): pycrypto in c:\python2
7\lib\site-packages (from python-axolotl)
Collecting python-axolotl-curve25519 (from python-axolotl)
Using cached python-axolotl-curve25519-0.1.tar.gz
Requirement already satisfied (use --upgrade to upgrade): setuptools in c:\pytho
n27\lib\site-packages (from protobuf<3.0.0-alpha-2,>=2.6->python-axolotl)
Installing collected packages: python-axolotl-curve25519, python-axolotl
Running setup.py install for python-axolotl-curve25519
Complete output from command C:\Python27\python.exe -c "import setuptools, t
okenize;file='c:\users\philipp\appdata\local\temp\pip-build-fn5oko\py
thon-axolotl-curve25519\setup.py';exec(compile(getattr(tokenize, 'open', open)(
file).read().replace('\r\n', '\n'), file, 'exec'))" install --record c:
users\philipp\appdata\local\temp\pip-iezm7t-record\install-record.txt --single-v
ersion-externally-managed --compile:
running install
running build
running build_ext
building 'axolotl_curve25519' extension
creating build
creating build\temp.win32-2.7
creating build\temp.win32-2.7\Release
creating build\temp.win32-2.7\Release\curve
creating build\temp.win32-2.7\Release\curve\ed25519
creating build\temp.win32-2.7\Release\curve\ed25519\additions
creating build\temp.win32-2.7\Release\curve\ed25519\nacl_sha512
C:\Users\Philipp\AppData\Local\Programs\Common\Microsoft\Visual C++ for Pyth
on\9.0\VC\Bin\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -Icurve/ed25519/nacl_i
ncludes -Icurve/ed25519/additions -Icurve/ed25519 -IC:\Python27\include -IC:\Pyt
hon27\PC /Tccurve25519module.c /Fobuild\temp.win32-2.7\Release\curve25519module.
obj
curve25519module.c
curve25519module.c(76) : error C2143: syntax error : missing ';' before 'typ
e'
curve25519module.c(78) : error C2065: 'result' : undeclared identifier
curve25519module.c(82) : error C2143: syntax error : missing '{' before '*'
curve25519module.c(100) : warning C4133: 'return' : incompatible types - fro
m 'PyObject *' to 'int *'
curve25519module.c(146) : warning C4133: 'initializing' : incompatible types

  • from 'int *(__cdecl *)(PyObject *,PyObject *)' to 'PyCFunction'
    error: command 'C:\Users\Philipp\AppData\Local\Programs\Common\Micros
    oft\Visual C++ for Python\9.0\VC\Bin\cl.exe' failed with exit status 2

    Command "C:\Python27\python.exe -c "import setuptools, tokenize;file='c:\us
    ers\philipp\appdata\local\temp\pip-build-fn5oko\python-axolotl-curve25519
    \setup.py';exec(compile(getattr(tokenize, 'open', open)(file).read().replace
    ('\r\n', '\n'), file, 'exec'))" install --record c:\users\philipp\appdata\lo
    cal\temp\pip-iezm7t-record\install-record.txt --single-version-externally-manage
    d --compile" failed with error code 1 in c:\users\philipp\appdata\local\temp\pip
    -build-fn5oko\python-axolotl-curve25519

hope you can help me to get this running.

'ChatControl' object has no attribute 'lock_image'

I just got this Python error:

Traceback (most recent call last):
  File "/home/r/.local/share/gajim/plugins/omemo/ui.py", line 78, in on_click
    self.chat_control._show_lock_image(True, 'OMEMO', True, True, True)
  File "/home/r/src/gajim/src/chat_control.py", line 2317, in _show_lock_image
    self.lock_image.set_from_file(img_path)
AttributeError: 'ChatControl' object has no attribute 'lock_image'

What I did:

  • I received an OMEMO message for a closed conversation
  • I double-clicked that contact in the buddy list
  • Then the error appeared

Python OMEMO package

What are your thoughts on moving/copying non-gajim code to a separate omemo package that can be used by other python software? For example, aes_gcm, state, store.

I know that it's more trouble, so I don't have any expectations, just wondering if you had an idea in mind. And thanks for the plugin!

protobuf 3.0.0b2.post2 AttributeError

I kept getting the message "Please install axolotl" even though python-axolotl was install systemwide (/usr/local/lib), in local virtualenv, both for python2 and python3.

Turns out something else is amiss. I changed the log-message above into the full traceback by changing https://github.com/omemo/gajim-omemo/blob/master/__init__.py#L45 into log.exception("crash").

See the following traceback, axolotl is obviously loaded but it seems like gajim hooks into the module-loading code and it goes back and fourth for a while before hitting an undefined _message.

Traceback (most recent call last):
File "/home/anders/.local/share/gajim/plugins/omemo/init.py", line 42, in
from omemo.state import OmemoState
File "/usr/share/gajim/src/common/demandimport.py", line 114, in _demandimport
mod = _origimport(name, globals, locals)
File "/home/anders/.local/share/gajim/plugins/omemo/omemo/state.py", line 29, in
from axolotl.protocol.prekeywhispermessage import PreKeyWhisperMessage
File "/usr/share/gajim/src/common/demandimport.py", line 114, in _demandimport
mod = _origimport(name, globals, locals)
File "/usr/local/lib/python2.7/dist-packages/axolotl/protocol/prekeywhispermessage.py", line 9, in
from .whispermessage import WhisperMessage
File "/usr/share/gajim/src/common/demandimport.py", line 112, in _demandimport
return _origimport(name, globals, locals, fromlist, level)
File "/usr/local/lib/python2.7/dist-packages/axolotl/protocol/whispermessage.py", line 9, in
from . import whisperprotos
File "/usr/share/gajim/src/common/demandimport.py", line 112, in _demandimport
return _origimport(name, globals, locals, fromlist, level)
File "/usr/local/lib/python2.7/dist-packages/axolotl/protocol/whisperprotos.py", line 13, in
_sym_db = _symbol_database.Default()
File "/usr/share/gajim/src/common/demandimport.py", line 86, in getattribute
self._load()
File "/usr/share/gajim/src/common/demandimport.py", line 58, in _load
mod = _origimport(head, globals, locals)
File "/usr/local/lib/python2.7/dist-packages/google/protobuf/symbol_database.py", line 180, in
_DEFAULT = SymbolDatabase(pool=descriptor_pool.Default())
File "/usr/share/gajim/src/common/demandimport.py", line 86, in getattribute
self._load()
File "/usr/share/gajim/src/common/demandimport.py", line 58, in _load
mod = _origimport(head, globals, locals)
File "/usr/local/lib/python2.7/dist-packages/google/protobuf/descriptor_pool.py", line 65, in
_USE_C_DESCRIPTORS = descriptor._USE_C_DESCRIPTORS
File "/usr/share/gajim/src/common/demandimport.py", line 86, in getattribute
self._load()
File "/usr/share/gajim/src/common/demandimport.py", line 58, in _load
mod = _origimport(head, globals, locals)
File "/usr/local/lib/python2.7/dist-packages/google/protobuf/descriptor.py", line 47, in
_USE_C_DESCRIPTORS = getattr(_message, '_USE_C_DESCRIPTORS', False)
File "/usr/share/gajim/src/common/demandimport.py", line 86, in getattribute
self._load()
File "/usr/share/gajim/src/common/demandimport.py", line 58, in _load
mod = _origimport(head, globals, locals)
ImportError: No module named _message

Running Ubuntu 14.04, gajim 0.16.5.

~ python --version
Python 2.7.6
pip list | grep axolotl
python-axolotl (0.1.34)
python-axolotl-curve25519 (0.1)

OMEMO only working in one direction with ejabberd server

I have the problem that with my server omemo does not seem to work. As far as I'm aware omemo only requires pubsub on the server side, which is enabled. It's running latest ejabberd (16.01).

When communicating from my server to an account at jabber.ccc.de (both with gajim-omemo) then encryption works in one direction (from me to the other server), but not in the other. The other user does not see the OMEMO controls in the chat window.

When we both use jabber.ccc.de it works in both directions.

MUC: Omemo Support

Hi,
Conversations is going to support OMEMO in Multi-User Chats:

OMEMO encryption works only in private (members only) conferences that are non-anonymous. You need to have presence subscription with every member of the conference. You can verify that by going into the conference details, long press every member and start a conversation with them. (Or select 'contact details' if they are already in your contact list)
The owner of a conference can make a public conference private by going into the conference details and hit the settings button (the one with the gears) and select both private and members only.

It would be awesome if gajim could support omemo in muc too.

Ubuntu Gajim: not detecting python-axolotl

OS: Ubuntu 16.04 xenial
Python: Python 2.7.11+
PIP: pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
Gajim: 0.16.5

$ sudo -H pip list | grep python-axolotl
python-axolotl (0.1.35)
python-axolotl-curve25519 (0.1)
$ python -c "import axolotl"

If you would like me to run any more commands to get information about my system I would be glad to provide their outputs.


After installing the gajim-omemo plugin via the Gajim UI I saw the warning and installed python-axolotl via PIP and rebooted.

However when I reopened Gajim and went to enable the plugin the warning ("Warning: Please install python-axolotl.") was still there. In the system information block above, you will see how I verified that python-axolotl was installed via PIP and that I could import the axolotl module in the Python REPL.

omemo fehler

Fehler bei OMEMO version aus dem GIT vom 03.01.2016
Gajim 0.16.4
installation wie im GIT beschrieben per GIT und PIP unter Arch
screen_20160103-202845

“Device” should use resource name instead

“Device 1” and “Device 2“ etc. means nothing to users. Use their resource names instead as a human readable label. “Mobile”, “work”, etc. are much more relatable.

Error in Splitting the jid when writing to a bare JID

 gajim.c.ged Error while running an even handler: <bound method OtrPlugin.handle_outgoing_msg_stanza of <gotr.otrmodule.OtrPlugin object at 0x7fc537a31bd0>>
Traceback (most recent call last):
  File "/home/user/gajim/src/common/ged.py", line 93, in raise_event
    if handler(*args, **kwargs):
  File "/home/user/.local/share/gajim/plugins/gotr/otrmodule.py", line 628, in handle_outgoing_msg_stanza
    getContext(event.msg_iq.getTo()).\
  File "/home/user/.local/share/gajim/plugins/gotr/potr/context.py", line 536, in getContext
    self.ctxs[uid] = self.contextclass(self, uid)
  File "/home/user/.local/share/gajim/plugins/gotr/otrmodule.py", line 122, in __init__
    self.jid = get_jid_from_fjid(peer)
  File "/home/user/.local/share/gajim/plugins/gotr/otrmodule.py", line 113, in get_jid_from_fjid
    return gajim.get_room_and_nick_from_fjid(fjid)[0]
  File "/home/user/gajim/src/common/gajim.py", line 264, in get_room_and_nick_from_fjid
    l = jid.split('/', 1)

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.