diff options
author | David Sommerseth <dazo@users.sourceforge.net> | 2009-09-15 21:49:03 +0200 |
---|---|---|
committer | David Sommerseth <dazo@users.sourceforge.net> | 2009-09-15 21:49:03 +0200 |
commit | 2f4e42262164ad118466269e3e91a50a9afcf525 (patch) | |
tree | e9290491f8685c340e85b9f6d2448cbb786896ea /utils | |
parent | c3d1420a28534ca225517efa07d7ba60b963f026 (diff) | |
download | eurephia-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.c | 65 |
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; } |