3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-12-23 11:12:42 +01:00
pbot/applets/pbot-vm/host/bin/vm-client

39 lines
926 B
Perl
Executable File

#!/usr/bin/env perl
# File: vm-client
#
# Purpose: Interfaces with the PBot VM Host server hosted by `vm-server`
# at PeerAddr/PeerPort defined below. This allows us to host instances
# of virtual machines on remote servers.
#
# This script is intended to be invoked by a PBot command such as `cc`.
# SPDX-FileCopyrightText: 2021 Pragmatic Software <pragma78@gmail.com>
# SPDX-License-Identifier: MIT
use warnings;
use strict;
use IO::Socket;
use constant {
SERVER_ADDR => $ENV{PBOTVM_ADDR} // '127.0.0.1',
SERVER_PORT => $ENV{PBOTVM_PORT} // 9000,
};
# TODO: extend to take a list of server/ports to cycle for load-balancing
my $sock = IO::Socket::INET->new(
PeerAddr => SERVER_ADDR,
PeerPort => SERVER_PORT,
Proto => 'tcp'
);
if (not defined $sock) {
print "Fatal error: $!; try again later\n";
die $!;
}
print $sock "@ARGV\n";
while (my $line = <$sock>) { print $line; }
close $sock;