Jump to content

[Perl/CGI] How to POST from within a CGI script?


Recommended Posts

I got a router and a http server in the same subnet. I need the server configures the router from within a CGI script.

The router uses CGI also (hardcoded). Simple http/form only works from local subnet as shown below:

<HTML>
<HEAD>
<TITLE>DI-604</TITLE>
<META HTTP-EQUIV=Content-Type CONTENT="text/html; charset=iso-8859-1">
<script language="JavaScript">
function SetTime(m){
var f = document.getElementById("frmRule")
var MinMilli = 1000 * 60
var HrMilli = MinMilli * 60
var DyMilli = HrMilli * 24
var d = new Date()

   f.hour1.selectedIndex = d.getHours() % 12
   f.min1.selectedIndex = Math.floor(d.getMinutes() / 5)
   f.am1.selectedIndex = Math.floor(d.getHours() / 12)
   f.day1.selectedIndex = d.getDay()

m = m + 4
d.setTime(d.getTime() + MinMilli * m)

   f.hour2.selectedIndex = d.getHours() % 12
   f.min2.selectedIndex = Math.floor(d.getMinutes() / 5)
   f.am2.selectedIndex = Math.floor(d.getHours() / 12)
   f.day2.selectedIndex = d.getDay()
}
</script>
</HEAD>
<BODY BGCOLOR=#FFFFFF leftmargin="0" topmargin="0" onLoad="SetTime(60)">
<!-- http://192.168.0.1/rule.cgi?
enable=1&serial=6&priorList=&editRow=10&delrow=0&name=Slabo&
action=0&srcIface=0&srcIP1=192.168.0.102&srcIP2=&dstIface=1&
dstIP1=%2A&dstIP2=&proto=0&port1=%2A&port2=&schd=1&
hour1=7&min1=20&am1=1&
hour2=8&min2=40&am2=1&
day1=4&day2=4
-->
<form action="http://admin:xxxxx@192.168.0.1/rule.cgi" method="post" id="frmRule">
<input type="radio" name="enable" value="1" checked="checked">
Enabled
<input type="radio" name="enable" value="0">
Disabled
<br>
<input type="hidden" name="serial" value="6">
<input type="hidden" name="priorList" value="">
<input type="hidden" name="editRow" value="10">
<input type="hidden" name="delrow" value="0">
<input type="text" name="name" size="20" maxlength="31" value="Slabo">
<input type="reset" value="Clear" onClick="RuleNew()" name="clear">
<br>
<input type="radio" value="0" name="action"  checked="checked">
Allow
<input type="radio" name="action" value="1">
Deny</font></td>
<br>
<select size="1" name="srcIface">
  <option value="-1">*</option>
  <option value="0" selected="selected">LAN</option>
  <option value="1">WAN</option>
</select>
<input type="text" name="srcIP1" size="12" value="192.168.0.102" maxlength="15">
<input type="text" name="srcIP2" size="12" value="" maxlength="15">
<br>
<select size="1" name="dstIface">
  <option value="-1">*</option>
  <option value="0">LAN</option>
  <option value="1" selected="selected">WAN</option>
</select>
<input type="text" name="dstIP1" size="12" maxlength="15" value="*">
<input type="text" name="dstIP2" size="12" maxlength="15" value="">
<select size="1" name="proto">
  <option value="6">TCP</option>
  <option value="17">UDP</option>
  <option value="1">ICMP</option>
  <option value="0" selected="selected">*</option>
</select>
<input type="text" name="port1" size="2" maxlength="5" value="*">
-
<input type="text" name="port2" size="2" maxlength="5" value="">
<br>
<input type="radio" name="schd" value="0">
Always
<a href="javascript:SetTime(30)">0:30</a>
<a href="javascript:SetTime(60)">1:00</a>
<a href="javascript:SetTime(90)">1:30</a>
<a href="javascript:SetTime(120)">2:00</a>
<br>
<input type="radio" name="schd" value="1" checked="checked">
From
<select size=1 name=hour1>
  <option value=0>00</option>
  <option value=1>01</option>
  <option value=2>02</option>
  <option value=3>03</option>
  <option value=4>04</option>
  <option value=5>05</option>
  <option value=6>06</option>
  <option value=7>07</option>
  <option value=8>08</option>
  <option value=9>09</option>
  <option value=10>10</option>
  <option value=11>11</option>
</select>
:
<select size=1 name=min1>
  <option value="0">00</option>
  <option value="5">05</option>
  <option value="10">10</option>
  <option value="15">15</option>
  <option value="20">20</option>
  <option value="25">25</option>
  <option value="30">30</option>
  <option value="35">35</option>
  <option value="40">40</option>
  <option value="45">45</option>
  <option value="50">50</option>
  <option value="55">55</option>
</select>
<select size=1 name=am1>
  <option value=0>AM</option>
  <option value=1>PM</option>
</select>
to
<select size=1 name=hour2>
  <option value=0>00</option>
  <option value=1>01</option>
  <option value=2>02</option>
  <option value=3>03</option>
  <option value=4>04</option>
  <option value=5>05</option>
  <option value=6>06</option>
  <option value=7>07</option>
  <option value=8>08</option>
  <option value=9>09</option>
  <option value=10>10</option>
  <option value=11>11</option>
</select>
:
<select size=1 name=min2>
  <option value="0">00</option>
  <option value="5">05</option>
  <option value="10">10</option>
  <option value="15">15</option>
  <option value="20">20</option>
  <option value="25">25</option>
  <option value="30">30</option>
  <option value="35">35</option>
  <option value="40">40</option>
  <option value="45">45</option>
  <option value="50">50</option>
  <option value="55">55</option>
</select>
<select size=1 name=am2>
  <option value=0>AM</option>
  <option value=1>PM</option>
</select>
<br>
<select size=1 name=day1>
  <option value=0>Sun</option>
  <option value=1>Mon</option>
  <option value=2>Tue</option>
  <option value=3>Wed</option>
  <option value=4>Thr</option>
  <option value=5>Fri</option>
  <option value=6>Sat</option>
</select>
to
<select size=1 name=day2>
  <option value=0>Sun</option>
  <option value=1>Mon</option>
  <option value=2>Tue</option>
  <option value=3>Wed</option>
  <option value=4>Thr</option>
  <option value=5>Fri</option>
  <option value=6>Sat</option>
</select>
<br>
<a href="javascript:document.forms[0].submit()"><img src="apply_p.jpg" width="51" height="52" border="0"></a>
<a href="javascript:document.forms[0].reset()"><img src="cancel_p.jpg" width="51" height="52" border="0"></a>

</form>
</BODY>
</HTML>

Is there anything simple like a call to other CGI?

NPH- Proxy is the only way?

Link to comment
Share on other sites

  • 2 weeks later...

Found my answer here

#!/usr/bin/perl -w 

use strict;
use CGI::Carp qw(fatalsToBrowser);

use LWP::UserAgent;
use HTTP::Request;

my $url = "http://misitio.com/cgi-bin/datos.cgi";
my $query = "nombre=Uriel&apellido=Lizama&Edad=18";


my $ua = LWP::UserAgent->new;
$ua->agent("Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)");

my $req = HTTP::Request->new(POST => $url);
$req->content_type('application/x-www-form-urlencoded');
$req->content($query);

my $response = $ua->request($req);
my $content = $response->content(); #contenido de la respuesta

print "Content-type: text/html\n\n";
print $content;

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...