From af5a96e2d04056b065a36ecbd140a16d0685c7e6 Mon Sep 17 00:00:00 2001 From: Kozlov Dmitry Date: Sat, 4 Sep 2010 16:20:11 +0400 Subject: started work on radius module --- accel-pptpd/pwdb.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 62 insertions(+), 5 deletions(-) (limited to 'accel-pptpd/pwdb.c') diff --git a/accel-pptpd/pwdb.c b/accel-pptpd/pwdb.c index 37dd0c5..8bde8ff 100644 --- a/accel-pptpd/pwdb.c +++ b/accel-pptpd/pwdb.c @@ -1,12 +1,69 @@ +#include + +#include "triton.h" + #include "pwdb.h" -#include "ppp.h" -__export int pwdb_check(struct ppp_t *ppp,const char *username,const char *password) +static LIST_HEAD(pwdb_handlers); + +int __export pwdb_cleartext_check(struct ppp_t *ppp, const char *username,const char *password) +{ + struct pwdb_t *pwdb; + int r = PWDB_NO_IMPL; + + list_for_each_entry(pwdb, &pwdb_handlers, entry) { + if (!pwdb->cleartext_check) + continue; + r = pwdb->cleartext_check(pwdb, ppp, username, password); + if (r == PWDB_NO_IMPL) + continue; + break; + } + + return r; +} +int __export pwdb_encrypted_check(struct ppp_t *ppp, const char *username, int type, ...) +{ + struct pwdb_t *pwdb; + int r = PWDB_NO_IMPL; + va_list args; + + va_start(args, type); + + list_for_each_entry(pwdb, &pwdb_handlers, entry) { + if (!pwdb->encrypted_check) + continue; + r = pwdb->encrypted_check(pwdb, ppp, username, type, args); + if (r == PWDB_NO_IMPL) + continue; + break; + } + + return r; + +} +__export const char *pwdb_get_passwd(struct ppp_t *ppp, const char *username) { - return 0; + struct pwdb_t *pwdb; + const char *r = NULL; + + list_for_each_entry(pwdb, &pwdb_handlers, entry) { + if (!pwdb->get_passwd) + continue; + r = pwdb->get_passwd(pwdb, ppp, username); + if (r) + break; + } + + return r; } -__export char *pwdb_get_passwd(struct ppp_t *ppp, const char *username) +void __export pwdb_register(struct pwdb_t *pwdb) +{ + list_add_tail(&pwdb->entry, &pwdb_handlers); +} +void __export pwdb_unregister(struct pwdb_t *pwdb) { - return strdup("test"); + list_del(&pwdb->entry); } + -- cgit v1.2.3