Added more TODO items

This commit is contained in:
Gergely Polonkai (W00d5t0ck) 2011-01-27 09:24:56 +01:00
parent 0ad269d1c3
commit 20d4101eec

102
TODO
View File

@ -1,23 +1,25 @@
[ ] Modular design Modular design
[ ] Authentication and authorization ==============
[ ] SQLite3 [ ] Authentication and authorization
[ ] MySQL [ ] SQLite3
[ ] PostgreSQL [ ] MySQL
[ ] LDAP [ ] PostgreSQL
[ ] Roster storage [ ] LDAP
[ ] SQLite3 [ ] Roster storage
[ ] MySQL [ ] SQLite3
[ ] PostgreSQL [ ] MySQL
[ ] LDAP? [ ] PostgreSQL
[ ] Group chat [ ] LDAP?
[ ] File sending [ ] Group chat
[ ] Server-side chat logging [ ] File sending
[ ] Server-side chat logging
[ ] GnuTLS [ ] GnuTLS
[X] gLib [X] gLib
[ ] gNet [ ] gNet
Hooks: Hooks
=====
[ ] c2s-message [ ] c2s-message
[ ] s2c-message [ ] s2c-message
@ -26,13 +28,14 @@ Hooks:
[ ] client-authorization [ ] client-authorization
[ ] client-presence-change [ ] client-presence-change
Configuration file: Configuration file
==================
[X] Global logging [X] Global logging
[X] Modules [X] Modules
[X] Module directory [X] Module directory
[X] Modules to load on startup [X] Modules to load on startup
[o] Interface [X] Interface
[X] IP [X] IP
[X] Port [X] Port
[X] Domain [X] Domain
@ -40,12 +43,15 @@ Configuration file:
[-] Key file [-] Key file
[X] Logging [X] Logging
[X] Log destination: syslog, file [X] Log destination: syslog, file
[X] Log options: connection events, etc. [X] Log options: connection events, etc.
Code flow: Code flow
=========
[X] Command line processing (Command line option can override the place of the configuration file) [X] Command line processing (Command line option can override the place of the
[X] Configuration file processing (Command line options override configuration global values like modules directory, log destination) configuration file)
[X] Configuration file processing (Command line options override configuration
global values like modules directory, log destination)
[ ] Create logger thread [ ] Create logger thread
[ ] Start logging according to configuration [ ] Start logging according to configuration
[ ] Load modules [ ] Load modules
@ -64,3 +70,57 @@ Code flow:
When new connection arrives When new connection arrives
[ ] Create peer object [ ] Create peer object
[ ] Associate with corresponding stream interface [ ] Associate with corresponding stream interface
[ ] Run main loop
[ ] Socket thread
[ ] New connections
[ ] Run "before-accept" hook
[ ] Create client object unless connection is dropped in
"before-accept"
[ ] Run "after-accept" hooks
[ ] Install "always-install" extensions on client
[ ] Wait for remote XML Stream to start
[ ] Assign client to correct interface
[ ] Old connections
[ ] Run "layer-accept" hooks
[ ] Run "before-interface" hooks
[ ] Pass to assigned interface
[ ] Run "after-interface" hooks
[ ] Logging thread
[ ] Process received lines one by one. Errors first, info next, debug
last
[ ] Interface threads
[ ] Receive data from socket thread
[ ] Run "before-process" hooks
[ ] Process stream
[ ] Run "after-process" hooks
[ ] Run "before-send" hooks
[ ] Send packet to destination if packet is finished
[ ] Run "after-send" hooks
During the connection additional extensions can be installed on the client,
like the layer-tls module's TLS encryptions extension.
Authentication
==============
When a client requests authentication, client credentials get through the
authentication module(s) associated with the interface. This authentication
module must always check the jid via an user storage module, and if necessary,
it should get the password (or any other credentials like a X509 certificate's
Common Name field, or a Kerberos principal name) from this storage module,
either.
Additional modules to provide
=============================
[ ] user-mysql
[ ] roster-mysql
[ ] user-postgresql
[ ] roster-postgresql
[ ] user-ldap
[ ] roster-ldap?
[ ] auth-cyrus-sasl
[ ] log-c2c
[ ] conn-blackwhite-list
Create a well defined module programming API!