def filter(data): flag =True; uri =data['uri'] base_uri = "^/.*$" if not filter_base_uri(base_uri, uri): flag=False; copy_log.log_error("not match base uri %s" % uri) if not filter_uri(uri): flag=False; copy_log.log_error("not match uri %s" % uri) return flag;
def capture(nc, port=65533): try: local_ip = get_local_ip(nc) # eth1 pc = pcap.pcap(name="%s" % nc) # tcp port 80 pc.setfilter('udp port %d' % port) for p_time, p_data in pc: main_pcap(p_time, p_data, local_ip, port) except Exception, e: error_str = "Copy network %s:port %s:exception: %s" % (nc, port, e) copy_log.log_error(error_str) sys.exit(1) pass
def main_pcap(p_time, p_data, local_ip, port): p = dpkt.ethernet.Ethernet(p_data) if p.type == dpkt.ethernet.ETH_TYPE_IP: ip_data = p.data src_ip = '%d.%d.%d.%d' % tuple(map(ord, list(ip_data.src))) if ip_data.p == dpkt.ip.IP_PROTO_UDP: udp_data = p.data.data if (cmp(src_ip, local_ip) != 0): if udp_data.data: try: copy_log.log_info("send copy data: %s" % udp_data.data) copy_udp.send_groupcast_UDP(udp_data.data, port, local_ip) except Exception, e: error_str = "Capture src_ip %s:local_ip %s:exception: %s" % ( src_ip, local_ip, e) copy_log.log_error(error_str) pass