#!/usr/bin/perl -w

# skrypt do wysylania statystyk seti do kwatery glownej RuchuOporu.
# autor: korbatz  (korbatz@ruchoporu.org) Wed Jul 2 2003
# (c) RuchOporu.org 2003

use strict;
use LWP::Simple;
use URI::URL;
use Getopt::Long;

my ( $version, $v, $comp, $dir, $showurl, $loop, $url, $minimum );

$version = "0.3 (rumcajs)";
$url     = url('http://ruchoporu.org/setimon');
$minimum = 5;  # minimum sleep for loop

my $info = <<EOF;
Setnij v.$version
Ussage: setnij [options] --dir seti_directory

Where options are:

	--verbose	some output (standard:quiet)
	--comp=name	computer name
	--showurl	do not send any data, only show url
	--loop=seconds	infinite loop (interval minimum $minimum s.)

	Sample ussage: ./setnij.pl --dir ~user/seti
EOF

GetOptions(
    "verbose" => \$v,
    "showurl" => \$showurl,
    "comp=s"  => \$comp,
    "dir=s"   => \$dir,
    "loop=s"  => \$loop
);

die "$info" unless $dir;
die "loop interval too small (minimum $minimum seconds)\n"
  if ( $loop && $loop < $minimum );

do {
    my $params = {
        'progress' => _get( $dir . "/state.sah",     'prog',     $v ),
        'email'    => _get( $dir . "/temp.sah",      'email',    $v ),
        'user'     => _get( $dir . "/temp.sah",      'name',     $v ),
        'unitNo'   => _get( $dir . "/user_info.sah", 'nresults', $v ),
        'time'     => _get( $dir . "/state.sah",     'cpu',      $v )
    };

    $params->{'computer'} = $comp if $comp;

    print "Sending data to $url\n" if ( $v && !$showurl );
    $url->query_form( %{$params} );
    print "$url\n" if $showurl;

    my $result = get($url) unless $showurl;

    print "Slepping $loop seconds...\n" if ( $loop && $v );
    sleep $loop if $loop;

} while $loop;

# getting info from file.
sub _get {
    my ( $filename, $what, $v ) = @_;
    my ($val);
    $filename =~ s/\/\//\//g;
    open( FILE, "<$filename" ) or die "Can't open $filename: $!\n";
    while (<FILE>) {
        $val = $_;
        last if $val =~ /$what/;
    }
    close FILE;
    $val      =~ s/.*=//;
    $val      =~ s/\n//sg;
    $val      =~ s/ /%20/g;
    $filename =~ s/.*\///g;
    print "Got $what = $val from $filename\n" if $v;
    return $val;
}

