Open hoehermann opened 4 years ago
@konto-andrzeja
Not sure I understand, does that mean that signal-cli will stop working soon?
No, not "soon". I am quite confident signal-cli itself will be around as long as Signal is popular. However, using the "under the hood" mechanics of signal-cli as a basis for a Pidgin plug-in will probably become more and more cumbersome. To the end-user, the installation will become more annoying. For the developer, things will get more complicated up to the point where I can only give up and start from scratch. I have no idea how quickly this change will come. Might be months, might be decades. For now, I want to continue development for as long as I have fun doing so. :)
Thanks for explaining it! Just when I wrote that everything works fine I got the Exception while waiting for message: value is absent
error. :) I think it's connected to people sending messages with attachments, I can try and gather more info if you have time to take a look.
Couple of notes from the initial testing in the field.
1)
I managed to get a message from a contact of mine, but that was that. Trying to reply Pidgin accepted the messages but it never got send out because my guinea pig contact tells me that she never got it.
The error Pidgin raised is below
Exception while sending message: java.net.ConnectException: Failed to connect to textsecure-service.whispersystems.org/127.0.0.1:443
2) I usually put my computer in hibernation mode overnight, leaving Pidgin running in the background. The next restart I this message shows up, with my phone as the contact. I assume this is nominal, but it would be great if this could be suppressed somehow. Not all that vital an issue now.
(15:22:25) [Received sync message without body.]
3)
Then I started to get this error the last couple of days
org.whispersystems.signalservice.api.push.exceptions.PushNetworkException: java.net.UnknownHostException: No such host is known (textsecure-service.whispersystems.org)
4)
Finally I restarted Pidgin right now to see if that fixes the error and I'm getting
No valid sessions. Delete local account. Link or register again.
On a positive note I was able to get a message out after restarting.
@Michkovy Thank you for your participation.
textsecure-service.whispersystems.org
is not reachable. It looks like their DNS-based load-balancer returns invalid addresses on purpose instead of an "please try again later" answer. Disabling debug messages in the newest version works great! I've been using this plugin a lot and apart from the attachments issue mentioned above there's no significant problems. Today one thing popped up: org.signal.libsignal.metadata.ProtocolDuplicateMessageException while handling message: org.whispersystems.libsignal.DuplicateMessageException: Received message with old counter: 2 , 1
However, I was able to just reconnect and continue my conversation, no messages were lost, so no big deal. Just wanted to give you this update so you know how nice it's working right now on Windows. :)
So I can confirm that sending an receiving messages works, when someone writes me first. I tried to save a contact in Pidgin but initiating a conversation gives the following error
Exception while sending message: Failed to decode groupId (must be base64) "Firstname Lastname": Illegal base64 character 20
and disables the plugin.
I've confirmed it's still an issue with the latest files on the server just now.
@Michkovy Thank you for trying the plug-in. Contacts must start with a plus character (e.g. +4940123456
would be someone from Germany). Buddies without a plus are considered a group identifier. Can you confirm?
Will try. Just to clarify +Michkovy as a contact name would work? Or does it need to be a number
Username must be the phone number. If you want to give the buddy a human-readable name, you can use the "alias" field. Thank you for trying. :)
Just noticed that the plugin breaks when somebody starts a group chat with me in it. It complains about zkgroup
library missing, but downloading this and placing it in the same folder purple-signal.dll
and purple_signal.jar
are in didn't help. Tried to rename it to zkgroup.dll
and libzkgroup.dll
, but it also didn't help. I'm using this version with signal-cli 0.7.4
. Any ideas?
@konto-andrzeja You are almost there. You need to open the zkgroup-java-whatever.jar archive (it is a zip archive) in your signal-cli\lib directory. Remove the libzkgroup.so remove the archive. It is best to put the zkgroup.dll there so Java does not get confused.
As for future development: With signal-cli 0.8.0, there is another dll needed and I do not know where to get it. Unfortunately, continuing Windows support is unlikely. I'll probably have to ditch the project. :(
Remove the libzkgroup.so remove the archive
Could you clarify this part, please? When I remove the archive Pidgin won't start, it crashes. Also, should I rename libzkgroup_x86.dll
to zkgroup.dll
?
With signal-cli 0.8.0, there is another dll needed and I do not know where to get it. Unfortunately, continuing Windows support is unlikely. I'll probably have to ditch the project. :(
Sounds like dependency hell all right, but you single-handedly managed to make the plugin perfectly usable, hopefully it stays that way for a while. As long as chatting works many people will be very happy with it.
@konto-andrzeja Yes, rename libzkgroup_x86.dll to zkgroup.dll.
Alternatively, try this jar: zkgroup-java-0.7.0.zip
Indeed, the native dependencies are super annoying. I deliberately chose to base purple-signal on libsignal-client-java, because pure Java implementations are cross-platform by default. But nowadays, the Java tag-line is in need of adjustment: „Java – target everything, build once (per platform)“ :|
Still doesn't work, the same error pops up. I replaced signal-cli\lib\zkgroup-java-0.7.0.jar
file with the one provided by you (I verified that it has zkgroup.dll
instead of libzkgroup.so
inside) and it didn't help. I'll try to find some time tomorrow to debug this more thoroughly.
I once got desparate and placed a zkgroup.dll and a copy named libzkgroup.dll in virtually every directory involved. Hence I am not perfectly sure where the file needs to be placed. Today, I switched back to the old version and tried to verify my instructions. Instead, I only stumbled upon a java.lang.IllegalArgumentException
. There is a new unrecognized field "about" in the user profile data which apparently is not handled by signal-cli 0.7.4. It looks like we are out of luck until someone offers binaries for all the dependencies. :(
I once got desparate and placed a zkgroup.dll and a copy named libzkgroup.dll in virtually every directory involved
I did more or less the same and it looks like zkgroup.dll
file is needed twice, both inside zkgroup-java-0.7.0.jar
archive and in plugins
directory. When I have that file in those two places and I send messages from the mobile app (or somebody sends messages to me), I can see those messages in Pidgin, though the group name is invalid. That's probably the reason I can't send messages to the group, I see Exception while sending message: Group not found: [REDACTED]==
. The group name I was using for testing was Sunday call
, not [REDACTED]==
, so it seems that some sort of decoding is necessary. Anyway, I don't use groups often enough for this to bother me, receiving works and that's already a bonus. :) Thanks for helping me!
Thank you for your investigation and the feedback. I want to update the installation instructions.
The weird looking string ending with ==
is a base64 representation of the group ID. It is meant to be only known to the participants. Sunday call
is only a human-readable group title, not used for anything important internally. I had it working once bi-directionally, but it fell apart with the groups v2. I want to look into it, but as long as the dependency issues are not resolved, my enthusiasm for this project is rather limited. :/ I opened #5 so I do not forget.
@fancypantalons @ttlmax @mooomooo In the past days, I saw you being active over at libpurple-signald. Care to help me out testing this project? Compared to libpurple-signald, purple-signal integrates way more directly with signal-service-java. My gut says, this is cool and we should focus future development on this one rather than libpurple-signald. purple-signal eliminates the need for a separately running service and offers support for Windows. Right now, only linking to an existing device and single chats are supported. I am interested in finding out whether is it usable for any of you.
Binaries are provided here: https://buildbot.hehoe.de/purple-signal/builds/ (.so is targeted Ubuntu amd64 18.04).
Installation instructions are located here: https://github.com/hoehermann/purple-signal/blob/master/INSTALL.md