.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Net::SIP::Dropper::ByField 3pm" .TH Net::SIP::Dropper::ByField 3pm "2021-03-01" "perl v5.32.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Net::SIP::Dropper::ByField \- drops SIP messages based on fields in SIP header .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 5 \& my $drop_by_field = Net::SIP::Dropper::ByField\->new( \& methods => [ \*(AqREGISTER\*(Aq, \*(Aq...\*(Aq, \*(Aq\*(Aq ], \& \*(AqFrom\*(Aq => qr/sip(?:vicious|sscuser)/, \& \*(AqUser\-Agent\*(Aq => qr/^friendly\-scanner$/, \& ); \& \& my $dropper = Net::SIP::Dropper\->new( cb => $drop_by_field ); \& my $chain = Net::SIP::ReceiveChain\->new([ $dropper, ... ]); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" With \f(CW\*(C`Net::SIP::Dropper::ByField\*(C'\fR one can drop packets based on the contents of the fields in the \s-1SIP\s0 header. This can be used to drop specific user agents. .SH "CONSTRUCTOR" .IX Header "CONSTRUCTOR" .IP "new ( \s-1ARGS\s0 )" 4 .IX Item "new ( ARGS )" \&\s-1ARGS\s0 is a hash with the following keys: .RS 4 .IP "methods" 8 .IX Item "methods" Optional argument to restrict dropping to specific methods. .Sp Is array reference of method names, if one of the names is empty also responses will be considered. If not given all packets will be checked. .IP "field-name" 8 .IX Item "field-name" Any argument other then \f(CW\*(C`methods\*(C'\fR will be considered a field name. The value is a callback given to \f(CW\*(C`invoke_callback\*(C'\fR, like for instance a Regexp. .RE .RS 4 .RE .SH "METHODS" .IX Header "METHODS" .IP "run ( \s-1PACKET, LEG, FROM\s0 )" 4 .IX Item "run ( PACKET, LEG, FROM )" This method is called as a callback from the Net::SIP::Dropper object. It returns true if the packet should be dropped, e.g. if at least one of the in the constructor specified fields matches the specified value.