Files
luos/workflow/engine/methods/services/processHeartBeat_Ajax.php
jennylee 665fd4d25d CODE STYLE, workflow/engine/methods/services/
FILES:
cases_StartExternal.php
demoSoap.php
login_getStarted.php
processHeartBeat_Ajax.php
soap.php
soap2.php
unavailableService.php
upload.php
webdav.php
wsdl.php
wsdl2.php
wso2.php
xpdl.php
2012-10-17 14:21:55 -04:00

342 lines
12 KiB
PHP
Executable File

<?php
$request = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : "";
G::LoadClass( 'serverConfiguration' );
$oServerConf = &serverConf::getSingleton();
$oServerConf->setHeartbeatProperty( 'HB_BEAT_URL', 'http://heartbeat.processmaker.com/syspmLicenseSrv/en/green/services/beat', 'HEART_BEAT_CONF' );
switch ($request) {
case 'processInformation':
try {
$heartBeatUrl = $oServerConf->getHeartbeatProperty( 'HB_BEAT_URL', 'HEART_BEAT_CONF' );
//Test connection
if (! (validateConnectivity( $heartBeatUrl ))) {
$oServerConf->setHeartbeatProperty( 'HB_NEXT_BEAT_DATE', strtotime( "+1 day" ), 'HEART_BEAT_CONF' );
throw new Exception( "Heartbeat::No connection" );
}
//Build Data to be sent
$params = buildData();
//Send the information
postHeartBeat( $params );
} catch (Exception $e) {
G::pr( $e->getMessage() );
}
break;
}
function validateConnectivity ($url)
{
ini_set( 'allow_url_fopen', 1 );
$sContent = file_get_conditional_contents( $url );
$sw_connect = true;
//if ($sContent == '' || $sContent === false || strpos ( $sContent, 'address location' ) === false ) { 4
if ($sContent == '' || $sContent === false) {
$sw_connect = false;
}
return $sw_connect;
}
function file_get_conditional_contents ($szURL)
{
$pCurl = curl_init();
curl_setopt( $pCurl, CURLOPT_URL, $szURL );
curl_setopt( $pCurl, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $pCurl, CURLOPT_HEADER, true );
curl_setopt( $pCurl, CURLOPT_FOLLOWLOCATION, false );
curl_setopt( $pCurl, CURLOPT_AUTOREFERER, true );
//To avoid SSL error
curl_setopt( $pCurl, CURLOPT_SSL_VERIFYHOST, 0 );
curl_setopt( $pCurl, CURLOPT_SSL_VERIFYPEER, 0 );
//To avoid timeouts
curl_setopt( $pCurl, CURLOPT_CONNECTTIMEOUT, 10 );
curl_setopt( $pCurl, CURLOPT_TIMEOUT, 20 );
curl_setopt( $pCurl, CURLOPT_NOPROGRESS, false );
curl_setopt( $pCurl, CURLOPT_VERBOSE, true );
//Apply proxy settings
$sysConf = System::getSystemConfiguration();
if ($sysConf['proxy_host'] != '') {
curl_setopt( $pCurl, CURLOPT_PROXY, $sysConf['proxy_host'] . ($sysConf['proxy_port'] != '' ? ':' . $sysConf['proxy_port'] : '') );
if ($sysConf['proxy_port'] != '') {
curl_setopt( $pCurl, CURLOPT_PROXYPORT, $sysConf['proxy_port'] );
}
if ($sysConf['proxy_user'] != '') {
curl_setopt( $pCurl, CURLOPT_PROXYUSERPWD, $sysConf['proxy_user'] . ($sysConf['proxy_pass'] != '' ? ':' . $sysConf['proxy_pass'] : '') );
}
curl_setopt( $pCurl, CURLOPT_HTTPHEADER, array ('Expect:'
) );
}
$szContents = curl_exec( $pCurl );
$aInfo = curl_getinfo( $pCurl );
$curl_session = curl_getinfo( $pCurl, CURLINFO_HTTP_CODE );
$headers = curl_getinfo( $pCurl );
$header = substr( $szContents, 0, $headers['header_size'] );
$content = substr( $szContents, $headers['header_size'] );
if ($aInfo['http_code'] === 200) {
return $content;
}
return false;
}
function buildData ()
{
require_once ("classes/model/Users.php");
G::LoadClass( "serverConfiguration" );
G::LoadClass( "system" );
$oServerConf = &serverConf::getSingleton();
$os = '';
if (file_exists( '/etc/redhat-release' )) {
$fnewsize = filesize( '/etc/redhat-release' );
$fp = fopen( '/etc/redhat-release', 'r' );
$os = trim( fread( $fp, $fnewsize ) );
fclose( $fp );
}
$os .= " (" . PHP_OS . ")";
$params = array ();
$params['ip'] = getenv( 'SERVER_ADDR' );
$oServerConf->setHeartbeatProperty( 'HB_BEAT_INDEX', intval( $oServerConf->getHeartbeatProperty( 'HB_BEAT_INDEX', 'HEART_BEAT_CONF' ) ) + 1, 'HEART_BEAT_CONF' );
$params['index'] = $oServerConf->getHeartbeatProperty( 'HB_BEAT_INDEX', 'HEART_BEAT_CONF' ); //$this->index;
$params['beatType'] = is_null( $oServerConf->getHeartbeatProperty( 'HB_BEAT_TYPE', 'HEART_BEAT_CONF' ) ) ? "starting" : $oServerConf->getHeartbeatProperty( 'HB_BEAT_TYPE', 'HEART_BEAT_CONF' ); //1;//$this->beatType;
$params['date'] = date( 'Y-m-d H:i:s' );
$params['host'] = getenv( 'SERVER_NAME' );
$params['os'] = $os;
$params['webserver'] = getenv( 'SERVER_SOFTWARE' );
$params['php'] = phpversion();
$params['pmVersion'] = System::getVersion();
if (class_exists( 'pmLicenseManager' )) {
$params['pmProduct'] = 'PMEE';
} else {
$params['pmProduct'] = 'PMCE';
}
$params['logins'] = $oServerConf->logins;
$params['workspaces'] = serialize( $oServerConf->getWSList() );
$params['plugins'] = serialize( $oServerConf->getPluginsList() );
$params['dbVersion'] = $oServerConf->getDBVersion();
//$params ['errors'] = serialize( $oServerConf->errors );
if ($licInfo = $oServerConf->getProperty( 'LICENSE_INFO' )) {
$params['license'] = serialize( $licInfo );
}
///////
$criteria = new Criteria( "workflow" );
$criteria->addSelectColumn( "COUNT(USERS.USR_UID) AS USERS_NUMBER" );
$criteria->add( UsersPeer::USR_UID, null, Criteria::ISNOTNULL );
$rs = UsersPeer::doSelectRS( $criteria );
$rs->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$rs->next();
$row = $rs->getRow();
$params["users"] = $row["USERS_NUMBER"];
///////
$ee = null;
if (file_exists( PATH_PLUGINS . "enterprise" . PATH_SEP . "VERSION" )) {
$ee = trim( file_get_contents( PATH_PLUGINS . "enterprise" . PATH_SEP . "VERSION" ) );
} else {
$pluginRegistry = &PMPluginRegistry::getSingleton();
$details = $pluginRegistry->getPluginDetails( "enterprise.php" );
$ee = (! ($details == null)) ? $details->iVersion : null;
}
$params["ee"] = $ee;
///////
$addonNumber = 0;
$addonEnabledNumber = 0;
$pluginRegistry = &PMPluginRegistry::getSingleton();
$arrayAddon = array ();
if (file_exists( PATH_DATA_SITE . "ee" )) {
$arrayAddon = unserialize( trim( file_get_contents( PATH_DATA_SITE . "ee" ) ) );
$arrayAddon["enterprise"] = array ("sFilename" => "enterprise-1.tar"
);
}
foreach ($arrayAddon as $addon) {
$sFileName = substr( $addon["sFilename"], 0, strpos( $addon["sFilename"], "-" ) );
if (file_exists( PATH_PLUGINS . $sFileName . ".php" )) {
$addonDetails = $pluginRegistry->getPluginDetails( $sFileName . ".php" );
$enabled = 0;
if ($addonDetails) {
$enabled = ($addonDetails->enabled) ? 1 : 0;
}
if ($enabled == 1) {
$addonEnabledNumber = $addonEnabledNumber + 1;
}
$addonNumber = $addonNumber + 1;
}
}
$params["addonNumber"] = $addonNumber;
$params["addonEnabledNumber"] = $addonEnabledNumber;
///////
$licenseID = null;
$licenseType = null;
$licenseDomainWorkspace = null;
$licenseNumber = 0;
if (file_exists( PATH_PLUGINS . "enterprise" . PATH_SEP . "class.pmLicenseManager.php" ) && class_exists( 'enterprisePlugin' )) {
$licenseManager = &pmLicenseManager::getSingleton();
preg_match( "/^license_(.*).dat$/", $licenseManager->file, $matches );
$licenseID = $matches[1];
$licenseType = $licenseManager->type;
$licenseDomainWorkspace = $licenseManager->info["DOMAIN_WORKSPACE"];
///////
$criteria = new Criteria( "workflow" );
$criteria->addSelectColumn( "COUNT(LICENSE_MANAGER.LICENSE_UID) AS LICENSE_NUMBER" );
$criteria->add( LicenseManagerPeer::LICENSE_UID, null, Criteria::ISNOTNULL );
$rs = LicenseManagerPeer::doSelectRS( $criteria );
$rs->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$rs->next();
$row = $rs->getRow();
///////
$licenseNumber = ($row["LICENSE_NUMBER"] > 0) ? $row["LICENSE_NUMBER"] : count( glob( PATH_DATA_SITE . "licenses" . PATH_SEP . "*.dat" ) );
}
$params["licenseID"] = $licenseID;
$params["licenseType"] = $licenseType;
$params["licenseDomainWorkspace"] = $licenseDomainWorkspace;
$params["licenseNumber"] = $licenseNumber;
///////
return $params;
}
function postHeartBeat ($params)
{
if (is_array( $params )) {
//No matter what happens with the result let's set the nextBeat to 2 hours from now
G::LoadClass( 'serverConfiguration' );
$oServerConf = & serverConf::getSingleton();
$oServerConf->setHeartbeatProperty( 'HB_NEXT_BEAT_DATE', strtotime( "+2 hour" ), 'HEART_BEAT_CONF' );
$nextBeatDate = $oServerConf->getHeartbeatProperty( 'HB_NEXT_BEAT_DATE', 'HEART_BEAT_CONF' );
$heartBeatUrl = $oServerConf->getHeartbeatProperty( 'HB_BEAT_URL', 'HEART_BEAT_CONF' );
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $heartBeatUrl );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_HEADER, true );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, false );
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
//To avoid SSL error
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt( $ch, CURLOPT_POST, 1 );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $params );
//To avoid timeouts
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 10 );
curl_setopt( $ch, CURLOPT_TIMEOUT, 20 );
//Apply proxy settings
$sysConf = System::getSystemConfiguration();
if ($sysConf['proxy_host'] != '') {
curl_setopt( $ch, CURLOPT_PROXY, $sysConf['proxy_host'] . ($sysConf['proxy_port'] != '' ? ':' . $sysConf['proxy_port'] : '') );
if ($sysConf['proxy_port'] != '') {
curl_setopt( $ch, CURLOPT_PROXYPORT, $sysConf['proxy_port'] );
}
if ($sysConf['proxy_user'] != '') {
curl_setopt( $ch, CURLOPT_PROXYUSERPWD, $sysConf['proxy_user'] . ($sysConf['proxy_pass'] != '' ? ':' . $sysConf['proxy_pass'] : '') );
}
curl_setopt( $ch, CURLOPT_HTTPHEADER, array ('Expect:'
) );
}
$response = curl_exec( $ch );
$curl_session = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
$headers = curl_getinfo( $ch );
$header = substr( $response, 0, $headers['header_size'] );
$content = substr( $response, $headers['header_size'] );
curl_close( $ch );
if ($headers['http_code'] == 200) {
$oServerConf->setHeartbeatProperty( 'HB_BEAT_TYPE', 'beat', 'HEART_BEAT_CONF' );
$oServerConf->resetLogins();
$oServerConf->setHeartbeatProperty( 'HB_NEXT_BEAT_DATE', strtotime( "+7 day" ), 'HEART_BEAT_CONF' );
//Reset Errors
} else {
//Catch the error
$oServerConf->setHeartbeatProperty( 'HB_NEXT_BEAT_DATE', strtotime( "+1 day" ), 'HEART_BEAT_CONF' );
}
}
/*
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $heartBeatUrl );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch, CURLOPT_HEADER, true );
curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, false );
curl_setopt ( $ch, CURLOPT_AUTOREFERER, true );
//To avoid SSL error
curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt ( $ch, CURLOPT_POST, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $params );
//To avoid timeouts
curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 10 );
curl_setopt ( $ch, CURLOPT_TIMEOUT, 20 );
$response = curl_exec ( $ch );
$curl_session = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$headers = curl_getinfo ( $ch );
$header = substr ( $response, 0, $headers ['header_size'] );
$content = substr ( $response, $headers ['header_size'] );
curl_close ( $ch );
if ($headers ['http_code'] == 200) {
$this->beatType = 'beat';
$this->resetLogins ();
$this->nextBeatDate = strtotime ( "+7 day" ); //next beat in 7 days
//Reset Errors
$this->errors=array();
} else {
//Catch the error
$this->errors[]=$curl_session;
$this->nextBeatDate = strtotime ( "+1 day" ); //retry in 30 mins
}
$this->saveSingleton ();
*/
}