54ce2c8640 | ||
---|---|---|
_assets | ||
internal/gethservice | ||
vendor | ||
.dockerignore | ||
.gitignore | ||
.golangci-v110.yml | ||
.golangci.yml | ||
.travis.yml | ||
API.md | ||
Dockerfile | ||
LICENSE.md | ||
Makefile | ||
README.md | ||
binding.go | ||
chats_controller.go | ||
controller.go | ||
docs.go | ||
geth.go | ||
geth_disabled.go | ||
go.mod | ||
go.sum | ||
input.go | ||
main.go | ||
messages_controller.go | ||
nimbus.go | ||
nimbus_disabled.go | ||
node-config-1.json | ||
node-config-2.json | ||
node_config.go | ||
node_signals.go | ||
notification.go | ||
view.go |
README.md
Status Console User Interface
This is not an official Status client. It should be used exclusively for development purposes.
The main motivation for writing this client is to have a second implementation of the messaging protocol in order to run protocol compatibility smoke tests. It will also allow us to iterate faster and test some approaches as eventually we want to move the whole messaging protocol details to status-go.
At the same time, it's more powerful than relying on Status Node JSON-RPC commands because it has direct access to the p2p server and the Whisper service.
Start
# build a binary
$ make build
# generate a private key
$ ./bin/status-term-client -create-key-pair
Your private key: <KEY>
# start
$ ./bin/status-term-client -keyhex=<KEY> -installation-id=any-string -data-dir=your-data-dir
# or start and redirect logs
$ ./bin/status-term-client -keyhex=<KEY> 2>/tmp/status-term-client.log
# more options
$ ./bin/status-term-client -h
Commands
Commands starts with /
and must be typed in the INPUT view in the UI.
Currently the following commands are supported.
Adding a public chat
/chat add <topic>
Adding a contact
/chat add <public-key> <name>
Packages
The main package contains the console user interface.
github.com/status-im/status-console-client/protocol/v1
contains the current messaging protocol payload encoders and decoders as well as some utilities like creating a Whisper topic for a public chat.
(Very) Experimental Nimbus support
status-console-client
supports very experimental Nimbus support for Whisper.
How it works
-
Nimbus exposes a basic and very rough C API for Whisper polling, posting, subscribing, and adding peers: https://github.com/status-im/nimbus/pull/331
-
This C API is consumed as a standard shared library,
libnimbus_api.so
.
Building and running
The changes are isolated and won't impact status-console-client
unless the
appropriate build instruction, flag and patch is provided.
libnimbus_api.so
If you have issues with libnimbus_api.so
(likely) you might want to copy it
into /usr/local/lib
manually.
make build-nimbus
./bin/status-term-client -keyhex=0x9af3cdb76d76da2b36d2dcc082cb54ea672639331ef03b91a62ad6ef804b4896 -nimbus
Expected output:
[nim-status] posting ["~#c4",["Message:1000","text/plain","~:public-group-user-message",156393648280100,1563936482801,["^ ","~:chat-id","status-test-c","~:text","Message:1000"]]]
And a message being posted in #status-test-c
.