1 |
#!/usr/bin/env perl |
2 |
# Host Update |
3 |
# |
4 |
# Douglas Thrift |
5 |
# |
6 |
# $Id$ |
7 |
|
8 |
use strict; |
9 |
use warnings; |
10 |
use File::Basename; |
11 |
use LWP::UserAgent; |
12 |
use MIME::Base64; |
13 |
use POSIX; |
14 |
|
15 |
my $url = new URI("https://topsecret.douglasthrift.net/auth/hosts/"); |
16 |
my ($sysname, $nodename, $release, $version, $machine) = uname(); |
17 |
my $agent = new LWP::UserAgent(agent => "HostUpdate/1.1 ($sysname $release $machine) "); |
18 |
|
19 |
{ |
20 |
my $user = getpwuid $<; |
21 |
|
22 |
open PASS, "$ENV{HOME}/.HostUpdate.pass" or die "$0: $!\n"; |
23 |
|
24 |
my $pass = <PASS>; |
25 |
|
26 |
chomp $pass; |
27 |
close PASS; |
28 |
|
29 |
$pass =~ tr/A-Za-z/N-ZA-Mn-za-m/; |
30 |
|
31 |
$agent->credentials($url->host_port, 'Top Secret', $user, decode_base64($pass)); |
32 |
} |
33 |
|
34 |
$nodename .= ".douglasthrift.net" if ($nodename !~ /\./); |
35 |
|
36 |
my $response = $agent->post($url, [host => $nodename]); |
37 |
|
38 |
$response->is_success or die basename($0) . ': ' . $response->status_line; |