#!/usr/bin/perl -w
use strict;
use LWP::Simple;

our $timeout;
my $url1="http://download.opensuse.org/tumbleweed/repo/oss/media.1/products.mirrorlist";
my $html=get($url1);
my @mirrors=qw(
  http://cdn.opensuse.org/tumbleweed/repo/oss/media.1/products
  http://download.opensuse.org/tumbleweed/repo/oss/media.1/products
  http://downloadcontent.opensuse.org/tumbleweed/repo/oss/media.1/products
  http://downloadcontent2a.opensuse.org/tumbleweed/repo/oss/media.1/products
  http://downloadcontent2b.opensuse.org/tumbleweed/repo/oss/media.1/products
  http://downloadcontent2c.opensuse.org/tumbleweed/repo/oss/media.1/products
  http://rsync.opensuse.org/tumbleweed/repo/oss/media.1/products
  http://stage3.opensuse.org/tumbleweed/repo/oss/media.1/products
  http://provo-mirror.opensuse.org/tumbleweed/repo/oss/media.1/products
  http://gateway.ipfs.io/ipns/opensuse.zq1.de/tumbleweed/repo/oss/media.1/products
  http://opensuse.zq1.de/tumbleweed/repo/oss/media.1/products
);
foreach(sort(split("\n", $html))) {
    next unless m/<li><a href="(http[^"]*)"/;
    push(@mirrors, $1);
}
foreach my $m (@mirrors) {
    print "mirror: $m ";
    my $mirrorstat;
    eval {
	$timeout = 0;
        local $SIG{ALRM} = sub { $timeout=1; die "alarm\n" };
        alarm(4);
        $mirrorstat=get($m);
        alarm(0);
        $mirrorstat//="EMPTY";
    };
    if($timeout) {
        $mirrorstat="TIMEOUT";
    }
    chomp($mirrorstat);
    print "$mirrorstat\n";
}
