summaryrefslogtreecommitdiffstats
path: root/emergencyc.pl
diff options
context:
space:
mode:
Diffstat (limited to 'emergencyc.pl')
-rwxr-xr-xemergencyc.pl45
1 files changed, 19 insertions, 26 deletions
diff --git a/emergencyc.pl b/emergencyc.pl
index a7d55d2..5d59be1 100755
--- a/emergencyc.pl
+++ b/emergencyc.pl
@@ -10,8 +10,8 @@
# Options recognized:
#
-# -K <key> specifies the key to use; or -k <filename> specifies a
-# keyfile (the client will use the first line as key).
+# -K <key> specifies the key to use; or -k <filename> specifies a key
+# file (the client will use the first line as key).
#
# -h <hostname> and -p <number> specifies the host and port to connect
# to.
@@ -39,25 +39,16 @@ my $key;
if ( defined($opts{K}) ) {
$key = $opts{K};
} elsif ( defined($opts{k}) ) {
- open my $keyfile, "<", $opts{k} or die "Cannot open key file $opts{k}: $!";
- $key = <$keyfile>;
+ open my $key_file, "<", $opts{k}
+ or die "Cannot open key file $opts{k}: $!";
+ $key = <$key_file>;
chomp $key;
- close $keyfile;
+ close $key_file;
}
die "No key specified (use -K or -k option)" unless defined($key);
-my $host;
-if ( defined($opts{h}) ) {
- $host = $opts{h};
-} else {
- $host = "localhost";
-}
-my $port;
-if ( defined($opts{p}) ) {
- $port = $opts{p};
-} else {
- $port = DEFAULT_PORT;
-}
+my $host = $opts{h} // "localhost";
+my $port = $opts{p} // DEFAULT_PORT;
my @res = getaddrinfo($host, $port, AF_UNSPEC, SOCK_DGRAM)
or die "Cannot resolve host $host port $port";
@@ -69,16 +60,15 @@ bind $socket, sockaddr_in6(0, in6addr_any);
sub curtime {
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time);
- return sprintf("%04d-%02d-%02dT%02d:%02d:%02dZ",$year+1900,$mon+1,$mday,$hour,$min,$sec);
+ return sprintf("%04d-%02d-%02dT%02d:%02d:%02dZ",
+ $year+1900,$mon+1,$mday,$hour,$min,$sec);
}
-my $command = $ARGV[0];
-$command = "PING" unless defined($command);
-my $timestamp = $opts{t};
-$timestamp = curtime unless defined($timestamp);
+my $command = $ARGV[0] // "PING";
+my $timestamp = $opts{t} // curtime;
my $validate = "$command|$timestamp";
-my $maccheck = hmac_sha256_hex($validate, $key);
-send $socket, "$command|$timestamp|$maccheck", 0, $haddr;
+my $mac_check = hmac_sha256_hex($validate, $key);
+send $socket, "$command|$timestamp|$mac_check", 0, $haddr;
my $buf;
my $sender;
@@ -87,10 +77,13 @@ eval {
alarm 5;
do {
$sender = recv($socket, $buf, 16384, 0);
- } while ( $sender ne $haddr );
+ } while ( defined($sender) && $sender ne $haddr );
};
if ( $@ ) {
- printf "timeout\n";
+ print "timeout\n";
+ exit 1;
+} elsif ( !defined($sender) ) {
+ die "Failed to receive packet: $!";
} else {
printf "%s", $buf;
}