int knot_register_controller(struct process *client_proc, knot_callback callback, uint16_t rate, char controller_name[], uint8_t device_role, uint8_t device_type){ ChannelState *state = &home_channel_state; if (started == 0){ process_start(&knot_controller_process,NULL); PROCESS_CONTEXT_BEGIN(&knot_controller_process); init_table(); init_knot_network(); init_home_channel(); PROCESS_CONTEXT_END(); started = 1; } strcpy(controller_name, controller_name); if (client_proc){ state->ccb.callback = callback; state->ccb.client_process = client_proc; } else return -2; state->rate = rate; service_search(state, device_type); return 1; }
void table_add_service (OobsService *service, OobsListIter *list_iter) { const ServiceDescription *desc; GtkTreeView *table; GtkTreeModel *model; GtkTreeIter iter; GdkPixbuf *icon; gchar *description; desc = service_search (service); if (!desc) return; icon = get_service_icon (tool, desc->icon); description = g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s (<i>%s</i>)</span>\n%s", _(desc->description), oobs_service_get_name (service), (desc->long_description) ? _(desc->long_description) : ""); table = GTK_TREE_VIEW (gst_dialog_get_widget (tool->main_dialog, "services_list")); model = gtk_tree_view_get_model (table); gtk_list_store_append (GTK_LIST_STORE (model), &iter); gtk_list_store_set (GTK_LIST_STORE (model), &iter, COL_ACTIVE, service_get_active (service), COL_DESC, description, COL_IMAGE, icon, COL_DANGEROUS, desc->dangerous, COL_OBJECT, service, COL_ITER, list_iter, -1); if (icon) g_object_unref (icon); g_free (description); }
/* * details for a connection */ static void curses_connection_detail(void *conn) { struct conn_tail *c = (struct conn_tail *)conn; char tmp[MAX_ASCII_ADDR_LEN]; char *proto = ""; char name[MAX_HOSTNAME_LEN]; unsigned int row = 0; DEBUG_MSG("curses_connection_detail"); /* if the object already exist, set the focus to it */ if (wdg_conn_detail) { wdg_destroy_object(&wdg_conn_detail); wdg_conn_detail = NULL; } wdg_create_object(&wdg_conn_detail, WDG_WINDOW, WDG_OBJ_WANT_FOCUS); wdg_set_title(wdg_conn_detail, "Connection detail:", WDG_ALIGN_LEFT); wdg_set_size(wdg_conn_detail, 1, 2, 75, 23); wdg_set_color(wdg_conn_detail, WDG_COLOR_SCREEN, EC_COLOR); wdg_set_color(wdg_conn_detail, WDG_COLOR_WINDOW, EC_COLOR); wdg_set_color(wdg_conn_detail, WDG_COLOR_BORDER, EC_COLOR_BORDER); wdg_set_color(wdg_conn_detail, WDG_COLOR_FOCUS, EC_COLOR_FOCUS); wdg_set_color(wdg_conn_detail, WDG_COLOR_TITLE, EC_COLOR_TITLE); wdg_draw_object(wdg_conn_detail); wdg_set_focus(wdg_conn_detail); /* add the destroy callback */ wdg_add_destroy_key(wdg_conn_detail, CTRL('Q'), NULL); /* print the information */ wdg_window_print(wdg_conn_detail, 1, ++row, "Source MAC address : %s", mac_addr_ntoa(c->co->L2_addr1, tmp)); wdg_window_print(wdg_conn_detail, 1, ++row, "Destination MAC address : %s", mac_addr_ntoa(c->co->L2_addr2, tmp)); ++row; wdg_window_print(wdg_conn_detail, 1, ++row, "Source IP address : %s", ip_addr_ntoa(&(c->co->L3_addr1), tmp)); if (host_iptoa(&(c->co->L3_addr1), name) == E_SUCCESS) wdg_window_print(wdg_conn_detail, 1, ++row, "Source hostname : %s", name); #ifdef HAVE_GEOIP if (GBL_CONF->geoip_support_enable) wdg_window_print(wdg_conn_detail, 1, ++row, "Source location : %s", geoip_country_by_ip(&c->co->L3_addr1)); #endif wdg_window_print(wdg_conn_detail, 1, ++row, "Destination IP address : %s", ip_addr_ntoa(&(c->co->L3_addr2), tmp)); if (host_iptoa(&(c->co->L3_addr2), name) == E_SUCCESS) wdg_window_print(wdg_conn_detail, 1, ++row, "Destination hostname : %s", name); #ifdef HAVE_GEOIP if (GBL_CONF->geoip_support_enable) wdg_window_print(wdg_conn_detail, 1, ++row, "Destination location : %s", geoip_country_by_ip(&c->co->L3_addr2)); #endif ++row; switch (c->co->L4_proto) { case NL_TYPE_UDP: proto = "UDP"; break; case NL_TYPE_TCP: proto = "TCP"; break; } wdg_window_print(wdg_conn_detail, 1, ++row, "Protocol : %s", proto); wdg_window_print(wdg_conn_detail, 1, ++row, "Source port : %-5d %s", ntohs(c->co->L4_addr1), service_search(c->co->L4_addr1, c->co->L4_proto)); wdg_window_print(wdg_conn_detail, 1, ++row, "Destination port : %-5d %s", ntohs(c->co->L4_addr2), service_search(c->co->L4_addr2, c->co->L4_proto)); row++; wdg_window_print(wdg_conn_detail, 1, ++row, "--> %d <-- %d total: %d ", c->co->tx, c->co->rx, c->co->xferred); row++; if (c->co->DISSECTOR.user) { wdg_window_print(wdg_conn_detail, 1, ++row, "Account : %s / %s", c->co->DISSECTOR.user, c->co->DISSECTOR.pass); if (c->co->DISSECTOR.info) wdg_window_print(wdg_conn_detail, 1, ++row, "Additional Info : %s", c->co->DISSECTOR.info); } }
/* * details for a connection */ static void gtkui_connection_detail(void) { GtkTreeIter iter; GtkTreeModel *model; GtkTextBuffer *textbuf; char line[200]; struct conn_tail *c = NULL; char tmp[MAX_ASCII_ADDR_LEN]; char *proto = ""; char name[MAX_HOSTNAME_LEN]; DEBUG_MSG("gtk_connection_detail"); model = GTK_TREE_MODEL (ls_conns); if (gtk_tree_selection_get_selected (GTK_TREE_SELECTION (selection), &model, &iter)) { gtk_tree_model_get (model, &iter, 9, &c, -1); } else return; /* nothing is selected */ if(!c || !c->co) return; textbuf = gtkui_details_window("Connection Details"); snprintf(line, 200, "Source MAC address : %s\n", mac_addr_ntoa(c->co->L2_addr1, tmp)); gtkui_details_print(textbuf, line); snprintf(line, 200, "Destination MAC address : %s\n\n", mac_addr_ntoa(c->co->L2_addr2, tmp)); gtkui_details_print(textbuf, line); snprintf(line, 200, "Source IP address : \t%s\n", ip_addr_ntoa(&(c->co->L3_addr1), tmp)); gtkui_details_print(textbuf, line); if (host_iptoa(&(c->co->L3_addr1), name) == ESUCCESS) { snprintf(line, 200, " %s\n", name); gtkui_details_print(textbuf, line); } snprintf(line, 200, "Destination IP address : \t%s\n", ip_addr_ntoa(&(c->co->L3_addr2), tmp)); gtkui_details_print(textbuf, line); if (host_iptoa(&(c->co->L3_addr2), name) == ESUCCESS) { snprintf(line, 200, " %s\n", name); gtkui_details_print(textbuf, line); } gtkui_details_print(textbuf, "\n"); /* Protocol */ switch (c->co->L4_proto) { case NL_TYPE_UDP: proto = "UDP"; break; case NL_TYPE_TCP: proto = "TCP"; break; } snprintf(line, 200, "Protocol: \t\t\t%s\n", proto); gtkui_details_print(textbuf, line); snprintf(line, 200, "Source port: \t\t%-5d %s\n", ntohs(c->co->L4_addr1), service_search(c->co->L4_addr1, c->co->L4_proto)); gtkui_details_print(textbuf, line); snprintf(line, 200, "Destination port: \t%-5d %s\n\n", ntohs(c->co->L4_addr2), service_search(c->co->L4_addr2, c->co->L4_proto)); gtkui_details_print(textbuf, line); snprintf(line, 200, "Transferred bytes: %d\n\n", c->co->xferred); gtkui_details_print(textbuf, line); /* Login Information */ if (c->co->DISSECTOR.user) { snprintf(line, 200, "Account: \t%s / %s", c->co->DISSECTOR.user, c->co->DISSECTOR.pass); gtkui_details_print(textbuf, line); if (c->co->DISSECTOR.info) { snprintf(line, 200, " Additional Info: %s\n", c->co->DISSECTOR.info); gtkui_details_print(textbuf, line); } } }