]> nmode's Git Repositories - signal-cli/blobdiff - man/signal-cli.1.adoc
Update libsignal-service-java
[signal-cli] / man / signal-cli.1.adoc
index e30a196539b22ce5012f550fd9751b63a1864593..1a30b2e06a869c29381ade46da635118e80028ce 100644 (file)
@@ -1,17 +1,18 @@
 /////
 vim:set ts=4 sw=4 tw=82 noet:
 /////
+
 :quotes.~:
 
 = signal-cli (1)
 
 == Name
 
-signal-cli - A commandline and dbus interface for the Signal messenger
+signal-cli - A commandline interface for the Signal messenger
 
 == Synopsis
 
-*signal-cli* [--config CONFIG] [-h | -v | -u USERNAME | --dbus | --dbus-system] command [command-options]
+*signal-cli* [--config CONFIG] [-h | -v | -a ACCOUNT | --dbus | --dbus-system] command [command-options]
 
 == Description
 
@@ -19,10 +20,11 @@ signal-cli is a commandline interface for libsignal-service-java.
 It supports registering, verifying, sending and receiving messages.
 For registering you need a phone number where you can receive SMS or incoming calls.
 signal-cli was primarily developed to be used on servers to notify admins of important events.
-For this use-case, it has a dbus interface, that can be used to send messages from any programming language that has dbus bindings.
+For this use-case, it has a dbus and a JSON-RPC interface, that can be used to send messages from other programs.
 
 For some functionality the Signal protocol requires that all messages have been received from the server.
-The `receive` command should be regularly executed. In daemon mode messages are continuously received.
+The `receive` command should be regularly executed.
+In daemon mode messages are continuously received.
 
 == Options
 
@@ -35,19 +37,28 @@ Print the version and quit.
 *--verbose*::
 Raise log level and include lib signal logs.
 
+*--log-file* LOG_FILE::
+Write log output to the given file.
+If `--verbose` is also given, the detailed logs will only be written to the log file.
+
 *--config* CONFIG::
 Set the path, where to store the config.
 Make sure you have full read/write access to the given directory.
 (Default: `$XDG_DATA_HOME/signal-cli` (`$HOME/.local/share/signal-cli`))
 
-*-u* USERNAME, *--username* USERNAME::
+*-a* ACCOUNT, *--account* ACCOUNT::
 Specify your phone number, that will be your identifier.
 The phone number must include the country calling code, i.e. the number must start with a "+" sign.
 
 This flag must not be given for the `link` command.
 It is optional for the `daemon` command.
-For all other commands it is only optional if there is exactly one local user in the
-config directory.
+For all other commands it is only optional if there is exactly one local user in the config directory.
+
+*--service-environment* ENVIRONMENT::
+Choose the server environment to use:
+
+- `live` (default)
+- `staging`
 
 *--dbus*::
 Make request via user dbus.
@@ -56,7 +67,14 @@ Make request via user dbus.
 Make request via system dbus.
 
 *-o* OUTPUT-MODE, *--output* OUTPUT-MODE::
-Specify if you want commands to output in either "plain-text" mode or in "json". Defaults to "plain-text"
+Specify if you want commands to output in either "plain-text" mode or in "json".
+Defaults to "plain-text"
+
+*--trust-new-identities* TRUST-MODE::
+Choose when to trust new identities:
+- `on-first-use` (default): Trust the first seen identity key from new users, changed keys must be verified manually
+- `always`: Trust any new identity key without verification
+- `never`: Don't trust any unknown identity key, every key must be verified manually
 
 == Commands
 
@@ -65,14 +83,18 @@ Specify if you want commands to output in either "plain-text" mode or in "json".
 Register a phone number with SMS or voice verification.
 Use the verify command to complete the verification.
 
+If the account is just deactivated, the register command will just reactivate account, without requiring an SMS verification.
+By default the unregister command just deactivates the account, in which case it can be reactivated without sms verification if the local data is still available.
+If the account was deleted (with --delete-account) it cannot be reactivated.
+
 *-v*, *--voice*::
 The verification should be done over voice, not SMS.
 
 *--captcha*::
 The captcha token, required if registration failed with a captcha required error.
 To get the token, go to https://signalcaptchas.org/registration/generate.html
-Check the developer tools for a redirect starting with signalcaptcha://
-Everything after signalcaptcha:// is the captcha token.
+For the staging environment, use: https://signalcaptchas.org/staging/registration/generate.html
+Check the developer tools for a redirect starting with signalcaptcha:// Everything after signalcaptcha:// is the captcha token.
 
 === verify
 
@@ -93,8 +115,9 @@ Use "updateAccount" to undo this.
 To remove a linked device, use "removeDevice" from the master device.
 
 *--delete-account*::
-Delete account completely from server. Cannot be undone without loss. You will
-have to be readded to each group.
+Delete account completely from server.
+Cannot be undone without loss.
+You will have to be readded to each group.
 
 CAUTION: Only delete your account if you won't use this number again!
 
@@ -103,6 +126,26 @@ CAUTION: Only delete your account if you won't use this number again!
 Update the account attributes on the signal server.
 Can fix problems with receiving messages.
 
+*-n* NAME, *--device-name* NAME::
+Set a new device name for the main or linked device
+
+=== updateConfiguration
+
+Update signal configs and sync them to linked devices.
+This command only works on the main devices.
+
+*--read-receipts* {true,false}::
+Indicates if Signal should send read receipts.
+
+*--unidentified-delivery-indicators* {true,false}::
+Indicates if Signal should show unidentified delivery indicators.
+
+*--typing-indicators* {true,false}::
+Indicates if Signal should send/show typing indicators.
+
+*--link-previews* {true,false}::
+Indicates if Signal should generate link previews.
+
 === setPin
 
 Set a registration lock pin, to prevent others from registering this number.
@@ -117,7 +160,8 @@ Remove the registration lock pin.
 === link
 
 Link to an existing device, instead of registering a new number.
-This shows a "tsdevice:/…" URI. If you want to connect to another signal-cli instance, you can just use this URI.
+This shows a "sgnl://linkdevice?uuid=..." URI.
+If you want to connect to another signal-cli instance, you can just use this URI.
 If you want to link to an Android/iOS device, create a QR code with the URI (e.g. with qrencode) and scan that in the Signal app.
 
 *-n* NAME, *--name* NAME::
@@ -131,7 +175,7 @@ Only works, if this is the master device.
 
 *--uri* URI::
 Specify the uri contained in the QR code shown by the new device.
-You will need the full uri enclosed in quotation marks, such as "tsdevice:/?uuid=....."
+You will need the full URI such as "sgnl://linkdevice?uuid=..." (formerly "tsdevice:/?uuid=...") Make sure to enclose it in quotation marks for shells.
 
 === listDevices
 
@@ -162,19 +206,44 @@ Send a message to another user or group.
 RECIPIENT::
 Specify the recipients’ phone number.
 
-*-g* GROUP, *--group* GROUP::
+*--note-to-self*::
+Send the message to self without notification.
+
+*-g* GROUP, *--group-id* GROUP::
 Specify the recipient group ID in base64 encoding.
 
 *-m* MESSAGE, *--message* MESSAGE::
-Specify the message, if missing, standard input is used.
+Specify the message.
+Currently, signal-cli reads the message from stdin if `-m` is missing, but this will change in a future version and the explicit flag `--message-from-stdin` should be used instead.
+
+*--message-from-stdin*::
+Read the message from standard input.
 
 *-a* [ATTACHMENT [ATTACHMENT ...]], *--attachment* [ATTACHMENT [ATTACHMENT ...]]::
 Add one or more files as attachment.
 
-*--note-to-self*::
-Send the message to self without notification.
+*--sticker* STICKER::
+Send a sticker of a locally known sticker pack (syntax: stickerPackId:stickerId).
+Shouldn't be used together with `-m` as the official clients don't support this.
+e.g.: `--sticker 00abac3bc18d7f599bff2325dc306d43:2`
+
+*--mention*::
+Mention another group member (syntax: start:length:recipientNumber) In the apps the mention replaces part of the message text, which is specified by the start and length values.
+e.g.: `-m "Hi X!" --mention "3:1:+123456789"`
+
+*--quote-timestamp*::
+Specify the timestamp of a previous message with the recipient or group to add a quote to the new message.
 
-*-e*, *--endsession*::
+*--quote-author*::
+Specify the number of the author of the original message.
+
+*--quote-message*::
+Specify the message of the original message.
+
+*--quote-mention*::
+Specify the mentions of the original message (same format as `--mention`).
+
+*-e*, *--end-session*::
 Clear session state and send end session message.
 
 === sendReaction
@@ -184,7 +253,7 @@ Send reaction to a previously received or sent message.
 RECIPIENT::
 Specify the recipients’ phone number.
 
-*-g* GROUP, *--group* GROUP::
+*-g* GROUP, *--group-id* GROUP::
 Specify the recipient group ID in base64 encoding.
 
 *-e* EMOJI, *--emoji* EMOJI::
@@ -199,6 +268,19 @@ Specify the timestamp of the message to which to react.
 *-r*, *--remove*::
 Remove a reaction.
 
+=== sendReceipt
+
+Send a read or viewed receipt to a previously received message.
+
+RECIPIENT::
+Specify the sender’s phone number.
+
+*-t* TIMESTAMP, *--target-timestamp* TIMESTAMP::
+Specify the timestamp of the message to which to react.
+
+*--type* TYPE::
+Specify the receipt type, either `read` (the default) or `viewed`.
+
 === sendTyping
 
 Send typing message to trigger a typing indicator for the recipient.
@@ -207,7 +289,7 @@ Indicator will be shown for 15seconds unless a typing STOP message is sent first
 RECIPIENT::
 Specify the recipients’ phone number.
 
-*-g* GROUP, *--group* GROUP::
+*-g* GROUP, *--group-id* GROUP::
 Specify the recipient group ID in base64 encoding.
 
 *-s*, *--stop*::
@@ -220,7 +302,7 @@ Remotely delete a previously sent message.
 RECIPIENT::
 Specify the recipients’ phone number.
 
-*-g* GROUP, *--group* GROUP::
+*-g* GROUP, *--group-id* GROUP::
 Specify the recipient group ID in base64 encoding.
 
 *-t* TIMESTAMP, *--target-timestamp* TIMESTAMP::
@@ -250,7 +332,7 @@ The invitation link URI (starts with `https://signal.group/#`)
 Create or update a group.
 If the user is a pending member, this command will accept the group invitation.
 
-*-g* GROUP, *--group* GROUP::
+*-g* GROUP, *--group-id* GROUP::
 Specify the recipient group ID in base64 encoding.
 If not specified, a new group with a new random ID is generated.
 
@@ -287,6 +369,10 @@ Set permission to add new group members: `every-member`, `only-admins`
 *--set-permission-edit-details* PERMISSION::
 Set permission to edit group details: `every-member`, `only-admins`
 
+*--set-permission-send-messages* PERMISSION::
+Set permission to send messages in group: `every-member`, `only-admins`
+Groups where only admins can send messages are also called announcement groups
+
 *-e* EXPIRATION_SECONDS, *--expiration* EXPIRATION_SECONDS::
 Set expiration time of messages (seconds).
 To disable expiration set expiration time to 0.
@@ -296,7 +382,7 @@ To disable expiration set expiration time to 0.
 Send a quit group message to all group members and remove self from member list.
 If the user is a pending member, this command will decline the group invitation.
 
-*-g* GROUP, *--group* GROUP::
+*-g* GROUP, *--group-id* GROUP::
 Specify the recipient group ID in base64 encoding.
 
 *--delete*::
@@ -335,13 +421,13 @@ Trust all known keys of this user, only use this for testing.
 
 *-v* VERIFIED_SAFETY_NUMBER, *--verified-safety-number* VERIFIED_SAFETY_NUMBER::
 Specify the safety number of the key, only use this option if you have verified the safety number.
+Can be either the plain text numbers shown in the app or the bytes from the QR-code, encoded as base64.
 
 === updateProfile
 
 Update the profile information shown to message recipients.
 The profile is stored encrypted on the Signal servers.
-The decryption key is sent with every outgoing messages to contacts and included
-in every group.
+The decryption key is sent with every outgoing messages to contacts and included in every group.
 
 *--given-name* NAME, *--name* NAME::
 New (given) name.
@@ -377,6 +463,16 @@ Specify the new name for this contact.
 Set expiration time of messages (seconds).
 To disable expiration set expiration time to 0.
 
+=== removeContact
+
+Remove the info of a given contact
+
+NUMBER::
+Specify the contact phone number.
+
+*--forget*::
+Delete all data associated with this contact, including identity keys and sessions.
+
 === block
 
 Block the given contacts or groups (no messages will be received).
@@ -385,7 +481,7 @@ This change is only local but can be synchronized to other devices by using `sen
 [CONTACT [CONTACT ...]]::
 Specify the phone numbers of contacts that should be blocked.
 
-*-g* [GROUP [GROUP ...]], *--group* [GROUP [GROUP ...]]::
+*-g* [GROUP [GROUP ...]], *--group-id* [GROUP [GROUP ...]]::
 Specify the group IDs that should be blocked in base64 encoding.
 
 === unblock
@@ -396,7 +492,7 @@ This change is only local but can be synchronized to other devices by using `sen
 [CONTACT [CONTACT ...]]::
 Specify the phone numbers of contacts that should be unblocked.
 
-*-g* [GROUP [GROUP ...]], *--group* [GROUP [GROUP ...]]::
+*-g* [GROUP [GROUP ...]], *--group-id* [GROUP [GROUP ...]]::
 Specify the group IDs that should be unblocked in base64 encoding.
 
 === sendContacts
@@ -407,12 +503,18 @@ This command should only be used if this is the master device.
 === sendSyncRequest
 
 Send a synchronization request message to the master device (for group, contacts, ...).
-The master device will respond with synchronization messages with full contact and
-group lists.
+The master device will respond with synchronization messages with full contact and group lists.
 
 === uploadStickerPack
 
-Upload a new sticker pack, consisting of a manifest file and the stickers in WebP format (maximum size for a sticker file is 100KiB).
+Upload a new sticker pack, consisting of a manifest file and the sticker images.
+Images must conform to the following specification: (see https://support.signal.org/hc/en-us/articles/360031836512-Stickers#sticker_reqs )
+
+- Static stickers in PNG or WebP format
+- Animated stickers in APNG format,
+- Maximum file size for a sticker file is 300KiB
+- Image resolution of 512 x 512 px
+
 The required manifest.json has the following format:
 
 [source,json]
@@ -421,12 +523,14 @@ The required manifest.json has the following format:
   "title": "<STICKER_PACK_TITLE>",
   "author": "<STICKER_PACK_AUTHOR>",
   "cover": { // Optional cover, by default the first sticker is used as cover
-    "file": "<name of webp file, mandatory>",
+    "file": "<name of image file, mandatory>",
+    "contentType": "<optional>",
     "emoji": "<optional>"
   },
   "stickers": [
     {
-      "file": "<name of webp file, mandatory>",
+      "file": "<name of image file, mandatory>",
+      "contentType": "<optional>",
       "emoji": "<optional>"
     }
     ...
@@ -439,51 +543,71 @@ The path of the manifest.json or a zip file containing the sticker pack you wish
 
 === daemon
 
-signal-cli can run in daemon mode and provides an experimental dbus interface.
-If no `-u` username is given, all local users will be exported as separate dbus
-objects under the same bus name.
+signal-cli can run in daemon mode and provides an experimental dbus or JSON-RPC interface.
+If no `-a` account is given, all local accounts will be exported as separate dbus objects under the same bus name.
+
+*--dbus*::
+Export DBus interface on user bus.
+See signal-cli-dbus (5) for info on the dbus interface.
+
+*--dbus-system*::
+Export DBus interface on system bus.
+See signal-cli-dbus (5) for info on the dbus interface.
+
+*--socket [SOCKET]*::
+Export a JSON-RPC interface on a UNIX socket (default $XDG_RUNTIME_DIR/signal-cli/socket).
+See signal-cli-jsonrpc (5) for info on the JSON-RPC interface.
+
+*--tcp [HOST:PORT]*::
+Export a JSON-RPC interface on a TCP socket (default localhost:7583).
+See signal-cli-jsonrpc (5) for info on the JSON-RPC interface.
 
-*--system*::
-Use DBus system bus instead of user bus.
 *--ignore-attachments*::
 Don’t download attachments of received messages.
 
+*--no-receive-stdout*::
+Don’t print received messages to stdout.
+
+*--receive-mode*::
+Specify when to start receiving messages (on-start, on-connection, manual)
+
 == Examples
 
 Register a number (with SMS verification)::
-signal-cli -u USERNAME register
+signal-cli -a ACCOUNT register
 
 Verify the number using the code received via SMS or voice::
-signal-cli -u USERNAME verify CODE
+signal-cli -a ACCOUNT verify CODE
 
 Send a message to one or more recipients::
-signal-cli -u USERNAME send -m "This is a message" [RECIPIENT [RECIPIENT ...]] [-a [ATTACHMENT [ATTACHMENT ...]]]
+signal-cli -a ACCOUNT send -m "This is a message" [RECIPIENT [RECIPIENT ...]] [-a [ATTACHMENT [ATTACHMENT ...]]]
 
 Pipe the message content from another process::
-uname -a | signal-cli -u USERNAME send [RECIPIENT [RECIPIENT ...]]
+uname -a | signal-cli -a ACCOUNT send --message-from-stdin [RECIPIENT [RECIPIENT ...]]
 
 Create a group::
-signal-cli -u USERNAME updateGroup -n "Group name" -m [MEMBER [MEMBER ...]]
+signal-cli -a ACCOUNT updateGroup -n "Group name" -m [MEMBER [MEMBER ...]]
 
 Add member to a group::
-signal-cli -u USERNAME updateGroup -g GROUP_ID -m "NEW_MEMBER"
+signal-cli -a ACCOUNT updateGroup -g GROUP_ID -m "NEW_MEMBER"
 
 Accept a group invitation::
-signal-cli -u USERNAME updateGroup -g GROUP_ID
+signal-cli -a ACCOUNT updateGroup -g GROUP_ID
 
 Leave a group::
-signal-cli -u USERNAME quitGroup -g GROUP_ID
+signal-cli -a ACCOUNT quitGroup -g GROUP_ID
 
 Send a message to a group::
-signal-cli -u USERNAME send -m "This is a message" -g GROUP_ID
+signal-cli -a ACCOUNT send -m "This is a message" -g GROUP_ID
 
 Trust new key, after having verified it::
-signal-cli -u USERNAME trust -v SAFETY_NUMBER NUMBER
+signal-cli -a ACCOUNT trust -v SAFETY_NUMBER NUMBER
 
 Trust new key, without having verified it. Only use this if you don't care about security::
-signal-cli -u USERNAME trust -a NUMBER
+signal-cli -a ACCOUNT trust -a NUMBER
 
 == Exit codes
+
 * *1*: Error is probably caused and fixable by the user
 * *2*: Some unexpected error
 * *3*: Server or IO error
@@ -495,12 +619,6 @@ The password and cryptographic keys are created when registering and stored in t
 
 `$XDG_DATA_HOME/signal-cli/` (`$HOME/.local/share/signal-cli/`)
 
-For legacy users, the old config directories are used as a fallback:
-
-    $HOME/.config/signal/
-
-    $HOME/.config/textsecure/
-
 == Authors
 
 Maintained by AsamK <asamk@gmx.de>, who is assisted by other open source contributors.