commit: 4b612418355ae1f3f4b4575db4f7bbae1e8781e4 Author: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org> AuthorDate: Tue Apr 28 07:33:32 2020 +0000 Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org> CommitDate: Tue Apr 28 07:43:51 2020 +0000 URL: https://gitweb.gentoo.org/proj/gentoo-mirrorstats.git/commit/?id=4b612418
mirmon: start refactor of probe Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org> distfiles_mirrors/mirmon.conf | 2 +- .../probe-mirmon-distfiles => probe-mirmon | 18 ++++++- rsync_mirrors/mirmon.conf | 2 +- rsync_mirrors/probe-mirmon-rsync | 60 ---------------------- 4 files changed, 18 insertions(+), 64 deletions(-) diff --git a/distfiles_mirrors/mirmon.conf b/distfiles_mirrors/mirmon.conf index 7994130..e43d772 100644 --- a/distfiles_mirrors/mirmon.conf +++ b/distfiles_mirrors/mirmon.conf @@ -4,7 +4,7 @@ icons ../icons countries /var/www/mirrorstats.gentoo.org/mirmon/countries.list mirror_list /var/www/mirrorstats.gentoo.org/gentoo-mirrorstats/distfiles_mirrors/var/g.mirrors state /var/www/mirrorstats.gentoo.org/gentoo-mirrorstats/distfiles_mirrors/var/mirmon.state -probe /var/www/mirrorstats.gentoo.org/gentoo-mirrorstats/distfiles_mirrors/probe-mirmon-distfiles %TIMEOUT% %URL%distfiles/timestamp.mirmon +probe /var/www/mirrorstats.gentoo.org/gentoo-mirrorstats/probe-mirmon %TIMEOUT% %URL%distfiles/timestamp.mirmon project_url http://www.gentoo.org/ project_logo http://www.gentoo.org/images/gentoo-new.gif diff --git a/distfiles_mirrors/probe-mirmon-distfiles b/probe-mirmon similarity index 79% rename from distfiles_mirrors/probe-mirmon-distfiles rename to probe-mirmon index 6e8ae52..7b57923 100755 --- a/distfiles_mirrors/probe-mirmon-distfiles +++ b/probe-mirmon @@ -32,6 +32,8 @@ sub main { sub handle_wget { my ( $timeout, $url ) = @_; + # TODO: replace this with native HTTP + # TODO: munge the output! exec {'/usr/bin/wget'} 'wget', qw( -q --passive-ftp -O - -T ), $timeout, '-t', 1, $url; } @@ -54,8 +56,20 @@ sub handle_rsync { exit 900; # rediculous exit code. }; - print <$fh>; -# print Date::Parse::str2time(<$fh>); + print munge_date(<fh>); exit 0; } + +sub munge_date { + my $timestr = $_; + my $timestamp = int($timestr); + my $year2020 = 1577836800; + my $year2038 = 2145916800; + # If the string starts with an epoch, just use that + if($int_timestamp >= $year2020 && $int_timestamp <= $year2038) { + return $int_timestamp; + } else { + return Date::Parse::str2time($timestr); + } +} diff --git a/rsync_mirrors/mirmon.conf b/rsync_mirrors/mirmon.conf index 6627f55..94887a9 100644 --- a/rsync_mirrors/mirmon.conf +++ b/rsync_mirrors/mirmon.conf @@ -4,7 +4,7 @@ icons ../icons countries /var/www/mirrorstats.gentoo.org/mirmon/countries.list mirror_list /var/www/mirrorstats.gentoo.org/gentoo-mirrorstats/rsync_mirrors/var/g.mirrors state /var/www/mirrorstats.gentoo.org/gentoo-mirrorstats/rsync_mirrors/var/mirmon.state -probe /var/www/mirrorstats.gentoo.org/gentoo-mirrorstats/rsync_mirrors/probe-mirmon-rsync %TIMEOUT% %URL%gentoo-portage/metadata/timestamp +probe /var/www/mirrorstats.gentoo.org/gentoo-mirrorstats/probe-mirmon %TIMEOUT% %URL%gentoo-portage/metadata/timestamp project_url http://www.gentoo.org/ project_logo http://www.gentoo.org/images/gentoo-new.gif diff --git a/rsync_mirrors/probe-mirmon-rsync b/rsync_mirrors/probe-mirmon-rsync deleted file mode 100755 index 2709319..0000000 --- a/rsync_mirrors/probe-mirmon-rsync +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/perl -# $Id: probe-mirmon,v 1.4 2009/08/19 23:15:46 karl Exp $ -# public domain. Originally written by Karl Berry, 2009. -# -# Probe rsync url's for mirmon; use wget for anything else. -# From description at http://people.cs.uu.nl/henkp/mirmon. -# -# Also requires a patch to mirmon itself to accept rsync urls -# (and I wanted https too): -# --- /usr/local/share/mirmon/ORIG/mirmon 2007-08-18 18:05:47.000000000 +0200 -# +++ /usr/local/share/mirmon/mirmon 2009-07-03 22:38:00.000000000 +0200 -# @@ -386,3 +386,3 @@ -# my ( $type, $site, $home ) ; -# - if ( $url =~ m!^(ftp|http)://([^/:]+)(:\d+)?/! ) -# + if ( $url =~ m!^(ftp|https?|rsync)://([^/:]+)(:\d+)?/! ) -# { $type = $1 ; $site = $2 ; $home = $& ; } - -main(@ARGV); - -use Date::Parse (); # dev-perl/TimeDate -use File::Tempdir; # dev-perl/File-Tempdir - -sub main { - my ( $timeout, $url ) = @_; - if ( $url =~ m,^rsync://, ) { - handle_rsync( $timeout, $url ); - } - else { - handle_wget( $timeout, $url ); - } -} - -sub handle_wget { - my ( $timeout, $url ) = @_; - exec {'/usr/bin/wget'} 'wget', qw( -q --passive-ftp -O - -T ), $timeout, '-t', 1, $url; -} - -sub handle_rsync { - my ( $timeout, $url ) = @_; - - my $tmpdir = File::Tempdir->new(); - my $dir = $tmpdir->name; - my $file = $url; - - $file =~ s/\W/_/g; # translate all non-letters to _ - - if ( my $fail = system '/usr/bin/rsync', qw( --no-motd --timeout ), $timeout, $url, "$dir/$file" ) { - warn "rsync failed, exit code $fail, $! $? $@\n"; - exit $fail; - } - - open my $fh, '<', "$dir/$file" or do { - warn "Opening Downloaded timestamp Failed"; - exit 900; # rediculous exit code. - }; - - print Date::Parse::str2time(<$fh>); - exit 0; - -}