Hi, I have an Edimax broadband router at home and occasionally I would like to access it programmatically. So I started to write a module that can access the web interface of this device. Something like this:
=head1 SYNOPSIS my $edimax = Edimax->login(host => '192.168.1.1', username => 'admin', password => '1234'); my $ref = $edimax->internet_connection; print $ref->{"IP Address"} print $ref->{"Default Gateway"} my @clients = $edimax->get_active_dhcp_clients; foreach my $c (@clients) { print $c->{"IP Address"}; } my $text = $edimax->get_system_log; $edimax->reset; =cut So I wonder if you know any better way to do it? What do you think about the API? Are there modules on CPAN that do similar things to other similar devices? I know Net::Telnet::Cisco could be in this group but it uses the telnet interface, this Edimax does not seem to have it enabled. I also found RAS::AS5200 that also uses Net::Telnet and Netgear::WGT624 http://search.cpan.org/dist/Netgear-WGT624/ which is a web interface reader. That's probably the same as I am planning to do. Finally what should be the name of the module? Gabor ps. while looking at the source of its web pages I got a bit scared. If this is how their code looks like in the web interface, how much can I trust their router and firewall? Not a bit, right? Look at the "Internet Connection" status page. <form name="internetSta"> <table width=400 border="0"> <tr> <td width=40% class="table1"><font size=2><b>Attain IP Protocol : </b></td> <td width=60% class="table2"><font size=2> L2TP connected </td> <input type="hidden" name="ip" value="192.117.99.100 "> <input type="hidden" name="dns1" value="62.213.101.9 "> <input type="hidden" name="dns2" value="198.113.16.25 "> <input type="hidden" name="gw" value="170.41.121.1"> </tr> <tr> <td class="table1"><font size=2><b>IP Address : </b></td> <td class="table2"><font size=2> 192.117.99.100 </td> </tr> <tr> <td class="table1"><font size=2><b>Subnet Mask : </b></td> <td class="table2"><font size=2> 255.255.255.255 </td> </tr> <tr> <td class="table1"><font size=2><b>Default Gateway : </b></td> <td class="table2"><script> var check = document.internetSta.ip.value; if ( check != "") document.write('<font size=2> '+document.internetSta.gw.value); else document.write('<font size=2> </td>'); </script> </tr> <tr> <td class="table1"><font size=2><b>MAC Address : </b></td> <td class="table2"><font size=2> 00:0E:2A:1C:37:1E </td> </tr> <tr> <td class="table1"><font size=2><b>Primary DNS : </b></td> <td class="table2"><script> if ( check != "") document.write('<font size=2> '+document.internetSta.dns1.value); else document.write('<font size=2> '); </script></td> </tr> <tr> <td class="table1"><font size=2><b>Secondary DNS : </b></td> <td class="table2"><script> if ( check != "") document.write('<font size=2> '+document.internetSta.dns2.value); else document.write('<font size=2> '); </script></td> </tr> </table> </form>