ssh based BBS & chat over SSH
instructions:
- create a directory called
./keys
- generate an ed25519 keypair in there without password
ssh-keygen -t ed25519 -C "my cool keypair" -f ./keys/ssh_host_ed25519_key
- launch with
./shhhbb 2223
where2223
is the port
the api is designed to allow users to create and retrieve chat messages and posts. it is secured with token-based authentication using bearer tokens.
all endpoints require authentication with a bearer token. to obtain a bearer token, the user must first log in and then authenticate themselves with their token in subsequent requests.
/token new
/token list
/token revoke
get /chat/messages retrieve the last 100 chat messages.
- parameters: none
- authentication: bearer token required
- response: a json object with a boolean success field and an array data field containing objects with the following properties:
- sender: the hash of the message sender
- message: the message body
- timestamp: the time the message was sent in iso 8601 format
post /chat/create create a new chat message.
- parameters:
- sender_hash: the hash of the message sender
- message: the message body
- authentication: bearer token required
- response: a json object with a boolean success field
post /chat/direct/create create a new direct message.
- parameters:
- sender: the hash of the message sender
- recipient: the hash of the message recipient
- message: the message body
- authentication: bearer token required
- response: a json object with a boolean success field
get /posts/list retrieve a list of posts.
- parameters: none
- authentication: bearer token required
- response: a json object with a boolean success field and an array data field containing objects with the following properties:
- post_id: the id of the post
- author_hash: the hash of the post author
- post_body: the post body
- timestamp: the time the post was created in iso 8601 format
post /posts/create create a new post.
- parameters:
- author_hash: the hash of the post author
- post_body: the post body
- authentication: bearer token required
- response: a json object with a boolean success field
get /posts/replies retrieve a list of replies to a post.
- parameters:
- post_id: the id of the post to retrieve replies for
- authentication: bearer token required
- response: a json object with a boolean success field and an array data field containing objects with the following properties:
- reply_id: the id of the reply
- post_id: the id of the post being replied to
- author_hash: the hash of the reply author
- reply_body: the reply body
- timestamp: the time the reply was created in iso 8601 format
post /posts/reply create a new reply to a post.
- parameters:
- post_id: the id of the post being replied to
- author_hash: the hash of the reply author
- reply_body: the reply body
- authentication: bearer token required
- response: a json object with a boolean success field