Compare commits

...

8 Commits

Author SHA1 Message Date
malle-pietje
2a566ad18a API client class v1.1.36
added methods stat_ips_events(), set_ips_settings_base(), supported with controllers 5.9.10 and higher
thanks go to @leonardogyn for providing access to a controller and test network for test/validation purposes
2018-10-24 09:54:43 +02:00
malle-pietje
1714e9587c general code cleanup
added spaces throughout Client.php following PSR-2 guidelines that were skipped with the previous commit
added visibility to constructor and destructor methods following PSR-2 recommendations
declare user and password properties and visibility following PSR-2 recommendations
updated README to add recently added functions/methods
minor general changes to the README
2018-10-20 14:29:08 +02:00
malle-pietje
cd92192cb8 API client class v1.1.34
- added spaces throughout Client.php following PSR-2 guidelines
- changed checks to prevent 0 (zero) values from being submitted to the API for routes where this can have negative side effects
2018-10-10 10:14:00 +02:00
malle-pietje
7c6cd4eb85 removed and added spaces, and changed brackets usage following PSR-2 guidelines 2018-10-02 13:16:48 +02:00
malle-pietje
30f4230cfd Merge branch 'master' of github.com:Art-of-WiFi/UniFi-API-client into tempbranch 2018-10-02 12:10:46 +02:00
Jamie Aitken
88263f6863 getters and setters for private variables (#28)
Merging PR #28
2018-10-02 11:12:34 +02:00
malle-pietje
1017d1461e Commiting some changes to tempbranch before merging in a new PR 2018-10-02 11:10:46 +02:00
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
9 changed files with 1508 additions and 549 deletions

9
.gitignore vendored
View File

@@ -1,2 +1,9 @@
# Ignore personal config file # Ignore personal config file
examples/config.php /examples/config.php
# ignore accidentally generated vendor directory and composer.lock file, just in case...
/vendor/
/composer.lock
# ignore XML files
*.xml

View File

@@ -2,7 +2,7 @@
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). 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. This class can be installed manually or using composer/[packagist](https://packagist.org/packages/art-of-wifi/unifi-api-client) for easy inclusion in your projects.
## Methods and functions supported ## Methods and functions supported
@@ -32,6 +32,7 @@ The class currently supports the following functions/methods to get/post/put/del
- delete_usergroup() - delete_usergroup()
- delete_wlan() - delete_wlan()
- disable_ap() - disable_ap()
- edit_client_fixedip()
- edit_firewallgroup() - edit_firewallgroup()
- edit_usergroup() - edit_usergroup()
- extend_guest_validity() - extend_guest_validity()
@@ -43,6 +44,7 @@ The class currently supports the following functions/methods to get/post/put/del
- list_all_admins() - list_all_admins()
- list_alarms() - list_alarms()
- list_aps() (deprecated but still available as alias) - list_aps() (deprecated but still available as alias)
- list_backups()
- list_clients() - list_clients()
- list_country_codes() - list_country_codes()
- list_current_channels() - list_current_channels()
@@ -83,6 +85,7 @@ The class currently supports the following functions/methods to get/post/put/del
- set_device_settings_base() - set_device_settings_base()
- set_guestlogin_settings() - set_guestlogin_settings()
- set_guestlogin_settings_base() - set_guestlogin_settings_base()
- set_ips_settings_base() (supported on controller version 5.9.10 and higher)
- set_locate_ap() (deprecated but still available as alias) - set_locate_ap() (deprecated but still available as alias)
- set_networksettings_base() - set_networksettings_base()
- set_radius_account_base() - set_radius_account_base()
@@ -111,6 +114,9 @@ The class currently supports the following functions/methods to get/post/put/del
- stat_5minutes_aps() (supported on controller version 5.5.X and higher) - stat_5minutes_aps() (supported on controller version 5.5.X and higher)
- stat_hourly_aps() - stat_hourly_aps()
- stat_daily_aps() - stat_daily_aps()
- stat_5minutes_gateway() (supported on controller version 5.7.X and higher)
- stat_hourly_gateway() (supported on controller version 5.7.X and higher)
- stat_daily_gateway() (supported on controller version 5.7.X and higher)
- stat_5minutes_site() (supported on controller version 5.5.X and higher) - stat_5minutes_site() (supported on controller version 5.5.X and higher)
- stat_hourly_site() - stat_hourly_site()
- stat_daily_site() - stat_daily_site()
@@ -120,6 +126,8 @@ The class currently supports the following functions/methods to get/post/put/del
- stat_payment() - stat_payment()
- stat_sessions() - stat_sessions()
- stat_sites() - stat_sites()
- stat_speedtest_results()
- stat_ips_events() (supported on controller version 5.9.10 and higher)
- stat_sta_sessions_latest() - stat_sta_sessions_latest()
- stat_status() - stat_status()
- stat_sysinfo() - stat_sysinfo()
@@ -224,7 +232,7 @@ Please refer to the `examples/` directory for some more detailed examples which
#### IMPORTANT NOTES: #### IMPORTANT NOTES:
1. The last parameter (`true`) that is passed to the constructor, enables validation of the controller's SSL certificate which is otherwise **disabled** by default. It is highly recommended to enable this feature in production environments where you have a valid SSL cert installed on the UniFi Controller, and which is associated with the FQDN of the server as used in the `controller_url` parameter. This option was added with API client version 1.1.16. 1. The last optional parameter that is passed to the constructor in the above example (`true`), enables validation of the controller's SSL certificate which is otherwise **disabled** by default. It is highly recommended to enable this feature in production environments where you have a valid SSL cert installed on the UniFi Controller, and which is associated with the FQDN of the server as used in the `controller_url` parameter. This option was added with API client version 1.1.16.
2. In the example above, `$site_id` is the 8 character short site "name" which is visible in the URL when managing the site in the UniFi Controller: 2. In the example above, `$site_id` is the 8 character short site "name" which is visible in the URL when managing the site in the UniFi Controller:
@@ -234,7 +242,7 @@ Please refer to the `examples/` directory for some more detailed examples which
## Need help or have suggestions? ## Need help or have suggestions?
There is still work to be done to add functionality and improve the usability of this class, so all suggestions/comments are welcome. Please use the github [issue](https://github.com/Art-of-WiFi/UniFi-API-client/issues) list or the Ubiquiti Community forums (https://community.ubnt.com/t5/UniFi-Wireless/PHP-class-to-access-the-UniFi-controller-API-updates-and/td-p/1512870) to share your ideas/questions. There is still work to be done to add functionality and further improve the usability of this class, so all suggestions/comments are welcome. Please use the GitHub [issue list](https://github.com/Art-of-WiFi/UniFi-API-client/issues) or the Ubiquiti Community forums (https://community.ubnt.com/t5/UniFi-Wireless/PHP-class-to-access-the-UniFi-controller-API-updates-and/td-p/1512870) to share your suggestions and questions.
## Contribute ## Contribute

View File

@@ -1,4 +1,5 @@
## API client class usage examples ## 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. 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 ### Usage

View File

@@ -25,9 +25,9 @@ require_once('vendor/autoload.php');
*/ */
require_once('config.php'); require_once('config.php');
$debug=false; $debug = false;
/** /**
* the MAC address(es) of the device(s) to block * the MAC address(es) of the device(s) to block
*/ */
$macs_to_block = explode(',',$argv[1]); $macs_to_block = explode(',',$argv[1]);
@@ -35,8 +35,7 @@ $macs_to_block = explode(',',$argv[1]);
* The site to authorize the device with * The site to authorize the device with
*/ */
$site_id = 'MUST_DEFINE_THIS'; $site_id = 'MUST_DEFINE_THIS';
if ($site_id == "MUST_DEFINE_THIS") if ($site_id == "MUST_DEFINE_THIS") {
{
print 'ERROR: set the site id in your script'; print 'ERROR: set the site id in your script';
return; return;
} }
@@ -48,8 +47,7 @@ $unifi_connection = new UniFi_API\Client($controlleruser, $controllerpassword, $
$set_debug_mode = $unifi_connection->set_debug($debug); $set_debug_mode = $unifi_connection->set_debug($debug);
$loginresults = $unifi_connection->login(); // always true regardless of site id $loginresults = $unifi_connection->login(); // always true regardless of site id
foreach ($macs_to_block as &$mac) foreach ($macs_to_block as &$mac) {
{
// block_result is always true even if mac address does not exist :( // block_result is always true even if mac address does not exist :(
$block_result = $unifi_connection->block_sta($mac); $block_result = $unifi_connection->block_sta($mac);
@@ -65,20 +63,16 @@ foreach ($macs_to_block as &$mac)
$getid_result = $unifi_connection->stat_client($mac); $getid_result = $unifi_connection->stat_client($mac);
if (property_exists($getid_result[0], "oui")) // this field(manufacturer) seems to exist on valid mac addresses if (property_exists($getid_result[0], "oui")) {
{ // this field(manufacturer) seems to exist on valid mac addresses
if (property_exists($getid_result[0], "name")) // this is the alias field if it has been defined if (property_exists($getid_result[0], "name")) {
{ // this is the alias field if it has been defined
$name = $getid_result[0]->name; $name = $getid_result[0]->name;
} } else {
else
{
$name = $getid_result[0]->hostname; $name = $getid_result[0]->hostname;
} }
print 'blocked ' . $name . PHP_EOL; print 'blocked ' . $name . PHP_EOL;
} } else {
else
{
print 'ERROR: could not block ' . $mac . PHP_EOL; print 'ERROR: could not block ' . $mac . PHP_EOL;
print ' check mac address is valid and part of your network' . PHP_EOL; print ' check mac address is valid and part of your network' . PHP_EOL;
} }

View File

@@ -29,20 +29,18 @@ if ($loginresults === 400) {
print "UniFi controller login failure, please check your credentials in config.php.\n"; print "UniFi controller login failure, please check your credentials in config.php.\n";
} else { } else {
$guestlist = $unifi_connection->list_guests(); $guestlist = $unifi_connection->list_guests();
// print "<pre>"; print_r ($guestlist); print "</pre>";
// loop thru all known guests // loop thru all known guests
foreach ($guestlist as $guest) { foreach ($guestlist as $guest) {
// print "<pre>"; print_r ($guest); print "</pre>"; print "<pre>" . $guest->_id . " (" . $guest->mac . "), valid until " . date(DATE_ATOM, $guest->end) . " (" . $guest->end . ")</pre>";
print "<pre>" . $guest->_id . " (" . $guest->mac . "), valid until " . date (DATE_ATOM, $guest->end) . " (" . $guest->end . ")</pre>";
// just a sample: only extend validity of guests which have end date after 2017-04-02 // just a sample: only extend validity of guests which have end date after 2017-04-02
if ($guest->end > 1491166482) { if ($guest->end > 1491166482) {
// extend clients five times = five days // extend clients five times = five days
if (!$unifi_connection->extend_guest_validity ($guest->_id)) print "Extend failed for guest with id " . $guest->_id . "\n"; if (!$unifi_connection->extend_guest_validity($guest->_id)) print "Extend failed for guest with id " . $guest->_id . "\n";
if (!$unifi_connection->extend_guest_validity ($guest->_id)) print "Extend failed for guest with id " . $guest->_id . "\n"; if (!$unifi_connection->extend_guest_validity($guest->_id)) print "Extend failed for guest with id " . $guest->_id . "\n";
if (!$unifi_connection->extend_guest_validity ($guest->_id)) print "Extend failed for guest with id " . $guest->_id . "\n"; if (!$unifi_connection->extend_guest_validity($guest->_id)) print "Extend failed for guest with id " . $guest->_id . "\n";
if (!$unifi_connection->extend_guest_validity ($guest->_id)) print "Extend failed for guest with id " . $guest->_id . "\n"; if (!$unifi_connection->extend_guest_validity($guest->_id)) print "Extend failed for guest with id " . $guest->_id . "\n";
if (!$unifi_connection->extend_guest_validity ($guest->_id)) print "Extend failed for guest with id " . $guest->_id . "\n"; if (!$unifi_connection->extend_guest_validity($guest->_id)) print "Extend failed for guest with id " . $guest->_id . "\n";
} }
} }

View File

@@ -29,14 +29,13 @@ $debug=false;
/** /**
* the MAC addresses of the device(s) to unblock * the MAC addresses of the device(s) to unblock
*/ */
$macs_to_unblock = explode(',',$argv[1]); $macs_to_unblock = explode(',', $argv[1]);
/** /**
* The site to authorize the device with * The site to authorize the device with
*/ */
$site_id = 'MUST_DEFINE_THIS'; $site_id = 'MUST_DEFINE_THIS';
if ($site_id == "MUST_DEFINE_THIS") if ($site_id == "MUST_DEFINE_THIS") {
{
print 'ERROR: set the site id in your script'; print 'ERROR: set the site id in your script';
return; return;
} }
@@ -48,10 +47,9 @@ $unifi_connection = new UniFi_API\Client($controlleruser, $controllerpassword, $
$set_debug_mode = $unifi_connection->set_debug($debug); $set_debug_mode = $unifi_connection->set_debug($debug);
$loginresults = $unifi_connection->login(); // always true regardless of site id $loginresults = $unifi_connection->login(); // always true regardless of site id
foreach ($macs_to_unblock as &$mac) foreach ($macs_to_unblock as &$mac) {
{
// block_result is always true even if mac address does not exist :( // block_result is always true even if mac address does not exist :(
$block_result = $unifi_connection->unblock_sta($mac); $block_result = $unifi_connection->unblock_sta($mac);
/** /**
* NOTE: * NOTE:
@@ -63,22 +61,17 @@ foreach ($macs_to_unblock as &$mac)
*/ */
sleep(1); sleep(1);
$getid_result = $unifi_connection->stat_client($mac); $getid_result = $unifi_connection->stat_client($mac);
if (property_exists($getid_result[0], "oui")) // this field(manufacturer) seems to exist on valid mac addresses if (property_exists($getid_result[0], "oui")) {
{ // this field(manufacturer) seems to exist on valid mac addresses
if (property_exists($getid_result[0], "name")) if (property_exists($getid_result[0], "name")) {
{
$name = $getid_result[0]->name; $name = $getid_result[0]->name;
} } else {
else
{
$name = $getid_result[0]->hostname; $name = $getid_result[0]->hostname;
} }
print 'unblocked ' . $name . PHP_EOL; print 'unblocked ' . $name . PHP_EOL;
} } else {
else
{
print 'ERROR: could not unblock ' . $mac . PHP_EOL; print 'ERROR: could not unblock ' . $mac . PHP_EOL;
print ' check mac address is valid and part of your network' . PHP_EOL; print ' check mac address is valid and part of your network' . PHP_EOL;
} }

View File

@@ -67,7 +67,7 @@ $data = $unifi_connection->list_devices($device_mac);
$device_id = $data[0]->device_id; $device_id = $data[0]->device_id;
$update_device = $unifi_connection->set_device_settings_base($device_id, $new_ports_config); $update_device = $unifi_connection->set_device_settings_base($device_id, $new_ports_config);
if(!$update_device){ if (!$update_device) {
$error = $unifi_connection->get_last_results_raw(); $error = $unifi_connection->get_last_results_raw();
echo json_encode($error, JSON_PRETTY_PRINT); echo json_encode($error, JSON_PRETTY_PRINT);
} }

View File

@@ -58,13 +58,13 @@ $data = $unifi_connection->list_devices($ap_mac);
$radio_table = $data[0]->radio_table; $radio_table = $data[0]->radio_table;
$device_id = $data[0]->device_id; $device_id = $data[0]->device_id;
foreach($radio_table as $radio){ foreach ($radio_table as $radio) {
if($radio->radio === 'ng'){ if ($radio->radio === 'ng') {
$radio->tx_power_mode = $ng_tx_power_mode; $radio->tx_power_mode = $ng_tx_power_mode;
$radio->channel = $ng_channel; $radio->channel = $ng_channel;
} }
if($radio->radio === 'na'){ if ($radio->radio === 'na') {
$radio->tx_power_mode = $na_tx_power_mode; $radio->tx_power_mode = $na_tx_power_mode;
$radio->channel = $na_channel; $radio->channel = $na_channel;
} }
@@ -72,7 +72,7 @@ foreach($radio_table as $radio){
$update_device = $unifi_connection->set_device_settings_base($device_id, ['radio_table' => $radio_table]); $update_device = $unifi_connection->set_device_settings_base($device_id, ['radio_table' => $radio_table]);
if(!$update_device){ if (!$update_device) {
$error = $unifi_connection->get_last_results_raw(); $error = $unifi_connection->get_last_results_raw();
echo json_encode($error, JSON_PRETTY_PRINT); echo json_encode($error, JSON_PRETTY_PRINT);
} }

File diff suppressed because it is too large Load Diff