version 1.9, 2005/11/18 19:17:12 |
version 1.11, 2005/12/21 02:03:30 |
|
|
#!/usr/bin/perl
|
#!/usr/bin/perl
|
# $RedRiver: update_trango.pl,v 1.8 2005/11/17 20:20:59 andrew Exp $
|
# $RedRiver: update_trango.pl,v 1.10 2005/12/21 01:17:06 andrew Exp $
|
########################################################################
|
########################################################################
|
# update_trango.pl *** Updates trango foxes with a new firmware
|
# update_trango.pl *** Updates trango foxes with a new firmware
|
#
|
#
|
|
|
my $t = shift;
|
my $t = shift;
|
my $file = shift;
|
my $file = shift;
|
|
|
$l->p("Getting current version");
|
|
my $ver = $t->ver;
|
my $ver = $t->ver;
|
|
$l->p("Current version '$ver->{'Firmware Version'}'");
|
|
|
if (
|
if (
|
$ver->{'Firmware Version'} eq $conf->{'ver'} &&
|
$ver->{'Firmware Version'} eq $conf->{'ver'} &&
|
|
|
my $results = $t->tftpd;
|
my $results = $t->tftpd;
|
# check the 'File Length' against ???
|
# check the 'File Length' against ???
|
if ( $results->{'File Checksum'} ne $conf->{'file_cksum'}) {
|
if ( $results->{'File Checksum'} ne $conf->{'file_cksum'}) {
|
$l->sp("File checksum does not match config file!");
|
$l->sp(
|
|
"File checksum '" . $results->{'File Checksum'} .
|
|
"does not match config file '" . $conf->{'file_cksum'} . "'!"
|
|
);
|
next;
|
next;
|
}
|
}
|
$l->p("File checksum ($results->{'File Checksum'}) " .
|
$l->p("File checksum matches . . . ");
|
"matches ($conf->{'file_cksum'})");
|
|
|
|
if ($results->{'File Length'} !~ /^$conf->{'file_size'} bytes/) {
|
if ($results->{'File Length'} !~ /^$conf->{'file_size'} bytes/) {
|
$l->sp("File length does not match config file!");
|
$l->sp(
|
|
"File length '" . $results->{'File Length'} .
|
|
"does not match config file '" . $conf->{'file_size'} . " bytes'!"
|
|
);
|
next;
|
next;
|
}
|
}
|
$l->p("File length ($results->{'File Length'}) " .
|
$l->p("File length matches . . . ");
|
"matches ($conf->{'file_size'})");
|
|
|
|
if ( uc($results->{'File Name'}) ne uc($conf->{'file_name'}) ) {
|
if ( uc($results->{'File Name'}) ne uc($conf->{'file_name'}) ) {
|
$l->sp("File name does not match config file!");
|
$l->sp(
|
|
"File name '" . $results->{'File Name'} .
|
|
"' does not match config file '" . $conf->{'file_name'} . "'!"
|
|
);
|
next;
|
next;
|
}
|
}
|
$l->p("File name ($results->{'File Name'}) " .
|
$l->p("File name matches . . . ");
|
"matches ($conf->{'file_name'})");
|
|
|
|
$l->p("Updating flash (new checksum '$conf->{'cksum'}')");
|
$l->p("Updating flash (new checksum '$conf->{'cksum'}')");
|
unless ($results = $t->updateflash(
|
unless ($results = $t->updateflash(
|
|
|
next if /^#/;
|
next if /^#/;
|
next if /^$/;
|
next if /^$/;
|
if ($in_ip_list) {
|
if ($in_ip_list) {
|
|
s/\s+//g; # Whitespace is a no no
|
|
|
if (/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.)(\d{1,3})-(\d{1,3})/) {
|
if (/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.)(\d{1,3})-(\d{1,3})/) {
|
push @{ $conf{'ips'} }, $1 . $_ for ($2..$3);
|
push @{ $conf{'ips'} }, $1 . $_ for ($2..$3);
|
} else {
|
} else {
|
|
|
next;
|
next;
|
}
|
}
|
|
|
|
$key =~ s/^\s+//;
|
|
$key =~ s/\s+$//;
|
|
$val =~ s/^\s+//;
|
|
$val =~ s/\s+$//;
|
|
|
$conf{ lc($key) } = $val;
|
$conf{ lc($key) } = $val;
|
}
|
}
|
}
|
}
|
|
|
my $banner = shift || $PRIVATE{'login_banner'};
|
my $banner = shift || $PRIVATE{'login_banner'};
|
|
|
my ($type, $ver) = $banner =~
|
my ($type, $ver) = $banner =~
|
/Welcome to Trango Broadband Wireless (\w+)-(.+)$/i;
|
/Welcome to Trango Broadband Wireless (\S+)[\s-]+(.+)$/i;
|
|
|
$self->host_type($type);
|
$self->host_type($type);
|
$self->firmware_version($ver);
|
$self->firmware_version($ver);
|