static void netflow_file_list(XmlTag *tag, XmlTag **ans) { struct path_tree pt; GSList *list; *ans = mbb_xml_msg_ok(); list = xml_tag_path_attr_list(tag, "glob", "value"); if (list == NULL) return; list = g_slist_reverse(list); if (path_tree_walk(&pt, list)) { gchar *str; while ((str = path_tree_next(&pt)) != NULL) xml_tag_new_child(*ans, "file", "path", variant_new_string(str) ); path_tree_free(&pt); } g_slist_free(list); }
static void gather_session(gpointer key, gpointer value, gpointer data) { struct show_sessions_data *ssd; struct mbb_session *ss; gchar *username; XmlTag *xt; guint sid; sid = GPOINTER_TO_INT(key); ss = (struct mbb_session *) value; ssd = (struct show_sessions_data *) data; if (ss->user == NULL) username = g_strdup("*"); else { mbb_user_lock(ss->user); username = g_strdup(ss->user->name); mbb_user_unlock(ss->user); } xml_tag_add_child(ssd->ans, xt = xml_tag_newc( "session", "sid", variant_new_int(sid), "user", variant_new_alloc_string(username), "peer", variant_new_string(ss->peer), "start", variant_new_alloc_string(g_strdup_printf("%ld", ss->start)) )); if (ssd->show_mtime) { gchar *mtime = g_strdup_printf("%ld", ss->mtime); xml_tag_set_attr(xt, "mtime", variant_new_alloc_string(mtime)); } }
static void gather_group(struct mbb_group *group, XmlTag *tag) { xml_tag_new_child(tag, "group", "id", variant_new_int(group->id), "name", variant_new_string(group->name) ); }
static void gather_gateway(MbbGateway *gw, XmlTag *tag) { xml_tag_add_child(tag, xml_tag_newc( "gateway", "name", variant_new_string(gw->name), "addr", variant_new_alloc_string(ipv4toa(NULL, gw->addr)) )); }
static void gather_entry_with_owner(MbbInetPoolEntry *entry, XmlTag *tag) { MbbUnit *unit; XmlTag *xt; xt = gather_entry(entry, tag); unit = (MbbUnit *) entry->owner->ptr; xml_tag_set_attr(xt, "unit", variant_new_string(unit->name)); }
} else if (mbb_time_becmp(a, b) > 0) return mbb_xml_msg(MBB_MSG_INVALID_TIME_ORDER); return NULL; } static void server_get_time(XmlTag *tag G_GNUC_UNUSED, XmlTag **ans) { DEFINE_XTV(XTV_TIME_VALUE_); gchar buf[32]; struct tm tm; time_t t; time(&t); MBB_XTV_CALL(&t); asctime_r(localtime_r(&t, &tm), buf); *ans = mbb_xml_msg_ok(); xml_tag_add_child(*ans, xml_tag_newc( "time", "value", variant_new_string(buf) )); } MBB_INIT_FUNCTIONS_DO MBB_FUNC_STRUCT("mbb-server-get-time", server_get_time, MBB_CAP_ALL), MBB_INIT_FUNCTIONS_END MBB_ON_INIT(MBB_INIT_FUNCTIONS)