void Flow::print_peers(lua_State* vm, bool verbose) { char buf1[64], buf2[64], buf[256]; Host *src = get_cli_host(), *dst = get_srv_host(); if((src == NULL) || (dst == NULL)) return; lua_newtable(vm); lua_push_str_table_entry(vm, "client", get_cli_host()->get_ip()->print(buf, sizeof(buf))); lua_push_str_table_entry(vm, "server", get_srv_host()->get_ip()->print(buf, sizeof(buf))); lua_push_int_table_entry(vm, "sent", cli2srv_bytes); lua_push_int_table_entry(vm, "rcvd", srv2cli_bytes); lua_push_int_table_entry(vm, "sent.last", get_current_bytes_cli2srv()); lua_push_int_table_entry(vm, "rcvd.last", get_current_bytes_srv2cli()); lua_push_int_table_entry(vm, "duration", get_duration()); lua_push_float_table_entry(vm, "client.latitude", get_cli_host()->get_latitude()); lua_push_float_table_entry(vm, "client.longitude", get_cli_host()->get_longitude()); lua_push_float_table_entry(vm, "server.latitude", get_srv_host()->get_latitude()); lua_push_float_table_entry(vm, "server.longitude", get_srv_host()->get_longitude()); if(verbose) { lua_push_bool_table_entry(vm, "client.private", get_cli_host()->get_ip()->isPrivateAddress()); lua_push_str_table_entry(vm, "client.country", get_cli_host()->get_country() ? get_cli_host()->get_country() : (char*)""); lua_push_bool_table_entry(vm, "server.private", get_srv_host()->get_ip()->isPrivateAddress()); lua_push_str_table_entry(vm, "server.country", get_srv_host()->get_country() ? get_srv_host()->get_country() : (char*)""); lua_push_str_table_entry(vm, "client.city", get_cli_host()->get_city() ? get_cli_host()->get_city() : (char*)""); lua_push_str_table_entry(vm, "server.city", get_srv_host()->get_city() ? get_srv_host()->get_city() : (char*)""); if(verbose) { if(((cli2srv_packets+srv2cli_packets) > NDPI_MIN_NUM_PACKETS) || (ndpi_detected_protocol != NDPI_PROTOCOL_UNKNOWN) || iface->is_ndpi_enabled() || iface->is_sprobe_interface()) lua_push_str_table_entry(vm, "proto.ndpi", get_detected_protocol_name()); else lua_push_str_table_entry(vm, "proto.ndpi", (char*)CONST_TOO_EARLY); } } // Key /* Too slow */ #if 0 snprintf(buf, sizeof(buf), "%s %s", src->Host::get_name(buf1, sizeof(buf1), false), dst->Host::get_name(buf2, sizeof(buf2), false)); #else snprintf(buf, sizeof(buf), "%s %s", intoaV4(ntohl(get_cli_ipv4()), buf1, sizeof(buf1)), intoaV4(ntohl(get_srv_ipv4()), buf2, sizeof(buf2))); #endif lua_pushstring(vm, buf); lua_insert(vm, -2); lua_settable(vm, -3); }
void StringHost::lua(lua_State* vm, bool returnHost) { lua_newtable(vm); lua_push_str_table_entry(vm, "name", keyname); lua_push_int_table_entry(vm, "bytes.sent", sent.getNumBytes()); lua_push_int_table_entry(vm, "bytes.rcvd", rcvd.getNumBytes()); lua_push_int_table_entry(vm, "pkts.sent", sent.getNumPkts()); lua_push_int_table_entry(vm, "pkts.rcvd", rcvd.getNumPkts()); lua_push_int_table_entry(vm, "queries.rcvd", queriesReceived); lua_push_int_table_entry(vm, "seen.first", first_seen); lua_push_int_table_entry(vm, "seen.last", last_seen); lua_push_int_table_entry(vm, "duration", get_duration()); lua_push_int_table_entry(vm, "family", family_id); lua_push_float_table_entry(vm, "throughput", bytes_thpt); lua_push_int_table_entry(vm, "throughput_trend", getThptTrend()); if(ndpiStats) ndpiStats->lua(iface, vm); getHostContacts(vm); if(returnHost) { lua_pushstring(vm, keyname); lua_insert(vm, -2); lua_settable(vm, -3); } }
void Flow::lua(lua_State* vm, bool detailed_dump) { char buf[64]; lua_newtable(vm); if(get_cli_host()) { if(detailed_dump) lua_push_str_table_entry(vm, "cli.host", get_cli_host()->get_name(buf, sizeof(buf), false)); lua_push_int_table_entry(vm, "cli.source_id", get_cli_host()->getSourceId()); lua_push_str_table_entry(vm, "cli.ip", get_cli_host()->get_ip()->print(buf, sizeof(buf))); lua_push_bool_table_entry(vm, "cli.systemhost", get_cli_host()->isSystemHost()); } else { lua_push_nil_table_entry(vm, "cli.host"); lua_push_nil_table_entry(vm, "cli.ip"); } lua_push_int_table_entry(vm, "cli.port", get_cli_port()); if(get_srv_host()) { if(detailed_dump) lua_push_str_table_entry(vm, "srv.host", get_srv_host()->get_name(buf, sizeof(buf), false)); lua_push_int_table_entry(vm, "srv.source_id", get_cli_host()->getSourceId()); lua_push_str_table_entry(vm, "srv.ip", get_srv_host()->get_ip()->print(buf, sizeof(buf))); lua_push_bool_table_entry(vm, "srv.systemhost", get_srv_host()->isSystemHost()); } else { lua_push_nil_table_entry(vm, "srv.host"); lua_push_nil_table_entry(vm, "srv.ip"); } lua_push_int_table_entry(vm, "srv.port", get_srv_port()); lua_push_int_table_entry(vm, "vlan", get_vlan_id()); lua_push_str_table_entry(vm, "proto.l4", get_protocol_name()); if(((cli2srv_packets+srv2cli_packets) > NDPI_MIN_NUM_PACKETS) || (ndpi_detected_protocol != NDPI_PROTOCOL_UNKNOWN) || iface->is_ndpi_enabled() || iface->is_sprobe_interface()) { lua_push_str_table_entry(vm, "proto.ndpi", get_detected_protocol_name()); } else lua_push_str_table_entry(vm, "proto.ndpi", (char*)CONST_TOO_EARLY); lua_push_int_table_entry(vm, "bytes", cli2srv_bytes+srv2cli_bytes); lua_push_int_table_entry(vm, "bytes.last", get_current_bytes_cli2srv() + get_current_bytes_srv2cli()); lua_push_int_table_entry(vm, "seen.first", get_first_seen()); lua_push_int_table_entry(vm, "seen.last", get_last_seen()); lua_push_int_table_entry(vm, "duration", get_duration()); lua_push_int_table_entry(vm, "cli2srv.bytes", cli2srv_bytes); lua_push_int_table_entry(vm, "srv2cli.bytes", srv2cli_bytes); if(detailed_dump) { lua_push_int_table_entry(vm, "tcp_flags", getTcpFlags()); lua_push_str_table_entry(vm, "category", categorization.category ? categorization.category : (char*)""); lua_push_str_table_entry(vm, "moreinfo.json", get_json_info()); } if(client_proc) processLua(vm, client_proc, true); if(server_proc) processLua(vm, server_proc, false); //ntop->getTrace()->traceEvent(TRACE_NORMAL, "%.2f", bytes_thpt); lua_push_float_table_entry(vm, "throughput", bytes_thpt); lua_push_int_table_entry(vm, "throughput_trend", bytes_thpt_trend); if(!detailed_dump) { lua_pushinteger(vm, key()); // Index lua_insert(vm, -2); lua_settable(vm, -3); } else { lua_push_int_table_entry(vm, "cli2srv.packets", cli2srv_packets); lua_push_int_table_entry(vm, "srv2cli.packets", srv2cli_packets); } }