public function createDefaultGroup() { $defaultgroups = json_decode(MONITIS_ADMIN_CONTACT_GROUPS, true); $existedGroups = MonitisApi::getContactGroupList(); // existed monitis groups foreach ($defaultgroups as $mType => $groupName) { $group = MonitisHelper::in_array($existedGroups, 'id', MonitisConf::$settings['groups'][$mType]['groupId']); $alerts = json_decode(MONITIS_NOTIFICATION_RULE, true); if ($mType == 'internal') { $alerts['minFailedLocationCount'] = null; } $groupId = $group['id'] ? $group['id'] : 0; $notifByTypeGroup = MonitisApiHelper::getNotificationRuleByType($mType, $groupId); $alertRulesDefault = $notifByTypeGroup ? $notifByTypeGroup : $alerts; if ($group) { MonitisConf::$settings['groups'][$mType]['groupId'] = $group['id']; MonitisConf::$settings['groups'][$mType]['groupName'] = $group['name']; MonitisConf::$settings['groups'][$mType]['alert'] = $alertRulesDefault; } else { $newGroupName = $groupName; $resp = MonitisApi::addContactGroup(1, $newGroupName); if ($resp['status'] == 'ok') { MonitisConf::$settings['groups'][$mType]['groupId'] = $resp['data']; MonitisConf::$settings['groups'][$mType]['groupName'] = $newGroupName; MonitisConf::$settings['groups'][$mType]['alert'] = $alertRulesDefault; } else { // error return array('status' => 'error', 'msg' => 'Add contact group error ' . $resp['error']); } } // $r = $this->addContacts(ucfirst($mType), MonitisConf::$settings['groups'][$mType]['groupId']); } MonitisConf::update_settings(json_encode(MonitisConf::$settings)); return array('status' => 'ok', 'msg' => 'External, internal groups sets success'); }
public function synchronizeClients() { $all = array(); $subUsers = MonitisApi::clients(true); $clntByUsr = monitisSqlHelper::query('SELECT user_id, firstname, lastname, email, LOWER(status) as status, api_key, secret_key FROM mod_monitis_user LEFT JOIN tblclients ON tblclients.id=mod_monitis_user.user_id'); for ($i = 0; $i < count($subUsers); $i++) { $apikey = $subUsers[$i]['apikey']; $whmcsUser = MonitisHelper::in_array($clntByUsr, 'api_key', $apikey); $userid = 0; // user linked if ($whmcsUser) { $userid = $whmcsUser['user_id']; } else { // link user $arr = explode('_', $subUsers[$i]['account']); if ($arr && $arr[0]) { $userid = intval(substr($arr[0], 5)); if ($userid > 0) { $resp = monitisClientApi::linkUserByApikey($apikey, $userid); if (@$resp['status'] == 'ok' && isset($resp['data'])) { //$secretkey = $resp['data']['secret_key']; $whmcsUser = $this->userById($userid); $whmcsUser['api_key'] = $apikey; $whmcsUser['secret_key'] = $resp['data']['secret_key']; } } } } $monitors = null; if ($userid > 0) { $monitors = $subUsers[$i]['monitors']; $monitors = $this->synchronizeMonitors($userid, $monitors); } $all[] = array('api_user' => $subUsers[$i], 'whmcs_user' => $whmcsUser, 'monitors' => $monitors); } return $all; }
public function associateDrives($whmcsDrives, $agentInfo, $serverID) { $result = array("status" => "warning", "msg" => "No agent or agent is stopped"); if ($agentInfo && isset($agentInfo['drives'])) { $agentId = $agentInfo['agentId']; $monDrives = $agentInfo['drives']; $whmcs_drives = null; if ($whmcsDrives) { $whmcs_drives = array(); for ($i = 0; $i < count($whmcsDrives); $i++) { $mon = MonitisHelper::in_array($monDrives, 'id', $whmcsDrives[$i]['monitor_id']); if ($mon) { $whmcs_drives[] = $whmcsDrives[$i]; } else { monitisSqlHelper::altQuery('DELETE FROM ' . MONITIS_INTERNAL_TABLE . ' WHERE monitor_id=' . $whmcsDrives[$i]['monitor_id']); } } } $ids = array(); for ($i = 0; $i < count($monDrives); $i++) { $drive = $monDrives[$i]; if (isset($drive['id'])) { if (!$whmcs_drives || !MonitisHelper::in_array($whmcs_drives, 'monitor_id', $drive['id'])) { $ids[] = $drive['id']; } } } $cnt = count($ids); if ($ids && $cnt > 0) { for ($i = 0; $i < $cnt; $i++) { $monitorID = $ids[$i]; $pubKey = MonitisApi::monitorPublicKey(array('moduleType' => 'drive', 'monitorId' => $monitorID)); $values = array('server_id' => $serverID, 'available' => MonitisConf::$settings['drive']['available'], 'agent_id' => $agentId, 'monitor_id' => $monitorID, 'monitor_type' => 'drive', 'client_id' => MONITIS_CLIENT_ID, "publickey" => $pubKey); insert_query('mod_monitis_int_monitors', $values); } $result["status"] = 'ok'; $result["msg"] = 'Add ' . $cnt . ' drive(s)'; } else { $result["status"] = 'warning'; $result["msg"] = 'No drive monitor for add'; } } return $result; }
private function getServerMonitors($server_id, &$arr) { $monitors = array(); for ($i = 0; $i < count($arr); $i++) { if ($arr[$i]["server_id"] == $server_id && MonitisHelper::in_array($this->pubKeys, 'key', $arr[$i]["publickey"])) { $monitors[] = $arr[$i]; } } return $monitors; }
echo "<section>"; //$monitors = $monitors['monitors']; for ($i = 0; $i < count($monitors); $i++) { $monitor = $monitors[$i]; $monitor_id = $monitor['monitor_id']; $monitor_type = $monitor['monitor_type']; $item = $monitor['info']; $sets = $monitor["settings"]; $sets = json_decode($sets, true); //$locationIds = explode(',', $item['locationIds']); $locationIds = explode(',', $item['locations']); $settingProduct = array('interval' => $interval, 'timeout' => $item['timeout'], 'name' => $monitor['info']['name'], 'types' => $monitor_type, 'locationIds' => $locationIds, 'locationsMax' => $sets['locationsMax']); $settingProduct = json_encode($settingProduct); $settingProduct = str_replace('"', "~", $settingProduct); /* notification rule by monitor id */ $alert = MonitisHelper::in_array($alerts, 'monitorId', $monitor_id); $alertAction = 'add_rule'; $rule = $alertAll; $ruleid = $allRuleid; $contactId = $allContactId; if ($alert) { $alertAction = 'edit_rule'; $rule = str_replace('"', "~", $alert['rule']); $ruleid = $alert['id']; $contactId = $alert['contactId']; } /* suspend */ $suspend = 'unsuspend'; if (!$item["isSuspended"]) { $suspend = 'suspend'; }
public function activateProducts($productIds) { $result = array('status' => 'error', 'products' => array()); $products = $this->allProducts(); if ($products) { $result['status'] = 'ok'; for ($i = 0; $i < count($productIds); $i++) { $prdct = MonitisHelper::in_array($products, 'pid', $productIds[$i]); $productId = intval($productIds[$i]); if ($prdct) { if (isset($prdct['monitisProduct'])) { // monitis product is active if ($prdct['monitisProduct']['settings']) { $result['products'][] = array('status' => 'warning', 'msg' => 'Product "' . $prdct['name'] . '" already has activated'); } else { // activate $setting = MonitisConf::$settings['ping']; $setting['timeoutPing'] = 1000; $setting['timeout'] = 10; $this->activateProduct($productId, json_encode($setting)); $result['products'][] = array('status' => 'ok', 'msg' => 'Product "' . $prdct['name'] . '" activated'); } } else { // set up as monitoring product $this->websiteValue['relid'] = $productId; insert_query('tblcustomfields', $this->websiteValue); $this->monitorTypesValue['relid'] = $productId; insert_query('tblcustomfields', $this->monitorTypesValue); $setting = MonitisConf::$settings['ping']; $setting['timeoutPing'] = 1000; $setting['timeout'] = 10; $this->activateProduct($productId, json_encode($setting)); $result['products'][] = array('status' => 'ok', 'msg' => 'Product "' . $prdct['name'] . '" was set up as monitoring product successful'); } } else { $result['products'][] = array('status' => 'error', 'msg' => 'Error product ' . $productId); } } } return $result; }
private function initServer(&$server) { $monitor = null; if ($this->allPings) { // define ping monitor by IP $ping = MonitisHelper::in_array($this->allPings, 'url', $server['ipaddress']); if ($ping) { $monitorId = $ping['id']; $linkedMon = MonitisHelper::in_array($this->whmcsExt, 'monitor_id', $monitorId); if (!$linkedMon) { // link ping monitor $linkedMon = monitisSnapShots::linkPingMonitor($monitorId, 'ping', $server['id']); } $monitor = $ping; $monitor['available'] = $linkedMon['available']; $monitor['publickey'] = $linkedMon['publickey']; } } $server['ping'] = $monitor; $agent = $this->agentFullInfo; if ($agent) { $info = $this->intMonitor($agent, $server['id']); $server['agent'] = $info; } return $server; }
private function init_all_servers() { for ($i = 0; $i < count($this->whmcsAllServers); $i++) { $server = $this->whmcsAllServers[$i]; if ($this->allPings) { // define ping monitor by IP $ping = MonitisHelper::in_array($this->allPings, 'url', $server['ipaddress']); if ($ping) { $monitorId = $ping['id']; $ext = MonitisHelper::in_array($this->whmcsExt, 'monitor_id', $monitorId); if (!$ext) { // link monitor $ext = monitisSnapShots::linkPingMonitor($monitorId, 'ping', $server['id']); $this->result[] = array('server' => $server['name'], 'action' => 'link', 'monitor' => $ext); } } } $agent = MonitisHelper::in_array($this->allAgents['agents'], 'key', $server['hostname']); if ($agent && isset($agent['status']) && $agent['status'] == 'running') { $this->internalMonitors($agent, $server); } } // remove unlinked internal monitors $this->unlinkedInternal(); }
private function init_all_servers() { for ($i = 0; $i < count($this->whmcsAllServers); $i++) { $monitors = array(); $server = $this->whmcsAllServers[$i]; if ($this->allPings) { // define ping monitor by IP $ping = MonitisHelper::in_array($this->allPings, 'url', $server['ipaddress']); if ($ping) { $monitorId = $ping['id']; $ext = MonitisHelper::in_array($this->whmcsExt, 'monitor_id', $monitorId); if (!$ext && $this->synchronize) { // link monitor $ext = monitisSnapShots::linkPingMonitor($monitorId, 'ping', $server['id']); } $status = MonitisHelper::in_array($this->pingsStatus, 'id', $monitorId); $monitors['ping'] = $status; if ($ping['isSuspended']) { $monitors['ping']['status'] = 'suspended'; } } } $agent = MonitisHelper::in_array($this->allAgents['agents'], 'key', $server['hostname']); if ($agent) { if (isset($agent['status']) && $agent['status'] == 'running') { $info = $this->intMonitor($agent, $server['id']); if ($info) { $this->whmcsAllServers[$i]['agent_id'] = $info['agent_id']; //$int['agent_id']; $this->whmcsAllServers[$i]['agent_status'] = $info['status']; $monitors['cpu'] = $info['cpu']; $monitors['drive'] = $info['drive']; $monitors['memory'] = $info['memory']; } } elseif (isset($agent['status']) && $agent['status'] == 'stopped') { $this->whmcsAllServers[$i]['agent_id'] = $agent['id']; //$int['agent_id']; $this->whmcsAllServers[$i]['agent_status'] = $agent['status']; } } if ($monitors && count($monitors) > 0) { $this->whmcsAllServers[$i]['monitors'] = $monitors; } } if ($this->synchronize) { $this->unlinkedInternal(); } }
public function planDetails($sss) { $result = array('clients' => 0, 'clientsMonitors' => 0, 'uptimeMonitors' => 0, 'locations' => 0, 'agents' => 0); /* * parent user info, plan */ $params = array('loadUserPlan' => 'true'); $userInfo = MonitisApi::userInfo($params); if (isset($userInfo['status']) && $userInfo['status'] == 'error' && isset($userInfo['code']) && $userInfo['code'] == 101) { return null; } $plan = array('roleName' => '', 'uptimePlan' => 0, 'intMonitors' => 0); if ($userInfo) { $roleName = $userInfo['plan']['roleName']; $basketItems = $userInfo['plan']['basketItems']; $plan['roleName'] = $roleName; if (strtoupper($roleName) == 'TRIAL') { $trial = MonitisHelper::in_array($basketItems, 'name', $roleName); if ($trial) { $ext = MonitisHelper::in_array($trial['permissions'], 'actionId', $this->plans["uptimes"]["id"]); // External monitoring / Uptime $plan['uptimePlan'] = $ext['value']; $int = MonitisHelper::in_array($trial['permissions'], 'actionId', $this->plans["servers"]["id"]); // Server $plan['serverPlan'] = $int['value']; } } else { $ext = $this->basketItemById($basketItems, $this->plans["uptimes"]["id"]); $plan['uptimePlan'] = $ext['quantity']; $int = $this->basketItemById($basketItems, $this->plans["servers"]["id"]); $plan['serverPlan'] = $int['quantity']; } $result['plan'] = $plan; } /* * clients info */ $params = array('loadUserPlan' => 'true', 'loadMonitors' => 'true'); $subUsers = MonitisApi::clientsList($params); $userMonitors = 0; for ($i = 0; $i < count($subUsers); $i++) { $userMonitors += count($subUsers[$i]['monitors']); } $result['clients'] = 0; if ($subUsers && count($subUsers) > 0) { $result['clients'] = count($subUsers); } $result['clientsMonitors'] = $userMonitors; /* * parent info * get all uptime monitors */ $snapshots = MonitisApi::externalSnapshot(); $result['uptimeMonitors'] = 0; if ($snapshots && count($snapshots) > 0) { $result['uptimeMonitors'] = count($snapshots); } /* * Server / Device monitors * */ $agentsSnapshot = MonitisApi::allAgentsSnapshot('', true); if ($agentsSnapshot && isset($agentsSnapshot['agents'])) { $result['agents'] = count($agentsSnapshot['agents']); } $result['internalMonitors'] = 0; $internalMonitors = MonitisApi::getInternalMonitors(); if ($internalMonitors) { if (isset($internalMonitors['cpus'])) { $result['internalMonitors'] += count($internalMonitors['cpus']); } if (isset($internalMonitors['memories'])) { $result['internalMonitors'] += count($internalMonitors['memories']); } if (isset($internalMonitors['drives'])) { $result['internalMonitors'] += count($internalMonitors['drives']); } } return $result; }