Compare commits
No commits in common. "master" and "pristine-tar" have entirely different histories.
master
...
pristine-t
98
CMatch.xs
98
CMatch.xs
@ -1,98 +0,0 @@
|
||||
#define PERL_NO_GET_CONTEXT /* we want efficiency */
|
||||
#include "EXTERN.h"
|
||||
#include "perl.h"
|
||||
#include "XSUB.h"
|
||||
|
||||
#include "ppport.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
static unsigned long parse_ip_and_mask (char *cip, unsigned long *ipm)
|
||||
{
|
||||
int i1, i2, i3, i4, m;
|
||||
unsigned long iip, mask;
|
||||
char *c;
|
||||
|
||||
i1 = i2 = i3 = i4 = m = 0;
|
||||
c = cip;
|
||||
|
||||
// skip leading non-numerics
|
||||
for ( ; *c && (*c < '0' || *c > '9'); c++)
|
||||
;
|
||||
// load first node
|
||||
for ( ; *c >= '0' && *c <= '9'; c++)
|
||||
i1 = i1 * 10 + (*c - '0');
|
||||
// skip non-numerics
|
||||
for ( ; *c && (*c < '0' || *c > '9'); c++)
|
||||
;
|
||||
// load second node
|
||||
for ( ; *c >= '0' && *c <= '9'; c++)
|
||||
i2 = i2 * 10 + (*c - '0');
|
||||
// skip non-numerics
|
||||
for ( ; *c && (*c < '0' || *c > '9'); c++)
|
||||
;
|
||||
// load third node
|
||||
for ( ; *c >= '0' && *c <= '9'; c++)
|
||||
i3 = i3 * 10 + (*c - '0');
|
||||
// skip non-numerics
|
||||
for ( ; *c && (*c < '0' || *c > '9'); c++)
|
||||
;
|
||||
// load forth node
|
||||
for ( ; *c >= '0' && *c <= '9'; c++)
|
||||
i4 = i4 * 10 + (*c - '0');
|
||||
// skip non-numerics
|
||||
for ( ; *c && (*c < '0' || *c > '9'); c++)
|
||||
;
|
||||
// load mask
|
||||
for ( ; *c >= '0' && *c <= '9'; c++)
|
||||
m = m * 10 + (*c - '0');
|
||||
|
||||
// build numeric ip address
|
||||
iip =
|
||||
(i1 << 24) |
|
||||
((i2 & 0xff) << 16) |
|
||||
((i3 & 0xff) << 8) |
|
||||
(i4 & 0xff);
|
||||
|
||||
// mask it
|
||||
mask = (m) ? 0xffffffff << ((32 - m) & 31) : 0xffffffff;
|
||||
iip &= mask;
|
||||
if (ipm)
|
||||
*ipm = mask;
|
||||
|
||||
return iip;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
MODULE = Net::IP::CMatch PACKAGE = Net::IP::CMatch
|
||||
|
||||
int
|
||||
match_ip (ip, ...)
|
||||
char *ip
|
||||
|
||||
PREINIT:
|
||||
int i;
|
||||
unsigned long iip, mip, mask;
|
||||
STRLEN n_a;
|
||||
|
||||
CODE:
|
||||
RETVAL = 0;
|
||||
iip = parse_ip_and_mask (ip, &mask);
|
||||
for (i = 1; i < items; i++) {
|
||||
mip = parse_ip_and_mask ((char *) SvPV (ST (i), n_a), &mask);
|
||||
if ((iip & mask) == mip) {
|
||||
RETVAL = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
OUTPUT:
|
||||
RETVAL
|
||||
|
||||
|
||||
|
6
Changes
6
Changes
@ -1,6 +0,0 @@
|
||||
Revision history for Perl extension Net::IP::CMatch.
|
||||
|
||||
0.02 Tue Dec 21 06:33:43 2004
|
||||
- original version; created by h2xs 1.23 with options
|
||||
-A -b 5.6.1 Net::IP::CMatch
|
||||
|
9
MANIFEST
9
MANIFEST
@ -1,9 +0,0 @@
|
||||
Changes
|
||||
CMatch.xs
|
||||
Makefile.PL
|
||||
MANIFEST
|
||||
ppport.h
|
||||
README
|
||||
t/Net-IP-CMatch.t
|
||||
lib/Net/IP/CMatch.pm
|
||||
META.yml Module meta-data (added by MakeMaker)
|
10
META.yml
10
META.yml
@ -1,10 +0,0 @@
|
||||
# http://module-build.sourceforge.net/META-spec.html
|
||||
#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
|
||||
name: Net-IP-CMatch
|
||||
version: 0.02
|
||||
version_from: lib/Net/IP/CMatch.pm
|
||||
installdirs: site
|
||||
requires:
|
||||
|
||||
distribution_type: module
|
||||
generated_by: ExtUtils::MakeMaker version 6.17
|
17
Makefile.PL
17
Makefile.PL
@ -1,17 +0,0 @@
|
||||
use 5.006001;
|
||||
use ExtUtils::MakeMaker;
|
||||
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
|
||||
# the contents of the Makefile that is written.
|
||||
WriteMakefile(
|
||||
NAME => 'Net::IP::CMatch',
|
||||
VERSION_FROM => 'lib/Net/IP/CMatch.pm', # finds $VERSION
|
||||
PREREQ_PM => {}, # e.g., Module::Name => 1.1
|
||||
($] >= 5.005 ? ## Add these new keywords supported since 5.005
|
||||
(ABSTRACT_FROM => 'lib/Net/IP/CMatch.pm', # retrieve abstract from module
|
||||
AUTHOR => 'Beau E. Cox <beaucox@hawaii.rr.com>') : ()),
|
||||
LIBS => [''], # e.g., '-lm'
|
||||
DEFINE => '', # e.g., '-DHAVE_SOMETHING'
|
||||
INC => '-I.', # e.g., '-I. -I/usr/include/other'
|
||||
# Un-comment this if you add C files to link with later:
|
||||
# OBJECT => '$(O_FILES)', # link all the C files too
|
||||
);
|
70
README
70
README
@ -1,70 +0,0 @@
|
||||
Net-IP-CMatch version 0.02
|
||||
==========================
|
||||
|
||||
NAME
|
||||
Net::IP::CMatch - Efficiently match IP addresses against IP ranges with
|
||||
C.
|
||||
|
||||
INSTALLATION
|
||||
To install this module type the following:
|
||||
|
||||
perl Makefile.PL
|
||||
make
|
||||
make test
|
||||
make install
|
||||
|
||||
DEPENDENCIES
|
||||
This module requires these other modules and libraries:
|
||||
|
||||
perl >= 5.6.1
|
||||
|
||||
SYNOPSIS
|
||||
use Net::IP::CMatch;
|
||||
my $match = match_ip( $ip_addr, $match_ip1, $match_ip2, ... );
|
||||
|
||||
DESCRIPTION
|
||||
Net::IP::CMatch is based upon, and does the same thing as
|
||||
Net::IP::Match. The unconditionally exported subroutine 'match_ip'
|
||||
determines if the ip to match ( first argument ) matches any of the
|
||||
subsequent ip arguments. Match arguments may be absolute quads, as
|
||||
'127.0.0.1', or contain mask bits as '111.245.76.248/29'. A true return
|
||||
value indicates a match. It was written in C, rather than a macro,
|
||||
preprocessed through Perl's source filter mechanism ( as is
|
||||
Net::IP::Match ), so that the ip arguments could be traditional perl
|
||||
scalars. The C code is lean and mean ( IMHO ).
|
||||
|
||||
Example in Apache/mod_perl
|
||||
I use this module in my Apache server's mod_perl DB logging script to
|
||||
determine if an incoming IP is 'remote' or 'local'. First, I set up some
|
||||
variables in httpd.conf:
|
||||
|
||||
PerlSetvar DBILogger_local_ips '222.234.52.192/29'
|
||||
PerlAddvar DBILogger_local_ips '111.245.76.248/29'
|
||||
PerlAddvar DBILogger_local_ips '10.0.0.0/24'
|
||||
PerlAddvar DBILogger_local_ips '172.16.0.0/12'
|
||||
PerlAddvar DBILogger_local_ips '192.168.0.0/16'
|
||||
PerlAddvar DBILogger_local_ips '127.0.0.1'
|
||||
|
||||
These are the ip addresses I want to be considered local. In the
|
||||
mod_perl module:
|
||||
|
||||
my @local_ips = $r->dir_config( "DBILogger_local_ips" );
|
||||
my $local = match_ip( $incoming_ip, @local_ips );
|
||||
|
||||
Now $local is just that, and I set the database key accordingly.
|
||||
|
||||
EXPORT
|
||||
'match_ip', unconditionally.
|
||||
|
||||
SEE ALSO
|
||||
Net::IP::Match by Marcel Grünauer.
|
||||
|
||||
AUTHOR
|
||||
Beau E. Cox, <beaucox@hawaii.rr.com>
|
||||
|
||||
COPYRIGHT AND LICENSE
|
||||
Copyright (C) 2004 by Beau E. Cox
|
||||
|
||||
This library is free software; you can redistribute it and/or modify it
|
||||
under the same terms as Perl itself, either Perl version 5.6.1 or, at
|
||||
your option, any later version of Perl 5 you may have available.
|
5
debian/changelog
vendored
5
debian/changelog
vendored
@ -1,5 +0,0 @@
|
||||
libnet-ip-cmatch-perl (0.02-1) unstable; urgency=low
|
||||
|
||||
* Initial Release.
|
||||
|
||||
-- Mario Fetka <mario.fetka@gmail.com> Fri, 15 Sep 2017 15:30:50 +0200
|
1
debian/compat
vendored
1
debian/compat
vendored
@ -1 +0,0 @@
|
||||
9
|
23
debian/control
vendored
23
debian/control
vendored
@ -1,23 +0,0 @@
|
||||
Source: libnet-ip-cmatch-perl
|
||||
Section: perl
|
||||
Priority: optional
|
||||
Maintainer: Mario Fetka <mario.fetka@gmail.com>
|
||||
Build-Depends: debhelper (>= 9.20120312~),
|
||||
perl
|
||||
Standards-Version: 3.9.6
|
||||
Homepage: https://metacpan.org/release/Net-IP-CMatch
|
||||
|
||||
Package: libnet-ip-cmatch-perl
|
||||
Architecture: any
|
||||
Depends: ${misc:Depends}, ${perl:Depends}, ${shlibs:Depends}
|
||||
Description: unknown
|
||||
Net::IP::CMatch is based upon, and does the same thing as Net::IP::Match. The
|
||||
unconditionally exported subroutine 'match_ip' determines if the ip to match
|
||||
( first argument ) matches any of the subsequent ip arguments. Match
|
||||
arguments may be absolute quads, as '127.0.0.1', or contain mask bits as
|
||||
'111.245.76.248/29'. A true return value indicates a match. It was written in
|
||||
C, rather than a macro, preprocessed through Perl's source filter mechanism (
|
||||
as is Net::IP::Match ), so that the ip arguments could be traditional perl
|
||||
scalars. The C code is lean and mean ( IMHO ).
|
||||
.
|
||||
This description was automagically extracted from the module by dh-make-perl.
|
36
debian/copyright
vendored
36
debian/copyright
vendored
@ -1,36 +0,0 @@
|
||||
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Source: https://metacpan.org/release/Net-IP-CMatch
|
||||
Upstream-Contact: unknown
|
||||
Upstream-Name: Net-IP-CMatch
|
||||
DISCLAIMER: This copyright info was automatically extracted
|
||||
from the perl module. It may not be accurate, so you better
|
||||
check the module sources in order to ensure the module for its
|
||||
inclusion in Debian or for general legal information. Please,
|
||||
if licensing information is incorrectly generated, file a bug
|
||||
on dh-make-perl.
|
||||
NOTE: Don't forget to remove this disclaimer once you are happy
|
||||
with this file.
|
||||
|
||||
Files: *
|
||||
Copyright: unknown
|
||||
License:
|
||||
|
||||
Files: debian/*
|
||||
Copyright: 2017, Mario Fetka <mario.fetka@gmail.com>
|
||||
License: Artistic or GPL-1+
|
||||
|
||||
License: Artistic
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the Artistic License, which comes with Perl.
|
||||
.
|
||||
On Debian systems, the complete text of the Artistic License can be
|
||||
found in `/usr/share/common-licenses/Artistic'.
|
||||
|
||||
License: GPL-1+
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 1, or (at your option)
|
||||
any later version.
|
||||
.
|
||||
On Debian systems, the complete text of version 1 of the GNU General
|
||||
Public License can be found in `/usr/share/common-licenses/GPL-1'.
|
4
debian/rules
vendored
4
debian/rules
vendored
@ -1,4 +0,0 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
%:
|
||||
dh $@
|
1
debian/source/format
vendored
1
debian/source/format
vendored
@ -1 +0,0 @@
|
||||
3.0 (quilt)
|
4
debian/upstream/metadata
vendored
4
debian/upstream/metadata
vendored
@ -1,4 +0,0 @@
|
||||
---
|
||||
Archive: CPAN
|
||||
Contact: unknown
|
||||
Name: Net-IP-CMatch
|
2
debian/watch
vendored
2
debian/watch
vendored
@ -1,2 +0,0 @@
|
||||
version=3
|
||||
https://metacpan.org/release/Net-IP-CMatch .*/Net-IP-CMatch-v?(\d[\d.-]*)\.(?:tar(?:\.gz|\.bz2)?|tgz|zip)$
|
@ -1,87 +0,0 @@
|
||||
package Net::IP::CMatch;
|
||||
|
||||
use 5.006001;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
require Exporter;
|
||||
|
||||
our @ISA = qw(Exporter);
|
||||
|
||||
our @EXPORT = qw(
|
||||
match_ip
|
||||
);
|
||||
|
||||
our $VERSION = '0.02';
|
||||
|
||||
require XSLoader;
|
||||
XSLoader::load('Net::IP::CMatch', $VERSION);
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Net::IP::CMatch - Efficiently match IP addresses against IP ranges with C.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Net::IP::CMatch;
|
||||
my $match = match_ip( $ip_addr, $match_ip1, $match_ip2, ... );
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Net::IP::CMatch is based upon, and does the same thing as Net::IP::Match.
|
||||
The unconditionally exported subroutine 'match_ip' determines if the
|
||||
ip to match ( first argument ) matches any of the subsequent ip arguments.
|
||||
Match arguments may be absolute quads, as '127.0.0.1', or contain
|
||||
mask bits as '111.245.76.248/29'.
|
||||
A true return value indicates a match. It was written in C, rather than
|
||||
a macro, preprocessed
|
||||
through Perl's source filter mechanism ( as is Net::IP::Match ), so that
|
||||
the ip arguments could be traditional perl scalars. The C code is
|
||||
lean and mean ( IMHO ).
|
||||
|
||||
=head2 Example in Apache/mod_perl
|
||||
|
||||
I use this module in my Apache server's mod_perl DB logging script to
|
||||
determine if an incoming IP is 'remote' or 'local'. First, I set up
|
||||
some variables in httpd.conf:
|
||||
|
||||
PerlSetvar DBILogger_local_ips '222.234.52.192/29'
|
||||
PerlAddvar DBILogger_local_ips '111.245.76.248/29'
|
||||
PerlAddvar DBILogger_local_ips '10.0.0.0/24'
|
||||
PerlAddvar DBILogger_local_ips '172.16.0.0/12'
|
||||
PerlAddvar DBILogger_local_ips '192.168.0.0/16'
|
||||
PerlAddvar DBILogger_local_ips '127.0.0.1'
|
||||
|
||||
These are the ip addresses I want to be considered local. In the
|
||||
mod_perl module:
|
||||
|
||||
my @local_ips = $r->dir_config( "DBILogger_local_ips" );
|
||||
my $local = match_ip( $incoming_ip, @local_ips );
|
||||
|
||||
Now $local is just that, and I set the database key accordingly.
|
||||
|
||||
=head2 EXPORT
|
||||
|
||||
'match_ip', unconditionally.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<Net::IP::Match> by Marcel GrE<uuml>nauer.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Beau E. Cox, E<lt>beaucox@hawaii.rr.comE<gt>
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
Copyright (C) 2004 by Beau E. Cox
|
||||
|
||||
This library is free software; you can redistribute it and/or modify
|
||||
it under the same terms as Perl itself, either Perl version 5.6.1 or,
|
||||
at your option, any later version of Perl 5 you may have available.
|
||||
|
||||
=cut
|
BIN
libnet-ip-cmatch-perl_0.02.orig.tar.gz.delta
Normal file
BIN
libnet-ip-cmatch-perl_0.02.orig.tar.gz.delta
Normal file
Binary file not shown.
1
libnet-ip-cmatch-perl_0.02.orig.tar.gz.id
Normal file
1
libnet-ip-cmatch-perl_0.02.orig.tar.gz.id
Normal file
@ -0,0 +1 @@
|
||||
b477bbad2c6ad78037a1d8fe63d216e637ad173b
|
@ -1,30 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use FindBin qw($Bin);
|
||||
|
||||
use Test::More tests => 4;
|
||||
|
||||
################# test 1 (should succeed) #######################
|
||||
BEGIN { use_ok('Net::IP::CMatch') };
|
||||
|
||||
my $match;
|
||||
|
||||
################# test 2 (should fail) #######################
|
||||
|
||||
$match = match_ip( qw( 207.175.219.202 10.0.0.0/8 99.99.99 ) );
|
||||
ok( ! $match, "check non-match" );
|
||||
|
||||
################# test 3 (should succeed) #######################
|
||||
|
||||
$match = match_ip( qw( 207.175.219.202 10.0.0.0/8
|
||||
192.168.0.0/16 207.175.219.200/29 ) );
|
||||
ok( $match, "check match" );
|
||||
|
||||
################# test 4 (should succeed) #######################
|
||||
|
||||
my @ips = split / /, '10.0.0.0/8 192.168.0.0/16 207.175.219.200/29';
|
||||
$match = match_ip( "'207.175.219.202xxx'", @ips );
|
||||
ok( $match, "check another match" );
|
Loading…
Reference in New Issue
Block a user