commit fa3bdf559024990d0527e9811c783d9b6a02e6b1 Author: XiCoN-FJS- Date: Sat Oct 19 23:24:30 2019 +0200 v1 diff --git a/xtr.pl b/xtr.pl new file mode 100644 index 0000000..cccdaba --- /dev/null +++ b/xtr.pl @@ -0,0 +1,66 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use Net::Traceroute; +use Net::DNS::Resolver; +use Dancer2; +#use JSON::PP; +use Data::Dumper; + + +hook 'before' => sub { + header 'Access-Control-Allow-Origin' => '*'; +}; + +get '/:ip' => sub { + my $ip = route_parameters->get('ip') || 8.8.8.8; + my $trace = traceit($ip); + return encode_json $trace; +}; + +start; + + + + +sub traceit +{ + my ($host) = @_; + my $tr = Net::Traceroute->new(host => $host, use_icmp => 1, timeout => 1 ); + +my @array = (); +if($tr->found) +{ + #print Dumper($tr->hops); + foreach my $hop (@{$tr->{'hops'}}) + { + my $sum = sprintf("%.1f",($hop->[0]->[2] + $hop->[1]->[2] + $hop->[2]->[2])/3); + my $res = Net::DNS::Resolver->new; + my $query = $res->query($hop->[0]->[1], 'PTR'); + my $answer = "nonono"; + if($query) + { + foreach my $rr ($query->answer) + { + if($rr->type eq "PTR") + { + $answer = $rr->ptrdname; + } + } + } + # print $hop->[0]->[1]."\t(".$answer.") - ".$sum."\n"; + push(@array, [$hop->[0]->[1],$answer,$sum]); + } +} + + if($tr->found) + { + return \@array; + } + else + { + return $tr->{'hops'}; + } +} +