Compare commits

...

6 Commits

Author SHA1 Message Date
malle-pietje
2c035878ed - added stat_speedtest_results() method/function to collect results from scheduled speed tests
- added list_backups() method/function to list auto backups
2018-08-28 14:44:49 +02:00
malle-pietje
de407e6ac0 cleanup of merge conflicts 2018-08-19 12:13:53 +02:00
malle-pietje
006702db0c Merge branch 'master' of github.com:Art-of-WiFi/UniFi-API-client
resilve merge conflicts
2018-08-19 12:02:32 +02:00
malle-pietje
6f1b75b89a updated comments for stats-related methods/function to make clear start/end values must be provided in milliseconds
changed use of objects as payload input for json_encode, to associative arrays for consistency
added functions/methods for firewall groups: list_firewallgroups(), create_firewallgroup(), edit_firewallgroup(), delete_firewallgroup()
added checks for required boolean parameters
2018-08-19 12:00:19 +02:00
Alex Paredes Martinez
287c67c39e Dev edit client fixedip (#24)
* Added Fixed ip function

Sets the value of use_fixedip and fixed_ip fields of a specific client.

* Added network_id field

-Optional fields network_id and fixed_ip
-If use_fixedip is false, network_id and fixed_ip will be ignored
-If else, send the data if defined (if not, previous values)

* fix typo (forgot to includo json_encode)

* Get specific network data by its ID
2018-08-19 11:59:03 +02:00
malle-pietje
871ab82608 added user/client device stats methods/functions:
stat_5minutes_user()
stat_hourly_user()
stat_daily_user()
added example to demonstrate use of these new functions
2018-07-02 15:06:31 +02:00
4 changed files with 338 additions and 57 deletions

View File

@@ -1,6 +1,6 @@
## UniFi Controller API client class
A PHP class which provides access to Ubiquiti's **UniFi Controller API**, versions 4.x.x and 5.x.x of the UniFi Controller software are supported (version 5.7.23 has been confirmed to work). It's a standalone version of the class which is used in our API browser tool which can be found [here](https://github.com/Art-of-WiFi/UniFi-API-browser).
A PHP class which provides access to Ubiquiti's **UniFi Controller API**, versions 4.X.X and 5.X.X of the UniFi Controller software are supported (version 5.8.24 has been confirmed to work). It's a standalone version of the class which is used in our API browser tool which can be found [here](https://github.com/Art-of-WiFi/UniFi-API-browser).
This class can be installed using composer/[packagist](https://packagist.org/packages/art-of-wifi/unifi-api-client) for easy inclusion in your projects.
@@ -15,23 +15,27 @@ The class currently supports the following functions/methods to get/post/put/del
- authorize_guest()
- block_sta()
- count_alarms()
- create_firewallgroup()
- create_hotspotop()
- create_network()
- create_radius_account()
- create_site()
- create_usergroup()
- create_user()
- create_voucher()
- create_wlan()
- delete_device()
- delete_firewallgroup()
- delete_network()
- delete_radius_account()
- delete_site()
- delete_usergroup()
- delete_wlan()
- disable_ap()
- edit_firewallgroup()
- edit_usergroup()
- extend_guest_validity()
- forget_sta() (supported on controller version 5.9.* and higher)
- forget_sta() (supported on controller version 5.9.X and higher)
- invite_admin()
- revoke_admin()
- led_override()
@@ -48,6 +52,7 @@ The class currently supports the following functions/methods to get/post/put/del
- list_dynamicdns()
- list_events()
- list_extension()
- list_firewallgroups()
- list_guests()
- list_health()
- list_hotspotop()
@@ -103,12 +108,15 @@ The class currently supports the following functions/methods to get/post/put/del
- stat_allusers()
- stat_auths()
- stat_client()
- stat_5minutes_aps() (supported on controller version 5.5.* and higher)
- stat_5minutes_aps() (supported on controller version 5.5.X and higher)
- stat_hourly_aps()
- stat_daily_aps()
- stat_5minutes_site() (supported on controller version 5.5.* and higher)
- stat_5minutes_site() (supported on controller version 5.5.X and higher)
- stat_hourly_site()
- stat_daily_site()
- stat_5minutes_user (supported on controller version 5.7.X and higher)
- stat_hourly_user() (supported on controller version 5.7.X and higher)
- stat_daily_user() (supported on controller version 5.7.X and higher)
- stat_payment()
- stat_sessions()
- stat_sites()
@@ -237,7 +245,7 @@ If you would like to contribute code (improvements), please open an issue and in
This class is based on the work done by the following developers:
- domwo: http://community.ubnt.com/t5/UniFi-Wireless/little-php-class-for-unifi-api/m-p/603051
- fbagnol: https://github.com/fbagnol/class.unifi.php
- and the API as published by Ubiquiti: https://dl.ubnt.com/unifi/5.7.23/unifi_sh_api
- and the API as published by Ubiquiti: https://dl.ubnt.com/unifi/5.8.24/unifi_sh_api
## Important Disclaimer

View File

@@ -1,4 +1,5 @@
## API client class usage examples
This directory contains some PHP code examples which demonstrate usage of the PHP API client class and can be used as a good starting point for your own custom code.
### Usage
@@ -6,6 +7,8 @@ This directory contains some PHP code examples which demonstrate usage of the PH
Copy the appropriate example file to your working directory together with a copy of the config.template.php file which should be renamed to config.php.
Then update the contents of your new config.php with your controller details and credentials and modify the example file as required to fit your needs.
Also make sure to update the path for the composer autoloader file (`vendor/autoload.php`) or the file containing the Class itself (`src/Client.php`) in your `require_once()` statement as required.
### Contribute
If you would like to share your own example file(s), please open an issue and include your code there or else create a pull request.

51
examples/list_user_stats.php Executable file
View File

@@ -0,0 +1,51 @@
<?php
/**
* PHP API usage example
*
* contributed by: Art of WiFi
* description: example basic PHP script to pull stats for s epcific user/client device from the UniFi controller and output in json format
*/
/**
* using the composer autoloader
*/
require_once('vendor/autoload.php');
/**
* include the config file (place your credentials etc. there if not already present)
* see the config.template.php file for an example
*/
require_once('config.php');
/**
* the site to use
*/
$site_id = '<enter your site id here>';
/**
* MAC address of client to fetch stats for
*/
$mac = '<MAC address>';
/**
* array of attributes to collect
* valid attributes:
* rx_bytes, tx_bytes, signal, rx_rate, tx_rate, rx_retries, tx_retries, rx_packets, tx_packets
*/
//$attribs = ['rx_bytes', 'tx_bytes', 'signal', 'rx_rate', 'tx_rate', 'rx_retries', 'tx_retries', 'rx_packets', 'tx_packets'];
$attribs = ['rx_bytes', 'tx_bytes'];
/**
* initialize the UniFi API connection class and log in to the controller and do our thing
*/
$unifi_connection = new UniFi_API\Client($controlleruser, $controllerpassword, $controllerurl, $site_id, $controllerversion, true);
$set_debug_mode = $unifi_connection->set_debug(false);
$loginresults = $unifi_connection->login();
//$data = $unifi_connection->stat_5minutes_user($mac, null, null, $attribs);
//$data = $unifi_connection->stat_hourly_user($mac, null, null, $attribs);
$data = $unifi_connection->stat_daily_user($mac, null, null, $attribs);
/**
* provide feedback in json format
*/
echo json_encode($data, JSON_PRETTY_PRINT);

View File

@@ -25,7 +25,7 @@ class Client
*/
protected $baseurl = 'https://127.0.0.1:8443';
protected $site = 'default';
protected $version = '5.4.16';
protected $version = '5.6.39';
protected $debug = false;
protected $is_loggedin = false;
private $cookies = '';
@@ -440,9 +440,9 @@ class Client
/**
* 5 minutes site stats method
* ---------------------------
* returns an array of 5 minutes stats objects for the current site
* optional parameter <start> = Unix timestamp in seconds
* optional parameter <end> = Unix timestamp in seconds
* returns an array of 5-minute stats objects for the current site
* optional parameter <start> = Unix timestamp in milliseconds
* optional parameter <end> = Unix timestamp in milliseconds
*
* NOTES:
* - defaults to the past 12 hours
@@ -465,8 +465,8 @@ class Client
* Hourly site stats method
* ------------------------
* returns an array of hourly stats objects for the current site
* optional parameter <start> = Unix timestamp in seconds
* optional parameter <end> = Unix timestamp in seconds
* optional parameter <start> = Unix timestamp in milliseconds
* optional parameter <end> = Unix timestamp in milliseconds
*
* NOTES:
* - defaults to the past 7*24 hours
@@ -487,8 +487,8 @@ class Client
* Daily site stats method
* ------------------------
* returns an array of daily stats objects for the current site
* optional parameter <start> = Unix timestamp in seconds
* optional parameter <end> = Unix timestamp in seconds
* optional parameter <start> = Unix timestamp in milliseconds
* optional parameter <end> = Unix timestamp in milliseconds
*
* NOTES:
* - defaults to the past 52*7*24 hours
@@ -508,9 +508,9 @@ class Client
/**
* 5 minutes stats method for a single access point or all access points
* ---------------------------------------------------------------------
* returns an array of 5 minutes stats objects
* optional parameter <start> = Unix timestamp in seconds
* optional parameter <end> = Unix timestamp in seconds
* returns an array of 5-minute stats objects
* optional parameter <start> = Unix timestamp in milliseconds
* optional parameter <end> = Unix timestamp in milliseconds
* optional parameter <mac> = AP MAC address to return stats for
*
* NOTES:
@@ -535,8 +535,8 @@ class Client
* Hourly stats method for a single access point or all access points
* ------------------------------------------------------------------
* returns an array of hourly stats objects
* optional parameter <start> = Unix timestamp in seconds
* optional parameter <end> = Unix timestamp in seconds
* optional parameter <start> = Unix timestamp in milliseconds
* optional parameter <end> = Unix timestamp in milliseconds
* optional parameter <mac> = AP MAC address to return stats for
*
* NOTES:
@@ -559,8 +559,8 @@ class Client
* Daily stats method for a single access point or all access points
* -----------------------------------------------------------------
* returns an array of daily stats objects
* optional parameter <start> = Unix timestamp in seconds
* optional parameter <end> = Unix timestamp in seconds
* optional parameter <start> = Unix timestamp in milliseconds
* optional parameter <end> = Unix timestamp in milliseconds
* optional parameter <mac> = AP MAC address to return stats for
*
* NOTES:
@@ -579,6 +579,114 @@ class Client
return $this->process_response($response);
}
/**
* 5 minutes stats method for a single user/client device
* ------------------------------------------------------
* returns an array of 5-minute stats objects
* required parameter <mac> = MAC address of user/client device to return stats for
* optional parameter <start> = Unix timestamp in milliseconds
* optional parameter <end> = Unix timestamp in milliseconds
* optional parameter <attribs> = array containing attributes (strings) to be returned, valid values are:
* rx_bytes, tx_bytes, signal, rx_rate, tx_rate, rx_retries, tx_retries, rx_packets, tx_packets
* default is ['rx_bytes', 'tx_bytes']
*
* NOTES:
* - defaults to the past 12 hours
* - only supported with UniFi controller versions 5.8.X and higher
* - make sure that the retention policy for 5 minutes stats is set to the correct value in
* the controller settings
* - make sure that "Clients Historical Data" has been enabled in the UniFi controller settings in the Maintenance section
*/
public function stat_5minutes_user($mac, $start = null, $end = null, $attribs = null)
{
if (!$this->is_loggedin) return false;
$end = is_null($end) ? ((time())*1000) : intval($end);
$start = is_null($start) ? $end-(12*3600*1000) : intval($start);
$attribs = is_null($attribs) ? ['time', 'rx_bytes', 'tx_bytes'] : array_merge(['time'], $attribs);
$json = ['attrs' => $attribs, 'start' => $start, 'end' => $end, 'mac' => $mac];
$json = json_encode($json);
$response = $this->exec_curl('/api/s/'.$this->site.'/stat/report/5minutes.user', 'json='.$json);
return $this->process_response($response);
}
/**
* Hourly stats method for a a single user/client device
* -----------------------------------------------------
* returns an array of hourly stats objects
* required parameter <mac> = MAC address of user/client device to return stats for
* optional parameter <start> = Unix timestamp in milliseconds
* optional parameter <end> = Unix timestamp in milliseconds
* optional parameter <attribs> = array containing attributes (strings) to be returned, valid values are:
* rx_bytes, tx_bytes, signal, rx_rate, tx_rate, rx_retries, tx_retries, rx_packets, tx_packets
* default is ['rx_bytes', 'tx_bytes']
*
* NOTES:
* - defaults to the past 7*24 hours
* - only supported with UniFi controller versions 5.8.X and higher
* - make sure that "Clients Historical Data" has been enabled in the UniFi controller settings in the Maintenance section
*/
public function stat_hourly_user($mac, $start = null, $end = null, $attribs = null)
{
if (!$this->is_loggedin) return false;
$end = is_null($end) ? ((time())*1000) : intval($end);
$start = is_null($start) ? $end-(7*24*3600*1000) : intval($start);
$attribs = is_null($attribs) ? ['time', 'rx_bytes', 'tx_bytes'] : array_merge(['time'], $attribs);
$json = ['attrs' => $attribs, 'start' => $start, 'end' => $end, 'mac' => $mac];
$json = json_encode($json);
$response = $this->exec_curl('/api/s/'.$this->site.'/stat/report/hourly.user', 'json='.$json);
return $this->process_response($response);
}
/**
* Daily stats method for a single user/client device
* --------------------------------------------------
* returns an array of daily stats objects
* required parameter <mac> = MAC address of user/client device to return stats for
* optional parameter <start> = Unix timestamp in milliseconds
* optional parameter <end> = Unix timestamp in milliseconds
* optional parameter <attribs> = array containing attributes (strings) to be returned, valid values are:
* rx_bytes, tx_bytes, signal, rx_rate, tx_rate, rx_retries, tx_retries, rx_packets, tx_packets
* default is ['rx_bytes', 'tx_bytes']
*
* NOTES:
* - defaults to the past 7*24 hours
* - only supported with UniFi controller versions 5.8.X and higher
* - make sure that "Clients Historical Data" has been enabled in the UniFi controller settings in the Maintenance section
*/
public function stat_daily_user($mac, $start = null, $end = null, $attribs = null)
{
if (!$this->is_loggedin) return false;
$end = is_null($end) ? ((time())*1000) : intval($end);
$start = is_null($start) ? $end-(7*24*3600*1000) : intval($start);
$attribs = is_null($attribs) ? ['time', 'rx_bytes', 'tx_bytes'] : array_merge(['time'], $attribs);
$json = ['attrs' => $attribs, 'start' => $start, 'end' => $end, 'mac' => $mac];
$json = json_encode($json);
$response = $this->exec_curl('/api/s/'.$this->site.'/stat/report/daily.user', 'json='.$json);
return $this->process_response($response);
}
/**
* Method to fetch speed test results
* ----------------------------------
* returns an array of speed test result objects
* optional parameter <start> = Unix timestamp in milliseconds
* optional parameter <end> = Unix timestamp in milliseconds
*
* NOTES:
* - defaults to the past 24 hours
* - requires a USG
*/
public function stat_speedtest_results($start = null, $end = null)
{
if (!$this->is_loggedin) return false;
$end = is_null($end) ? ((time())*1000) : intval($end);
$start = is_null($start) ? $end-(24*3600*1000) : intval($start);
$json = ['attrs' => ['xput_download','xput_upload','latency','time'], 'start' => $start, 'end' => $end];
$json = json_encode($json);
$response = $this->exec_curl('/api/s/'.$this->site.'/stat/report/archive.speedtest', 'json='.$json);
return $this->process_response($response);
}
/**
* Show all login sessions
* -----------------------
@@ -698,18 +806,6 @@ class Client
return $this->process_response($response);
}
/**
* List user groups
* ----------------
* returns an array of user group objects
*/
public function list_usergroups()
{
if (!$this->is_loggedin) return false;
$response = $this->exec_curl('/api/s/'.$this->site.'/list/usergroup');
return $this->process_response($response);
}
/**
* Assign client device to another group
* -------------------------------------
@@ -726,22 +822,39 @@ class Client
}
/**
* Update user group (using REST)
* Update client fixedip (using REST)
* ------------------------------
* returns an array containing a single object with attributes of the updated usergroup on success
* required parameter <group_id> = id of the user group
* required parameter <site_id> = id of the site
* required parameter <group_name> = name of the user group
* optional parameter <group_dn> = limit download bandwidth in Kbps (default = -1, which sets bandwidth to unlimited)
* optional parameter <group_up> = limit upload bandwidth in Kbps (default = -1, which sets bandwidth to unlimited)
* returns an array containing a single object with attributes of the updated client on success
* required parameter <client_id> = id of the client
* required parameter <use_fixedip> = boolean defining whether if use_fixedip is true or false
* optional parameter <network_id> = network id where the ip belongs to
* optional parameter <fixed_ip> = value of client's fixed_ip field
*
*/
public function edit_usergroup($group_id, $site_id, $group_name, $group_dn = -1, $group_up = -1)
public function edit_client_fixedip($client_id, $use_fixedip, $network_id = null, $fixed_ip = null)
{
if (!$this->is_loggedin) return false;
if (!is_bool($use_fixedip)) return false;
$this->request_type = 'PUT';
$json = json_encode(['_id' => $group_id, 'name' => $group_name, 'qos_rate_max_down' => intval($group_dn), 'qos_rate_max_up' => intval($group_up), 'site_id' => $site_id]);
$response = $this->exec_curl('/api/s/'.$this->site.'/rest/usergroup/'.trim($group_id), $json);
$data = ['_id' => $client_id, 'use_fixedip' => $use_fixedip];
if($use_fixedip){
if($network_id){ $data["network_id"] = $network_id; }
if($fixed_ip){ $data["fixed_ip"] = $fixed_ip; }
}
$json = json_encode($data);
$response = $this->exec_curl('/api/s/'.$this->site.'/rest/user/'.trim($client_id), $json);
return $this->process_response($response);
}
/**
* List user groups
* ----------------
* returns an array of user group objects
*/
public function list_usergroups()
{
if (!$this->is_loggedin) return false;
$response = $this->exec_curl('/api/s/'.$this->site.'/list/usergroup');
return $this->process_response($response);
}
@@ -756,11 +869,31 @@ class Client
public function create_usergroup($group_name, $group_dn = -1, $group_up = -1)
{
if (!$this->is_loggedin) return false;
$this->request_type = 'POST';
$json = json_encode(['name' => $group_name, 'qos_rate_max_down' => intval($group_dn), 'qos_rate_max_up' => intval($group_up)]);
$response = $this->exec_curl('/api/s/'.$this->site.'/rest/usergroup', $json);
return $this->process_response($response);
}
/**
* Modify user group (using REST)
* ------------------------------
* returns an array containing a single object with attributes of the updated usergroup on success
* required parameter <group_id> = id of the user group
* required parameter <site_id> = id of the site
* required parameter <group_name> = name of the user group
* optional parameter <group_dn> = limit download bandwidth in Kbps (default = -1, which sets bandwidth to unlimited)
* optional parameter <group_up> = limit upload bandwidth in Kbps (default = -1, which sets bandwidth to unlimited)
*/
public function edit_usergroup($group_id, $site_id, $group_name, $group_dn = -1, $group_up = -1)
{
if (!$this->is_loggedin) return false;
$this->request_type = 'PUT';
$json = json_encode(['_id' => $group_id, 'name' => $group_name, 'qos_rate_max_down' => intval($group_dn), 'qos_rate_max_up' => intval($group_up), 'site_id' => $site_id]);
$response = $this->exec_curl('/api/s/'.$this->site.'/rest/usergroup/'.trim($group_id), $json);
return $this->process_response($response);
}
/**
* Delete user group (using REST)
* ------------------------------
@@ -775,6 +908,75 @@ class Client
return $this->process_response_boolean($response);
}
/**
* List firewall groups (using REST)
* ----------------------------------
* returns an array containing the current firewall groups on success
*/
public function list_firewallgroups()
{
if (!$this->is_loggedin) return false;
$response = $this->exec_curl('/api/s/'.$this->site.'/rest/firewallgroup');
return $this->process_response($response);
}
/**
* Create firewall group (using REST)
* ----------------------------------
* returns an array containing a single object with attributes of the new firewall group on success
* required parameter <group_name> = name to assign to the firewall group
* required parameter <group_type> = firewall group type; valid values are address-group, ipv6-address-group, port-group
* optional parameter <group_members> = array containing the members of the new group (IPv4 addresses, IPv6 addresses or port numbers)
* (default is an empty array)
*/
public function create_firewallgroup($group_name, $group_type, $group_members = [])
{
if (!$this->is_loggedin) return false;
if (!in_array($group_type, ['address-group', 'ipv6-address-group', 'port-group'])) return false;
$this->request_type = 'POST';
$json = json_encode(['name' => $group_name, 'group_type' => $group_type, 'group_members' => $group_members]);
$response = $this->exec_curl('/api/s/'.$this->site.'/rest/firewallgroup', $json);
return $this->process_response($response);
}
/**
* Modify firewall group (using REST)
* ----------------------------------
* returns an array containing a single object with attributes of the updated firewall group on success
* required parameter <group_id> = _id value of the firewall group
* required parameter <site_id> = site_id value of the firewall group
* required parameter <group_name> = name of the firewall group
* required parameter <group_type> = firewall group type; valid values are address-group, ipv6-address-group, port-group,
* group_type cannot be changed for an existing firewall group!
* optional parameter <group_members> = array containing the members of the group (IPv4 addresses, IPv6 addresses or port numbers)
* which will overwrite the existing group_members (default is an empty array)
*
*
*/
public function edit_firewallgroup($group_id, $site_id, $group_name, $group_type, $group_members = [])
{
if (!$this->is_loggedin) return false;
if (!in_array($group_type, ['address-group', 'ipv6-address-group', 'port-group'])) return false;
$this->request_type = 'PUT';
$json = json_encode(['_id' => $group_id, 'name' => $group_name, 'group_type' => $group_type, 'group_members' => $group_members, 'site_id' => $site_id]);
$response = $this->exec_curl('/api/s/'.$this->site.'/rest/firewallgroup/'.trim($group_id), $json);
return $this->process_response($response);
}
/**
* Delete firewall group (using REST)
* ----------------------------------
* returns true on success
* required parameter <group_id> = id of the firewall group
*/
public function delete_firewallgroup($group_id)
{
if (!$this->is_loggedin) return false;
$this->request_type = 'DELETE';
$response = $this->exec_curl('/api/s/'.$this->site.'/rest/firewallgroup/'.trim($group_id));
return $this->process_response_boolean($response);
}
/**
* List health metrics
* -------------------
@@ -867,6 +1069,20 @@ class Client
return $this->process_response($response);
}
/**
* List auto backups
* ---------------------------
* return an array containing objects with backup details on success
*/
public function list_backups()
{
if (!$this->is_loggedin) return false;
$mac = strtolower($mac);
$json = json_encode(['cmd' => 'list-backups']);
$response = $this->exec_curl('/api/s/'.$this->site.'/cmd/backup', 'json='.$json);
return $this->process_response($response);
}
/**
* List sites
* ----------
@@ -1244,6 +1460,7 @@ class Client
public function create_hotspotop($name, $x_password, $note = null)
{
if (!$this->is_loggedin) return false;
$this->request_type = 'POST';
$json = ['name' => $name, 'x_password' => $x_password];
if (isset($note)) $json['note'] = trim($note);
$json = json_encode($json);
@@ -1476,8 +1693,9 @@ class Client
public function disable_ap($ap_id, $disable)
{
if (!$this->is_loggedin) return false;
if (!is_bool($disable)) return false;
$this->request_type = 'PUT';
$json = json_encode(['disabled' => (bool)$disable]);
$json = json_encode(['disabled' => $disable]);
$response = $this->exec_curl('/api/s/'.$this->site.'/rest/device/'.trim($ap_id), $json);
return $this->process_response_boolean($response);
}
@@ -1517,6 +1735,7 @@ class Client
public function locate_ap($mac, $enable)
{
if (!$this->is_loggedin) return false;
if (!is_bool($enable)) return false;
$mac = strtolower($mac);
$cmd = (($enable) ? 'set-locate' : 'unset-locate');
$json = json_encode(['cmd' => $cmd, 'mac' => $mac]);
@@ -1533,7 +1752,8 @@ class Client
public function site_leds($enable)
{
if (!$this->is_loggedin) return false;
$json = json_encode(['led_enabled' => (bool)$enable]);
if (!is_bool($enable)) return false;
$json = json_encode(['led_enabled' => $enable]);
$response = $this->exec_curl('/api/s/'.$this->site.'/set/setting/mgmt', 'json='.$json);
return $this->process_response_boolean($response);
}
@@ -1683,11 +1903,12 @@ class Client
* List network settings (using REST)
* ----------------------------------
* returns an array of (non-wireless) networks and their settings
* optional parameter <network_id> = string; network id to get specific network data for
*/
public function list_networkconf()
public function list_networkconf($network_id = '')
{
if (!$this->is_loggedin) return false;
$response = $this->exec_curl('/api/s/'.$this->site.'/rest/networkconf');
$response = $this->exec_curl('/api/s/'.$this->site.'/rest/networkconf/'.trim($network_id));
return $this->process_response($response);
}
@@ -1843,9 +2064,9 @@ class Client
*/
public function set_wlansettings($wlan_id, $x_passphrase, $name = null)
{
$payload = (object)[];
if (!is_null($x_passphrase)) $payload->x_passphrase = trim($x_passphrase);
if (!is_null($name)) $payload->name = trim($name);
$payload = [];
if (!is_null($x_passphrase)) $payload['x_passphrase'] = trim($x_passphrase);
if (!is_null($name)) $payload['name'] = trim($name);
return $this->set_wlansettings_base($wlan_id, $payload);
}
@@ -1858,9 +2079,9 @@ class Client
*/
public function disable_wlan($wlan_id, $disable)
{
$payload = (object)[];
$action = ($disable) ? false : true;
$payload->enabled = (bool)$action;
if (!is_bool($disable)) return false;
$action = $disable ? false : true;
$payload = ['enabled' => $action];
return $this->set_wlansettings_base($wlan_id, $payload);
}
@@ -1891,11 +2112,9 @@ class Client
*/
public function set_wlan_mac_filter($wlan_id, $mac_filter_policy, $mac_filter_enabled, array $macs)
{
if (!is_bool($mac_filter_enabled)) return false;
if (!in_array($mac_filter_policy, ['allow', 'deny'])) return false;
$payload = (object)[];
$payload->mac_filter_enabled = (bool)$mac_filter_enabled;
$payload->mac_filter_policy = $mac_filter_policy;
$payload->mac_filter_list = $macs;
$payload = ['mac_filter_enabled' => (bool)$mac_filter_enabled, 'mac_filter_policy' => $mac_filter_policy, 'mac_filter_list' => $macs];
return $this->set_wlansettings_base($wlan_id, $payload);
}
@@ -2575,4 +2794,4 @@ class Client
return $ch;
}
}
}