static void session_save_server(SERVER_REC *server, CONFIG_REC *config, CONFIG_NODE *node) { int handle; node = config_node_section(node, NULL, NODE_TYPE_BLOCK); config_node_set_str(config, node, "chat_type", chat_protocol_find_id(server->chat_type)->name); config_node_set_str(config, node, "address", server->connrec->address); config_node_set_int(config, node, "port", server->connrec->port); config_node_set_str(config, node, "chatnet", server->connrec->chatnet); config_node_set_str(config, node, "password", server->connrec->password); config_node_set_str(config, node, "nick", server->nick); config_node_set_bool(config, node, "use_ssl", server->connrec->use_ssl); handle = g_io_channel_unix_get_fd(net_sendbuffer_handle(server->handle)); config_node_set_int(config, node, "handle", handle); signal_emit("session save server", 3, server, config, node); /* fake the server disconnection */ g_io_channel_unref(net_sendbuffer_handle(server->handle)); net_sendbuffer_destroy(server->handle, FALSE); server->handle = NULL; server->connection_lost = TRUE; server->no_reconnect = TRUE; server_disconnect(server); }
void setupserver_config_add(SETUP_SERVER_REC *rec) { CONFIG_NODE *node; node = iconfig_node_traverse("(servers", TRUE); node = config_node_section(node, NULL, NODE_TYPE_BLOCK); iconfig_node_set_str(node, "address", rec->address); iconfig_node_set_str(node, "ircnet", rec->ircnet); config_node_set_int(node, "port", rec->port); iconfig_node_set_str(node, "password", rec->password); iconfig_node_set_str(node, "own_host", rec->own_host); if (rec->autoconnect) config_node_set_bool(node, "autoconnect", TRUE); if (rec->max_cmds_at_once > 0) config_node_set_int(node, "cmds_max_at_once", rec->max_cmds_at_once); if (rec->cmd_queue_speed > 0) config_node_set_int(node, "cmd_queue_speed", rec->cmd_queue_speed); }
static void session_save_channel(CHANNEL_REC *channel, CONFIG_REC *config, CONFIG_NODE *node) { node = config_node_section(config, node, NULL, NODE_TYPE_BLOCK); config_node_set_str(config, node, "name", channel->name); config_node_set_str(config, node, "visible_name", channel->visible_name); config_node_set_str(config, node, "topic", channel->topic); config_node_set_str(config, node, "topic_by", channel->topic_by); config_node_set_int(config, node, "topic_time", channel->topic_time); config_node_set_str(config, node, "key", channel->key); signal_emit("session save channel", 3, channel, config, node); }
static void botuser_config_save(USER_REC *user) { CONFIG_NODE *node, *subnode, *noderec; GSList *tmp; char *str; user->last_modify = time(NULL); node = config_node_traverse(userconfig, "users", TRUE); node = config_node_section(node, user->nick, NODE_TYPE_BLOCK); str = user->flags == 0 ? NULL : botuser_value2flags(user->flags); config_node_set_str(userconfig, node, "flags", str); g_free_not_null(str); config_node_set_str(userconfig, node, "password", user->password); config_node_set_int(userconfig, node, "last_modify", (int) user->last_modify); /* Save masks */ if (user->masks == NULL) config_node_set_str(userconfig, node, "masks", NULL); else { subnode = config_node_section(node, "masks", NODE_TYPE_LIST); for (tmp = user->masks; tmp != NULL; tmp = tmp->next) { USER_MASK_REC *rec = tmp->data; noderec = config_node_section(subnode, NULL, NODE_TYPE_BLOCK); config_node_set_str(userconfig, noderec, "mask", rec->mask); str = user->flags == 0 ? NULL : botuser_value2flags(rec->not_flags); config_node_set_str(userconfig, noderec, "not_flags", str); g_free_not_null(str); } } /* Save channels */ if (g_hash_table_size(user->channels) == 0) config_node_set_str(userconfig, node, "channels", NULL); else { subnode = config_node_section(node, "channels", NODE_TYPE_LIST); g_hash_table_foreach(user->channels, (GHFunc) botuser_save_chan, subnode); } }
static void ircnet_save(IRC_CHATNET_REC *rec) { CONFIG_NODE *node; g_return_if_fail(rec != NULL); node = iconfig_node_traverse("ircnets", TRUE); node = chatnet_save((CHATNET_REC *) rec, node); if (rec->max_cmds_at_once > 0) config_node_set_int(node, "cmdmax", rec->max_cmds_at_once); if (rec->cmd_queue_speed > 0) config_node_set_int(node, "cmdspeed", rec->cmd_queue_speed); if (rec->max_kicks > 0) config_node_set_int(node, "max_kicks", rec->max_kicks); if (rec->max_msgs > 0) config_node_set_int(node, "max_msgs", rec->max_msgs); if (rec->max_modes > 0) config_node_set_int(node, "max_modes", rec->max_modes); if (rec->max_whois > 0) config_node_set_int(node, "max_whois", rec->max_whois); }