#!/usr/bin/php
<?php
//Variable definition
//
//router
$login = 'admin';
$password = 'admin';
$ip = '192.168.1.1';
//
//wifi
$wifi = array(
// /!\ don't touch this /!\
'wlSsidIdx' => 0,
'wlEnbl' => 1,
'wlCountry' => 'GB',
'wlBasicRate' => '',
//ssid name
'wlSsid' => 'monSuperRéseauxWifi',
//0 = visible, 1 = hide
'wlHide' => 0,
//number of chanel or 0 for auto selection
'wlChannel' => 1,
//Transmission Speed
'wlRate' => 0,
//wifi mode 0=802.11b only, 1=Mixed 802.11g and 802.11b, 4=802.11g only
'wlgMode' => 4,
'wlWpaGTKRekey' => 750,
'wlWpa' => 'aes',
'wlAuthMode' => 'psk2',
//authentification mode : 0 = none, 1 = wep, 2 = auto (wpa or wpa2), 3 = wpa2 only, 4 = wpa only
'wlAuth' => 0,
'wlWpaPsk' => 'masuperclefdelamortquitue',
'wlWep' => 'disabled',
'wlPreauth' => 0
);
/////////////////////
class cli
{
const LINE_BREAK = "\r\n";
const LINE_NO_BREAK = '';
const LINE_RETURN = "\r";
const LINE_NOTHING = ' ';
protected $_TEMP = 250000;//1/4 of seconds
protected $_MULTIPLICATOR = 4; //1/4 -> 4
protected $_LENGTH = 60;
protected function _write_empty_space($lng)
{
while($lng < $this->_LENGTH)
{
echo ' ';
$lng++;
}
}
protected function _echo($message, $break)
{
echo $message, $break;
if ($break == self::LINE_NO_BREAK)
{
$this->_write_empty_space(strlen($message));
}
}
protected function _sleep($second)
{
$second = $second * $this->_MULTIPLICATOR;
$i = 0;
$j = 0;
while ($i < $second)
{
usleep($this->_TEMP);
if ($i % 4)
{
$this->_echo('.', self::LINE_NOTHING);
$i++;
}
else
{
if($j % 2)
{
$this->_echo('', self::LINE_RETURN);
$this->_write_empty_space(0);
$this->_echo('', self::LINE_RETURN);
}
else
{
$this->_echo('Please wait', self::LINE_NOTHING);
$i++;
}
$j++;
}
}
$this->_echo('', self::LINE_RETURN);
}
}
class wifi extends cli
{
protected $_ch;
protected $_baseUrl;
public function __construct($wifi, $ip, $login, $password, $activation)
{
$this->_baseUrl = 'http://' . $ip . '/';
$this->_ch = curl_init();
curl_setopt($this->_ch, CURLOPT_HEADER, false);
curl_setopt($this->_ch, CURLOPT_RETURNTRANSFER, true);
$this->_auth($login, $password);
$activation = intval($activation);
if ($activation == 1)
{
$this->_activation($wifi);
}
else
{
$this->_disactivation($wifi);
}
}
public function __destruct()
{
curl_close($this->_ch);
}
protected function _activation($wifi)
{
$this->_echo('Activation ...', self::LINE_NO_BREAK);
$wifi['wlBasicRate'] = ($wifi['wlgMode'] == 4) ? 'wifi2' : 'default';
$this->_doQuery($this->_baseUrl . 'wirelesssetting.wl?' . http_build_query($wifi, '', '&'));
$this->_sleep(5);
}
protected function _disactivation($wifi)
{
$this->_echo('Disactivation ...', self::LINE_NO_BREAK);
$wifiDown = array(
'wlEnbl' => 0,
'wlSsidIdx' => $wifi['wlSsidIdx'],
'wlCountry' => $wifi['wlCountry'],
);
$this->_doQuery($this->_baseUrl . 'wirelesssetting.wl?' . http_build_query($wifiDown, '', '&'));
$this->_sleep(5);
}
protected function _doQuery($url, $post = '')
{
curl_setopt($this->_ch, CURLOPT_URL, $url);
if (!empty($post))
{
curl_setopt($this->_ch, CURLOPT_POST, true);
curl_setopt($this->_ch, CURLOPT_POSTFIELDS, $post);
}
else
{
curl_setopt($this->_ch, CURLOPT_HTTPGET, true);
}
if(curl_exec($this->_ch) === false)
{
$this->_echo('', self::LINE_BREAK);
$this->_echo('Error Curl : ' . curl_error($this->ch), self::LINE_BREAK);
}
else
{
$this->_echo('DONE', self::LINE_BREAK);
}
}
protected function _auth($login, $password)
{
$this->_echo('Authentification ...', self::LINE_NO_BREAK);
$post = array(
'username' => $login,
'password' => $password
);
$this->_doQuery($this->_baseUrl . 'index.html', http_build_query($post, '', '&'));
}
}
if ($argc != 2)
{
echo ' synthaxe : scriptname.php 1 for activation or 0 for desactivation ';
exit();
}
new wifi($wifi, $ip, $login, $password, $argv[1]);
# EOF |