here is the result Can't locate object method "msg" via package "Net::SIP::Request"use strict; use warnings; use Net::Pcap; use NetPacket::Ethernet; use NetPacket::IP; use NetPacket::TCP; use Data::HexDump; use Time::HiRes qw(gettimeofday); use IO::Socket; use Net::SIP ':all'; STDOUT->autoflush(0); my ($dev,$pcap,$err,$net,$mask,$filter,$filter_t); $err = ''; $filter = "udp dst port 5060 or src port 5060"; $dev= Net::Pcap::lookupdev(\$err); $pcap = Net::Pcap::open_live($dev,65535,1,0,\$err); #timeout 1.--if 0 + then capture till error, -1 for indefinetly. Net::Pcap::lookupnet($dev,\$net,\$mask,\$err); print "\nDevice:$dev","\n"; if(Net::Pcap::compile($pcap,\$filter_t,$filter,1,$net)== -1){die "Unab +le to compile filter string $filter";} Net::Pcap::setfilter($pcap,$filter_t); my @Date = gettimeofday(); my($sec,$min,$hour,$day,$month,$year) = localtime($Date[0]); my $log_time = $hour.'-'.$min.'-'.$sec.'-'.$Date[1]; my $log_day = $day.'-'.$month.'-'.$year; $log_day ="log\/".$log_day."\.txt"; print "\nPath:$log_day"; my $ip; my $ether; my $tcp; Net::Pcap::loop($pcap, -1, \&pkt_proc,"hi"); Net::Pcap::close($pcap); sub pkt_proc{ my ($usrdata,$hdr,$pkt) = @_; $ether = NetPacket::Ethernet::strip($pkt); $ip = NetPacket::IP->decode($ether); $tcp = NetPacket::TCP->decode($ip->{'data'}); my $asccidata1= HexDump $ip->{'data'}; my $asccidata = substr($pkt,42); &log_data($asccidata); } sub log_data() { my $sip_pkt = Net::SIP::Packet->new_from_string(@_); my $request; my $response; if($sip_pkt->is_response()) { print "\n\nPacket is Response packet!"; $request = Net::SIP::Packet->new_from_string($sip_pkt->as_stri +ng); print "\nMethod:",$request->method; print "\nstatus:",$request->code; } else { print "\n\nPacket is Request packet!"; $request = Net::SIP::Packet->new_from_string($sip_pkt->as_stri +ng); print "\nMethod:",$request->method; print "\nURI:",$request->uri; } my $callid=$sip_pkt->get_header('call-id'); print "\nCall-ID: $callid"; my $cseq=$sip_pkt->get_header('cseq'); print "\nCSeq: $cseq"; #my $branch=$sip_pkt->get_header('branch'); #print "\nBranch: $branch"; #branch should + b in double code my $from=$sip_pkt->get_header('from'); { my @values = split(';',$from); print "\nFrom:$values[0]"; } my $to=$sip_pkt->get_header('to'); { my @values = split(';',$to); print "\nTo:$values[0]"; } my $ua=$sip_pkt->get_header('user-agent'); print "\nUser-Agent:$ua"; #my $expire=$sip_pkt->get_header('expires'); #print "\nExpire:$expire"; my $max_forward=$sip_pkt->get_header('max-forwards'); print "\nMax-Forwards:$max_forward"; my $via=$sip_pkt->get_header('via'); { my @values = split(';',$via); print "\nVia:$values[0]"; } my $contact=$sip_pkt->get_header('contact'); print "\nContact:$contact"; my $line1 = "logtime".&get_log_time; my $line2 = "\%I\%".$ip->{'src_ip'}.'|'.$tcp->{'src_port'}.'|'.$ip +->{'dest_ip'}.'|'.$tcp->{'dest_port'}; my $line3 = "\%A\%".$from.'|'.$to.'|'.$callid.'|'.$request->method +."\#"; #my $line4 = "code ".$request->msg; open LOGFILE,">>$log_day" or die "Cant open log_time file! $!"; print LOGFILE $line1; print LOGFILE $line2; print LOGFILE $line3; print LOGFILE "\n"; close LOGFILE; } sub get_log_time(){ @Date = gettimeofday(); ($sec,$min,$hour,$day,$month,$year) = localtime($Date[0]); $log_time = $hour.'-'.$min.'-'.$sec.'-'.$Date[1]; return $log_time; }
In reply to how can i log the response "200 ok " message or "401 Unauthorized" using NET::SIP by singhabsk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |