#include "auth-master-private.h"
+/*
+ * Forward declarations
+ */
+
static void auth_master_connected(struct connection *_conn, bool success);
static int
auth_master_input_args(struct connection *_conn, const char *const *args);
static int auth_master_input_line(struct connection *_conn, const char *line);
static void auth_master_destroy(struct connection *_conn);
+/*
+ * Connection
+ */
+
static const struct connection_vfuncs auth_master_vfuncs = {
.destroy = auth_master_destroy,
.handshake_line = auth_master_handshake_line,
}
}
+/*
+ * Lookup common
+ */
+
struct auth_master_lookup {
struct auth_master_connection *conn;
const char *user;
return TRUE;
}
+/*
+ * PassDB
+ */
+
+/* PASS */
+
int auth_master_pass_lookup(struct auth_master_connection *conn,
const char *user, const struct auth_user_info *info,
pool_t pool, const char *const **fields_r)
return lookup.return_value;
}
+/*
+ * UserDB
+ */
+
+/* USER */
+
int auth_master_user_lookup(struct auth_master_connection *conn,
const char *user, const struct auth_user_info *info,
pool_t pool, const char **username_r,
return 0;
}
+/* LIST */
+
struct auth_master_user_list_ctx {
struct auth_master_connection *conn;
string_t *username;
return ret;
}
+/*
+ * Auth cache
+ */
+
+/* CACHE-FLUSH */
+
struct auth_master_cache_ctx {
struct auth_master_connection *conn;
unsigned int count;
AUTH_MASTER_FLAG_NO_INNER_IOLOOP = 0x04,
};
+/*
+ * Connection
+ */
+
struct auth_master_connection *
auth_master_init(const char *auth_socket_path, enum auth_master_flags flags);
void auth_master_deinit(struct auth_master_connection **conn);
/* Returns the auth_socket_path */
const char *auth_master_get_socket_path(struct auth_master_connection *conn);
+/*
+ * Lookup common
+ */
+
struct auth_user_info {
const char *protocol;
const char *session_id;
bool debug;
};
+/*
+ * PassDB
+ */
+
/* Do a PASS lookup (the actual password isn't returned). */
int auth_master_pass_lookup(struct auth_master_connection *conn,
const char *user, const struct auth_user_info *info,
pool_t pool, const char *const **fields_r);
+/*
+ * UserDB
+ */
+
struct auth_user_reply {
uid_t uid;
gid_t gid;
/* INTERNAL: */
void auth_user_info_export(string_t *str, const struct auth_user_info *info);
+/*
+ * Auth cache
+ */
+
/* Flush authentication cache for everyone (users=NULL) or only for specified
users. Returns number of users flushed from cache. */
int auth_master_cache_flush(struct auth_master_connection *conn,