private function monitor() { if (!$this->core->is_access("sys_monitoring")) { $this->core->js_notify('Access Denied'); } $query = $this->db->query("SELECT id, title, `text`, ip, `port` FROM `mcr_monitoring`"); if (!$query || $this->db->num_rows($query) <= 0) { $this->core->js_notify('Нет доступных серверов'); } $array = array(); require_once MCR_TOOL_PATH . 'monitoring.class.php'; $m = new monitoring($this->config->main['mon_type']); while ($ar = $this->db->fetch_assoc($query)) { $address = $this->db->HSC($ar['ip']); $port = intval($ar['port']); $m->connect($address, $port); $json = json_decode($m->data); if ($json->status == 'online') { $status = 'progress-info'; $stats = $json->players . ' / ' . $json->slots; $progress = $json->players <= 0 ? 0 : ceil(100 / ($json->slots / $json->players)); } else { $status = 'progress-danger'; $stats = 'Сервер оффлайн'; $progress = 100; } $data = array("ID" => intval($ar['id']), "TITLE" => $this->db->HSC($ar['title']), "TEXT" => $this->db->HSC($ar['text']), "STATUS" => $status, "STATS" => $stats); $array[] = array("id" => intval($ar['id']), "progress" => $progress, "form" => $this->core->sp(MCR_THEME_BLOCK . "monitor/monitor-id.html", $data)); } $this->core->js_notify('Серверы успешно получены', true, $array); }
foreach (explode(',', $settings['monitoring_alert']) as $n) { $encoded = urlencode($n); IPSText::getTextClass('email')->subject = "{$server['server_hostname']} (Acknowledged)"; IPSText::getTextClass('email')->to = $n; IPSText::getTextClass('email')->from = $settings['monitoring_from']; IPSText::getTextClass('email')->message = "{$server['server_hostname']} acknowledged by {$by}<br /><br /><a href='{$settings['board_url']}/interface/monitor.php?a=r&server={$server['server_id']}&by={$encoded}'>Reset</a>"; IPSText::getTextClass('email')->html_email = 1; IPSText::getTextClass('email')->sendMail(); } if (file_exists(IPSLib::getAppDir('nexus') . '/sources/actions/monitor.php')) { require_once IPSLib::getAppDir('nexus') . '/sources/actions/monitor.php'; monitoring::acknowledge($server, $by); } } elseif ($_GET['a'] == 'r') { ipsRegistry::DB()->update('nexus_hosting_servers', array('server_monitor_acknowledged' => 0, 'server_monitor_fails' => 0), "server_id={$server['server_id']}"); foreach (explode(',', $settings['monitoring_alert']) as $n) { $encoded = urlencode($n); IPSText::getTextClass('email')->subject = "{$server['server_hostname']} (Reset)"; IPSText::getTextClass('email')->to = $n; IPSText::getTextClass('email')->from = $settings['monitoring_from']; IPSText::getTextClass('email')->message = "{$server['server_hostname']} reset by {$by}"; IPSText::getTextClass('email')->html_email = 1; IPSText::getTextClass('email')->sendMail(); } if (file_exists(IPSLib::getAppDir('nexus') . '/sources/actions/monitor.php')) { require_once IPSLib::getAppDir('nexus') . '/sources/actions/monitor.php'; monitoring::reset($server, $by); } } echo "Done"; exit;