From 86d412695dff4d810702f5cc30c093c00627426f Mon Sep 17 00:00:00 2001 From: "Alan T. DeKok" Date: Tue, 14 Sep 2010 02:40:24 +0200 Subject: [PATCH] Allow sqlite filename to be specified in the configuration file. Undocumented for now. Based on a patch from Sven Anders --- src/modules/rlm_sql/conf.h | 1 + src/modules/rlm_sql/drivers/rlm_sql_sqlite/sql_sqlite.c | 17 +++++++++++------ src/modules/rlm_sql/rlm_sql.c | 2 ++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/modules/rlm_sql/conf.h b/src/modules/rlm_sql/conf.h index 7d28f77..d1faae0 100644 --- a/src/modules/rlm_sql/conf.h +++ b/src/modules/rlm_sql/conf.h @@ -18,6 +18,7 @@ typedef struct sql_config { char *sql_login; char *sql_password; char *sql_db; + char *sql_file; /* for sqlite */ char *query_user; char *default_profile; char *nas_query; diff --git a/src/modules/rlm_sql/drivers/rlm_sql_sqlite/sql_sqlite.c b/src/modules/rlm_sql/drivers/rlm_sql_sqlite/sql_sqlite.c index 5255000..f4b6dc0 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_sqlite/sql_sqlite.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_sqlite/sql_sqlite.c @@ -49,6 +49,7 @@ static int sql_init_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config) { int status; rlm_sql_sqlite_sock *sqlite_sock; + char *filename; char buffer[2048]; if (!sqlsocket->conn) { @@ -60,12 +61,16 @@ static int sql_init_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config) sqlite_sock = sqlsocket->conn; memset(sqlite_sock, 0, sizeof(rlm_sql_sqlite_sock)); - snprintf(buffer, sizeof(buffer), "%s/sqlite_radius_client_database", - radius_dir); + filename = config->sql_file; + if (!filename) { + snprintf(buffer, sizeof(buffer), "%s/sqlite_radius_client_database", + radius_dir); + filename = buffer; + } radlog(L_INFO, "rlm_sql_sqlite: Opening sqlite database %s for #%d", - buffer, sqlsocket->id); + filename, sqlsocket->id); - status = sqlite3_open(buffer, &sqlite_sock->pDb); + status = sqlite3_open(filename, &sqlite_sock->pDb); radlog(L_INFO, "rlm_sql_sqlite: sqlite3_open() = %d\n", status); return (status != SQLITE_OK) * -1; } @@ -333,7 +338,7 @@ static int sql_free_result(SQLSOCK * sqlsocket, UNUSED SQL_CONFIG *config) * connection * *************************************************************************/ -static const char *sql_error(SQLSOCK * sqlsocket, UNUSED SQL_CONFIG *config) +static const char *sql_error(UNUSED SQLSOCK * sqlsocket, UNUSED SQL_CONFIG *config) { return NULL; } @@ -403,7 +408,7 @@ static int sql_finish_select_query(SQLSOCK * sqlsocket, SQL_CONFIG *config) * Purpose: End the select query, such as freeing memory or result * *************************************************************************/ -static int sql_affected_rows(SQLSOCK * sqlsocket, UNUSED SQL_CONFIG *config) +static int sql_affected_rows(UNUSED SQLSOCK * sqlsocket, UNUSED SQL_CONFIG *config) { return 0; } diff --git a/src/modules/rlm_sql/rlm_sql.c b/src/modules/rlm_sql/rlm_sql.c index 800e8ef..15da1c6 100644 --- a/src/modules/rlm_sql/rlm_sql.c +++ b/src/modules/rlm_sql/rlm_sql.c @@ -49,6 +49,8 @@ static const CONF_PARSER module_config[] = { offsetof(SQL_CONFIG,sql_password), NULL, ""}, {"radius_db", PW_TYPE_STRING_PTR, offsetof(SQL_CONFIG,sql_db), NULL, "radius"}, + {"filename", PW_TYPE_FILENAME, /* for sqlite */ + offsetof(SQL_CONFIG,sql_file), NULL, NULL}, {"read_groups", PW_TYPE_BOOLEAN, offsetof(SQL_CONFIG,read_groups), NULL, "yes"}, {"sqltrace", PW_TYPE_BOOLEAN, -- 2.1.4