Summary: [RFC] Use lua for customizable database access
Submitted by: mbook
Submitted on: Sunday 06/07/2009 at 04:44
Severity: 3 - Normal
Priority: 3 - Low
Assigned to: None
Discussion Lock: Any
Operating System: None
I propose that the current auth code and all
future database interfacing code be written
in lua scripts.
This would have the following advantages:
- No need to recompile to change the way the
database is used (e.g. table field names,
sql statment format, etc.).
- Support for databases other than mysql.
- Easily extended beyond just auth.
For example longturn currently uses postgresql
instead of mysql, and warclient servers use
The lua database bindings are provided by LuaSQL
(http://www.keplerproject.org/luasql/). It would
be added to the 'dependencies' directory, with
specific driver libraries only being compiled
and linked to the main server executable if the
corresponding database is detected by configure.
As a first step the lua integration would
proceed by combining much of the functionality
of the functions
into a single script entry point (i.e. a function
that is expected to exist in the database script).
A stand-alone lua state is created for this script
The lua function will need to return a status
value indicating how the connection should be
handled (e.g. 'accept', 'wait', 'reject').
The script would need to be able to manipulate
'user' objects, which correspond to 'struct
connection'. Methods should be provided which
allow access to at least 'id', 'name' and
'password' information. An alternative would
be to pass the required information to the
script function each time it is invoked.
Possibly all "auth" string occurences in the code
and in filenames should be changed to "database",
in preparation for future generalization.
I'll clarify and revise the details as I test out
a tentative implementation (though this will not
be very high priority for a while).
Reply to this item at:
Message sent via/by Gna!
Freeciv-dev mailing list