Session Desktop - Onion routing based messenger
 
 
 
 
Go to file
Maxim Shishmarev dcc3232b2b
Merge pull request from msgmaxim/mentions-fix
Fix not awaiting on promises in mentions
.github linting
.tx Transifex config specific to electron, updated translations ()
.vscode Merge branch 'clearnet' into multi-device
_locales new add/remove moderation dialog messages
app Merge branch 'clearnet' into prep-merge
build Update mac.plist
components Partial Merge commit 'bf904ddd129ceba8fa363ccf6d10ecd256c65f63' into signal-1.23
config Add yarn start-multi2 to allow for easier multi device testing (3 clients, 2 are linked)
fixtures Ensure that multi-video lightbox scrolling changes video
fonts
images Updated design
js expose isRss to react
libloki encrypt and decrypt images before upload and after download
libtextsecure Merge pull request from neuroscr/multidevice-publicchat
mnemonic_languages languages json
mockup_servers Linting and other housekeeping stuff
protos Prompting the user to reset session on invalid ciphertext
stylesheets remove add moderator scroll bars
test Prompting the user to reset session on invalid ciphertext
ts Merge pull request from msgmaxim/mentions-fix
.aptly.conf
.editorconfig Use 2 spaces for indentation
.eslintignore Merge signal-1.24.0
.eslintrc.js Select multiple messages and bulk deletion
.gitattributes Stop git from defaulting to changing line endings
.gitignore Ignore ctags file
.gitlab-ci.yml Fix CI
.nvmrc Upgrade to node 10.13.0; update chokidar, its dep upath fails
.prettierignore Merge signal-1.24.0
.prettierrc.js Add `.prettierrc.js`
.travis.yml Remove travis windows.
.yarnclean node-sqlcipher update: always build, statically link openssl
CONTRIBUTING.md linting
Gruntfile.js Show commit hash in About window for beta builds
LICENSE Add GPLv3 LICENSE file ()
LOKI-NOTES.md Linting and other housekeeping stuff
README.md Update README.md
about.html Show commit hash in About window for beta builds
about_preload.js Show commit hash in About window for beta builds
appveyor.yml Skip `lint-deps` on appveyor, which triggers a failed build
aptly.sh Remove unused aptly target
background.html add/remove moderator modal dialogs
bower.json Replaced more references to signal with loki and updated CONTRIBUTING.md
debug_log.html Replaced more references to signal with loki and updated CONTRIBUTING.md
debug_log_preload.js Update the user agent for debug log requests
dev-app-update.yml.sample
find_broken_perms.sh
fix_broken_perms.sh Replaced more references to signal with loki and updated CONTRIBUTING.md
index.html Merge branch 'textsecure/master' into merge_1_21_0
main.js Disable microphone button when you have disabled permissions
metrics.html add TTL variation in pow metrics
metrics_app.js Linted files
package.json Bump version to 1.0.0-beta9
password.html Added db resetting.
password_preload.js Fix password error
permissions_popup.html New media permission, show dialog when not enabled for voice msg
permissions_popup_preload.js Fix permissions popup; add needed function on window ()
preload.js Sending and handling of special UNPAIRING_REQUEST message
prepare_beta_build.js Fix CI
prepare_import_build.js Use window.log in browser context, turn on console eslint rule
settings.html Update link preview settings to be cleaner
settings_preload.js Add a toggle option for typing indicators; use short ttl for them
styleguide.config.js Move left pane entirely to React
travis.sh Simplify testing and linting
tsconfig.json Move left pane entirely to React
tslint.json Correctly handle server errors in multi-deletion
yarn.lock Upgrade electron-notarize

README.md

Loki Messenger

Build Status

Loki Messenger allows for truly decentralized, end to end, and private encrypted chats. Loki Messenger is built to handle both online and fully Asynchronous offline messages. Loki messenger implements the Signal protocol for message encryption. Our Client interface is a fork of Signal Messenger. All communication that passes through Loki messenger is routed through Lokinet.

Summary

Loki messenger integrates directly with Loki Service Nodes, which are a set of distributed, decentralized and Sybil resistant nodes. Service Nodes act as both federated servers which store messages offline, and a set of nodes which allow for onion routing functionality obfuscating users IP Addresses. For a full understanding of how Loki messenger works, read the Loki whitepaper.

Online Messages

If Alice and Bob are both online they can simply resolve each others public keys, to introduction sets, this functionality is handled by interfacing with Lokinet. With the appropriate introduction sets Alice and Bob can create a path and using onion routing pass messages through the Loki network without giving away personally identifiable information like their IP address.

Offline messages

Offline messaging uses Swarms, given any users public key the user can resolve a public key to a specific grouping of Service Nodes (AKA Swarm) each user in Loki Messenger belongs to a Swarm. When routing a message offline the user selects a Service node in the destination users Swarm, when the user comes online they query any node in their Swarm, if the Swarm is holding any messages for the user they disseminate those messages to the user.

Swarm Messaging

Spam protections for Loki Messenger are based on a Proof of Work which is attached to any message that exceeds a default size or Time To Live, this process is discussed further in the Loki whitepaper.

Want to Contribute? Found a Bug or Have a feature request?

Please search for any existing issues that describe your bugs in order to avoid duplicate submissions. Submissions can be made by making a pull request to our development branch, if you don't know where to start contributing , try reading the Github issues page for ideas.

Build instruction

Build instructions can be found in CONTRIBUTING.md.

License

Copyright 2018- Current, Loki Foundation Copyright 2014-2018, Open Whisper Systems Licensed under the GPLv3: http://www.gnu.org/licenses/gpl-3.0.html