<?php
+/**
+ * @author Jan Altensen (Stricted)
+ * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @copyright 2015 Jan Altensen (Stricted)
+ */
class speedport {
/**
* password-challenge
* router url
* @var string
*/
- private $url = 'http://speedport.ip/';
+ private $url = '';
- public function __construct ($password) {
+ public function __construct ($password, $url = 'http://speedport.ip/') {
+ $this->url = $url;
$this->getChallenge();
if (empty($this->challenge)) {
* Requests the password-challenge from the router.
*/
public function getChallenge () {
- $url = 'data/Login.json';
+ $path = 'data/Login.json';
$fields = array('csrf_token' => 'nulltoken', 'showpw' => 0, 'challengev' => 'null');
- $data = $this->sentRequest($url, $fields);
+ $data = $this->sentRequest($path, $fields);
$data = json_decode($data['body'], true);
if ($data[1]['varid'] == 'challengev') {
$this->challenge = $data[1]['varvalue'];
* @return boolean
*/
public function login ($password) {
- $url = 'data/Login.json';
+ $path = 'data/Login.json';
$this->hash = hash('sha256', $this->challenge.':'.$password);
$fields = array('csrf_token' => 'nulltoken', 'showpw' => 0, 'password' => $this->hash);
- $data = $this->sentRequest($url, $fields);
+ $data = $this->sentRequest($path, $fields);
$json = json_decode($data['body'], true);
if ($json[15]['varid'] == 'login' && $json[15]['varvalue'] == 'success') {
if (isset($data['header']['Set-Cookie']) && !empty($data['header']['Set-Cookie'])) {
* @return array
*/
public function logout () {
- $url = 'data/Login.json';
+ $path = 'data/Login.json';
$fields = array('logout' => 'byby');
- $data = $this->sentRequest($url, $fields);
+ $data = $this->sentRequest($path, $fields);
// reset challenge and session
$this->challenge = '';
$this->session = '';
* @return array
*/
public function reboot () {
- $url = 'data/Reboot.json';
+ $path = 'data/Reboot.json';
$fields = array('csrf_token' => 'nulltoken', 'showpw' => 0, 'password' => $this->hash, 'reboot_device' => 'true');
$cookie = 'challengev='.$this->challenge.'; '.$this->session;
- $data = $this->sentRequest($url, $fields, $cookie);
+ $data = $this->sentRequest($path, $fields, $cookie);
$json = json_decode($data['body'], true);
return $json;
}
+ /**
+ * change dsl connection status
+ *
+ * @param string $status
+ */
+ public function changeConnectionStatus ($status) {
+ $path = 'data/Connect.json';
+
+ if ($status == 'online' || $status == 'offline') {
+ $fields = array('csrf_token' => 'nulltoken', 'showpw' => 0, 'password' => $this->hash, 'req_connect' => $status);
+ $cookie = 'challengev='.$this->challenge.'; '.$this->session;
+ $this->sentRequest($path, $fields, $cookie);
+ }
+ else {
+ throw new Exception();
+ }
+ }
+
/**
* return the given json as array
*
* @return array
*/
public function getData ($file) {
- $url = 'data/'.$file.'.json';
+ $path = 'data/'.$file.'.json';
$fields = array();
$cookie = 'challengev='.$this->challenge.'; '.$this->session;
- $data = $this->sentRequest($url, $fields, $cookie);
+ $data = $this->sentRequest($path, $fields, $cookie);
if (empty($data['body'])) {
throw new Exception('unable to get '.$file.' data');
/**
* sends the request to router
*
- * @param string $url
+ * @param string $path
* @param array $fields
* @param string $cookie
* @return array
*/
- private function sentRequest ($url, $fields = array(), $cookie = '') {
- $url = $this->url.$url;
+ private function sentRequest ($path, $fields = array(), $cookie = '') {
+ $url = $this->url.$path;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);