1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #!/usr/bin/perl
- #
- # OpenCNAM front end because they only take 10 digits and can't filter 11 on their side.
- #
- use Data::Dumper;
- use CGI qw/:standard/;
- use LWP::UserAgent;
- use SDBM_File;
- use Fcntl;
- my %params = map { $_ => get_data( $_ ) } param;
- $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0, timeout => 3 });
- sub get_data {
- my $name = shift;
- my @values = param( $name );
- return @values > 1
- ? \@values
- : $values[0];
- }
- print "Content-Type: text/plain\n\n";
- tie (my %cache, 'SDBM_File', 'cnam.dbm', O_RDWR|O_CREAT, 0640) || die $!;
- my $number = $params{number};
- if($number =~ m/1?\d{10}/) {
- if($number =~ m/^1(\d{10})$/) {
- $number = $1;
- }
- if($cache{"$number"}) {
- print $cache{"$number"};
- untie %cache;
- exit;
- }
- my $url = "https://api.opencnam.com/v1/phone/$number?format=text";
- my $res = $ua->get( $url );
- my $code = $res->code;
- if ($code eq '200') {
- my $content = $res->decoded_content;
- $cache{"$number"} = $content;
- print $content;
- } else {
- print "UNKNOWN";
- }
- }
- untie %cache;
|