Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2c035878ed | ||
|
|
de407e6ac0 | ||
|
|
006702db0c | ||
|
|
6f1b75b89a | ||
|
|
287c67c39e | ||
|
|
871ab82608 |
18
README.md
18
README.md
@@ -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
|
||||
|
||||
|
||||
@@ -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
51
examples/list_user_stats.php
Executable 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);
|
||||
321
src/Client.php
321
src/Client.php
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user