userdb-sql.c revision f8a86fdfb0048f9c87bf223373b35416ceb5856b
2454dfa32c93c20a8522c6ed42fe057baaac9f9aStephan Bosch/* Copyright (C) 2004 Timo Sirainen, Alex Howansky */
8322e7400bbeee586529e797f6e332149178aa4fTimo Sirainenstatic const char *sql_query_get_result(struct sql_result *result,
8322e7400bbeee586529e797f6e332149178aa4fTimo Sirainen unsigned int i, fields_count;
8322e7400bbeee586529e797f6e332149178aa4fTimo Sirainen fields_count = sql_result_get_fields_count(result);
8322e7400bbeee586529e797f6e332149178aa4fTimo Sirainen for (i = 0; i < fields_count; i++) {
8322e7400bbeee586529e797f6e332149178aa4fTimo Sirainen value = sql_result_get_field_value(result, i);
8322e7400bbeee586529e797f6e332149178aa4fTimo Sirainen /* some special handling for UID and GID. */
12ff27eadb44c6877298d3e214c7039342669669Timo Sirainen "Password query didn't return uid, or it was NULL");
12ff27eadb44c6877298d3e214c7039342669669Timo Sirainen "Password query didn't return gid, or it was NULL");
12ff27eadb44c6877298d3e214c7039342669669Timo Sirainenstatic void sql_query_callback(struct sql_result *result, void *context)
12ff27eadb44c6877298d3e214c7039342669669Timo Sirainen struct userdb_sql_request *sql_request = context;
a1fff894178eb4279a3acb44948c1ba98db104deTimo Sirainen struct auth_request *auth_request = sql_request->auth_request;
8587f4288b357bd83f2ec72b4197b529cf02220aTimo Sirainen "User query failed: %s", sql_result_get_error(result));
8587f4288b357bd83f2ec72b4197b529cf02220aTimo Sirainen } else if (ret == 0) {
8587f4288b357bd83f2ec72b4197b529cf02220aTimo Sirainen auth_request_log_info(auth_request, "sql", "User not found");
8587f4288b357bd83f2ec72b4197b529cf02220aTimo Sirainen user_result = sql_query_get_result(result, auth_request);
8587f4288b357bd83f2ec72b4197b529cf02220aTimo Sirainen sql_request->callback(user_result, auth_request);
8587f4288b357bd83f2ec72b4197b529cf02220aTimo Sirainenstatic void userdb_sql_lookup(struct auth_request *auth_request,
8587f4288b357bd83f2ec72b4197b529cf02220aTimo Sirainen var_expand(query, userdb_sql_conn->set.user_query,
8587f4288b357bd83f2ec72b4197b529cf02220aTimo Sirainen auth_request_get_var_expand_table(auth_request,
8587f4288b357bd83f2ec72b4197b529cf02220aTimo Sirainen sql_request = i_new(struct userdb_sql_request, 1);
8587f4288b357bd83f2ec72b4197b529cf02220aTimo Sirainen auth_request_log_debug(auth_request, "sql", "%s", str_c(query));
8587f4288b357bd83f2ec72b4197b529cf02220aTimo Sirainenstatic void userdb_sql_preinit(const char *args)
8587f4288b357bd83f2ec72b4197b529cf02220aTimo Sirainenstatic void userdb_sql_init(const char *args __attr_unused__)
8587f4288b357bd83f2ec72b4197b529cf02220aTimo Sirainen userdb_sql.blocking = (flags & SQL_DB_FLAG_BLOCKING) != 0;
833fd67ffe6a1832d72b3d310e07345a42a7b6abTimo Sirainenstatic void userdb_sql_deinit(void)