Skip to content

Instantly share code, notes, and snippets.

@danieljpeter
Created August 6, 2013 22:07
Show Gist options
  • Save danieljpeter/6169172 to your computer and use it in GitHub Desktop.
Save danieljpeter/6169172 to your computer and use it in GitHub Desktop.
Use this script to fake a salesforce user login and scrape the api get and data/file storage available, used. Useful for monitoring an org from an external server, but could be adapter for other purposes. made to be served via a web server, rather than CLI.
<?php
//this requires the php toolkit: https://github.com/developerforce/Force.com-Toolkit-for-PHP
require_once ('settings.php');
require_once ('phpToolkit/SforcePartnerClient.php');
require_once ('phpToolkit/SforceHeaderOptions.php');
$storage = checkStorageUsage($USERNAME, $PASSWORD, $ORG_ID);
$api = checkAPI($USERNAME, $PASSWORD, $ORG_ID);
header("Content-Type: text/plain");
echo $storage;
echo "\n";
echo $api;
function checkAPI($USERNAME, $PASSWORD, $ORG_ID) {
$sReturn = '';
//get a session ID via the php toolkit API
$sessionId = getSession($USERNAME, $PASSWORD);
//build the cookie info out of session ID and org ID
$sc = 'Cookie=';
$sc .= 'oid='.$ORG_ID.'; ';
$sc .= 'sid='.$sessionId.'; ';
//request the orgstorageusage page in the frontend UI
$response = getOverviewPageRaw($sc);
//parse the data we want out the HTML
$apiLimit = '';
$apiUsed = '';
$apiUsedPercent = '';
$arrTable = explode('API Requests, Last 24 Hours', $response, 2);
if (count($arrTable) == 2) {
$arrTable = explode(')', $arrTable[1], 2);
if (count($arrTable) == 2) {
$sBlock = $arrTable[0];
//get the max
$arrTable = explode('(maximum', $sBlock, 2);
if (count($arrTable) == 2) {
$apiLimit = intval(str_replace(',', '', trim($arrTable[1])));
}
//get the used
$arrTable = explode('class="textOnly">', $sBlock, 2);
if (count($arrTable) == 2) {
$arrTable = explode('<', $arrTable[1], 2);
if (count($arrTable) == 2) {
$apiUsed = intval(str_replace(',', '', trim($arrTable[0])));
}
}
//get the % Used
$arrTable = explode('class="desc-num">', $sBlock, 2);
if (count($arrTable) == 2) {
$arrTable = explode('<', $arrTable[1], 2);
if (count($arrTable) == 2) {
$apiUsedPercent = intval(str_replace('%', '', trim($arrTable[0])));
}
}
}
}
$sReturn .= 'API Usage:'.$apiLimit.':'.$apiUsed.':'.$apiUsedPercent;
return $sReturn;
}
function checkStorageUsage($USERNAME, $PASSWORD, $ORG_ID) {
$sReturn = '';
//get a session ID via the php toolkit API
$sessionId = getSession($USERNAME, $PASSWORD);
//build the cookie info out of session ID and org ID
$sc = 'Cookie=';
$sc .= 'oid='.$ORG_ID.'; ';
$sc .= 'sid='.$sessionId.'; ';
//request the orgstorageusage page in the frontend UI
$response = getStoragePageRaw($sc, $ORG_ID);
//parse the data we want out the HTML
$arrTable = explode('Data Storage', $response, 2);
if (count($arrTable) == 2) {
$arrTable = explode('</table>', $arrTable[1], 2);
if (count($arrTable) == 2) {
$arrTable = explode('</td>', $arrTable[0]);
if (count($arrTable) >= 5 ) {
for ($i = 0; $i <= 5; $i++) {
//array locations 0-5 contain our 6 data points
//[0] => </th><td class=" dataCell numericalColumn">8.3&nbsp;GB
$arrRow = explode('>', $arrTable[$i]);
if ($i == 0) {
$dataLimit = str_replace(array('&nbsp;', 'GB', '%'), '', end($arrRow));
}
if ($i == 1) {
$dataUsed = str_replace(array('&nbsp;', 'GB', '%'), '', end($arrRow));
}
if ($i == 2) {
$dataUsedPercent = str_replace(array('&nbsp;', 'GB', '%'), '', end($arrRow));
}
if ($i == 3) {
$fileLimit = str_replace(array('&nbsp;', 'GB', '%'), '', end($arrRow));
}
if ($i == 4) {
$fileUsed = str_replace(array('&nbsp;', 'GB', '%'), '', end($arrRow));
}
if ($i == 5) {
$fileUsedPercent = str_replace(array('&nbsp;', 'GB', '%'), '', end($arrRow));
}
}
}
}
}
$sReturn .= 'Data Storage:'.$dataLimit.':'.$dataUsed.':'.$dataUsedPercent."\n";
$sReturn .= 'File Storage:'.$fileLimit.':'.$fileUsed.':'.$fileUsedPercent;
return $sReturn;
}
function getOverviewPageRaw($sc) {
$url = 'https://ssl.salesforce.com/setup/systemOverview.apexp';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIE, $sc);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
function getStoragePageRaw($sc, $ORG_ID) {
$url = 'https://ssl.salesforce.com/setup/org/orgstorageusage.jsp?id='.$ORG_ID;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIE, $sc);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
function getSession($USERNAME, $PASSWORD) {
$sessionId = '';
try {
$mySforceConnection = new SforcePartnerClient();
$mySoapClient = $mySforceConnection->createConnection('phpToolkit/partner.wsdl.xml');
$mylogin = $mySforceConnection->login($USERNAME, $PASSWORD);
$sessionId = $mylogin->sessionId;
} catch (Exception $e) {
print_r($mySforceConnection->getLastRequest());
echo $e->faultstring;
}
return $sessionId;
}
?>
<?php
$USERNAME = 'dan@dan.com.test';
$PASSWORD = 'password';
$ORG_ID = '00D00000000xxxx';
?>
@Favorwilliams
Copy link

My Pleasure to write you,
My name is Favor Williams,
My email address is
( Favor24@live.com)
Am interested to know
more about you,
Contact me for my
photo and other
important issue via,

Favor24@live.com

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment