1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
<?php
/**
* Functions to access the router
*
* PHP version 5
*
* @category Tools
* @package linksys-wrt3g-tools
* @author Christian Weiske <cweiske@cweiske.de>
* @license AGPL v3
* @link http://cweiske.de/linksys-wrt3g-tools.htm
*/
require_once 'HTTP/Request2.php';
class Wrt3g
{
protected static $arTranslations = array(
'GPRS_MSG.WWBEAR' => 'type',
'GPRS_MSG.NNAME' => 'network',
'GPRS_MSG.STRENGTH' => 'signal strength',
'GPRS_MSG.ACQUIRING' => 'aquiring',
'GPRS_MSG.WWBEAR_GPRS' => 'GPRS',
'GPRS_MSG.WWBEAR_UMTS' => 'UMTS',
);
/**
* Reboots the router.
*
* @return HTTP_Request2_Response
*
* @throws Exception When the router can't be reached, or unauthorized
*/
function reboot()
{
$r = new HTTP_Request2();
$r->setMethod(HTTP_Request2::METHOD_POST);
$r->setUrl(
'http://'
. $GLOBALS['linksys-wrt3g-tools']['user']
. ':' . $GLOBALS['linksys-wrt3g-tools']['password']
. '@' . $GLOBALS['linksys-wrt3g-tools']['ip']
. '/apply.cgi'
);
$r->addPostParameter('action', 'Reboot');
$r->addPostParameter('submit_button', 'Diagnostics');
$r->addPostParameter('wait_time', 1);
$resp = $r->send();
return $resp;
}//function reboot()
/**
* Retrieves status information about the router
*
* @return array Array with several key-value pairs
* connection => connecting, disconnected, connected
*
* @throws Exception When the router can't be reached, or unauthorized
*/
function getStatus()
{
$arRetval = array();
$strUrlBase = 'http://'
. $GLOBALS['linksys-wrt3g-tools']['user']
. ':' . $GLOBALS['linksys-wrt3g-tools']['password']
. '@' . $GLOBALS['linksys-wrt3g-tools']['ip'];
/**
* Connection status
*/
$r = new HTTP_Request2();
$r->setMethod(HTTP_Request2::METHOD_GET);
$r->setUrl($strUrlBase . '/index_wstatus2.asp');
$resp = $r->send();
echo $resp->getStatus() . ' ' . $resp->getReasonPhrase() . "\n";
$body = $resp->getBody();
preg_match('/var status2 = "(.+)"/', $body, $arMatches);
$strStatus = $arMatches[1];
//Connecting
//Disconnected
//Connected
$arRetval['connection'] = strtolower($strStatus);
/**
* GPRS/UMTS Status
*/
$r->setUrl($strUrlBase . '/index_wstatus1.asp');
$resp = $r->send();
$body = $resp->getBody();
$arRetval = array_merge($arRetval, $this->parseStatus($body));
return $arRetval;
}//function getStatus()
/**
* Parses the body and returns extracted values
*
* @param string $body HTML document to parse
*
* @return array Array of key-value pairs
*/
function parseStatus($body)
{
$arRetval = array();
$arMatches = array();
preg_match_all('#>Capture\(([^)]+)\)</#', $body, $arMatches);
$arData = array();
reset($arMatches[1]);
while (current($arMatches[1])) {
$key = current($arMatches[1]);
$value = next($arMatches[1]);
if (isset(self::$arTranslations[$key])) {
$key = self::$arTranslations[$key];
}
if (isset(self::$arTranslations[$value])) {
$value = self::$arTranslations[$value];
}
$arRetval[$key] = $value;
next($arMatches[1]);
}
return $arRetval;
}
}
?>
|