28
edits
No edit summary |
|||
| (12 intermediate revisions by the same user not shown) | |||
| Line 7: | Line 7: | ||
== Repository == | == Repository == | ||
The project has been codenamed "Inko" (Parakeet in Japanese). The repository for the new code is hosted on GitHub, at [http://github.com/endtwist/inko]. | The project has been codenamed "Inko" (Parakeet in Japanese). The repository for the new code is hosted on GitHub, at [http://github.com/endtwist/inko http://github.com/endtwist/inko]. | ||
<br> | <br> | ||
== API == | |||
See: http://wiki.github.com/endtwist/inko/web-api | |||
<br> | |||
== Roadmap == | == Roadmap == | ||
| Line 15: | Line 21: | ||
*June 10: Authentication | *June 10: Authentication | ||
**'''<sup>[√]</sup>''' Find existing Django session ID in cookie | **'''<sup>[√]</sup>''' Find existing Django session ID in cookie | ||
**'''<sup>[√]</sup>'''Extract Django session data from database | **'''<sup>[√]</sup>''' Extract Django session data from database | ||
**'''<sup>[√]</sup>'''Create new "chat session" ID cookie | **'''<sup>[√]</sup>''' Create new "chat session" ID cookie | ||
***Use modified Session library from Express to store data (in memory?) | ***Use modified Session library from Express to store data (in memory?) | ||
**'''<sup>[√]</sup>'''Retrieve chat permissions from database | **'''<sup>[√]</sup>''' Retrieve chat permissions from database | ||
**'''<sup>[√]</sup>'''Add authentication check (against stored session) to each page load | **'''<sup>[√]</sup>''' Add authentication check (against stored session) to each page load | ||
**'''<sup>[√]</sup>'''Automatically authenticate user upon first load of chat system, if logged in. Otherwise, redirect them to the login. | **'''<sup>[√]</sup>''' Automatically authenticate user upon first load of chat system, if logged in. Otherwise, redirect them to the login. | ||
*June 17: Basic Messaging | *June 17: Basic Messaging | ||
**'''<sup>[√]</sup>'''Build "Message" object that will contain all of the important message data and serialize it into a json object | **'''<sup>[√]</sup>''' Build "Message" object that will contain all of the important message data and serialize it into a json object | ||
**'''<sup>[√]</sup>'''Create a "Room" object that will allow both 1-on-1 and multi-user conversations to be initialized. | **'''<sup>[√]</sup>''' Create a "Room" object that will allow both 1-on-1 and multi-user conversations to be initialized. | ||
**'''<sup>[√]</sup>'''Guests should only be allowed in one room at a time? | **'''<sup>[√]</sup>''' Guests should only be allowed in one room at a time? | ||
**'''<sup>[√]</sup>'''How to hash room names/keep them private? | **'''<sup>[√]</sup>''' How to hash room names/keep them private? | ||
**'''<sup>[√]</sup>'''/message -> allow users to create new Message objects with data | **'''<sup>[√]</sup>''' /message -> allow users to create new Message objects with data | ||
*'''<sup>[√]</sup>''' | **'''<sup>[√]</sup>''' Add filtering for messages that will strip any potentially-harmful data (<tags>, etc.) | ||
**'''<sup>[√]</sup>'''Add CSRF verification. | **'''<sup>[√]</sup>''' Add CSRF verification. | ||
**'''<sup>[√]</sup>'''/listen -> add listener for new Message objects using long polling | **'''<sup>[√]</sup>''' /listen -> add listener for new Message objects using long polling | ||
*June 24: Watchers | *June 24: Watchers | ||
**'''<sup>[√]</sup>'''Allow authorized users (check perms) to join 1-on-1 rooms | **'''<sup>[√]</sup>''' Allow authorized users (check perms) to join 1-on-1 rooms | ||
**'''<sup>[√]</sup>'''Messages in rooms should be broadcast to all users | **'''<sup>[√]</sup>''' Messages in rooms should be broadcast to all users | ||
**'''<sup>[ ]</sup>'''Watchers should not be allowed to speak in rooms | **'''<sup>[ ]</sup>''' Watchers should not be allowed to speak in rooms | ||
**'''<sup>[ ]</sup>'''Add ability to pass conversations to other users | **'''<sup>[√]</sup>''' Add ability to pass conversations to other users | ||
**'''<sup>[ ]</sup>'''Agent interface as reference implementation | **'''<sup>[√]</sup>''' Agent interface as reference implementation | ||
*July 1: | *July 1: Non-Authenticated Guests | ||
**'''<sup>[ ]</sup>''' | **'''<sup>[√]</sup>''' Allow guests that are ''not'' authenticated to join the support queue. | ||
**'''<sup>[ ]</sup>''' | **'''<sup>[√]</sup>''' Setting and updating a user's status | ||
**'''<sup>[ ]</sup>''' | **'''<sup>[√]</sup>''' Agent-Agent private chat | ||
*July 6: | *July 6 - 10: Summit 2010! | ||
*July | *July 15: Guest Interface | ||
**'''<sup>[√]</sup>''' Guest interface as reference implementation | |||
**'''<sup>[√]</sup>''' Chat queue status (queue positioning/time estimate) | |||
*July | *July 22: Logging & Group Chat Permissions | ||
**'''<sup>[ ]</sup>''' | **'''<sup>[ ]</sup>''' Add ability to kick users from chatrooms. Ban? | ||
**'''<sup>[ ]</sup>''' | **'''<sup>[ ]</sup>''' Message/conversation data needs to be logged somewhere | ||
<br> | <br> | ||
=== Notes | === Notes === | ||
*Agents must be approved before they can pick questions from the chat queue. This is currently the "Live Chat helpers" group on sumo | *Agents must be approved before they can pick questions from the chat queue. This is currently the "Live Chat helpers" group on sumo | ||
*Also, room monitors have permission to watch any chat room, open/close the queue, and set other helpers' limits. | *Also, room monitors have permission to watch any chat room, open/close the queue, and set other helpers' limits. | ||
<br> | <br> | ||
== Features currently used in Live Chat XMPP server == | == Features currently used in Live Chat XMPP server == | ||
| Line 101: | Line 106: | ||
*Automatic chat queue status based on number of people signed in and the number of people waiting. (Must automatically close when the queue is "full") | *Automatic chat queue status based on number of people signed in and the number of people waiting. (Must automatically close when the queue is "full") | ||
*Give people waiting in queue updates on their current queue position | *Give people waiting in queue updates on their current queue position | ||
<br> | |||
== Staging == | |||
* Software requirements are outlined in the repo: [http://github.com/endtwist/inko http://github.com/endtwist/inko] | |||
* The server needs to daemonize itself. | |||
** PID should go into /var/run/ | |||
** Log file should go into /var/log/ | |||
*** It would be best to rotate logs with logrotate. | |||
* Restarting the server occurs how? | |||
edits