hoehermann / purple-signal

Pidgin/libpurple plugin for signal using libsignal-service-java (and parts of signal-cli).
GNU General Public License v3.0
24 stars 3 forks source link

Call for alpha testers #1

Open hoehermann opened 4 years ago

hoehermann commented 4 years ago

@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

hoehermann commented 3 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. :)

konto-andrzeja commented 3 years ago

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.

Michkovy commented 3 years ago

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.

hoehermann commented 3 years ago

@Michkovy Thank you for your participation.

  1. Is an easy one. These messages are important to me during development, but I shall add an option to have them disabled by default.
  2. and 1. seem to be a side-effect of the drastic increase in users lately. Quite often, the main signal server 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.
  3. That one is annoying and happens to me, too. I have not found out when it happens or what I can do to stop it. :/
konto-andrzeja commented 3 years ago

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. :)

Michkovy commented 3 years ago

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.

hoehermann commented 3 years ago

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

Michkovy commented 3 years ago

Will try. Just to clarify +Michkovy as a contact name would work? Or does it need to be a number

hoehermann commented 3 years ago

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. :)

konto-andrzeja commented 3 years ago

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?

hoehermann commented 3 years ago

@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. :(

konto-andrzeja commented 3 years ago

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.

hoehermann commented 3 years ago

@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)“ :|

konto-andrzeja commented 3 years ago

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.

hoehermann commented 3 years ago

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. :(

konto-andrzeja commented 3 years ago

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!

hoehermann commented 3 years ago

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.