void sim_xml_config_set_config_log (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { gchar *value; g_return_if_fail (xmlconfig); g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (config); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_LOG)) { g_message ("Invalid config log node %s", node->name); return; } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FILENAME))) { config->log.filename = g_strdup (value); xmlFree(value); } }
void sim_xml_config_set_config_directive (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { gchar *value; g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_DIRECTIVE)) { g_message ("Invalid config directive node %s", node->name); return; } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FILENAME))) { config->directive.filename = g_strdup (value); xmlFree(value); } else { config->directive.filename = g_strdup (OS_SIM_GLOBAL_DIRECTIVE_FILE); } }
void sim_xml_config_set_config_datasources (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { xmlNodePtr children; g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_DATASOURCES)) { g_message ("Invalid config datasources node %s", node->name); return; } children = node->xmlChildrenNode; while (children) { if (!strcmp ((gchar *) children->name, OBJECT_DATASOURCE)) { sim_xml_config_set_config_datasource (xmlconfig, config, children); } children = children->next; } }
void sim_xml_config_set_config_reputation (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { gchar *value; g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_REPUTATION)) { g_message ("Invalid config reputation node %s", node->name); return; } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FILENAME))) { config->reputation.filename = g_strdup (value); xmlFree(value); } else { config->reputation.filename = NULL; } }
SimConfig* sim_xml_config_get_config (SimXmlConfig *xmlconfig) { g_return_val_if_fail (SIM_IS_XML_CONFIG (xmlconfig), NULL); return xmlconfig->_priv->config; }
void sim_xml_config_set_config_notifies (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { gchar *value; xmlNodePtr children; g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_NOTIFIES)) { g_message ("Invalid config notifies node %s", node->name); return; } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_PROGRAM))) { config->notify_prog = g_strdup (value); xmlFree(value); } children = node->xmlChildrenNode; while (children) { if (!strcmp ((gchar *) children->name, OBJECT_NOTIFY)) { sim_xml_config_set_config_notify (xmlconfig, config, children); } children = children->next; } }
void sim_xml_config_set_config_rservers (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { xmlNodePtr children; g_return_if_fail (xmlconfig); g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (config); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_RSERVERS)) { g_message ("Invalid config rservers node %s", node->name); return; } children = node->xmlChildrenNode; while (children) { if (!strcmp ((gchar *) children->name, OBJECT_RSERVER)) { sim_xml_config_set_config_rserver (xmlconfig, config, children); } children = children->next; } }
void sim_xml_config_set_config_smtp (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { gchar *value; g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_SMTP)) { g_message ("Invalid config smtp node %s", node->name); return; } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_HOST))) { config->smtp.host = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_PORT))) { config->smtp.port = strtol (value, (char **) NULL, 10); xmlFree(value); } }
void sim_xml_config_set_config_scheduler (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { gchar *value; g_return_if_fail (xmlconfig); g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (config); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_SCHEDULER)) { g_message ("Invalid config scheduler node %s", node->name); return; } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_INTERVAL))) { config->scheduler.interval = strtol (value, (char **) NULL, 10); xmlFree(value); } }
void sim_xml_config_set_config_datasource (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { SimConfigDS *ds; gchar *value; g_return_if_fail (xmlconfig); g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (config); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_DATASOURCE)) { g_message ("Invalid config datasource node %s", node->name); return; } ds = sim_config_ds_new (); if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_NAME))) { ds->name = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_PROVIDER))) { ds->provider = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_DSN))) { ds->dsn = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_LOCAL_DB))) { if (!g_ascii_strncasecmp (value, "true", 4)) ds->local_DB = TRUE; else if (!g_ascii_strncasecmp (value, "false", 4)) ds->local_DB = FALSE; else { g_message ("Error: Please put a valid value (true/false) in the Local_DB Parameter"); xmlFree(value); return; } } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_RSERVER_NAME))) { ds->rserver_name = g_strdup (value); xmlFree(value); } config->datasources = g_list_append (config->datasources, ds); }
void sim_xml_config_set_config_framework (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { gchar *value; g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_FRAMEWORK)) { g_message ("Invalid sensor log node %s", node->name); return; } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_NAME))) { config->framework.name = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_IP))) { config->framework.host = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_PORT))) { config->framework.port = strtol (value, (char **) NULL, 10); xmlFree(value); } }
/** * sim_xml_config_to_string * @xmlconfig: a #SimXmlConfig object. * * Get the given XML config contents as a XML string. * * Returns: the XML string representing the structure and contents of the * given #SimXmlConfig object. The returned value must be freed when no * longer needed. */ gchar * sim_xml_config_to_string (SimXmlConfig *xmlconfig) { xmlDocPtr doc; xmlNodePtr root; xmlChar *xml; gint size; gchar *retval; g_return_val_if_fail (SIM_IS_XML_CONFIG (xmlconfig), NULL); /* create the top node */ doc = xmlNewDoc ((xmlChar *) "1.0"); //xmlChar is a typedef to unsigned char. Needed to avoid stupid warnings root = xmlNewDocNode (doc, NULL, (xmlChar *) OBJECT_CONFIG, NULL); xmlDocSetRootElement (doc, root); /* save to memory */ xmlDocDumpMemory (doc, &xml, &size); xmlFreeDoc (doc); if (!xml) { g_message ("Could not dump XML file to memory"); return NULL; } retval = g_strdup ((gchar *)xml); free (xml); return retval; }
/* * This function takes all its parameters from config file. */ SimConfig* sim_xml_config_new_config_from_node (SimXmlConfig *xmlconfig, xmlNodePtr node) { SimConfig *config; xmlNodePtr children; gboolean aux = FALSE; g_return_val_if_fail (SIM_IS_XML_CONFIG (xmlconfig), NULL); g_return_val_if_fail (node != NULL, NULL); if (strcmp ((gchar *) node->name, OBJECT_CONFIG)) { g_message ("Invalid config node %s", node->name); return NULL; } config = sim_config_new (); children = node->xmlChildrenNode; while (children) { if (!strcmp ((gchar *) children->name, OBJECT_LOG)) sim_xml_config_set_config_log (xmlconfig, config, children); if (!strcmp ((gchar *) children->name, OBJECT_DATASOURCES)) sim_xml_config_set_config_datasources (xmlconfig, config, children); if (!strcmp ((gchar *) children->name, OBJECT_DIRECTIVE)) sim_xml_config_set_config_directive (xmlconfig, config, children); if (!strcmp ((gchar *) children->name, OBJECT_REPUTATION)) sim_xml_config_set_config_reputation (xmlconfig, config, children); if (!strcmp ((gchar *) children->name, OBJECT_SERVER)) sim_xml_config_set_config_server (xmlconfig, config, children); if (!strcmp ((gchar *) children->name, OBJECT_SMTP)) sim_xml_config_set_config_smtp (xmlconfig, config, children); if (!strcmp ((gchar *) children->name, OBJECT_NOTIFIES)) sim_xml_config_set_config_notifies (xmlconfig, config, children); if (!strcmp ((gchar *) children->name, OBJECT_FRAMEWORK)) sim_xml_config_set_config_framework (xmlconfig, config, children); if (!strcmp ((gchar *) children->name, OBJECT_FORENSIC_STORAGE)) { sim_xml_config_set_config_forensic_storage (xmlconfig, config, children); aux = TRUE; } if (!strcmp ((gchar *) children->name, OBJECT_IDM)) { sim_xml_config_set_config_idm (xmlconfig, config, children); config->idm.activated = TRUE; } children = children->next; } if (aux) config->forensic_storage.sem_activated = TRUE; else config->forensic_storage.sem_activated = FALSE; return config; }
static void sim_xml_config_init (SimXmlConfig *xmlconfig, SimXmlConfigClass *klass) { g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); /* allocate private structure */ xmlconfig->_priv = g_new0 (SimXmlConfigPrivate, 1); }
/** * sim_xml_config_changed * @xmlconfig: XML config * * Emit the "changed" signal for the given XML config */ void sim_xml_config_changed (SimXmlConfig * xmlconfig) { g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_signal_emit (G_OBJECT (xmlconfig), xmlconfig_signals[SIM_XML_CONFIG_CHANGED], 0); }
void sim_xml_config_set_config_notify (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { SimConfigNotify *notify; gchar *emails; gchar *levels; gchar **values; gint i; g_return_if_fail (xmlconfig); g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (config); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_NOTIFY)) { g_message ("Invalid config notify node %s", node->name); return; } emails = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_EMAILS); levels = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_ALARM_RISKS); if (!emails || !levels) { if (emails) xmlFree(emails); if (levels) xmlFree(levels); return; } notify = sim_config_notify_new (); notify->emails = g_strdup (emails); values = g_strsplit (levels, SIM_DELIMITER_LIST, 0); for (i = 0; values[i] != NULL; i++) { SimAlarmRiskType risk = sim_get_alarm_risk_from_char (values[i]); if (risk != SIM_ALARM_RISK_TYPE_NONE) notify->alarm_risks = g_list_append (notify->alarm_risks, GINT_TO_POINTER (risk)); } g_strfreev (values); xmlFree (emails); xmlFree (levels); config->notifies = g_list_append (config->notifies, notify); }
/* * This function takes all its parameters from config file. */ SimConfig* sim_xml_config_new_config_from_node (SimXmlConfig *xmlconfig, xmlNodePtr node) { SimConfig *config; SimAction *action; GNode *rule_root; xmlNodePtr children; g_return_val_if_fail (xmlconfig, NULL); g_return_val_if_fail (SIM_IS_XML_CONFIG (xmlconfig), NULL); g_return_val_if_fail (node != NULL, NULL); if (strcmp ((gchar *) node->name, OBJECT_CONFIG)) { g_message ("Invalid config node %s", node->name); return NULL; } config = sim_config_new (); children = node->xmlChildrenNode; while (children) { if (!strcmp ((gchar *) children->name, OBJECT_LOG)) sim_xml_config_set_config_log (xmlconfig, config, children); if (!strcmp ((gchar *) children->name, OBJECT_DATASOURCES)) sim_xml_config_set_config_datasources (xmlconfig, config, children); if (!strcmp ((gchar *) children->name, OBJECT_DIRECTIVE)) sim_xml_config_set_config_directive (xmlconfig, config, children); if (!strcmp ((gchar *) children->name, OBJECT_SCHEDULER)) sim_xml_config_set_config_scheduler (xmlconfig, config, children); if (!strcmp ((gchar *) children->name, OBJECT_SERVER)) sim_xml_config_set_config_server (xmlconfig, config, children); if (!strcmp ((gchar *) children->name, OBJECT_SMTP)) sim_xml_config_set_config_smtp (xmlconfig, config, children); if (!strcmp ((gchar *) children->name, OBJECT_NOTIFIES)) sim_xml_config_set_config_notifies (xmlconfig, config, children); //FIXME: This multilevel code is unstable and unmaintained, uncomment this at your own risk. //if (!strcmp ((gchar *) children->name, OBJECT_RSERVERS)) // sim_xml_config_set_config_rservers (xmlconfig, config, children); if (!strcmp ((gchar *) children->name, OBJECT_FRAMEWORK)) sim_xml_config_set_config_framework (xmlconfig, config, children); children = children->next; } return config; }
/** * sim_xml_config_save * @xmlconfig: XML config. * @file: FILE to save the XML config to. * * Save the given XML config to disk. */ gboolean sim_xml_config_save (SimXmlConfig *xmlconfig, const gchar *file) { gchar*xml; gboolean result; g_return_val_if_fail (SIM_IS_XML_CONFIG (xmlconfig), FALSE); xml = sim_xml_config_to_string (xmlconfig); if (xml) { result = sim_file_save (file, xml, strlen (xml)); g_free (xml); } else result = FALSE; return result; }
void sim_xml_config_set_config_idm (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { gchar *value; g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_IDM)) { g_message ("Invalid config idm node %s", node->name); return; } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_MSSP))) { if (!g_ascii_strncasecmp (value, "true", 4)) config->idm.mssp = TRUE; else if (!g_ascii_strncasecmp (value, "false", 4)) config->idm.mssp = FALSE; else g_message ("Error: Please put a valid value (true/false) in the IDM MSSP parameter"); xmlFree (value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_IP))) { config->idm.ip = g_strdup (value); xmlFree (value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_PORT))) { config->idm.port = strtol (value, (char **) NULL, 10); xmlFree (value); } }
void sim_xml_config_set_config_forensic_storage (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { //g_message("LOADING FORENSIC STORAGE CONFIGS"); gchar *value; // Check validity of all needed objects. g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); //Ensure that the current XML object is the correct for this function if (strcmp ((gchar *) node->name, OBJECT_FORENSIC_STORAGE)) { g_message ("Invalid sensor log node %s", node->name); return; } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FORENSIC_STORAGE_PATH))) { config->forensic_storage.path = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FORENSIC_STORAGE_SIG_TYPE))) { config->forensic_storage.sig_type = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FORENSIC_STORAGE_SIG_CIPHER))) { config->forensic_storage.sig_cipher = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FORENSIC_STORAGE_SIG_BIT))) { config->forensic_storage.sig_bit = strtol (value, (char **) NULL, 10); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FORENSIC_STORAGE_ENC_TYPE))) { config->forensic_storage.enc_type = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FORENSIC_STORAGE_ENC_CIPHER))) { config->forensic_storage.enc_cipher = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FORENSIC_STORAGE_ENC_BIT))) { config->forensic_storage.enc_bit = strtol (value, (char **) NULL, 10); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FORENSIC_STORAGE_KEY_SOURCE))) { config->forensic_storage.key_source = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FORENSIC_STORAGE_SIG_PRV_KEY_PATH))) { config->forensic_storage.sig_prv_key_path = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FORENSIC_STORAGE_SIG_PASS))) { config->forensic_storage.sig_pass = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FORENSIC_STORAGE_SIG_PUB_KEY_PATH))) { config->forensic_storage.sig_pub_key_path = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FORENSIC_STORAGE_ENC_PUB_KEY_PATH))) { config->forensic_storage.enc_pub_key_path = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FORENSIC_STORAGE_ENC_PASS))) { config->forensic_storage.enc_pass = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FORENSIC_STORAGE_ENC_PRV_KEY_PATH))) { config->forensic_storage.enc_prv_key_path = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_FORENSIC_STORAGE_CERT_PATH))) { config->forensic_storage.enc_cert_path = g_strdup (value); xmlFree(value); } }
/* * Load the server's placed "UP" in the architecture, the master/s server/s * */ void sim_xml_config_set_config_rserver (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { SimConfigRServer *rserver; gchar *value; g_return_if_fail (xmlconfig); g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (config); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_RSERVER)) { g_message ("Invalid config rserver node %s", node->name); return; } rserver = sim_config_rserver_new (); if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_NAME))) { rserver->name = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_IP))) { if (value) { rserver->ia = gnet_inetaddr_new_nonblock (value, 0); if (rserver->ia) { rserver->ip = g_strdup (value); xmlFree(value); } else { g_message ("Error: May be that you introduced a bad remote server IP in the server's config.xml?"); sim_config_rserver_free(rserver); xmlFree(value); return; } } else { g_message ("Error: May be that you didn't introduced a remote server IP in the server's config.xml?"); sim_config_rserver_free(rserver); return; } } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_PORT))) { if (sim_string_is_number (value, 0)) { rserver->port = strtol (value, (char **) NULL, 10); xmlFree(value); } else { g_message ("Error: May be that you introduced a bad remote IP port in the server's config.xml?"); sim_config_rserver_free(rserver); xmlFree(value); return; } } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_HA_ROLE))) { if (!g_ascii_strcasecmp (value, "active")) { rserver->is_HA_server = TRUE; rserver->HA_role = HA_ROLE_ACTIVE; } else if (!g_ascii_strcasecmp (value, "passive")) { rserver->is_HA_server = TRUE; rserver->HA_role = HA_ROLE_PASSIVE; } else { rserver->is_HA_server = FALSE; rserver->HA_role = HA_ROLE_NONE; } xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_PRIMARY))) { if (!g_ascii_strcasecmp (value, "true")) { rserver->primary = TRUE; } else if (!g_ascii_strcasecmp (value, "false")) { rserver->primary = FALSE; } else { g_message ("Error: May be that you introduced a bad primary in the server's config.xml?: please write TRUE or FALSE"); xmlFree(value); sim_config_rserver_free(rserver); return; } xmlFree(value); } if (!rserver->port) { rserver->port = 40001; } gnet_inetaddr_set_port (rserver->ia, rserver->port); config->rservers = g_list_append (config->rservers, rserver); }
void sim_xml_config_set_config_server (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { gchar *value; g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_SERVER)) { g_message ("Invalid config server node %s", node->name); return; } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_PORT))) { config->server.port = strtol (value, (char **) NULL, 10); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_NAME))) { config->server.name = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_IP))) { config->server.ip = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_HA_IP))) { config->server.HA_ip = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_HA_PORT))) { if (sim_string_is_number (value, 0)) { config->server.HA_port = atoi (value); xmlFree(value); } else { g_message ("Error: May be that you introduced a bad remote HA port in the server's config.xml?"); xmlFree(value); return; } } /* if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_INTERFACE))) { config->server.interface = g_strdup (value); xmlFree(value); } */ }
void sim_xml_config_set_config_datasource (SimXmlConfig *xmlconfig, SimConfig *config, xmlNodePtr node) { SimConfigDS *ds; gchar *value; g_return_if_fail (SIM_IS_XML_CONFIG (xmlconfig)); g_return_if_fail (SIM_IS_CONFIG (config)); g_return_if_fail (node); if (strcmp ((gchar *) node->name, OBJECT_DATASOURCE)) { g_message ("Invalid config datasource node %s", node->name); return; } ds = sim_config_ds_new (); if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_NAME))) { ds->name = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_PROVIDER))) { ds->provider = g_strdup (value); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_DSN))) { GString *dsn_new = g_string_new (""); gchar **key_value, **split; gchar **i; /* Adapt the data source name from GDA 2 to GDA 4 */ key_value = g_strsplit (value, ";", 0); for (i = key_value; *i; i++) { split = g_strsplit (*i, "=", 2); if (!strcmp(*split, "USER")) g_string_append_printf (dsn_new, "USERNAME=%s;", *(split+1)); else if (!strcmp(*split, "DATABASE")) g_string_append_printf (dsn_new, "DB_NAME=%s;", *(split+1)); else g_string_append_printf (dsn_new, "%s=%s;", *split, *(split+1)); g_strfreev(split); } g_strfreev(key_value); sim_config_ds_set_dsn_string (ds, g_string_free (dsn_new, FALSE)); xmlFree(value); } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_LOCAL_DB))) { if (!g_ascii_strncasecmp (value, "true", 4)) ds->local_DB = TRUE; else if (!g_ascii_strncasecmp (value, "false", 4)) ds->local_DB = FALSE; else { g_message ("Error: Please put a valid value (true/false) in the Local_DB Parameter"); xmlFree(value); return; } } if ((value = (gchar *) xmlGetProp (node, (xmlChar *) PROPERTY_RSERVER_NAME))) { ds->rserver_name = g_strdup (value); xmlFree(value); } config->datasources = g_list_append (config->datasources, ds); }