X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=submit%2FMO%2FSubmit.pm;h=554fda83c4168f4ceaf19e7b16b577b383b69e28;hb=4d52eeffe7f6bcf2bcd16f073aed7aca1ae968a5;hp=15e6d7c3584030291c0123b4d23045ac13a9ee64;hpb=65ff89923436ec785ce2b35d26827aa95ce8c3ce;p=moe.git diff --git a/submit/MO/Submit.pm b/submit/MO/Submit.pm index 15e6d7c..554fda8 100644 --- a/submit/MO/Submit.pm +++ b/submit/MO/Submit.pm @@ -9,6 +9,7 @@ use warnings; use IO::Socket::INET; use IO::Socket::SSL; # qw(debug3); use Sherlock::Object; +use POSIX; sub new($) { my $user = $ENV{"USER"} or die "Environment variable USER not set\n"; @@ -17,11 +18,16 @@ sub new($) { my $root = $ENV{"MO_ROOT"} or die "Environment variable MO_ROOT not set\n"; my $self = { "Contest" => "CPSPC 2007", - "Server" => "localhost:8888", - "Key" => "$mo/key.pem", + "Server" => "kamzice.ms.mff.cuni.cz:8888", + "Key" => "$mo/key.pem", # Keys and certificates "Cert" => "$mo/cert.pem", "CACert" => "$mo/ca-cert.pem", "Trace" => defined $ENV{"MO_SUBMIT_TRACE"}, + "Checks" => 1, # Run `check' before submitting + "AllowOverride" => 1, # Allow overriding a failed check + "History" => "$home/.history", # Keep submission history in this directory + "RefreshTimer" => 60000, # How often GUI sends STATUS commands [ms] + "root" => $root, "user" => $user, "sk" => undef, "error" => undef, @@ -63,6 +69,7 @@ sub disconnect($) { sub connect($) { my $self = shift @_; $self->disconnect; + $self->log("Connecting to submit server"); my $sk = new IO::Socket::INET( PeerAddr => $self->{"Server"}, @@ -101,6 +108,7 @@ sub connect($) { } } $self->{"sk"} = $sk; + $sk->autoflush(0); $self->log("Logging in"); my $req = new Sherlock::Object("U" => $self->{"user"}); @@ -118,12 +126,14 @@ sub connect($) { sub request($$) { my ($self, $obj) = @_; my $sk = $self->{"sk"}; - $obj->write($sk); ### FIXME: Flushing + ## $SIG{'PIPE'} = 'ignore'; + $obj->write($sk); + print $sk "\n"; + $sk->flush(); if ($sk->error) { $self->err("Connection broken"); return undef; } - print $sk "\n"; return $self->reply; } @@ -159,4 +169,17 @@ sub send_file($$$) { return $self->reply; } +sub write_history($$$$$) { + my ($self, $task, $part, $ext, $filename) = @_; + my $hist = $self->{"History"}; + -d $hist or mkdir $hist or return "Unable to create $hist: $!"; + my $now = POSIX::strftime("%H:%M:%S", localtime(time)); + my $maybe_part = ($part eq $task) ? "" : ":$part"; + my $name = "$hist/$now-$task$maybe_part.$ext"; + $self->log("Backing up to $name"); + `cp "$filename" "$name"`; + return "Unable to back up $filename as $name" if $?; + return undef; +} + 1;