summaryrefslogtreecommitdiff
path: root/ports-mgmt/portmk/scripts/ranksites-geoip.pl
diff options
context:
space:
mode:
Diffstat (limited to 'ports-mgmt/portmk/scripts/ranksites-geoip.pl')
-rw-r--r--ports-mgmt/portmk/scripts/ranksites-geoip.pl393
1 files changed, 0 insertions, 393 deletions
diff --git a/ports-mgmt/portmk/scripts/ranksites-geoip.pl b/ports-mgmt/portmk/scripts/ranksites-geoip.pl
deleted file mode 100644
index 0777c744982f..000000000000
--- a/ports-mgmt/portmk/scripts/ranksites-geoip.pl
+++ /dev/null
@@ -1,393 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (c) 2004 Oliver Eikemeier. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# 1. Redistributions of source code must retain the above copyright notice
-# this list of conditions and the following disclaimer.
-#
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# 3. Neither the name of the author nor the names of its contributors may be
-# used to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# $FreeBSD$
-#
-# MAINTAINER= eik@FreeBSD.org
-#
-
-require 5.005;
-use strict;
-use Geo::IP;
-use constant PI => 3.14159265358979323846;
-
-my $home = $ENV{CC_HOME} ? lc $ENV{CC_HOME} : 'eu';
-
-my $dbdir = $ENV{RANKDIR} ? $ENV{RANKDIR} : '/var/db/distrank';
-
--d $dbdir || mkdir $dbdir, 0777 or die "Can't create $dbdir\n";
-
-my $rankfile = "$dbdir/ranks-geoip";
-
-my $now = time;
-
-my %distance;
-
-if (-r $rankfile) {
- open RANKS, "<$rankfile";
- while (<RANKS>) {
- chomp;
- my ($host, $d, $e) = split;
- $distance{$host} = [$d, $e]
- if defined $e && $e >= $now;
- }
- close RANKS;
-}
-
-my %mastersites;
-my %newdistance;
-
-my $distgood = -1;
-my $distdefault = PI/2;
-my $distbad = 2;
-
-my $expgood = $now + 14 * 86400;
-my $expdefault = $now + 7 * 86400;
-
-my $hostcount = 0;
-
-while (<>) {
- chomp;
- next
- if exists $mastersites{$_};
- if (m'^(?:ftp|https?)://(?:[^/]*@)?([^/:]+\.[^/:]+)(?::\d+)?(?:/|$)'i) {
- my $host = lc $1;
- $mastersites{$_} = $host;
- if (!defined $distance{$host}) {
- $distance{$host} = [$distdefault, $expdefault];
- $newdistance{$host} = undef
- }
- $hostcount++;
- } elsif (m'^file:'i) {
- $mastersites{$_} = 'FILE';
- } else {
- $mastersites{$_} = 'UNKNOWN';
- }
-}
-
-# calculate_distance and the associated table is from Geo::Mirror, and therefore
-# Copyright (c) 2002, T.J. Mather, tjmather@tjmather.com, New York, NY, USA
-
-my (%lat, %lon);
-
-sub getlatlon {
- my ($cc) = @_;
- my ($lat_cc, $lon_cc) = ($lat{$cc}, $lon{$cc});
-
- # Convert all the degrees to radians
- $lat_cc *= PI/180
- if defined $lat_cc;
- $lon_cc *= PI/180
- if defined $lon_cc;
- return ($lat_cc, $lon_cc);
-}
-
-if (%newdistance && $hostcount > 1) {
- while (<main::DATA>) {
- my ($country, $lat, $lon) = split(':');
-
- $lat{$country} = $lat;
- $lon{$country} = $lon;
- }
- close main::DATA;
-
- my $gi = Geo::IP->new(GEOIP_MEMORY_CACHE);
-
- my ($lat_home, $lon_home) = getlatlon($home);
-
- foreach (keys %newdistance) {
- my $dist;
- my $cc = lc $gi->country_code_by_name($_);
-
- if ($cc) {
- my ($lat_cc, $lon_cc) = getlatlon($cc)
- if defined $cc;
-
- # Find the deltas
- my $delta_lat = $lat_cc - $lat_home;
- my $delta_lon = $lon_cc - $lon_home;
-
- # Find the Great Circle distance
- my $temp = sin($delta_lat/2.0)**2 + cos($lat_home) * cos($lat_cc) * sin($delta_lon/2.0)**2;
- $dist = atan2(sqrt($temp),sqrt(1-$temp));
-
- $distance{$_} = [$dist, $expgood]
- if defined $dist;
- }
- }
-
- open RANKS, ">$rankfile";
- while (my ($host, $val) = each %distance) {
- printf RANKS "%s\t%.4f\t%d\n", $host, $val->[0], $val->[1]
- if defined $val;
- }
- close RANKS;
-}
-
-$distance{FILE} = [$distgood, 0];
-$distance{UNKNOWN} = [$distbad, 0];
-
-foreach (sort {$distance{$mastersites{$a}}->[0] <=> $distance{$mastersites{$b}}->[0]} keys %mastersites) {
- print $_, "\n";
-}
-
-__END__
-af:33:65
-al:41:20
-dz:28:3
-as:-14:-170
-ad:42:1
-ao:-12:18
-ai:18:-63
-aq:-90:0
-ag:17:-61
-ar:-34:-64
-am:40:45
-aw:12:-69
-au:-27:133
-at:47:13
-az:40:47
-bs:24:-76
-bh:26:50
-bd:24:90
-bb:13:-59
-by:53:28
-be:50:4
-bz:17:-88
-bj:9:2
-bm:32:-64
-bt:27:90
-bo:-17:-65
-ba:44:18
-bw:-22:24
-bv:-54:3
-br:-10:-55
-io:-6:71
-vg:18:-64
-bg:43:25
-bf:13:-2
-bi:-3:30
-kh:13:105
-cm:6:12
-ca:60:-95
-cv:16:-24
-ky:19:-80
-cf:7:21
-td:15:19
-cl:-30:-71
-cn:35:105
-cx:-10:105
-cc:-12:96
-co:4:-72
-km:-12:44
-cd:0:25
-cg:-1:15
-ck:-21:-159
-cr:10:-84
-ci:8:-5
-hr:45:15
-cu:21:-80
-cy:35:33
-cz:49:15
-dk:56:10
-dj:11:43
-dm:15:-61
-do:19:-70
-ec:-2:-77
-eg:27:30
-sv:13:-88
-gq:2:10
-er:15:39
-ee:59:26
-et:8:38
-fk:-51:-59
-fo:62:-7
-fj:-18:175
-fi:64:26
-fr:46:2
-gf:4:-53
-pf:-15:-140
-ga:-1:11
-gm:13:-16
-ge:42:43
-de:51:9
-eu:48:10
-gh:8:-2
-gi:36:-5
-gr:39:22
-gl:72:-40
-gd:12:-61
-gp:16:-61
-gu:13:144
-gt:15:-90
-gn:11:-10
-gw:12:-15
-gy:5:-59
-ht:19:-72
-hm:-53:72
-va:41:12
-hn:15:-86
-hk:22:114
-hu:47:20
-is:65:-18
-in:20:77
-id:-5:120
-ir:32:53
-iq:33:44
-ie:53:-8
-il:31:34
-it:42:12
-jm:18:-77
-sj:71:-8
-jp:36:138
-jo:31:36
-ke:1:38
-ki:1:173
-kp:40:127
-kr:37:127
-kw:29:45
-kg:41:75
-lv:57:25
-lb:33:35
-ls:-29:28
-lr:6:-9
-ly:25:17
-li:47:9
-lt:56:24
-lu:49:6
-mo:22:113
-mk:41:22
-mg:-20:47
-mw:-13:34
-my:2:112
-mv:3:73
-ml:17:-4
-mt:35:14
-mh:9:168
-mq:14:-61
-mr:20:-12
-mu:-20:57
-yt:-12:45
-mx:23:-102
-fm:6:158
-mc:43:7
-mn:46:105
-ms:16:-62
-ma:32:-5
-mz:-18:35
-na:-22:17
-nr:-0:166
-np:28:84
-nl:52:5
-an:12:-68
-nc:-21:165
-nz:-41:174
-ni:13:-85
-ne:16:8
-ng:10:8
-nu:-19:-169
-nf:-29:167
-mp:15:145
-no:62:10
-om:21:57
-pk:30:70
-pw:7:134
-pa:9:-80
-pg:-6:147
-py:-23:-58
-pe:-10:-76
-ph:13:122
-pn:-25:-130
-pl:52:20
-pt:39:-8
-pr:18:-66
-qa:25:51
-re:-21:55
-ro:46:25
-ru:60:100
-rw:-2:30
-sh:-15:-5
-kn:17:-62
-lc:13:-60
-pm:46:-56
-vc:13:-61
-ws:-13:-172
-sm:43:12
-st:1:7
-sa:25:45
-sn:14:-14
-sc:-4:55
-sl:8:-11
-sg:1:103
-sk:48:19
-si:46:15
-sb:-8:159
-so:10:49
-za:-29:24
-gs:-54:-37
-es:40:-4
-lk:7:81
-sd:15:30
-sr:4:-56
-sj:78:20
-sz:-26:31
-se:62:15
-ch:47:8
-sy:35:38
-tj:39:71
-tz:-6:35
-th:15:100
-tg:8:1
-tk:-9:-172
-to:-20:-175
-tt:11:-61
-tn:34:9
-tr:39:35
-tm:40:60
-tc:21:-71
-tv:-8:178
-ug:1:32
-ua:49:32
-ae:24:54
-gb:54:-2
-us:38:-97
-uy:-33:-56
-uz:41:64
-vu:-16:167
-ve:8:-66
-vn:16:106
-vi:18:-64
-wf:-13:-176
-eh:24:-13
-ye:15:48
-yu:44:21
-zm:-15:30
-zw:-20:30
-tw:23:121