Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d26cba1f66 | ||
|
|
69b43df148 | ||
|
|
2b34890a67 | ||
|
|
0d99d4a776 | ||
|
|
89ce2fd8dd | ||
|
|
c77913fded | ||
|
|
329ad595c9 |
92
README.md
92
README.md
@@ -1,13 +1,15 @@
|
|||||||
## UniFi Controller API client class
|
## UniFi Controller API client class
|
||||||
|
|
||||||
A PHP class that provides access to Ubiquiti's [**UniFi SDN Controller**](https://unifi-sdn.ui.com/) API, versions 4.X.X and 5.X.X of the UniFi SDN Controller software are supported (version 5.12.66 has been confirmed to work) as well as UbiOS-based controllers (version 5.12.59 has been confirmed to work). This class is used in our API browser tool which can be found [here](https://github.com/Art-of-WiFi/UniFi-API-browser).
|
A PHP class that provides access to Ubiquiti's [**UniFi Network Controller**](https://unifi-network.ui.com/) API, versions 4.X.X and 5.X.X of the UniFi Network Controller software are supported (version 5.12.72 has been confirmed to work) as well as UbiOS-based controllers (version 5.12.59 has been confirmed to work). This class is used by our API browser tool which can be found [here](https://github.com/Art-of-WiFi/UniFi-API-browser).
|
||||||
|
|
||||||
The package can be installed manually or using composer/[packagist](https://packagist.org/packages/art-of-wifi/unifi-api-client) for easy inclusion in your projects.
|
The package can be installed manually or using composer/[packagist](https://packagist.org/packages/art-of-wifi/unifi-api-client) for easy inclusion in your projects.
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- a web server with PHP and cURL modules installed (tested on Apache 2.4 with PHP Version 5.6.1 and cURL 7.42.1 and with PHP 7.2.24 and cURL 7.58.0)
|
- a server with PHP, version 5.5.0 or higher, and the PHP cURL module installed (tested on Apache 2.4 with PHP Version 5.6.1 and cURL 7.42.1 and with PHP 7.2.24 and cURL 7.58.0)
|
||||||
- network connectivity between this web server and the server and port (normally TCP port 8443) where the UniFi Controller is running
|
- direct network connectivity between this server and the host and port (normally TCP port 8443) where the UniFi Controller is running
|
||||||
|
- you must use **local accounts**, not UniFi Cloud accounts, to access the UniFi Controller API through this class
|
||||||
|
|
||||||
|
|
||||||
## UbiOS Support
|
## UbiOS Support
|
||||||
|
|
||||||
@@ -21,7 +23,7 @@ You can use [Composer](#composer), [Git](#git) or simply [Download the Release](
|
|||||||
|
|
||||||
### Composer
|
### Composer
|
||||||
|
|
||||||
The preferred method is via [composer](https://getcomposer.org). Follow the [installation instructions](https://getcomposer.org/doc/00-intro.md) if you do not already have composer installed.
|
The preferred installation method is through [composer](https://getcomposer.org). Follow these [installation instructions](https://getcomposer.org/doc/00-intro.md) if you do not already have composer installed.
|
||||||
|
|
||||||
Once composer is installed, simply execute this command from the shell in your project directory:
|
Once composer is installed, simply execute this command from the shell in your project directory:
|
||||||
|
|
||||||
@@ -90,7 +92,7 @@ Please refer to the `examples/` directory for some more detailed examples which
|
|||||||
|
|
||||||
#### IMPORTANT NOTES:
|
#### IMPORTANT NOTES:
|
||||||
|
|
||||||
1. In the above example, `$site_id` is the short site "name" (usually 8 characters long) that is visible in the URL when managing the site in the UniFi SDN Controller. For example with this URL:
|
1. In the above example, `$site_id` is the short site "name" (usually 8 characters long) that is visible in the URL when managing the site in the UniFi Network Controller. For example with this URL:
|
||||||
|
|
||||||
`https://<controller IP address or FQDN>:8443/manage/site/jl3z2shm/dashboard`
|
`https://<controller IP address or FQDN>:8443/manage/site/jl3z2shm/dashboard`
|
||||||
|
|
||||||
@@ -106,16 +108,20 @@ The class currently supports the following functions/methods to GET/POST/PUT/DEL
|
|||||||
- logout()
|
- logout()
|
||||||
- adopt_device()
|
- adopt_device()
|
||||||
- archive_alarm()
|
- archive_alarm()
|
||||||
|
- assign_existing_admin()
|
||||||
- authorize_guest()
|
- authorize_guest()
|
||||||
- block_sta()
|
- block_sta()
|
||||||
|
- cancel_rolling_upgrade()
|
||||||
|
- cmd_stat()
|
||||||
- count_alarms()
|
- count_alarms()
|
||||||
|
- create_dynamicdns()
|
||||||
- create_firewallgroup()
|
- create_firewallgroup()
|
||||||
- create_hotspotop()
|
- create_hotspotop()
|
||||||
- create_network()
|
- create_network()
|
||||||
- create_radius_account()
|
- create_radius_account()
|
||||||
- create_site()
|
- create_site()
|
||||||
- create_usergroup()
|
|
||||||
- create_user()
|
- create_user()
|
||||||
|
- create_usergroup()
|
||||||
- create_voucher()
|
- create_voucher()
|
||||||
- create_wlan()
|
- create_wlan()
|
||||||
- custom_api_request()
|
- custom_api_request()
|
||||||
@@ -133,12 +139,10 @@ The class currently supports the following functions/methods to GET/POST/PUT/DEL
|
|||||||
- extend_guest_validity()
|
- extend_guest_validity()
|
||||||
- forget_sta() (supported on controller version 5.9.X and higher)
|
- forget_sta() (supported on controller version 5.9.X and higher)
|
||||||
- invite_admin()
|
- invite_admin()
|
||||||
- assign_existing_admin()
|
|
||||||
- revoke_admin()
|
|
||||||
- led_override()
|
- led_override()
|
||||||
- list_admins()
|
- list_admins()
|
||||||
- list_all_admins()
|
|
||||||
- list_alarms()
|
- list_alarms()
|
||||||
|
- list_all_admins()
|
||||||
- list_aps() (deprecated but still available as alias)
|
- list_aps() (deprecated but still available as alias)
|
||||||
- list_backups()
|
- list_backups()
|
||||||
- list_clients()
|
- list_clients()
|
||||||
@@ -151,6 +155,7 @@ The class currently supports the following functions/methods to GET/POST/PUT/DEL
|
|||||||
- list_events()
|
- list_events()
|
||||||
- list_extension()
|
- list_extension()
|
||||||
- list_firewallgroups()
|
- list_firewallgroups()
|
||||||
|
- list_firmware()
|
||||||
- list_guests()
|
- list_guests()
|
||||||
- list_health()
|
- list_health()
|
||||||
- list_hotspotop()
|
- list_hotspotop()
|
||||||
@@ -162,6 +167,7 @@ The class currently supports the following functions/methods to GET/POST/PUT/DEL
|
|||||||
- list_radius_accounts() (supported on controller version 5.5.19 and higher)
|
- list_radius_accounts() (supported on controller version 5.5.19 and higher)
|
||||||
- list_radius_profiles()
|
- list_radius_profiles()
|
||||||
- list_rogueaps()
|
- list_rogueaps()
|
||||||
|
- list_routing()
|
||||||
- list_self()
|
- list_self()
|
||||||
- list_settings()
|
- list_settings()
|
||||||
- list_sites()
|
- list_sites()
|
||||||
@@ -173,14 +179,17 @@ The class currently supports the following functions/methods to GET/POST/PUT/DEL
|
|||||||
- locate_ap()
|
- locate_ap()
|
||||||
- move_device()
|
- move_device()
|
||||||
- power_cycle_switch_port()
|
- power_cycle_switch_port()
|
||||||
|
- reboot_cloudkey()
|
||||||
- reconnect_sta()
|
- reconnect_sta()
|
||||||
- rename_ap()
|
- rename_ap()
|
||||||
- restart_ap() (deprecated but still available as alias)
|
- restart_ap() (deprecated but still available as alias)
|
||||||
- restart_device()
|
- restart_device()
|
||||||
- reboot_cloudkey()
|
- revoke_admin()
|
||||||
- revoke_voucher()
|
- revoke_voucher()
|
||||||
- set_ap_radiosettings()
|
- set_ap_radiosettings()
|
||||||
- set_device_settings_base()
|
- set_device_settings_base()
|
||||||
|
- set_dynamicdns()
|
||||||
|
- set_element_adoption() (supported on controller version 5.13.X and higher)
|
||||||
- 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_ips_settings_base() (supported on controller version 5.9.10 and higher)
|
||||||
@@ -195,11 +204,11 @@ The class currently supports the following functions/methods to GET/POST/PUT/DEL
|
|||||||
- set_site_name()
|
- set_site_name()
|
||||||
- set_site_ntp()
|
- set_site_ntp()
|
||||||
- set_site_snmp()
|
- set_site_snmp()
|
||||||
- set_super_mgmt_settings_base()
|
|
||||||
- set_super_smtp_settings_base()
|
|
||||||
- set_super_identity_settings_base()
|
|
||||||
- set_sta_name()
|
- set_sta_name()
|
||||||
- set_sta_note()
|
- set_sta_note()
|
||||||
|
- set_super_identity_settings_base()
|
||||||
|
- set_super_mgmt_settings_base()
|
||||||
|
- set_super_smtp_settings_base()
|
||||||
- set_usergroup()
|
- set_usergroup()
|
||||||
- set_wlan_mac_filter()
|
- set_wlan_mac_filter()
|
||||||
- set_wlansettings()
|
- set_wlansettings()
|
||||||
@@ -209,26 +218,27 @@ The class currently supports the following functions/methods to GET/POST/PUT/DEL
|
|||||||
- site_ledson() (deprecated but still available as alias)
|
- site_ledson() (deprecated but still available as alias)
|
||||||
- spectrum_scan()
|
- spectrum_scan()
|
||||||
- spectrum_scan_state()
|
- spectrum_scan_state()
|
||||||
|
- start_rolling_upgrade()
|
||||||
|
- stat_5minutes_aps() (supported on controller version 5.5.X and higher)
|
||||||
|
- stat_5minutes_gateway() (supported on controller version 5.7.X and higher)
|
||||||
|
- stat_5minutes_site() (supported on controller version 5.5.X and higher)
|
||||||
|
- stat_5minutes_user (supported on controller version 5.7.X and higher)
|
||||||
- stat_allusers()
|
- stat_allusers()
|
||||||
- stat_auths()
|
- stat_auths()
|
||||||
- stat_client()
|
- stat_client()
|
||||||
- stat_5minutes_aps() (supported on controller version 5.5.X and higher)
|
|
||||||
- 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_daily_gateway() (supported on controller version 5.7.X and higher)
|
||||||
- stat_5minutes_site() (supported on controller version 5.5.X and higher)
|
|
||||||
- stat_hourly_site()
|
|
||||||
- stat_daily_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_daily_user() (supported on controller version 5.7.X and higher)
|
||||||
|
- stat_hourly_aps()
|
||||||
|
- stat_hourly_gateway() (supported on controller version 5.7.X and higher)
|
||||||
|
- stat_hourly_site()
|
||||||
|
- stat_hourly_user() (supported on controller version 5.7.X and higher)
|
||||||
|
- stat_ips_events() (supported on controller version 5.9.10 and higher)
|
||||||
- stat_payment()
|
- stat_payment()
|
||||||
- stat_sessions()
|
- stat_sessions()
|
||||||
- stat_sites()
|
- stat_sites()
|
||||||
- stat_speedtest_results()
|
- 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()
|
||||||
@@ -238,31 +248,29 @@ The class currently supports the following functions/methods to GET/POST/PUT/DEL
|
|||||||
- unset_locate_ap() (deprecated but still available as alias)
|
- unset_locate_ap() (deprecated but still available as alias)
|
||||||
- upgrade_device()
|
- upgrade_device()
|
||||||
- upgrade_device_external()
|
- upgrade_device_external()
|
||||||
- start_rolling_upgrade()
|
|
||||||
- cancel_rolling_upgrade()
|
|
||||||
- cmd_stat()
|
|
||||||
|
|
||||||
Other functions, getters/setters:
|
Other functions, getters/setters:
|
||||||
|
|
||||||
- set_debug()
|
- get_class_version()
|
||||||
- get_debug()
|
|
||||||
- set_site()
|
|
||||||
- get_site()
|
|
||||||
- set_cookies()
|
|
||||||
- get_cookies()
|
|
||||||
- get_cookie() (renamed from getcookie(), deprecated but still available, use get_cookies() instead)
|
|
||||||
- get_last_results_raw()
|
|
||||||
- get_last_error_message()
|
|
||||||
- set_request_type()
|
|
||||||
- get_request_type()
|
|
||||||
- set_ssl_verify_peer()
|
|
||||||
- get_ssl_verify_peer()
|
|
||||||
- set_ssl_verify_host()
|
|
||||||
- get_ssl_verify_host()
|
|
||||||
- set_connection_timeout()
|
|
||||||
- get_connection_timeout()
|
- get_connection_timeout()
|
||||||
- set_is_unifi_os()
|
- get_cookie() (renamed from getcookie(), deprecated but still available, use get_cookies() instead)
|
||||||
|
- get_cookies()
|
||||||
|
- get_debug()
|
||||||
- get_is_unifi_os()
|
- get_is_unifi_os()
|
||||||
|
- get_last_error_message()
|
||||||
|
- get_last_results_raw()
|
||||||
|
- get_request_type()
|
||||||
|
- get_site()
|
||||||
|
- get_ssl_verify_host()
|
||||||
|
- get_ssl_verify_peer()
|
||||||
|
- set_connection_timeout()
|
||||||
|
- set_cookies()
|
||||||
|
- set_debug()
|
||||||
|
- set_is_unifi_os()
|
||||||
|
- set_request_type()
|
||||||
|
- set_site()
|
||||||
|
- set_ssl_verify_host()
|
||||||
|
- set_ssl_verify_peer()
|
||||||
|
|
||||||
|
|
||||||
## Need help or have suggestions?
|
## Need help or have suggestions?
|
||||||
|
|||||||
@@ -1,27 +1,28 @@
|
|||||||
{
|
{
|
||||||
"name": "art-of-wifi/unifi-api-client",
|
"name": "art-of-wifi/unifi-api-client",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"description": "API client class for use with Ubiquiti's UniFi controller",
|
"description": "API client class for use with Ubiquiti's UniFi controller",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"ubnt",
|
"ubnt",
|
||||||
"ubiquiti",
|
"ubiquiti",
|
||||||
"unifi",
|
"unifi",
|
||||||
"controller",
|
"controller",
|
||||||
"api",
|
"api",
|
||||||
"client"
|
"client"
|
||||||
],
|
],
|
||||||
"homepage": "https://github.com/Art-of-WiFi/UniFi-API-client",
|
"homepage": "https://github.com/Art-of-WiFi/UniFi-API-client",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "Art of WiFi",
|
"name": "Art of WiFi",
|
||||||
"email": "info@artofowifi.net",
|
"email": "info@artofowifi.net",
|
||||||
"homepage": "http://artofwifi.net"
|
"homepage": "http://artofwifi.net"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=5.4.0",
|
"php": ">=5.5.0",
|
||||||
"ext-curl": "*"
|
"ext-curl": "*",
|
||||||
|
"ext-json": "*"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
|
|||||||
78
examples/disable_switch_port.php
Executable file
78
examples/disable_switch_port.php
Executable file
@@ -0,0 +1,78 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP API usage example
|
||||||
|
*
|
||||||
|
* contributed by: Art of WiFi
|
||||||
|
* description: example PHP script to disable/enable the port of a UniFi switch
|
||||||
|
* note: Requires controller version 5.5.X or higher. This example assumes an override alreay exists for the desired port.
|
||||||
|
* To create a new port override simply append one (similar in structure to $updated_override) as needed to the
|
||||||
|
* $existing_overrides array
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 to log in to the controller
|
||||||
|
*/
|
||||||
|
$site_id = '<enter your site id here>';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the MAC address of the UniFi switch to re-configure
|
||||||
|
*/
|
||||||
|
$device_mac = '<enter MAC address>';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* index of port to modify/add
|
||||||
|
*/
|
||||||
|
$port_idx = 24;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* port configuration id to apply when enabling/disabling the port
|
||||||
|
*
|
||||||
|
* NOTE:
|
||||||
|
* port configurations are available through list_portconf()
|
||||||
|
*/
|
||||||
|
$port_conf_id = '<enter _id value of desired port configuration>';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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, false);
|
||||||
|
$set_debug_mode = $unifi_connection->set_debug($debug);
|
||||||
|
$loginresults = $unifi_connection->login();
|
||||||
|
$data = $unifi_connection->list_devices($device_mac);
|
||||||
|
$device_id = $data[0]->device_id;
|
||||||
|
$existing_overrides = $data[0]->port_overrides;
|
||||||
|
|
||||||
|
foreach ($existing_overrides as $key => $value) {
|
||||||
|
if (!empty($value->port_idx) && $value->port_idx === $port_idx) {
|
||||||
|
$updated_override = [
|
||||||
|
'portconf_id' => $port_conf_id,
|
||||||
|
'port_idx' => $port_idx,
|
||||||
|
'poe_mode' => $value->poe_mode,
|
||||||
|
'name' => 'Your-port-name',
|
||||||
|
];
|
||||||
|
|
||||||
|
$existing_overrides[$key] = $updated_override;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$payload = [
|
||||||
|
'port_overrides' => $existing_overrides
|
||||||
|
];
|
||||||
|
|
||||||
|
$update_device = $unifi_connection->set_device_settings_base($device_id, $payload);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* provide feedback in json format
|
||||||
|
*/
|
||||||
|
echo json_encode($update_device, JSON_PRETTY_PRINT);
|
||||||
84
examples/modify_smartpower_pdu_outlet.php
Executable file
84
examples/modify_smartpower_pdu_outlet.php
Executable file
@@ -0,0 +1,84 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP API usage example
|
||||||
|
*
|
||||||
|
* contributed by: Art of WiFi
|
||||||
|
* description: example basic PHP script to toggle power of an outlet on the UniFi SmartPower PDU Pro,
|
||||||
|
* last tested with UniFi controller version 6.1.19
|
||||||
|
*/
|
||||||
|
require '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 = 'default';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MAC of UniFi SmartPower PDU Pro to work with
|
||||||
|
*/
|
||||||
|
$pdu_mac = '<MAC ADDRESS of PDU>';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* index value of the outlet to modify
|
||||||
|
*/
|
||||||
|
$outlet_idx = 20;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* new values for relay_state (enable/disable Power) and cycle_enabled (disable/enable Modem Power Cycle) for the above outlet,
|
||||||
|
* values must be boolean (true/false)
|
||||||
|
*
|
||||||
|
* NOTES:
|
||||||
|
* - here you can choose to also change the name of the outlet
|
||||||
|
* - outlet overrides are structured like this:
|
||||||
|
* {
|
||||||
|
* "index": 1,
|
||||||
|
* "name": "USB Outlet 1",
|
||||||
|
* "cycle_enabled": false,
|
||||||
|
* "relay_state": true
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
$new_relay_state = true;
|
||||||
|
$new_cycle_enabled = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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);
|
||||||
|
$set_debug_mode = $unifi_connection->set_debug($debug);
|
||||||
|
$loginresults = $unifi_connection->login();
|
||||||
|
if ($loginresults) {
|
||||||
|
$pdu_details = $unifi_connection->list_devices($pdu_mac);
|
||||||
|
|
||||||
|
if (!empty($pdu_details) && property_exists($pdu_details[0], 'model') && $pdu_details[0]->model === 'USPPDUP' && property_exists($pdu_details[0], 'outlet_overrides')) {
|
||||||
|
$device_id = $pdu_details[0]->_id;
|
||||||
|
$outlet_overrides = $pdu_details[0]->outlet_overrides;
|
||||||
|
|
||||||
|
foreach ($outlet_overrides as $key => $value) {
|
||||||
|
if ($value->index === $outlet_idx) {
|
||||||
|
$outlet_overrides[$key]->relay_state = $new_relay_state;
|
||||||
|
$outlet_overrides[$key]->cycle_enabled = $new_cycle_enabled;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$pdu_update = $unifi_connection->set_device_settings_base($device_id, ['outlet_overrides' => $outlet_overrides]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* provide feedback in json format
|
||||||
|
*/
|
||||||
|
echo 'results:' . PHP_EOL . PHP_EOL;
|
||||||
|
echo json_encode($pdu_update, JSON_PRETTY_PRINT);
|
||||||
|
echo PHP_EOL;
|
||||||
|
} else {
|
||||||
|
echo 'not a PDU device?';
|
||||||
|
echo PHP_EOL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo 'we encountered a login error!';
|
||||||
|
echo PHP_EOL;
|
||||||
|
}
|
||||||
2186
src/Client.php
2186
src/Client.php
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user