12 months agoAdd basic README blob master
Ben Tasker []
Add basic README blob

12 months agoLOC-18 Deploy server with ansible
Ben Tasker []
LOC-18 Deploy server with ansible

It could do with some tidying and some conditionals, but it's now possible to deploy the server with the ansible playbook.

12 months agoTurn flask debug off v0.0.2.1
Ben Tasker []
Turn flask debug off

12 months agoLOC-29 Fix NO_RECP exception when calling gpg.encrypt on Debian9
Ben Tasker []
LOC-29 Fix NO_RECP exception when calling gpg.encrypt on Debian9

12 months agoLOC-18 Ansible playbook build
Ben Tasker []
LOC-18 Ansible playbook build

Very early stages of the playbook, all we currently do for the server role is install deps and create a unit file

13 months agoAdd link out to JIRA etc into README
B Tasker []
Add link out to JIRA etc into README

13 months agoTidy up whitespace and switch over to binding to loopback v0.0.2
B Tasker []
Tidy up whitespace and switch over to binding to loopback

13 months agoLOC-17 Update server README
B Tasker []
LOC-17 Update server README

In principle, that's just the API docs to finish now

13 months agoLOC-17 Document client dependancies
B Tasker []
LOC-17 Document client dependancies

13 months agoLOC-17 Add note on forming message payloads
B Tasker []
LOC-17 Add note on forming message payloads

13 months agoLOC-17 Document server's commandline argument
B Tasker []
LOC-17 Document server's commandline argument

13 months agoLOC-17 Document client's supported commandline arguments
B Tasker []
LOC-17 Document client's supported commandline arguments

13 months agoLOC-17 Document client commands and update client help text
B Tasker []
LOC-17 Document client commands and update client help text

13 months agoRevert "Switch help and exit to /help /exit"
B Tasker []
Revert "Switch help and exit to /help /exit"

This reverts commit aa70a32fd145be2c47df66bce28c27886964fc86.

13 months agoSwitch help and exit to /help /exit
B Tasker []
Switch help and exit to /help /exit

13 months agoLOC-17 Update main README to remove dependancies (to avoid duplication of info)
B Tasker []
LOC-17 Update main README to remove dependancies (to avoid duplication of info)

13 months agoLOC-17 Add (currently empty) README's for client and server
B Tasker []
LOC-17 Add (currently empty) README's for client and server

13 months agoAnd some more
B Tasker []
And some more

13 months agoAdd some hr's
B Tasker []
Add some hr's

13 months agoLOC-17 Add "Authentication" section
B Tasker []
LOC-17 Add "Authentication" section

13 months agoMove into alphabetical order
B Tasker []
Move into alphabetical order

13 months agoLOC-17 Document {{kickUser}} and {{banUser}}
B Tasker []
LOC-17 Document {{kickUser}} and {{banUser}}

13 months agoLOC-17 Sort out swap file, and document {{inviteUser}}
B Tasker []
LOC-17 Sort out swap file, and document {{inviteUser}}

13 months agoLOC-17 Document {{closeRoom}}
B Tasker []
LOC-17 Document {{closeRoom}}

13 months agoLOC-17 Document {{leaveRoom}}
B Tasker []
LOC-17 Document {{leaveRoom}}

13 months agoLOC-17 Document {{joinRoom}}
B Tasker []
LOC-17 Document {{joinRoom}}

13 months agoLOC-17 Document `sendDirectMsg`
B Tasker []
LOC-17 Document `sendDirectMsg`

13 months agoAdd header
B Tasker []
Add header

13 months agoLOC-17 Document {{sendMsg}}
B Tasker []
LOC-17 Document {{sendMsg}}

13 months agoLOC-17 Document `pollMsg`
B Tasker []
LOC-17 Document `pollMsg`

13 months agoLOC-17 Create API documentation file
B Tasker []
LOC-17 Create API documentation file

Doesn't contain much at the moment, it's a big {{TODO}}

13 months agoUpdating 'about' section
B Tasker []
Updating 'about' section

13 months agoAdding License information and some TODO's to the README
B Tasker []
Adding License information and some TODO's to the README

13 months agoLOC-17 Start creating README
B Tasker []
LOC-17 Start creating README

Creating the root level README, currently only containing details on the recommended deployment methodology

13 months agoSERVER is now set after msg is init'd, so we need to update the class instead of the global
B Tasker []
SERVER is now set after msg is init'd, so we need to update the class instead of the global

13 months agoLOC-26 add support for --verify
B Tasker []
LOC-26 add support for --verify

This re-enables SSL certificate verification, so that if we're communicating via a trusted reverse proxy with a publicly signed SSL cert we can check we're communicating with the system we think we are.

13 months agoLOC-22 Allow server address to be specified on the commandline
B Tasker []
LOC-22 Allow server address to be specified on the commandline

If the final argument to the client begins with 'ht' it'll be taken as a URL and used as the server address.

It _must_ be https as there's no handling for plain http within the client.

13 months agoLOC-24 add test for /leave functionality
B Tasker []
LOC-24 add test for /leave functionality

Moved it before the earlier tests as otherwise the room it tests against will auto-close because of the delay

13 months agoLOC-24 Add timestamp and revision to test output
B Tasker []
LOC-24 Add timestamp and revision to test output

The test script will now output a serial number for the test in the format
{noformat}
[YYYYmmDDHHMMSS]-[Latest commit]
{noformat}

13 months agoLOC-11 Verify that Automated Room closure is functioning
B Tasker []
LOC-11 Verify that Automated Room closure is functioning

13 months agoLOC-15 in testing mode auto-room closure happens after 3 minutes
B Tasker []
LOC-15 in testing mode auto-room closure happens after 3 minutes

13 months agoLOC-15 In testing mode, the purge interval is 30 seconds
B Tasker []
LOC-15 In testing mode, the purge interval is 30 seconds

When testing mode is enabled, the purge should kill messages older than 30 seconds. This is so the tests don't have to pause for 10 minutes.

13 months agoFix whitespace
B Tasker []
Fix whitespace

13 months agoLOC-24 Added tests for kick/ban functionality
B Tasker []
LOC-24 Added tests for kick/ban functionality

Test 11 invites a user, has them join and then kicks them (before verifying in the database)
Test 12 has that user rejoin and then bans them (again verifying against the database)

13 months agoAdded test for LOC-21 Direct Messaging support
B Tasker []
Added test for LOC-21 Direct Messaging support

It should continue to work in v0.0.3 when E2E for DMs is changed as {{pollForMessage}} should transparently handle the decryption

13 months agoAdded regression test for LOC-5
B Tasker []
Added regression test for LOC-5

Test user attempts to create an invite for SYSTEM (as a precursor to signing in using the generated credentials)

13 months agoLOC-24 Added "Send a message" test
B Tasker []
LOC-24 Added "Send a message" test

Test does the following

- Poll for messages as admin user to flush the queue
- Send a message as testuser
- Poll again as admin user to (hopefully) fetch the message
- Poll as testuser to flush queue (so it's tidy for any future tests)
- Check admin received a message and that it's well formed
- Check that the reported payload is a match

13 months agoLOC-24 Invited user now joins under a new client instance
B Tasker []
LOC-24 Invited user now joins under a new client instance

This is partly to make things available for later tests, but also to ensure that the invite functionality is actually working in the background

13 months agoLOC-24 Added a test for user invitation
B Tasker []
LOC-24 Added a test for user invitation

13 months agoLOC-24 Close and re-open DB connection, and implement E2E test
B Tasker []
LOC-24 Close and re-open DB connection, and implement E2E test

These are part of one commit because implementing the test revealed a potential race.

API requests can fail because of lock contention with the test script, leading to a failed test (and often then an exception when we try to query the database).

Now, we open a new connection to the database just before querying and then close straight after to ensure locks do not become an issue.

This wouldn't be an issue with a production deployment as the DB is in memory and only ever being accessed by the one thread.

13 months agoPrevent exception when server returns bad response to message
B Tasker []
Prevent exception when server returns bad response to message

13 months agoSwitch to using a local variable to define fatality to make changing easier later
B Tasker []
Switch to using a local variable to define fatality to make changing easier later

13 months agoLOC-24 Add test to ensure {{SYSTEM}} is using E2E encryption
B Tasker []
LOC-24 Add test to ensure {{SYSTEM}} is using E2E encryption

Test steps

- Check that a message was pushed to the room
- Check it isn't plain text
- Check we can decrypt it with the syskey we got when joining the room
- Check the plaintext is valid JSON
- Check it's a correctly formatted message payload

13 months agoLOC-24 Add numbers to tests for easier reference when failures happen
B Tasker []
LOC-24 Add numbers to tests for easier reference when failures happen

13 months agoLOC-24 Build some basic tests
B Tasker []
LOC-24 Build some basic tests

As much to start getting the structure as anything - it could be better/tidier but it's functional.

Uses the client as a module in order to run 3 basic tests

- test_one Create a room
- test_two Attempt to join with invalid credentials
- test_three Join with valid credentials

Test functions simply return a list of the following structure

{noformat}
[
{'Test' : 'Join the room','Result' : 'FAIL', 'Notes': '' },
isFatal
]
{noformat}

Where {{isFatal}} dictates whether a failure should abort the test run or not (i.e. if other tests depend on something it does, just give up)

13 months agoLOC-24 Start building test harness
B Tasker []
LOC-24 Start building test harness

Creating the test harness - it can currently spin up a background instance of the server (and will kill it once done).

Doesn't currently contain or run any tests, and doesn't currently do anything with the client.

13 months agoLOC-15 Implement Testing mode
B Tasker []
LOC-15 Implement Testing mode

When the argument '--enable-testing-mode' is included in the server's commandline, the database will be created on disk instead of in memory.

This is so that tests can check the database directly to verify that what's been written into the database is what's expected.

When testing mode is enabled, the server will print a warning on the commandline at startup.
It will also push a message into rooms whenever a new user joins, so that if it is inadvertantly used, users will know that their message payloads are being written to disk.

13 months agoLOC-11 Implementing auto-closure of rooms
B Tasker []
LOC-11 Implementing auto-closure of rooms

If a room has no activity for the configured period (currently 6 hours) it should automatically be closed:

- Any messages are scrubbed
- Any user records are scrubbed
- User sessions purged
- Failure messages removed
- Room record removed

Ran a test with the interval configured to 60 seconds. Created room, posted and left. Stdout output (with a print added) was

{noformat}
1526731411.929024 Request start
{u'action': u'schedulerTrigger', u'pass': u'eGET8AfbG9y2BWjDZjg3BoiKuXdyU32CE1dnyJ8FJsuRtxuZ5LvMqoLVIhkQ3gx8'}
127.0.0.1 - - [19/May/2018 13:03:31] "POST / HTTP/1.1" 200 -
1526731471.993863 Request start
{u'action': u'schedulerTrigger', u'pass': u'eGET8AfbG9y2BWjDZjg3BoiKuXdyU32CE1dnyJ8FJsuRtxuZ5LvMqoLVIhkQ3gx8'}
(1, u'BenTest2')
127.0.0.1 - - [19/May/2018 13:04:31] "POST / HTTP/1.1" 200 -
1526731532.039276 Request start
{u'action': u'schedulerTrigger', u'pass': u'eGET8AfbG9y2BWjDZjg3BoiKuXdyU32CE1dnyJ8FJsuRtxuZ5LvMqoLVIhkQ3gx8'}
127.0.0.1 - - [19/May/2018 13:05:32] "POST / HTTP/1.1" 200 -
{noformat}

So I'm happy the purge is running.

This absolutely should not be relied on as an alternative to running {{/room close [pass]}} though. It's meant as a safety net and nothing more.

13 months agoLOC-11 Update last used time for all message types
B Tasker []
LOC-11 Update last used time for all message types

We'll now update {{lastactivity}} when DMs are sent, or when SYSTEM sends a message.

Should avoid having the room close on you if you join a second before the auto-close would have triggered

13 months agoLOC-11 Add a field to record the last activity in a room
B Tasker []
LOC-11 Add a field to record the last activity in a room

Currently unused by anything, but will be used for the automatic room closure.

Only gets updated when a message is sent by a user. May want to think about whether or not we want to also update when system messages are sent - it probably makes sense to, as it'd be irritating if you joined seconds before the closure threshold and hadn't sent a message yet.

13 months agoLOC-6 Remove test lines and make purge interval configurable
B Tasker []
LOC-6 Remove test lines and make purge interval configurable

It's currently hardcoded at 10 minutes (600 seconds)

13 months agoLOC-6 Switch to shorter values and insert print for testing
B Tasker []
LOC-6 Switch to shorter values and insert print for testing

Configures to run the scheduler every minute and expire messages after a minute.

Created a room, joined it, posted some messages and then left.

Scheduler dumped the following to stdout

1526729206.144380 Request start
{u'action': u'schedulerTrigger', u'pass': u'GRu5yYY8ngPGtBfbl6wYTdVA7R5CtYPuTjkG4Xh2SfcClhdEaMQmx9JCWhqQDCtg'}
Tidying
Start 8 messages
End 8 messages
127.0.0.1 - - [19/May/2018 12:26:46] "POST / HTTP/1.1" 200 -
1526729266.210174 Request start
{u'action': u'schedulerTrigger', u'pass': u'GRu5yYY8ngPGtBfbl6wYTdVA7R5CtYPuTjkG4Xh2SfcClhdEaMQmx9JCWhqQDCtg'}
Tidying
Start 8 messages
End 0 messages
127.0.0.1 - - [19/May/2018 12:27:46] "POST / HTTP/1.1" 200 -
1526729326.238788 Request start
{u'action': u'schedulerTrigger', u'pass': u'GRu5yYY8ngPGtBfbl6wYTdVA7R5CtYPuTjkG4Xh2SfcClhdEaMQmx9JCWhqQDCtg'}
Tidying
Start 0 messages
End 0 messages

As the auto-purge is an important function, should probably make the period configurable so that we can write automated tests to verify the behaviour.

13 months agoRemove unneeded function 'test'
B Tasker []
Remove unneeded function 'test'

Was used at the very beginning of development to check Flask would run on my system. Not called or needed

13 months agoLOC-6 Use autogenerated password for scheduler requests
B Tasker []
LOC-6 Use autogenerated password for scheduler requests

At startup we generate a 64 char password for the scheduler to identify itself with.

Also, move the scheduler thread launch to within the app processing thread. We do this because otherwise we end up with two scheduler threads (because of the way Flask handles launching the 'main' thread). Also means it'll refresh if the processing thread is changed for some reason.

13 months agoLOC-6 Initial (and very rough) periodic message clearance
B Tasker []
LOC-6 Initial (and very rough) periodic message clearance

At server startup we spin up a seperate scheduler thread, which places a request to the main app every 60 seconds, in order to purge any messages older than the threshold in the system.

It's currently very, very rough, but seems to work.

There's still a bit to be done here though

- Need to validate the submitted password
- Need to actually generate a password rather than using the temporarily hardcoded 1234

And probably quite a lot else too

13 months agoLOC-23 - Shorten Session IDs and increase keyspace.
B Tasker []
LOC-23 - Shorten Session IDs and increase keyspace.

Changes the session ID from a 128 Uppercase/numeric char string (36^128) to a 48 char mixed character string (80^48).

Permitted characters are:

string.ascii_letters + string.digits + '/=?&@#%^()+,.<>:!'

13 months agoLOC-13 - Encrypt system message payloads.
B Tasker []
LOC-13 - Encrypt system message payloads.

This is done for two main reasons - firstly to minimise the amount of obvious plaintext in memory (though it is still base64 encoded, so limited effect there).

Secondly, and more importantly, it allows us to adjust the client so that it will never honour a plaintext JSON message payload.

13 months agoPartial implementation for LOC-21
B Tasker []
Partial implementation for LOC-21

Users within the same room can now send each other direct messages

/msg [username] [msg]

However, the message is currently encrypted with the room key. Other users won't (and shouldn't) receive DMs not addressed to them back from {{pollMsg}}, and old DMs will be cleared at the same interval as room-wide messages.

Messages really should be encrypted with a key that's specific to the addressed user, but that can't be implemented until Roster support has been added.

14 months agoLOC-14 - Move failuremessage pushing to function
B Tasker []
LOC-14 - Move failuremessage pushing to function

This is done as at some point we'll also want to push a "room has been closed" message. To do that though, we'll need to query all the users in the room, so leaving for now

14 months agoLOC-14 System will now push a failuremessage when a user is kicked from a room
B Tasker []
LOC-14 System will now push a failuremessage when a user is kicked from a room

The message will be returned to the client just once, and is valid for 5 minutes (though clearance hasn't been implemented yet)

14 months agoLOC-14 - Move error status code returning to a dedicated function
B Tasker []
LOC-14 - Move error status code returning to a dedicated function

This is as a precursor to checking for a stored message for that user

14 months agoUsed LOC-16 verb to assign colours to different system messages
B Tasker []
Used LOC-16 verb to assign colours to different system messages

System will set one of the following verbs along with it's messages, resulting in a different colour in the client

- sysinfo - magenta (as before)
- syswarn - Cyan
- sysalert - High contract reversed colours (grey background, black font)

14 months agoAdding {{/me}} functionality using verb from LOC-16
B Tasker []
Adding {{/me}} functionality using verb from LOC-16

Within a room, if a user types (for example)

/me returns again

The room will see a (yellow) message reading

** ben2 returns again **

14 months agoLOC-16 add "verb" to message payload
B Tasker []
LOC-16 add "verb" to message payload

It's not currently used by the client (and probably won't be until there's a need for it), but it's now available.

The default is 'say', and when sending a system message the server will use 'sysinfo'

14 months agoLOC-10 - Use server-validated username to define message sender
B Tasker []
LOC-10 - Use server-validated username to define message sender

We now use the username field that's authenticated by the server when displaying who the sender was. The "user" field has been removed from the encrypted message payload as being potentially dangerous (and no longer used in any case).

This means that it should no longer be possible to spoof the sender of messages. Instead you'd need to compromise an existing user's session or password.

The trade off of this is that there's a slightly increased level of metadata in memory on the server, but having weighed the options in LOC-10 this was deemed lower risk than the alternative.

14 months agoLOC-2 Clear user sessions when room is closed
B Tasker []
LOC-2 Clear user sessions when room is closed

14 months agoLOC-2 - Delete user's session token when they're kicked/banned or leave the room
B Tasker []
LOC-2 - Delete user's session token when they're kicked/banned or leave the room

14 months agoLOC-2 Session token is now checked and validity enforced
B Tasker []
LOC-2 Session token is now checked and validity enforced

14 months agoLOC-2 Client now sends session key with all relevant requests
B Tasker []
LOC-2 Client now sends session key with all relevant requests

Having joined a room, the client will now include {{sesskey}} in it's payload for

- {{pollMsg}}
- {{sendMsg}}
- {{leaveRoom}}
- {{closeRoom}}
- {{inviteUser}}
- {{kickUser}}
- {{banUser}}

And will clear the stored key when a user leaves the room.

14 months agoLOC-2 Switch to prefixing with Room Name so that we don't leak how many active rooms there are
B Tasker []
LOC-2 Switch to prefixing with Room Name so that we don't leak how many active rooms there are

14 months agoLOC-2 joinRoom now generates and returns a 1024 bit session key
B Tasker []
LOC-2 joinRoom now generates and returns a 1024 bit session key

When the user successfully joins a room, a 1024 bit session key is generated and returned. The client stores this for use with later requests.

It's use isn't currently enforced (coming soon) and the table isn't currently tidied when a user leaves/is kicked (again coming soon).

The session key is prefixed by the room id, in the format

[roomid]-[sesskey]

The idea being that when a room is closed, it's trivial to remove all related sessions.

My concern here, though, is that it may leak how many rooms there are. If your session key starts 10 then you know there are (or have been) 10 rooms (including yours).

So, either we need to change the prefix to be the room name, or perhaps just have the server seed the room IDs with a random number at startup.

The problem with the latter is that we risk running out of IDs if the number's truly unbounded, and if it is bounded and we're near the upper bound you can still take an educated guess.

So it's probably better to switch using the room name in hindsight. Will change that next

14 months agoLOC-2 Enforce user password when joining room
B Tasker []
LOC-2 Enforce user password when joining room

When {{joinRoom}} is called, we'll now check that the submitted password matches the hash in the database.

That's currently as far as the authentication mechanism goes at the moment though, so once a user's entered a room, other users could still submit messages with their name on it. Addressing that is up next.

14 months agoBUGFIX - allow a 500 error to be returned
B Tasker []
BUGFIX - allow a 500 error to be returned

14 months agoLOC-2 Implemented password generation when inviting users
B Tasker []
LOC-2 Implemented password generation when inviting users

Now, when a user is invited into a room the inviting user will be given output detailing how the invited user should join

User ben2 may now join room
To join the room, they should do /join BenTest7 0JF6LXE4Q23TFE7A:U2SNQORSY9NZWV7T ben2

That will obviously need to be communicated to the invited user securely, but there's already a need to securely communicate how to connect to the LocalChat instance anway, so it's effectively an extension of an existing need to do a key-exchange.

14 months agoLOC-2 Implemented user password storage
B Tasker []
LOC-2 Implemented user password storage

* The backend now stores a (bcrypt) hash of a user's password.
* When a room is created, a hash of the owner's password is also inserted into the invite table so that they can join the room

Currently, the password isn't actually needed to join (that's the next step)

Within the client, when a room is created output is generated to show how to join the room. This commit amends that output to include the admin user's password, for example

To join the room, do /join BenTest123 SD8WXY1OKC39CI0Y:QCVN7CEPUCHAQU2S ben

The first section (i.e. before :) of that password is the room password (so will be used for the E2E encryption). The second half is the users password.

When invites are generated (this doesn't yet happen) the generated output will differ only in the second half of the password and the username to sign in as.

14 months agoLOC-8 Do not throw exception if message cannot be decrypted
B Tasker []
LOC-8 Do not throw exception if message cannot be decrypted

If a user connects into a room using a different encryption key to everyone else, do not let them effectively DoS the room by causing exceptions in everyone else's clients.

If we receive a message that cannot be decrypted, we simply print a warning to that effect and carry on.

Because the sending user's name is in the encrypted payload, we can't ascertain who sent it - but as soon as someone else replies, that sending user will also get an error message.

14 months agoLOC-2 Removed room password from submission and from input format of /room create
B Tasker []
LOC-2 Removed room password from submission and from input format of /room create

New syntax is

/room create [roomname] [owner]

The client will then generate _client side_ a password to use as the room password. It's perfectly fine to use a different value, so long as all other users in the room are using the same one.

What _will_ need to happen when creating a room, though, is for us to submit a password hash for the owning user so that they can actually enter the room to invite others.

14 months agoLOC-2 - Removed Room password from API and from table
B Tasker []
LOC-2 - Removed Room password from API and from table

It's used as a crypto key, so we don't really want any aspect of it going anywhere near the server.

14 months agoLOC-7 - Implemented ability to close a room
B Tasker []
LOC-7 - Implemented ability to close a room

The room owner can now close the room with

/room close [roompass]

The pass is only required to prevent additional triggering and isn't used for any form of validation.

14 months agoRemove excess whitespace
B Tasker []
Remove excess whitespace

14 months agoLOC-5 - Prevent SYSTEM from joining rooms, and warn if users try to invite it
B Tasker []
LOC-5 - Prevent SYSTEM from joining rooms, and warn if users try to invite it

We prevent anyone from joining with the name SYSTEM, and warn the entire room if someone tries to authorise SYSTEM to log in (because they're almost certainly up to no good)

14 months agoSwitch to using ad-hoc SSL
B Tasker []
Switch to using ad-hoc SSL

We do this so that messaging metadata isn't leaked quite so much on the loopback interface

14 months agoImplement msg payload encryption in the client - LOC-4
B Tasker []
Implement msg payload encryption in the client - LOC-4

Message payloads are now PGP encrypted using the room password as the encryption passphrase.

It'd be nice to be able to use something like OTR, but it adds a lot of overhead in a Multi-User-Chat environment (as you'd need to address a copy to each user, encrypted with their own key, or trust the server to see the messages).

14 months agoLOC-1 - forgot to include the server component in the earlier commit
B Tasker []
LOC-1 - forgot to include the server component in the earlier commit

14 months agoUpdate help text
B Tasker []
Update help text

14 months agoLOC-1 Only users authorised on a room may grant access to others
B Tasker []
LOC-1 Only users authorised on a room may grant access to others

Was originally going to make it admin only, but decided it was better to push a notification in instead.

14 months agoLOC-3 Room Owners can now kick (and ban) users from the room
B Tasker []
LOC-3 Room Owners can now kick (and ban) users from the room

To kick a user out of the room, the owner can do

/kick [user]

To kick them and remove their ability to return, do

/ban [user]

14 months agoAdding help output. SC-2 v0.0.1a
B Tasker []
Adding help output. SC-2

This brings us (more or less) up to the point of a PoC for SC-2.

Although there's currently no E2E encryption and the auto-room purging isn't in place (apart from when a new user joins a room), messages can now flow back and forth.

It's not currently possible to close a room either, that needs to come soon.

But, there's enough functionality in place that it seems worth setting up a JIRA project for future adjustments/improvements. Auth is going to need doing at some point soon and it'd be good to have the decisions made on that properly documented.

This commit will be tagged as being v0.0.1a

14 months agoAdded the ability to invite users into room.
B Tasker []
Added the ability to invite users into room.

/room invite [roomname] [roompass] [[user]]

There's a known issue here where the backend will allow anyone to invite anyone into a room, even if the original user *isn't* actually invited into the room themselves.

That should be considered a big TODO

14 months agoClient can now create room
B Tasker []
Client can now create room

/room create [roomname] [roompass] [[user]]

If the user is currently in another room and they don't explicity set a user to be used as owner, then whatever username they're using in the current room will be re-used for the new room