Summary: [RFC] Use lua for customizable database access
                 Project: Freeciv
            Submitted by: mbook
            Submitted on: Sunday 06/07/2009 at 04:44
                Category: general
                Severity: 3 - Normal
                Priority: 3 - Low
                  Status: None
             Assigned to: None
        Originator Email: 
             Open/Closed: Open
         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
password salt.

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
in auth_init().

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

Reply via email to