Files
provision_sccp/tools/ATA-186_188/atapost.pl
Diederik de Groot 82b5aadc13 Initial check-in
2017-11-13 18:15:58 +01:00

221 lines
5.4 KiB
Perl
Executable File

#!/usr/bin/env perl
#
# 05/02/01 msadikun - initial revision
# 11/25/03 budi - add -UIPassword to post to protected page.
# add -xml to get xml page
#
######################################################
#-How to use: ./atapost.pl -rxcodec=3 -txcodec=1
######################################################
use HTTP::Request::Common;
use LWP::UserAgent;
&GetArg();
if ($xml) {
&GetXML();
}
else {
&GetConfig();
&PostConfig();
}
######################################################
# GetArg
######################################################
sub GetArg
{
my ($elem,$c1,$c2);
&Usage() if ($#ARGV < 1); #-no argument
$IPaddress = $ARGV[0];
$URL = "http://$IPaddress/dev";
$URLXML = "http://$IPaddress/dev.xml";
for $elem (@ARGV) {
($c1,$c2) = split (/=/,$elem);
&Usage() if (($c1 =~ "-help") || ($c1 =~ "-h\$"));
$c1 =~ s/-//; # remove -
$c1 =~ tr/A-Z/a-z/; # to lowercase
if ($c1 =~ "uipassword") {
$UIPassword=$c2;
}
elsif ($c1 =~ "xml") {
$xml=1;
}
else {
$cmd_arg{$c1}=$c2 if ($c2); # if $c2 is not junk,
}
}
}
######################################################
# Usage
######################################################
sub Usage
{
print "
Usage:
------
Program $0 Version 2.0
is to post parameter/value to one ATA186 via http protocol, given it's IP.
Usage:
------
1. $0 [-h]elp
2. $0 <ipaddress> <-UIPassword=secret> <-field1=one> <-field2=two> <-...>
3. $0 <ipaddress> -xml <-UIPassword=secret>
1. Get Help Information
-h: This help information
2, Post parameter/value pairs
<ipaddress>: it's in the form of X.Y.Z.W
<-field1=..>: value of \"-field1\" to change
Example
To change ata with ip=192.168.2.119 to use codec G711:
unix-prompt%> $0 192.168.2.119 -txcodec=1 -rxcodec=1
Establishing connection...
Connected.
Changing TxCodec to new value = 1
Changing RxCodec to new value = 1
done.
NOTE: require version 2.0 or later firmware
3. Get XML page
Get XML formatted ATA configuration page.
NOTE: require version 3.0 or later firmware
NOTE: specify password via -UIPassword option if ATA is password protected.
";
exit 1;
}
######################################################
# GetConfig
######################################################
sub GetConfig
{
my ($elem,$c1,$junk,$req,$res);
$ua=LWP::UserAgent->new;
if ($UIPassword) {
$req = (POST "$URL");
$req->content_type ('application/x-www-form-urlencoded');
#print "ChangeUIPasswd=$UIPassword&ChangeUIPasswd=&ChangeUIPasswd=&apply=apply";
$req->content("ChangeUIPasswd=$UIPassword&ChangeUIPasswd=&ChangeUIPasswd=&apply=apply");
}
else {
if ($IPaddress) {
$req= (GET "$URL");
}
else {
print "IP address unspecified"; exit 1;
}
}
print "Establishing connection...\n";
$res=$ua->request($req);
if ($res->is_success) { print "Connected to $IPaddress.\n"; }
else { print "ERROR: Problem retrieving data from $IPaddress\n"; exit 1; }
@content=split (/name="/,$res->as_string);
for $elem (@content) {
if ($elem =~ /Password Protected/) {
print "ERROR: Please specify valid password with -uipassword=secret\n";
exit 1;
}
($c1,$junk)=split (/">/,$elem); #-strip junks
($name,$value)=split (/" Value="/,$c1); #-only care about name & value field
$lowercase=$name;
($lowercase) =~ tr/A-Z/a-z/; #-this will allow lowercase in cmd argument
if ($cmd_arg{$lowercase}) {
print "Changing $name, new value = $cmd_arg{$lowercase}...\n";
$fields=sprintf ("%s%s",$fields,"$name=$cmd_arg{$lowercase}&");
}
else {
#print "$name=$value\n";
$fields=sprintf ("%s%s",$fields,"$name=$value&");
}
}
chop ($fields); #-take out the last &
}
######################################################
# PostConfig
######################################################
sub PostConfig
{
my ($ua,$req,$res);
$ua=LWP::UserAgent->new;
if ($IPaddress) {
$req= (POST "$URL");
}
else {
print "don't know what ip address"; exit 1;
}
$req->content_type ('application/x-www-form-urlencoded');
$req->content("$fields"); #-fields that I will post
$res=$ua->request($req);
if ($res->is_success) {
#print $res->content;
#print $res->as_string; #-print to screen if debugging
}
else {
#print $res->error_as_HTML;
print "ERROR: connection problem, perhaps box with $IPaddress is not ready?\n";
}
print "Done.\n";
}
######################################################
# GetXML
######################################################
sub GetXML
{
my ($elem,$c1,$junk,$req,$res);
$ua=LWP::UserAgent->new;
if ($UIPassword) {
$req = (POST "$URLXML");
$req->content_type ('application/x-www-form-urlencoded');
print "post $URLXML\n";
$req->content("ChangeUIPasswd=$UIPassword&ChangeUIPasswd=&ChangeUIPasswd=&apply=apply");
}
else {
print "GET $URLXML\n";
if ($IPaddress) {
$req= (GET "$URLXML");
}
else {
print "IP address unspecified"; exit 1;
}
}
print "Establishing connection...\n";
$res=$ua->request($req);
if ($res->is_success) { print "Connected to $IPaddress.\n"; }
else { print "ERROR: Problem retrieving data from $IPaddress\n"; exit 1; }
if ($res->as_string =~ /Password Protected/) {
print "ERROR: Please specify valid password with -uipassword=secret\n";
exit 1;
}
else {
print $res->as_string;
}
}