Threema-web, clone of the official github repo from 12.2020

Danilo Bargen 24ebfe5a42 Document new translation workflow (#664) há 6 anos atrás
.circleci 1fea182054 Build TypeScript tests before testing há 7 anos atrás
.licenses 45500fb994 Upgrade to emojione v3 (#201) há 8 anos atrás
dist a46f9a844a package.sh: Handle missing HTML files há 6 anos atrás
docs b3d342612c Adjust compatibility note to include iOS há 7 anos atrás
public 24ebfe5a42 Document new translation workflow (#664) há 6 anos atrás
src 62fa8adff6 Fix NOTIFICATION_SOUNDS translation file key há 6 anos atrás
tests 86f4f6150e Fix default value of conversation.isStarred há 6 anos atrás
tools b7b8e20c98 Emoji picker: Show shortname in title text (#392) há 7 anos atrás
troubleshoot 6913d1165d Troubleshooting: Add signaling server check há 6 anos atrás
.editorconfig 2daacb7972 EditorConfig: Use 4 space indent for sh scripts (#411) há 7 anos atrás
.gitignore bf16b248f6 Fix build script on macOS (#406) há 7 anos atrás
CHANGELOG.md bbbbb157f8 Release v2.1.1 há 6 anos atrás
CONTRIBUTING.md 9d878940fb Add CONTRIBUTING.md há 8 anos atrás
ISSUE_TEMPLATE.md 8bfce1d320 Update ISSUE_TEMPLATE há 7 anos atrás
LICENSE-3RD-PARTY.txt 72cb6af1f3 Replace js-sha256 with window.crypto.subtle implementation há 7 anos atrás
LICENSE.txt 4388e93c1d Release v1.0.1 há 8 anos atrás
README.md 24ebfe5a42 Document new translation workflow (#664) há 6 anos atrás
RELEASING.md 24ebfe5a42 Document new translation workflow (#664) há 6 anos atrás
TRANSLATING.md 24ebfe5a42 Document new translation workflow (#664) há 6 anos atrás
gather-licenses.sh 72cb6af1f3 Replace js-sha256 with window.crypto.subtle implementation há 7 anos atrás
header.js cdd6df7596 Happy 2018! há 7 anos atrás
index.html 5e9bca7336 Cache busting for background image há 6 anos atrás
karma.conf.js 72cb6af1f3 Replace js-sha256 with window.crypto.subtle implementation há 7 anos atrás
package-lock.json bbbbb157f8 Release v2.1.1 há 6 anos atrás
package.json bbbbb157f8 Release v2.1.1 há 6 anos atrás
tsconfig.json 4388e93c1d Release v1.0.1 há 8 anos atrás
tslint.json 4641e7458f TSLint: Allow leading underscores in variable names há 7 anos atrás

README.md

Threema Web

Build status License

Threema Web is a web client for Threema, a privacy-focussed end-to-end encrypted mobile messenger hosted and developed in Switzerland. With Threema Web, you can use Threema on your Desktop without compromising security.

https://web.threema.ch/

Screenshot

Threema Web establishes a connection between Desktop and mobile device using WebRTC (Android) or encrypted WebSockets (iOS). Signaling and data is end-to-end encrypted with SaltyRTC.

For more information, see the Threema Cryptography Whitepaper.

Bug Reports and Feature Requests

If you find a bug in Threema Web or want to request a new feature, feel free to open an issue on GitHub. Please make sure that your bug report or feature request hasn't already been filed by using the search function.

Express your personal opinion regarding priority by reacting with :+1: in a particular issue, such as this one. We will factor this in when scheduling what to do next.

Translating

If you want to help translating Threema Web to your language, plese check out TRANSLATING.md!

Development

Threema Web is written using TypeScript and AngularJS 1. Dependencies are managed with npm. You currently need Node.js 8 or later to build Threema Web. (Note that Node.js is only a build dependency, the result is plain old client-side JavaScript.)

Install development dependencies:

npm install

Run the dev server:

npm run devserver

Then open the URL in your browser:

firefox http://localhost:9966

(Note that this setup should not be used in production. To run Threema Web on a server, please follow the instructions at docs/self_hosting.md.)

Testing

To run tests:

npm run build && npm run build:tests
firefox tests/testsuite.html

To run linting checks:

npm run lint

You can also install a pre-push hook to do the linting:

echo -e '#!/bin/sh\nnpm run lint' > .git/hooks/pre-push
chmod +x .git/hooks/pre-push

Configuration

The configuration of Threema Web can be tweaked in src/config.ts:

General

  • SELF_HOSTED: Set this to true if this instance of Threema Web isn't being hosted on web.threema.ch.
  • PREV_PROTOCOL_LAST_VERSION: When the Threema Web protocol version changes, this can be set to the last version of Threema Web that supported the previous protocol version. If set to something different than null, a message will be shown to the user if reconnecting fails.

SaltyRTC

  • SALTYRTC_HOST: Set this to the hostname of the SaltyRTC server that you want to use. If set to null, the hostname will be constructed based on the SALTYRTC_HOST_PREFIX and the SALTYRTC_HOST_SUFFIX values.
  • SALTYRTC_PORT: The port of the SaltyRTC server to be used.
  • SALTYRTC_SERVER_KEY: The public permanent key of the SaltyRTC server. Set this value to null if your server does not provide a public permanent key, or if you don't want to verify it.

ICE

  • ICE_SERVERS: Configuration object for the WebRTC STUN and ICE servers.

Push

  • PUSH_URL: The server URL used to deliver push notifications to the app.

Self Hosting

For instructions on how to host your own version of Threema Web, please refer to docs/self_hosting.md.

Contributing

Contributions to Threema Web are welcome! Please open a pull request with your proposed changes.

Security

Every Threema Web release will be tagged. The git tags are cryptographically signed using the following PGP key:

pub   rsa4096 2016-09-06 [SC] [expires: 2026-09-04]
      E7AD D991 4E26 0E8B 35DF  B506 65FD E935 573A CDA6
uid           Threema Signing Key <dev@threema.ch>

If you discover a security issue in the Threema Web, please follow responsible disclosure and report it directly to security@threema.ch instead of opening an issue on Github.

pub   rsa4096 2017-02-08 [SC] [expires: 2022-02-07]
      677E 0E97 1669 53B3 2620  D95C 71B9 C6BA C55A 9855
uid           Threema Security <security@threema.ch>

You can find both public keys and their proofs on keybase.

License

Threema Web license:

Threema Web.

Copyright © 2016-2018 Threema GmbH (https://threema.ch/).

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

For third party library licenses, see LICENSE-3RD-PARTY.txt.