Compare commits
	
		
			1 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| c351a1e7ec | 
							
								
								
									
										62
									
								
								TODO
									
									
									
									
									
								
							
							
						
						
									
										62
									
								
								TODO
									
									
									
									
									
								
							@@ -1,50 +1,3 @@
 | 
			
		||||
Modular design
 | 
			
		||||
==============
 | 
			
		||||
[ ] Authentication and authorization
 | 
			
		||||
    [ ] SQLite3
 | 
			
		||||
    [ ] MySQL
 | 
			
		||||
    [ ] PostgreSQL
 | 
			
		||||
    [ ] LDAP
 | 
			
		||||
[ ] Roster storage
 | 
			
		||||
    [ ] SQLite3
 | 
			
		||||
    [ ] MySQL
 | 
			
		||||
    [ ] PostgreSQL
 | 
			
		||||
    [ ] LDAP?
 | 
			
		||||
[ ] Group chat
 | 
			
		||||
[ ] File sending
 | 
			
		||||
[ ] Server-side chat logging
 | 
			
		||||
 | 
			
		||||
[ ] GnuTLS
 | 
			
		||||
[X] gLib
 | 
			
		||||
[ ] gNet
 | 
			
		||||
 | 
			
		||||
Hooks
 | 
			
		||||
=====
 | 
			
		||||
 | 
			
		||||
[ ] c2s-message
 | 
			
		||||
[ ] s2c-message
 | 
			
		||||
[ ] s2s-message
 | 
			
		||||
[ ] client-authentication
 | 
			
		||||
[ ] client-authorization
 | 
			
		||||
[ ] client-presence-change
 | 
			
		||||
 | 
			
		||||
Configuration file
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
[X] Global logging
 | 
			
		||||
[X] Modules
 | 
			
		||||
    [X] Module directory
 | 
			
		||||
    [X] Modules to load on startup
 | 
			
		||||
[X] Interface
 | 
			
		||||
    [X] IP
 | 
			
		||||
    [X] Port
 | 
			
		||||
    [X] Domain
 | 
			
		||||
    [-] Certificate file
 | 
			
		||||
    [-] Key file
 | 
			
		||||
    [X] Logging
 | 
			
		||||
        [X] Log destination: syslog, file
 | 
			
		||||
	[X] Log options: connection events, etc.
 | 
			
		||||
 | 
			
		||||
Code flow
 | 
			
		||||
=========
 | 
			
		||||
 | 
			
		||||
@@ -109,18 +62,3 @@ 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!
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								autogen.sh
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								autogen.sh
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
lib_LTLIBRARIES = libmod-layer-gnutls.la libmod-auth-gsasl.la libmod-users-sqlite3.la libmod-roster-sqlite3.la
 | 
			
		||||
lib_LTLIBRARIES = libmod-layer-gnutls.la libmod-auth-gsasl.la libmod-users-sqlite3.la libmod-roster-sqlite3.la libmod-socket-tcpip.la
 | 
			
		||||
libmod_layer_gnutls_la_SOURCES = layer-gnutls.c
 | 
			
		||||
libmod_layer_gnutls_la_CPPFLAGS = -I ../src
 | 
			
		||||
libmod_auth_gsasl_la_SOURCES = auth-gsasl.c
 | 
			
		||||
@@ -7,3 +7,5 @@ libmod_users_sqlite3_la_SOURCES = users-sqlite3.c
 | 
			
		||||
libmod_users_sqlite3_la_CPPFLAGS = -I ../src
 | 
			
		||||
libmod_roster_sqlite3_la_SOURCES = roster-sqlite3.c
 | 
			
		||||
libmod_roster_sqlite3_la_CPPFLAGS = -I ../src
 | 
			
		||||
libmod_socket_tcpip_la_SOURCES = socket-tcpip.c
 | 
			
		||||
libmod_socket_tcpip_la_CPPFLAGS = -I ../src
 | 
			
		||||
 
 | 
			
		||||
@@ -2,9 +2,18 @@
 | 
			
		||||
 | 
			
		||||
int wxmppd_mod_auth_gsasl_load(funcptr *);
 | 
			
		||||
 | 
			
		||||
char *wxmppd_mod_auth_gsasl_runtime_conflicts = {
 | 
			
		||||
	"auth-cyrus-sasl",
 | 
			
		||||
	NULL,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const wxmppd_module_data_t module_data = {
 | 
			
		||||
	"auth-gsasl",
 | 
			
		||||
	"GNU SASL authentication extension",
 | 
			
		||||
	NULL,
 | 
			
		||||
	NULL,
 | 
			
		||||
	NULL,
 | 
			
		||||
	&wxmppd_mod_auth_gsasl_runtime_conflicts,
 | 
			
		||||
	(funcptr)wxmppd_mod_auth_gsasl_load,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,9 +2,17 @@
 | 
			
		||||
 | 
			
		||||
int wxmppd_mod_layer_gnutls_load(funcptr *);
 | 
			
		||||
 | 
			
		||||
char *wxmppd_mod_layer_gnutls_runtime_conflicts[] = {
 | 
			
		||||
	"layer-openssl",
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const wxmppd_module_data_t module_data = {
 | 
			
		||||
	"layer-gnutls",
 | 
			
		||||
	"GnuTLS interface extension",
 | 
			
		||||
	NULL,
 | 
			
		||||
	NULL,
 | 
			
		||||
	NULL,
 | 
			
		||||
	&wxmppd_mod_layer_gnutls_runtime_conflicts,
 | 
			
		||||
	(funcptr)wxmppd_mod_layer_gnutls_load,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,10 @@ int wxmppd_mod_roster_sqlite3_load(funcptr *);
 | 
			
		||||
const wxmppd_module_data_t module_data = {
 | 
			
		||||
	"roster-sqlite3",
 | 
			
		||||
	"SQLite3 storage module for roster data storage",
 | 
			
		||||
	NULL,
 | 
			
		||||
	NULL,
 | 
			
		||||
	NULL,
 | 
			
		||||
	NULL,
 | 
			
		||||
	(funcptr)wxmppd_mod_roster_sqlite3_load,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,10 @@ int wxmppd_mod_users_sqlite3_load(funcptr *);
 | 
			
		||||
const wxmppd_module_data_t module_data = {
 | 
			
		||||
	"users-sqlite3",
 | 
			
		||||
	"SQLite3 storage module for user data storage",
 | 
			
		||||
	NULL,
 | 
			
		||||
	NULL,
 | 
			
		||||
	NULL,
 | 
			
		||||
	NULL,
 | 
			
		||||
	(funcptr)wxmppd_mod_users_sqlite3_load,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,10 @@ typedef int * (*funcptr) ();
 | 
			
		||||
typedef struct _wxmppd_module_data_t {
 | 
			
		||||
	char *name;
 | 
			
		||||
	char *description;
 | 
			
		||||
	char **load_deps;
 | 
			
		||||
	char **runtime_deps;
 | 
			
		||||
	char **load_conflicts;
 | 
			
		||||
	char **runtime_conflicts;
 | 
			
		||||
	funcptr *load_func;
 | 
			
		||||
} wxmppd_module_data_t;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user