X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=utils%2Fmetarproxy%2Fmetarproxy;h=ba03eb377e9297458857240ba8ee3085c22246c0;hb=14be21ea5ce0f5a2b9234490e8ad891e8b7f43b6;hp=f92f6749fd59b6498f72d16f614a247052e17b68;hpb=4ffb6c0fe9e36ec74c912eec9a64868171577e9e;p=flightgear.git diff --git a/utils/metarproxy/metarproxy b/utils/metarproxy/metarproxy index f92f6749f..ba03eb377 100755 --- a/utils/metarproxy/metarproxy +++ b/utils/metarproxy/metarproxy @@ -1,6 +1,6 @@ #!/usr/bin/perl -w # FlightGear METAR proxy server -# Melchior FRANZ (c) 2005, , GPL V2 +# Melchior FRANZ (c) 2005, , GPL V2 # $Id$ # # typical use @@ -109,16 +109,10 @@ sub parse_options() return $ARGV[0]; } my $mode = 4; - unshift @ARGV, split / /, $ENV{'METARPROXY'} if defined $ENV{'METARPROXY'}; + unshift @ARGV, split /\s+/, $ENV{'METARPROXY'} if defined $ENV{'METARPROXY'}; while (1) { $_ = $ARGV[0]; defined $_ or last; - # dissolve glued together short options (e.g. -cvv) - if (/^-([^-]{2,})$/) { - shift @ARGV; - map { unshift @ARGV, "-$_" } split //, $1; - next; - } if (!/^-/) { push @ITEMS, $_; } elsif (/^(-d|--download)$/) { @@ -148,8 +142,10 @@ sub parse_options() $PROXY = &argument($2, $4); defined $PROXY or &fatal("--proxy option lacks definition"); &log($BULK, "set option --proxy: '$PROXY'"); - } elsif (/^(-v|--verbose)$/) { + } elsif (/^--verbose$/) { $VERBOSITY++; + } elsif (/^-(v+)$/) { + $VERBOSITY += length($1); } elsif (/^(-q|--quiet)$/) { $VERBOSITY = 0; } elsif (/^(-h|--help)$/) { @@ -390,6 +386,7 @@ sub serve() my $server = IO::Socket::INET->new(Proto => 'tcp', LocalPort => $PORT, Listen => SOMAXCONN, Reuse => 1); $server or &fatal("cannot setup server ($!)"); &log($BULK, "server $0 accepting clients on port $PORT"); + my %last_metar; while (my $client = $server->accept()) { $client->autoflush(1); @@ -425,9 +422,9 @@ sub serve() if ($age <= $METAR_MAX_AGE) { &log($BULK, "found (" . int($age / 60) . " min old)"); $metar =~ s/\s*$//s; - $METAR_DEFAULT = $metar; - $METAR_DEFAULT =~ s/.*\015?\012[A-Z0-9]{4}\s+[0-9]{6}Z\s+//s; - &log($DEBUG, "setting default to '$METAR_DEFAULT'"); + $last_metar{$addr} = $metar; + $last_metar{$addr} =~ s/.*\015?\012[A-Z0-9]{4}\s+[0-9]{6}Z\s+//s; + &log($DEBUG, "setting default for [$addr] to '$last_metar{$addr}'"); $metar =~ s/\015?\012/\015\012/g; } else { &log($INFO, "found, but too old (" . int($age / 60) . " min)"); @@ -441,8 +438,8 @@ sub serve() &log($INFO, "sending last successful data again"); $metar = sprintf "%04d/%02d/%02d %02d:%02d\015\012", $year, $mon, $day, $hour, $min; - $metar .= sprintf "$icao %02d%02d%02dZ $METAR_DEFAULT", - $day, $hour, $min; + $metar .= sprintf "$icao %02d%02d%02dZ ", $day, $hour, $min; + $metar .= $last_metar{$addr} || $METAR_DEFAULT; } print $client "Content-Type: text/plain\015\012" . "X-MetarProxy: nasse Maus\015\012"