SailSecure

Rating: 
5
Your rating: None Average: 5 (5 votes)

TextSecure client for Sailfish OS

This is a Signal compatible client for Sailfish OS, written in Go and QML. It builds upon the great Go textsecure package and modified versions of a minimalistic gui. Some Ideas and concepts are taken from WhisperFish which is also a Signal client for Sailfish OS.

This is a project in early stage. It works for me as a daily messenger. But don't expect it to be 'feature complete'!

What works

  • Phone registration
  • Direct and group messages
  • View received Photos
  • Storing conversations
  • Notification on incoming messages (as long as App is running in background)
  • Contact syncronisation

What is missing

  • A lot of the usual UI things, like in other messaging clients
  • Most settings that are available in the Android app
  • Encrypted message store
  • Group handling (group info, create group, delete group, leave group, ...)
  • Desktop client provisioning/syncing
  • Encrypted phone calls
  • ... and so on

Known Bugs

  • You have to restart the app when you leave a wifi and automatically switch to mobile data connection. Otherwise you won't get new messages.

There are still bugs and UI/UX quirks.

You  can find this project on github:

https://github.com/geobra/harbour-sailsecure

Screenshots: 
Changelog: 

0.2.0

- Notifications with acoustic and haptic feedback

- Send pictures

--------------------------------------

0.1.0

First release for Sailfish OS.

Comments

schorsch's picture

I will stop this project - sorry.

Open Whisper Systems has started blocking users of LibreSignal. It's just a matter of time until all other alternative clients get blocked. So I will not put more effort into this project.

 

Instead, let's use realy open solutions in the future instead of depend on centralised services. I will investigate some time to get a knowledge what is missing on the xmpp implementation of telepathy to get a usable jabber client on sailfish os. The existing messaging app is really a mess with xmpp.

andu's picture

I found a decent alternative on Android called Wire (wire.com) which is open source and they promissed to open source the server also.

paolomi's picture

wire doesn't work on sailfish browser (unsupported browser) and wire apk doesn't work on jolla1 because it needs android 4.2 and on jolla1 there is only dalvik vm  4.1

we need a native client otherwise there is no alternative.

objectifnul's picture

For your information, Wire for Android is working fine with SailfishX v.2.1.3.5 and its associated Aliendalvik compatibility layer v1.0.63 (device: Sony Xperia X model f5121).

mottel's picture

@objectifnul 

Yes, the Android Wire App is working fine on the F5121.

But received pictures are not displayed. Any idea how to solve this bug? Which Wire App Version are you using?

https://together.jolla.com/question/167234/android-messenger-wire-no-pic...

objectifnul's picture

v3.2.373 (didn't check pictures)

andu's picture

You're right but I was mentioning wire as a posible port to SF not as is. At some point I saw already a wire client for ubuntu touch.

paolomi's picture

Great! thanks! :) you had to say it sooner! :) Here it is: 

https://uappexplorer.com/app/wire.hankamotz

now let's find a developer to port it to sailfish os :)

 

EDIT: Now we can't port it, we need qtwebengine or oxide

babba22's picture

+1!

pvanhoof's picture

To delete messages, you can do something like this:

ssh to your phone

sqlite3 /home/nemo/.local/share/sailsecure/db/db.sql

sqlite> .schema
CREATE TABLE messages (id INTEGER PRIMARY KEY, sid integer, source text, message text, outgoing boolean, sentat integer, receivedat integer, ctype integer, attachment string, issent boolean, isread boolean, flags integer default 0);
CREATE TABLE sessions (id INTEGER PRIMARY KEY, name text, tel text, isgroup boolean, last string, timestamp integer, ctype integer, unread integer default 0);
CREATE TABLE groups (id INTEGER PRIMARY KEY, groupid TEXT, name TEXT, members TEXT, avatar BLOB, avatarid INTEGER, avatar_key BLOB, avatar_content_type TEXT, relay TEXT, active INTEGER DEFAULT 1);
sqlite> select * from messages where message LIKE '%Stuff I want deleted%'

sqlite> delete from messages where message LIKE '%Stuff I want deleted%'

Or just use delete from messages where sid=x , with x being the id of the session (~= conversations?) in the database. To remove the last message from the conversations screen, delete if from the sessions table too.

Note to the author of this application: it's weird that you store messages unencrypted in a sqlite3 database if the application you are providing is all about secure chat. Just saying.

 

 

 

Louis's picture

An x86_64 build for my tablet would be nice :)

m01's picture

While encrypted storage & fingerprint viewing functionality is missing from the UI, here's a clunky workaround for valdating fingerprints...

My identity:

$ xxd -l 32 /home/nemo/.local/share/sailsecure/.storage/identity/identity_key

Their identity:

$ xxd /home/nemo/.local/share/sailsecure/.storage/identity/remote_<phone nr>

Assuming I've understood the code correctly, these hex numbers should be prefixed by 05 in the Signal UI (apparently it identifies the key type).

 

marxistvegan's picture

There is a lot of activity with WhisperFish, will you be integrated them soon?

schorsch's picture

I currently thinking of stoping this project. I had the idea of using the Ubuntu Signal App and port it to the Jolla phone. Then Andrew jumped in and started whisperfish with the same Ubuntu base. He is doing a realy great job and implement quick a lot of features. It didn't make sense to port his code back to this project. Instead, just let us wait for whisperfish to hit Jolla Harbour or openrepos. I will go on with some other projects...

jdrescher's picture

When I look at the github repo of whisperfish, there is no activity since at least three month.
Is the project abandoned or dead now?
If so, it would be nice if you continue with SailSecure.

objectifnul's picture

Here (SFOS 2.0.0.10 Saimaa), contacts don't show up (except myself twice). No option to add or import contacts.

schorsch's picture

Got some similar feedback from other users. The App should try to 'correct' any phone number in your contacts. Sometimes, this seems to fail. Try to clean out all numbers in your address book of contacts which has a signal account. Number should be in E.164 format.

https://en.wikipedia.org/wiki/E.164

e.g. +4917612345678

Without any whitspaces

lkdhf's picture

You can apply for hosting translation efforts on Weblate: https://hosted.weblate.org/hosting/

nodevel's picture

Thanks for the app!

Just one question: Does it upload all your contacts to Signal servers? If so, could this be optional? I was quite (unpleasantly) surprised to go to Contacts in the app and see some of my contacts from the phone there. It could at least ask the user to do so, as it's quite unfair to the people whose info has been uploaded.

schorsch's picture

Hello

The Link from lkdhf describes the behavior with the contacts very well. SailSecure currently uses the same approach. Contacts (or hashes) from your phone are being send to the whispersystem server. The server replays with a contact list, who's number is also registered as an signal client.

Of course, privacy would be improved if only selected contacts are send to the server. Please open a feature request on the github page of the project.

nodevel's picture

Thanks for the link, but I don't think it is that relevant to my question, as it relates to the official client only.

It would be a great privacy advantage over the official client if we could opt out of this data sharing. Instead, the app could have its internal contact db and only optionally import (or sync) device contacts. That way those who value privacy (which the target userbase of Signal should be) could be sending only the contacts they intend to chat with.

EmaNymton's picture

I use already the Android-Signal-App, is it possible to use the Android registration for Sailsecure?

schorsch's picture

I don't know how the credentials of the Android App are stored. Of course, it would be nice if you could dynamically choose which App to use (Andoid Signal Client or SailSecure), depending of one's need.

Personaly I would not have any Android App's on my device. So I will not work on this topic.

tvicol's picture

Thank you ! good start !

carepack's picture

awesome! thank you so much!!!