All Projects → AsamK → Signal Cli

AsamK / Signal Cli

Licence: gpl-3.0
signal-cli provides an unofficial commandline and dbus interface for signalapp/libsignal-service-java

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Signal Cli

signal-msg
Send Signal messages from GNU Emacs using signal-cli
Stars: ✭ 20 (-99.06%)
Mutual labels:  messaging, signal, signal-cli
signal-bot
A simple bot framework for Signal
Stars: ✭ 92 (-95.65%)
Mutual labels:  messaging, signal
signal-cli-rest-api
signal-cli-rest-api is a wrapper around signal-cli and allows you to interact with it through http requests
Stars: ✭ 26 (-98.77%)
Mutual labels:  signal, signal-cli
Signal Windows
Unofficial Signal Private Messenger for Windows
Stars: ✭ 83 (-96.08%)
Mutual labels:  messaging, signal
Android yichat lite
android client
Stars: ✭ 118 (-94.43%)
Mutual labels:  messaging
Console Logging
Better, prettier commandline logging for Python--with colors! 👻
Stars: ✭ 111 (-94.76%)
Mutual labels:  commandline
Appicon
AppIcon generates *.appiconset contains each resolution image for iOS
Stars: ✭ 1,454 (-31.32%)
Mutual labels:  commandline
Applozic Ios Sdk
iOS Real Time Chat & Messaging SDK
Stars: ✭ 104 (-95.09%)
Mutual labels:  messaging
Azure Event Hubs For Kafka
Azure Event Hubs for Apache Kafka Ecosystems
Stars: ✭ 124 (-94.14%)
Mutual labels:  messaging
Slimmessagebus
Lightweight message bus interface for .NET (pub/sub and request-response) with transport plugins for popular message brokers.
Stars: ✭ 120 (-94.33%)
Mutual labels:  messaging
Edsp
A cross-platform DSP library written in C++ 11/14. This library harnesses the power of C++ templates to implement a complete set of DSP algorithms.
Stars: ✭ 116 (-94.52%)
Mutual labels:  signal
Manage
Command Line Manager + Interactive Shell for Python Projects
Stars: ✭ 111 (-94.76%)
Mutual labels:  commandline
Sandglass
Sandglass is a distributed, horizontally scalable, persistent, time sorted message queue.
Stars: ✭ 1,531 (-27.68%)
Mutual labels:  messaging
Lzmq
Lua binding to ZeroMQ
Stars: ✭ 110 (-94.8%)
Mutual labels:  messaging
Go Systemd
Go bindings to systemd socket activation, journal, D-Bus, and unit files
Stars: ✭ 1,756 (-17.05%)
Mutual labels:  dbus
Android Speech Bubble
android ListView with speech bubbles to demonstrate the implementation speech bubbles of chat and message in application.
Stars: ✭ 107 (-94.95%)
Mutual labels:  messaging
Hulaaki
DEPRECATED : An Elixir library (driver) for clients communicating with MQTT brokers(via the MQTT 3.1.1 protocol).
Stars: ✭ 115 (-94.57%)
Mutual labels:  messaging
Rebus
🚌 Simple and lean service bus implementation for .NET
Stars: ✭ 1,733 (-18.14%)
Mutual labels:  messaging
Flag
Flag is a simple but powerful command line option parsing library for Go support infinite level subcommand
Stars: ✭ 114 (-94.62%)
Mutual labels:  commandline
Qmlnotify
Awesome notification server in QML
Stars: ✭ 114 (-94.62%)
Mutual labels:  dbus

signal-cli

signal-cli is a commandline interface for libsignal-service-java. It supports registering, verifying, sending and receiving messages. To be able to link to an existing Signal-Android/signal-cli instance, signal-cli uses a patched libsignal-service-java, because libsignal-service-java does not yet support provisioning as a linked device. For registering you need a phone number where you can receive SMS or incoming calls. signal-cli is primarily intended to be used on servers to notify admins of important events. For this use-case, it has a dbus interface (man page), that can be used to send messages from any programming language that has dbus bindings. It also has a JSON-RPC based interface, see the documentation for more information.

Installation

You can build signal-cli yourself, or use the provided binary files, which should work on Linux, macOS and Windows. For Arch Linux there is also a package in AUR and there is a FreeBSD port available as well.

System requirements:

  • at least Java Runtime Environment (JRE) 17

  • native library: libsignal-client

    The native lib is bundled for x86_64 Linux (with recent enough glibc, see #643), for other systems/architectures see: Provide native lib for libsignal

Install system-wide on Linux

See latest version.

export VERSION=<latest version, format "x.y.z">
wget https://github.com/AsamK/signal-cli/releases/download/v"${VERSION}"/signal-cli-"${VERSION}".tar.gz
sudo tar xf signal-cli-"${VERSION}".tar.gz -C /opt
sudo ln -sf /opt/signal-cli-"${VERSION}"/bin/signal-cli /usr/local/bin/

You can find further instructions on the Wiki:

Usage

For a complete usage overview please read the man page and the wiki.

Important: The ACCOUNT is your phone number in international format and must include the country calling code. Hence it should start with a "+" sign. (See Wikipedia for a list of all country codes.)

  • Register a number (with SMS verification)

      signal-cli -a ACCOUNT register
    

    You can register Signal using a land line number. In this case you can skip SMS verification process and jump directly to the voice call verification by adding the --voice switch at the end of above register command.

    Registering may require solving a CAPTCHA challenge: Registration with captcha

  • Verify the number using the code received via SMS or voice, optionally add --pin PIN_CODE if you've added a pin code to your account

      signal-cli -a ACCOUNT verify CODE
    
  • Send a message

      signal-cli -a ACCOUNT send -m "This is a message" RECIPIENT
    
  • Pipe the message content from another process.

      uname -a | signal-cli -a ACCOUNT send RECIPIENT
    
  • Receive messages

      signal-cli -a ACCOUNT receive
    

Hint: The Signal protocol expects that incoming messages are regularly received (using daemon or receive command). This is required for the encryption to work efficiently and for getting updates to groups, expiration timer and other features.

Storage

The password and cryptographic keys are created when registering and stored in the current users home directory:

    $XDG_DATA_HOME/signal-cli/data/
    $HOME/.local/share/signal-cli/data/

Building

This project uses Gradle for building and maintaining dependencies. If you have a recent gradle version installed, you can replace ./gradlew with gradle in the following steps.

  1. Checkout the source somewhere on your filesystem with

     git clone https://github.com/AsamK/signal-cli.git
    
  2. Execute Gradle:

     ./gradlew build
    

    2a. Create shell wrapper in build/install/signal-cli/bin:

     ./gradlew installDist
    

    2b. Create tar file in build/distributions:

     ./gradlew distTar
    

    2c. Create a fat tar file in build/libs/signal-cli-fat:

     ./gradlew fatJar
    

    2d. Compile and run signal-cli:

     ./gradlew run --args="--help"
    

Building a native binary with GraalVM (EXPERIMENTAL)

It is possible to build a native binary with GraalVM. This is still experimental and will not work in all situations.

  1. Install GraalVM and setup the enviroment

  2. Install prerequisites

  3. Execute Gradle:

     ./gradlew nativeCompile
    

    The binary is available at build/native/nativeCompile/signal-cli

FAQ and Troubleshooting

For frequently asked questions and issues have a look at the wiki

License

This project uses libsignal-service-java from Open Whisper Systems:

https://github.com/WhisperSystems/libsignal-service-java

Licensed under the GPLv3: http://www.gnu.org/licenses/gpl-3.0.html

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].