zelta

1.0.9 • Public • Published

Updates

Update Priority : Breaking changes | Required update

  • Stable version 1.0 (Code Blue) is live!
  • Security : A key id pool was used to communicate the key value to the server for signing jwt or encrypting messages during beta. This could pose a security threat because of the finite number of key ids in the pool. In this version a new key as well as a unique key id is generated for each use. The server runs a cron job to regularly purge used keys in the database to free up space.
  • New features : Encrypted Live Chat, Server Regions

Sections

Project Zelta

Zelta is an open source, secure, anonymous and feature rich messaging service for the terminal.

Security & Encryption (High Level Overview)

  • Zelta does not collect any personal information.
  • Zelta does not log your ip address nor does it store cookies and trackers.
  • Your messages are only stored until you see them. Once you view them, all records of their existence are completely erased. So do remember to screenshot important messages.
  • User passwords and group passphrases are converted to salted hashes before they are stored in the database.
  • The database server hardware encrypts all data at rest.
  • Messages are encrypted using AES-256 with rotating cryptographic keys produced by the application server.
  • All sensitive communication is carried out using signed json web tokens over tls.
  • Zelta Chat provides real time end to end encrypted group chat.

Requirement

Node JS (v8 and above)

Install

npm i -g zelta
yarn global add zelta

General

Display a list of all the available commands

$ zelta

Register a new username

$ zelta register

Login. Once you login, the access token is valid for 24 hrs. You should logout after each session on an untrusted device.

$ zelta login

Messaging

Send a message

$ zelta send

Groups

Create a group. There are two types of groups in zelta : public and private. Anyone can join a public group using the passphrase but private groups require an invite to join. The invitation is sent by the admin, who is the creator of the group. Currently the group limit is 50 members.

$ zelta group

Join a public group using the passphrase. Group names are referred to using the @ symbol.

$ zelta join <group>

If you try joining a private group, zelta mentions that you need an invite.

Invite a user to your group (admin privilege). Use @ for mentioning group name.

$ zelta invite <user> <group>

Accept a group invite. You will receive the invite in your inbox.

$ zelta accept-invite <group>

To send messages to a group, just address the message to a group name using @. Needless to say, you need to be a member or admin of the group. Remember that @ tells zelta that you intend to send the message to a group. Without @ the message may be sent to a user with the same username as the group name.

You can always change the access level of your groups (admin privilege)

$ zelta set-public <group>
$ zelta set-private <group>

List all the members of a group. Needless to say, you need to be a member yourself.

$ zelta members <group>

Leave a group. If you are the admin, the oldest member of the group becomes the new admin.

$ zelta leave <group>

Kick a group member (admin privilege)

$ zelta kick <user> <group>

Inbox

Check your messages using the inbox command. Group messages appear in a user@group format. The time shown is GMT unless you have configured your local timezone.

$ zelta inbox

Timezone

Configure your local timezone using the timezone configuration wizard. For your security and anonymity, this info is not sent to the server. You will have to re-configure your timezone each time you are on a new device or each time you perform a fresh install. If you dont do this all incoming messages will show the GMT time.

$ zelta timezone

Chat

Create a chatroom

$ zelta chatroom

Zelta supports multiple chat servers. Currently there are two : asia and europe (default). You can always host and contribute more servers.

$ zelta region <region>

When you use the chatroom command, a chatroom is created on that server. The room name must be unique for the server. The creator of the room is the room owner and reserves the right to destroy the room. Until the room is destroyed, it will be live for any participant with the room name and passphrase.

  • Passphrase : Must have a minimum length of 8
  • Encryption : There are two choices for end to end encryption : Rabbit and AES

You can enable typing-effect to have incoming chat messages typed on your screen (matrix style!). This may not work on every terminal and currently doesnt support emojis. It is not recommended to use it in busy rooms as the animation can create a backlog of messages.

$ zelta typing-effect <value>

Head over to a chatroom to see if it works

Customize the typing speed by setting the delay (in ms) between the printing of each character. Use the typing-delay command. Recommended value is between 100 - 130. Default is 115.

$ zelta typing-delay 120

Join a chatroom

$ zelta chat

You will need to be connected to the same chat server as the chatroom and you must know the room name and passphrase. Currently there is no invitation system implemented into chat. But you may manually invite the person through a personal message (Refer : zelta send)

Madbot is the chat moderator. It recognizes these commands:

  • members : List all the members in the room
  • exit or leave : Exit the chat
  • mad fact or mad facts : Bot tells you a random fact picked from wikipedia
  • destroy : Only takes effect when used by the room creator. Destroys the room and releases the room name. Gives a 30 second headstart.

If you have not used the timezone command to configure your local timezone, UTC/GMT time is shown by default.

For emojis you can use an OS provided emoji panel or use the following syntax - :emoji_name: Example - :smile: This will render as a smiley emoji for the receiver. Refer this list for emoji names : emoji-list

Logout

Logout. You should logout after each session on an untrusted device. If you dont logout, the access token expires in 24 hrs.

$ zelta logout




CREATED BY : ZAYGOZI

Linkedin | Github

Show me the code


Readme

Keywords

none

Package Sidebar

Install

npm i zelta

Weekly Downloads

1

Version

1.0.9

License

GPL

Unpacked Size

107 kB

Total Files

24

Last publish

Collaborators

  • zaygozi