Changeset 8e6ecfe for storage.c


Ignore:
Timestamp:
2016-03-25T18:07:53Z (5 years ago)
Author:
Dennis Kaarsemaker <dennis@…>
Branches:
master
Children:
a6005da
Parents:
446a23e
git-author:
Dennis Kaarsemaker <dennis@…> (23-02-16 18:41:34)
git-committer:
Dennis Kaarsemaker <dennis@…> (25-03-16 18:07:53)
Message:

Authentication: scaffolding for multiple authentication backends

Instead of always putting users passwords in XML files, allow site
admins to configure a different authentication method to integrate
authentication with other systems.

This doesn't add any authentication backends yet, merely the
scaffolding. Notably:

  • Password checking and loading/removing from storage has been decoupled. A new auth_check_pass function is used to check passwords. It does check against the configured storage first, but will handle the authentication backends as well. The XML storage merely signals that a user's password should be checked using an authentication backend.
  • If unknown-to-bitlbee users identify using an authentication backend, they are automatically registered.
  • If an authentication backend is used, that fact is stored in the XML file, the password is not. Passwords are also stored unencrypted in this case, as the password used to encrypt them can change underneath us.
  • configure and Makefile changes for the backend objects
File:
1 edited

Legend:

Unmodified
Added
Removed
  • storage.c

    r446a23e r8e6ecfe  
    8787}
    8888
    89 storage_status_t storage_check_pass(const char *nick, const char *password)
     89storage_status_t storage_check_pass(irc_t *irc, const char *nick, const char *password)
    9090{
    9191        GList *gl;
     
    9797                storage_status_t status;
    9898
    99                 status = st->check_pass(nick, password);
     99                status = st->check_pass(irc, nick, password);
    100100                if (status != STORAGE_NO_SUCH_USER) {
    101101                        return status;
     
    171171}
    172172
    173 storage_status_t storage_remove(const char *nick, const char *password)
     173storage_status_t storage_remove(const char *nick)
    174174{
    175175        GList *gl;
     
    185185                storage_status_t status;
    186186
    187                 status = st->remove(nick, password);
     187                status = st->remove(nick);
    188188                ok |= status == STORAGE_OK;
    189189                if (status != STORAGE_NO_SUCH_USER && status != STORAGE_OK) {
Note: See TracChangeset for help on using the changeset viewer.