diff options
Diffstat (limited to 'emergencyc.pl')
-rwxr-xr-x | emergencyc.pl | 45 |
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; } |