summaryrefslogtreecommitdiffstats
path: root/utils
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2009-09-15 21:49:03 +0200
committerDavid Sommerseth <dazo@users.sourceforge.net>2009-09-15 21:49:03 +0200
commit2f4e42262164ad118466269e3e91a50a9afcf525 (patch)
treee9290491f8685c340e85b9f6d2448cbb786896ea /utils
parentc3d1420a28534ca225517efa07d7ba60b963f026 (diff)
downloadeurephia-2f4e42262164ad118466269e3e91a50a9afcf525.tar.gz
eurephia-2f4e42262164ad118466269e3e91a50a9afcf525.tar.xz
eurephia-2f4e42262164ad118466269e3e91a50a9afcf525.zip
Rewritten eurephia_init to use the new unified eDBadminConfiguration() function
Diffstat (limited to 'utils')
-rw-r--r--utils/eurephia_init.c65
1 files changed, 53 insertions, 12 deletions
diff --git a/utils/eurephia_init.c b/utils/eurephia_init.c
index b89ed75..b492bce 100644
--- a/utils/eurephia_init.c
+++ b/utils/eurephia_init.c
@@ -137,6 +137,47 @@ int eurephia_ConnectDB(eurephiaCTX *ctx, eurephiaVALUES *cfg) {
return 1;
}
+
+/**
+ * Internal eurephia_init function. Sets a configuration parameter in the database.
+ *
+ * @param ctx eurephiaCTX
+ * @param key String containing the key name
+ * @param val String containing the value of the key
+ *
+ * @return Returns 1 on success, otherwise 0.
+ */
+static int config_set(eurephiaCTX *ctx, const char *key, const char *val) {
+ xmlDoc *cfgxml = NULL, *resxml = NULL;
+ xmlNode *cfg_n = NULL, *res_n = NULL;
+ int ret = 0;
+
+ eurephiaXML_CreateDoc(ctx, 1, "configuration", &cfgxml, &cfg_n);
+ assert( (cfgxml != NULL) && (cfg_n != NULL) );
+
+ cfg_n = xmlNewChild(cfg_n, NULL, (xmlChar *) "set", (xmlChar *) val);
+ xmlNewProp(cfg_n, (xmlChar *) "key", (xmlChar *) key);
+ resxml = eDBadminConfiguration(ctx, cfgxml);
+ xmlFreeDoc(cfgxml);
+
+ res_n = eurephiaXML_getRoot(ctx, resxml, NULL, 1);
+ if( res_n == NULL ) {
+ fprintf(stderr, "%s: Error updating the configuration. No results returned.\n",
+ MODULE);
+ xmlFreeDoc(resxml);
+ return 0;
+ }
+
+ if( xmlStrcmp(res_n->name, (xmlChar *) "Error") == 0 ) {
+ fprintf(stderr, "%s: %s\n", MODULE, xmlExtractContent(res_n));
+ ret = 0;
+ } else {
+ ret = 1;
+ }
+ xmlFreeDoc(resxml);
+ return ret;
+}
+
/**
* Guides the user through setting up the first eurephia administrator account.
*
@@ -292,7 +333,7 @@ int setup_password_params(eurephiaCTX *ctx, const int hash_thr_min, const int h
get_console_input(buffer, 3, "Salt length for password hashes [32] ", 0);
memset(&value, 0, 22);
snprintf(value, 20, "%i", (atoi_nullsafe(buffer) > 0 ? atoi_nullsafe(buffer) : 32));
- if( !eDBadminConfigSet(ctx, "passwordhash_salt_length", value) ) {
+ if( !config_set(ctx, "passwordhash_salt_length", value) ) {
fprintf(stderr, "Failed to set configuration settings in database\n");
return 0;
}
@@ -309,7 +350,7 @@ int setup_password_params(eurephiaCTX *ctx, const int hash_thr_min, const int h
get_console_input(buffer, 20, prompt, 0);
memset(&value, 0, 22);
snprintf(value, 20, "%i", (atoi_nullsafe(buffer) > 1 ? atoi_nullsafe(buffer) : rounds_min));
- if( !eDBadminConfigSet(ctx, "passwordhash_rounds_min", value) ) {
+ if( !config_set(ctx, "passwordhash_rounds_min", value) ) {
fprintf(stderr, "Failed to set configuration settings in database\n");
return 0;
}
@@ -318,7 +359,7 @@ int setup_password_params(eurephiaCTX *ctx, const int hash_thr_min, const int h
get_console_input(buffer, 20, prompt, 0);
memset(&value, 0, 22);
snprintf(value, 20, "%i", (atoi_nullsafe(buffer) > 1 ? atoi_nullsafe(buffer) : rounds_max));
- if( !eDBadminConfigSet(ctx, "passwordhash_rounds_max", value) ) {
+ if( !config_set(ctx, "passwordhash_rounds_max", value) ) {
fprintf(stderr, "Failed to set configuration settings in database\n");
return 0;
}
@@ -352,7 +393,7 @@ int setup_attempt_limits(eurephiaCTX *ctx) {
get_console_input(buffer, 4, "How many failed attempts will you allow per user name? [3]", 0);
memset(&value, 0, 22);
snprintf(value, 20, "%i", (atoi_nullsafe(buffer) > 0 ? atoi_nullsafe(buffer) : 3));
- if( !eDBadminConfigSet(ctx, "allow_username_attempts", value) ) {
+ if( !config_set(ctx, "allow_username_attempts", value) ) {
fprintf(stderr, "Failed to set configuration settings in database\n");
return 0;
}
@@ -360,7 +401,7 @@ int setup_attempt_limits(eurephiaCTX *ctx) {
get_console_input(buffer, 4, "How many failed attempts will you allow per certificate? [5]", 0);
memset(&value, 0, 22);
snprintf(value, 20, "%i", (atoi_nullsafe(buffer) > 0 ? atoi_nullsafe(buffer) : 5));
- if( !eDBadminConfigSet(ctx, "allow_cert_attempts", value) ) {
+ if( !config_set(ctx, "allow_cert_attempts", value) ) {
fprintf(stderr, "Failed to set configuration settings in database\n");
return 0;
}
@@ -368,7 +409,7 @@ int setup_attempt_limits(eurephiaCTX *ctx) {
get_console_input(buffer, 4, "How many failed attempts will you allow per IP address? [10]", 0);
memset(&value, 0, 22);
snprintf(value, 20, "%i", (atoi_nullsafe(buffer) > 0 ? atoi_nullsafe(buffer) : 10));
- if( !eDBadminConfigSet(ctx, "allow_ipaddr_attempts", value) ) {
+ if( !config_set(ctx, "allow_ipaddr_attempts", value) ) {
fprintf(stderr, "Failed to set configuration settings in database\n");
return 0;
}
@@ -396,7 +437,7 @@ int setup_session_params(eurephiaCTX *ctx) {
"eurephiadmin: How many minutes before a session is auto logged out: [10]", 0);
memset(&value, 0, 22);
snprintf(value, 20, "%i", (atoi_nullsafe(buffer) > 0 ? atoi_nullsafe(buffer) : 10));
- if( !eDBadminConfigSet(ctx, "eurephiadmin_autologout", value) ) {
+ if( !config_set(ctx, "eurephiadmin_autologout", value) ) {
fprintf(stderr, "Failed to set configuration settings in database\n");
return 0;
}
@@ -432,7 +473,7 @@ int setup_iptables(eurephiaCTX *ctx) {
snprintf(value, 1024, "%s/efw-iptables.so", PLUGINDIR);
snprintf(prompt, 178, "\nFull path to the efw-iptables.so library:\n[%s]", value);
get_console_input(buffer, 1024, prompt, 0);
- if( !eDBadminConfigSet(ctx, "firewall_interface", (strlen_nullsafe(buffer) > 1 ? buffer : value)) ) {
+ if( !config_set(ctx, "firewall_interface", (strlen_nullsafe(buffer) > 1 ? buffer : value)) ) {
fprintf(stderr, "Failed to set configuration settings in database\n");
return 0;
}
@@ -440,7 +481,7 @@ int setup_iptables(eurephiaCTX *ctx) {
snprintf(value, 1024, "/sbin/iptables");
snprintf(prompt, 78, "\nFull path to the iptables command: [%s]", value);
get_console_input(buffer, 1024, prompt, 0);
- if( !eDBadminConfigSet(ctx, "firewall_command", (strlen_nullsafe(buffer) > 1 ? buffer : value)) ) {
+ if( !config_set(ctx, "firewall_command", (strlen_nullsafe(buffer) > 1 ? buffer : value)) ) {
fprintf(stderr, "Failed to set configuration settings in database\n");
return 0;
}
@@ -448,7 +489,7 @@ int setup_iptables(eurephiaCTX *ctx) {
snprintf(value, 1024, "vpn_users");
snprintf(prompt, 78, "\nWhich iptables chain should eurephia use? [%s]", value);
get_console_input(buffer, 1024, prompt, 0);
- if( !eDBadminConfigSet(ctx, "firewall_destination", (strlen_nullsafe(buffer) > 1 ? buffer : value)) ) {
+ if( !config_set(ctx, "firewall_destination", (strlen_nullsafe(buffer) > 1 ? buffer : value)) ) {
fprintf(stderr, "Failed to set configuration settings in database\n");
return 0;
}
@@ -460,7 +501,7 @@ int setup_iptables(eurephiaCTX *ctx) {
snprintf(prompt, 178, "\nWhich iptables chain should eurephia use for"
"\nblacklisted IP addresses? [%s]", value);
get_console_input(buffer, 1024, prompt, 0);
- if( !eDBadminConfigSet(ctx, "firewall_blacklist_destination",
+ if( !config_set(ctx, "firewall_blacklist_destination",
(strlen_nullsafe(buffer) > 1 ? buffer : value)) ) {
fprintf(stderr, "Failed to set configuration settings in database\n");
return 0;
@@ -471,7 +512,7 @@ int setup_iptables(eurephiaCTX *ctx) {
"\nIP addresses too (iptables '-j' argument) ? [DROP]");
get_console_input(buffer, 1024, prompt, 0);
if( (strlen_nullsafe(buffer) > 1)
- && !eDBadminConfigSet(ctx, "firewall_blacklist_send_to", buffer) ) {
+ && !config_set(ctx, "firewall_blacklist_send_to", buffer) ) {
fprintf(stderr, "Failed to set configuration settings in database\n");
return 0;
}