--- fastest_cvsup.orig 2002-09-19 14:12:17.000000000 +0200 +++ fastest_cvsup 2009-01-04 15:25:33.000000000 +0100 @@ -1,13 +1,15 @@ #!/usr/bin/perl #-----------------------------------------------------------------------------# # -# Find fastest CVSup server script for FreeBSD - version 0.2.8 +# Find fastest CVSup server script for FreeBSD - version 0.2.9 # Copyright (c) A.J.Robinson (ajr@subdimension.com) 2002 # Distributed under the BSD license. # #-----------------------------------------------------------------------------# # # Changes: +# 0.2.9 - added 'us' country code for USA hosts and 'tld' for top-level +# domain machines (can be in any country) # 0.2.8 - fixed the progress meter, timestamped %FREEBSD_SERVERS # 0.2.7 - updated documentation, usage message and progress meter. # 0.2.6 - changed from freebsdmirrors.org to the online handbook. @@ -74,44 +76,50 @@ # How many FreeBSD CVSup servers has each country got? (well, not strictly # true... what's the highest cvsup number in use? -my %FREEBSD_SERVERS = ( # last updated: Thu Sep 19 12:56:23 2002 +my %FREEBSD_SERVERS = ( # last updated: Jan 04 15:02:20 GMT 2009 'ar' => 1, # Argentina - 'at' => 1, # Austria - 'au' => 5, # Australia - 'br' => 4, # Brazil + 'am' => 1, # Armenia + 'at' => 2, # Austria + 'au' => 1, # Australia + 'br' => 3, # Brazil 'ca' => 2, # Canada - 'cn' => 1, # China + 'ch' => 2, # Switzerland + 'cn' => 5, # China 'cz' => 1, # Czech Republic - 'de' => 7, # Germany - 'dk' => 1, # Denmark - 'ee' => 1, # Estonia + 'de' => 8, # Germany + 'dk' => 3, # Denmark + 'ee' => 2, # Estonia 'es' => 3, # Spain 'fi' => 2, # Finland 'fr' => 8, # France - 'gr' => 2, # Greece + 'gr' => 1, # Greece 'hu' => 1, # Hungary - 'ie' => 1, # Ireland + 'ie' => 2, # Ireland 'is' => 1, # Iceland 'jp' => 6, # Japan - 'kr' => 2, # Korea - 'lt' => 2, # Lithuania - 'lv' => 1, # Latvia - 'nl' => 3, # Netherlands + 'kg' => 1, # Kyrgyzstan + 'kr' => 5, # Korea + 'kw' => 1, # Kuwait + 'lt' => 3, # Lithuania + 'lv' => 3, # Latvia + 'nl' => 6, # Netherlands 'no' => 1, # Norway 'nz' => 1, # New Zealand 'pl' => 1, # Poland - 'pt' => 1, # Portugal - 'ro' => 1, # Romania - 'ru' => 6, # Russia + 'pt' => 3, # Portugal + 'ro' => 3, # Romania + 'ru' => 7, # Russia 'se' => 2, # Sweden - 'si' => 1, # Slovenia + 'si' => 2, # Slovenia 'sk' => 2, # Slovak Republic - 'sm' => 1, # San Marino - 'tw' => 3, # Taiwan - 'ua' => 5, # Ukraine - 'uk' => 5, # United Kingdom - 'us' => 17, # USA + 'th' => 1, # Thailand + 'tr' => 2, # Turkey + 'tw' => 14, # Taiwan + 'ua' => 11, # Ukraine + 'uk' => 4, # United Kingdom + 'us' => 18, # USA 'za' => 2, # South Africa + 'tld' => 18, # Top Level Domain ); my %OTHER_SERVERS = ( @@ -141,6 +149,8 @@ 'rt.fm', 'skeleton.phys.spbu.ru', 'cvsup.jp.openbsd.org', + 'cvsup.tw.openbsd.org', + 'openbsd.cc.ntu.edu.tw', 'wiretapped.net', ], ); @@ -177,6 +187,7 @@ " -Q very quiet mode, no progress meter\n", " -r uses remote server list from FreeBSD Handbook\n", " -c aa,bb,cc queries servers in countries aa,bb,cc\n", + " tld queries servers in the top level domain\n", " local queries servers set as local in the script\n", " all queries all FreeBSD servers\n\n", " See the man page, fastest_cvsup(7), for more details.\n\n"; @@ -281,6 +292,7 @@ # extract the country name and the rest (what a mess!) + s/^]+><\/a>//; if ( m/^(\w+)(\s{1}\w+)?\s*(.*)/s ) { my $country = $1.$2; # for two word names my $mess = $3; # the rest @@ -307,12 +319,12 @@ unless ( $cc_name{$cc} ) { $cc_name{$cc} = $country } } - # parse US servers + # parse TLD servers elsif ( $server =~ /cvsup([\d]*)\.freebsd\.org/i ) { my $i = $1 || 1; - if ( !$srv{'us'} or $srv{'us'} < $i ) { $srv{'us'} = $i } - unless ( $cc_name{'us'} ) { $cc_name{'us'} = $country } + if ( !$srv{'tld'} or $srv{'tld'} < $i ) { $srv{'tld'} = $i } + unless ( $cc_name{'tld'} ) { $cc_name{'tld'} = $country } } } } @@ -419,7 +431,7 @@ for ( my $i=1; $i<=$FREEBSD_SERVERS{$cc}; $i++ ) { - if ( $cc eq 'us' ) { # use no country code, include the '1' + if ( $cc eq 'tld' ) { # use no country code, include the '1' if ( $i == 1 ) { push(@first,"cvsup$i.freebsd.org"); } else { push(@others,"cvsup$i.freebsd.org"); } } @@ -575,7 +587,7 @@ =head1 SYNOPSIS -B [B<-h>] [B<-(q|Q)>] [B<-r>] B<-c> (B|B|B) +B [B<-h>] [B<-(q|Q)>] [B<-r>] B<-c> (B|B|B|B) =head1 DESCRIPTION @@ -620,6 +632,11 @@ NetBSD and OpenBSD servers are lumped together under the 'netbsd' and 'openbsd' codes respectively. +=item B<-c tld> + +checks the servers in the Top Level Domain. These can be anywhere in the +world. + =item B<-c local> uses the countries specifed in the C<@LOCAL_CC> array. Edit the script to