#!/usr/bin/perl

################################################################
#                                                              #
# Toggle WLAN on or off on a TP-Link TL-WA901N(D) Access Point #
#                                                              #
# 2013-09-09, Leonhard Fellermayr <leo@fellermayr.name>        #
#                                                              #
################################################################

use LWP::UserAgent;
use HTTP::Request::Common qw(GET);

# --- please set the following

$user = 'admin';
$pass = '***secret***';
$ip   = '192.168.1.1';

$ua = LWP::UserAgent->new;

my $req;

# --- change state as requested

if (@ARGV[0] eq 'on')
{
  print "WLAN einschalten...\n";
  $req = GET 'http://' . $ip . '/userRpm/WlanNetworkRpm.htm?operMode=0&ssid1=MyWLAN&region=32&channel=15&mode=5&chanWidth=2&rate=71&ap=1&broadcast=2&brlssid=&brlbssid=&brlchannel=0&keytype=1&wepindex=1&authtype=1&keytext=&Save=Save';
}
elsif (@ARGV[0] eq 'off')
{
  print "WLAN ausschalten...\n";
  $req = GET 'http://' . $ip . '/userRpm/WlanNetworkRpm.htm?operMode=0&ssid1=MyWLAN&region=32&channel=15&mode=5&chanWidth=2&rate=71&broadcast=2&brlssid=&brlbssid=&brlchannel=0&keytype=1&wepindex=1&authtype=1&keytext=&Save=Save';
}
else
{
  die 'Wrong parameter. Only can use "on" or "off".';
}

$req->authorization_basic($user, $pass);
$res = $ua->request($req);

# --- now do reboot of AP

print "Rebooting (can take a moment)...\n";

$req = GET 'http://' . $ip . '/userRpm/SysRebootRpm.htm?Reboot=Reboot';
$req->authorization_basic($user, $pass);
$res = $ua->request($req);
