GetRirRegistration.php
GetRirRegistration.php
<?php
/**
* This script retrieves Subnet Registrations that are displayed in: https://control.softlayer.com/network/rir,
* Additionally creates a CSV file with this information.
* The file is stored in "C:\Reports" (Windows OS) path by default, you can modify "path" variable if you wish
* to change it.
*
* Important manual pages:
* @see http://sldn.softlayer.com/reference/services/SoftLayer_Account/getSubnetRegistrations
* @see http://sldn.softlayer.com/reference/datatypes/SoftLayer_Network_Subnet_Registration
* @see http://sldn.softlayer.com/article/Object-Masks
* @see http://sldn.softlayer.com/article/Object-Filters
*
* @license <http://sldn.softlayer.com/wiki/index.php/license>
* @author SoftLayer Technologies, Inc. <sldn@softlayer.com>
*/
require_once "C:/Php/SoftLayer/SoftLayer/SoapClient.class.php";
/**
* Your SoftLayer API username
* @var string
*/
$username = "set me";
/**
* Your SoftLayer API key
* Generate one at: https://control.softlayer.com/account/users
* @var string
*/
$apiKey = "set me";
/**
* Declare the "path" to create CSV file
* @var string
*/
$path = "C:\Reports";
// Create a SoftLayer API client object to the "SoftLayer_Account_Regional_Registry_Detail" service
$client = SoftLayer_SoapClient::getClient("SoftLayer_Account", null, $username, $apiKey);
// Define object mask to get subnet, personDetails, regionalInternetRegistry and status from each register
$mask = "mask[registrations[personDetail[properties], status], regionalInternetRegistry]";
$client -> setObjectMask($mask);
// Declare an objectFilter to retrieve results avoiding subnet registers with "regionalInternetRegistry" to SoftLayer.
// These kind of registers are not displayed in "https://control.softlayer.com/network/rir"
$filter = new stdClass();
$filter -> subnets = new stdClass();
$filter -> subnets -> regionalInternetRegistry = new stdClass();
$filter -> subnets -> regionalInternetRegistry -> name = new stdClass();
$filter -> subnets -> regionalInternetRegistry -> name -> operation = "!~SoftLayer";
$client -> setObjectFilter($filter);
// Define array for Subnet Registrations to create CSV file
$registers = array();
try {
// Get all Subnet registrations
$result = $client -> getSubnets();
foreach ($result as $register) {
$id = $register -> id;
$subnet = $register -> networkIdentifier . "/" . $register -> cidr;
$status = "";
$rir = $register -> regionalInternetRegistry -> name;
$personRecord = " ";
// Verify if the "status:name" property for each register is null, in order to replace it with "Unregistered" value
if (isset($register -> registrations[0] -> status -> name) == NULL) {
$status = "Unregistered";
} else {
// Get current status name from Subnet Registration
$status = $register -> registrations[0] -> status -> name;
// Verifying if each register has properties. There exists some cases that a subnet registration doesn't have properties added.
if (isset($register -> registrations[0] -> personDetail -> properties) != NULL) {
for ($i = 0; $i < sizeof($register -> registrations[0] -> personDetail -> properties); $i++) {
// Getting property type 61 that corresponds to "Organization" parameter
if (($register -> registrations[0] -> personDetail -> properties[$i] -> propertyTypeId) == 61) {
// Assign "Organization Name" to the person record variable
$personRecord = $register -> registrations[0] -> personDetail -> properties[$i] -> value;
}
}
}
}
// Print result
echo("Id: " . $id . "\nSubnet: " . $subnet . "\nStatus Name: " . $status . "\nRIR: " . $rir . "\nPerson Record: " . $personRecord);
// Add to "registers" array which will be used to generate CSV file.
array_push($registers, array($subnet, $status, $rir, $personRecord));
echo("\n------------------------------------------------------------------------------------\n");
}
// Declare titles for CSV file
$titles = array("Subnet", "Status", "RIR", "Person Record");
// Create CSV file
$dateTime = new DateTime();
$date = $dateTime -> format("Y-m-d");
$filePath = fopen($path . "\SubnetRegistrations_" . $date . ".csv", "w");
// Write titles in CSV file
fputcsv($filePath, $titles);
// Write all registers in CSV file
foreach ($registers as $fields) {
fputcsv($filePath, $fields);
}
// Close CSV file
fclose($filePath);
} catch(Exception $e) {
echo "Unable to get Subnet Registrations: " . $e -> getMessage();
}