summaryrefslogtreecommitdiff
path: root/ports-mgmt/portmk/scripts/ranksites-fping.pl
diff options
context:
space:
mode:
Diffstat (limited to 'ports-mgmt/portmk/scripts/ranksites-fping.pl')
-rw-r--r--ports-mgmt/portmk/scripts/ranksites-fping.pl139
1 files changed, 0 insertions, 139 deletions
diff --git a/ports-mgmt/portmk/scripts/ranksites-fping.pl b/ports-mgmt/portmk/scripts/ranksites-fping.pl
deleted file mode 100644
index db399548b22c..000000000000
--- a/ports-mgmt/portmk/scripts/ranksites-fping.pl
+++ /dev/null
@@ -1,139 +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;
-
-my $dbdir = $ENV{RANKDIR} ? $ENV{RANKDIR} : '/var/db/distrank';
-
-my $fping = $ENV{FPING} ? $ENV{FPING} : '/usr/local/sbin/fping';
-
--x $fping
- or die "fping required\n";
-
--d $dbdir || mkdir $dbdir, 0777
- or die "Can't create $dbdir\n";
-
-my $rankfile = "$dbdir/ranks-fping";
-
-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 = 0;
-my $distdefault = 5000;
-my $distbad = 10000;
-
-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';
- }
-}
-
-if (%newdistance && $hostcount > 1) {
- if (!open FPING, '-|') {
- if (!open FPINGIN, '|-') {
- open STDERR, '>&STDOUT';
- exec $fping, '-q', '-C', '3';
- die
- }
- foreach (keys %newdistance) {
- print FPINGIN $_, "\n";
- }
- close FPINGIN;
- exit;
- }
-
- while(<FPING>) {
- /([^\s:]+)\s*:\s*([\s\d.-]*)/ or next;
- my $sum = 0.0;
- my $num = 0;
- foreach my $val (split ' ', $2) {
- $val ne '-' || next;
- $sum += $val;
- $num++;
- }
- if ($num > 0) {
- $distance{$1} = [$sum/$num, $expgood];
- }
- }
- close FPING;
-
- open RANKS, ">$rankfile";
- while (my ($host, $val) = each %distance) {
- printf RANKS "%s\t%.2f\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";
-}