2011-01-20 02:16:08 +01:00
|
|
|
#!/usr/bin/perl
|
|
|
|
|
|
|
|
# compiler_client.pl connects to compiler_server.pl hosted at PeerAddr/PeerPort below
|
|
|
|
# and sends a nick, language and code, then retreives and prints the compilation/execution output.
|
|
|
|
#
|
|
|
|
# this way we can run the compiler virtual machine on any remote server.
|
|
|
|
|
|
|
|
use warnings;
|
|
|
|
use strict;
|
|
|
|
|
|
|
|
use IO::Socket;
|
|
|
|
|
|
|
|
my $sock = IO::Socket::INET->new(
|
2012-07-22 21:22:30 +02:00
|
|
|
PeerAddr => '192.168.0.42',
|
2011-01-20 02:16:08 +01:00
|
|
|
PeerPort => 9000,
|
|
|
|
Proto => 'tcp');
|
|
|
|
|
|
|
|
if(not defined $sock) {
|
2013-06-03 19:04:24 +02:00
|
|
|
print "Fatal error compiling: $!; try again later\n";
|
2011-01-20 02:16:08 +01:00
|
|
|
die $!;
|
|
|
|
}
|
|
|
|
|
|
|
|
my $nick = shift @ARGV;
|
2014-03-04 22:40:51 +01:00
|
|
|
my $channel = shift @ARGV;
|
2011-01-20 02:16:08 +01:00
|
|
|
my $code = join ' ', @ARGV;
|
|
|
|
|
2012-07-22 21:22:30 +02:00
|
|
|
my $lang = "C11";
|
2011-01-20 02:16:08 +01:00
|
|
|
|
|
|
|
if($code =~ s/-lang=([^ ]+)//) {
|
|
|
|
$lang = uc $1;
|
|
|
|
}
|
|
|
|
|
2014-03-04 22:40:51 +01:00
|
|
|
print $sock "compile:$nick:$channel:$lang\n";
|
2011-01-20 02:16:08 +01:00
|
|
|
print $sock "$code\n";
|
|
|
|
print $sock "compile:end\n";
|
|
|
|
|
|
|
|
while(my $line = <$sock>) {
|
|
|
|
print "$line";
|
|
|
|
}
|
|
|
|
|
|
|
|
close $sock;
|