Мониторинг Серверов, помощь в настройке и установки мониторинга |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
|
Мониторинг Серверов, помощь в настройке и установки мониторинга |
Lavrik
|
24.9.2007, 23:37
Сообщение
|
![]() |
monitoring.php
Код <?php $timeout = 1; // The connection timeout, in seconds $maps = "http://c-s.net.ua/maps"; $params = str_replace(".php","",$_SERVER['SCRIPT_NAME']); $params = getenv('REQUEST_URI'); $params = str_replace(".php","",$params); $params = str_replace(str_replace(".php","",$_SERVER['SCRIPT_NAME']),"",$params); $params = substr($params, 1); list($ip, $port) = explode(":", $params); if( $server = fsockopen( "udp://".$ip, $port, $errno, $errstr ) ) { $write = "\xFF\xFF\xFF\xFFTSource Engine Query\x00"; socket_set_timeout($server,$timeout); fwrite($server, $write); $server_response = fread($server,4096); fclose($server); $server_status = ($server_response ? 'ON' : 'OFF'); if ($server_status == "ON"){ $server_info['server_type'] = $server_response[4]; $server_response = substr($server_response, 5); if ($server_info['server_type'] == "m") { $server_info['address'] = cs_get_value_string($server_response); $server_info['hostname'] = htmlentities(cs_get_value_string($server_response)); $server_info['map'] = cs_get_value_string($server_response); $server_info['gamedir'] = cs_get_value_string($server_response); $server_info['description'] = cs_get_value_string($server_response); $server_info['players'] = cs_get_value_byte($server_response); $server_info['max'] = cs_get_value_byte($server_response); $server_info['protocol'] = cs_get_value_byte($server_response); $server_info['lan'] = cs_get_value_byte($server_response); $server_info['os'] = $server_response[0]; $server_response = substr($server_response, 1); $server_info['password'] = cs_get_value_byte($server_response); $server_info['is_mod'] = cs_get_value_byte($server_response); $server_info['url_info'] = cs_get_value_string($server_response); $server_info['url_down'] = cs_get_value_string($server_response); $server_info['unused'] = cs_get_value_string($server_response); $server_info['mod_version'] = cs_get_value_lint($server_response); $server_info['mod_size'] = cs_get_value_lint($server_response); $server_info['sv_only'] = cs_get_value_byte($server_response); $server_info['cl'] = cs_get_value_byte($server_response); $server_info['secure'] = cs_get_value_byte($server_response); $server_info['bots'] = cs_get_value_byte($server_response); $typeimg = ".jpg"; $type = "cs"; } elseif ($server_info['server_type'] == "I") { $server_info['address'] = $ip.":".$port; $server_info['protocol'] = cs_get_value_byte($server_response); $server_info['hostname'] = htmlentities(cs_get_value_string($server_response)); $server_info['map'] = cs_get_value_string($server_response); $server_info['gamedir'] = cs_get_value_string($server_response); $server_info['description'] = cs_get_value_string($server_response); $server_info['app_id'] = cs_get_value_sint($server_response); $server_info['players'] = cs_get_value_byte($server_response); $server_info['max'] = cs_get_value_byte($server_response); $server_info['bots'] = cs_get_value_byte($server_response); $server_info['lan'] = cs_get_value_byte($server_response); $server_info['os'] = cs_get_value_string($server_response); $server_info['password'] = cs_get_value_byte($server_response); $server_info['secure'] = cs_get_value_byte($server_response); $server_info['version'] = cs_get_value_string($server_response); $typeimg = ".png"; $type = "css"; } } } else $server_status = "OFF"; function cs_get_value_string(&$data) { $temp = ''; $i = 0; while (ord($data[$i]) != 0){ $temp .= $data[$i]; $i++; } $data = substr($data, $i+1); return $temp; } function cs_get_value_byte(&$data) { $temp = $data[0]; $data = substr($data, 1); return ord($temp); } function cs_get_value_lint(&$data) { $temp = substr($data, 0, 4); $data = substr($data, 4); $array = @unpack('Lint', $temp); return $array['int']; } function cs_get_value_sint(&$data) { $tmp = substr($data, 0, 2); $data = substr($data, 2); $array = @unpack('Sshort', $tmp); return $array['short']; } // Online Server $online_s=' <center> <table cellpadding="0" cellspacing="0"> <tr> <td background="'.$maps.'/'.$type.'/'.$server_info['map'].$typeimg.'"> <img border="0" src="'.$maps.'/map.gif" width="160" height="120"> </td> </tr> </table> <b>'.$ip.':'.$port.'</b><br /> Игроки: '.$server_info['players'].'/'.$server_info['max'].'<br /> Карта: '.$server_info['map'].'.bsp<br/> Статус сервера: <font color="green"><b>ON</b></font> <br /> </center>'; // Offline server $offline_s='<center> <table cellpadding="0" cellspacing="0"> <tr> <td background="'.$maps.'/maps/noimage.jpg"> <img border="0" src="'.$maps.'/map.gif" width="160" height="120"> </td> </tr> </table> <b>'.$ip.':'.$port.'</b><br /> Карта: unknown.bsp<br/> Игроки: 0/0<br /> Статус сервера: <font color="red"><b>OFF</b></font><br /> </center>'; if ($server_status == "ON") echo $online_s; elseif ($server_status == "OFF") echo $offline_s; else echo "Ошибка :("; ?> Работает как CS16 так и CSS Вписать в .htaccess Код Options +MultiViews -Indexes Инклудить на сайт Код <?php include "http://siteurl.com/monitoring/ip:port" ?> ------------- Скрипт для вывода именов игроков: Код <?php $timeout = 2; // The connection timeout, in seconds # c-s.net.ua labs list($ip, $port) = explode(":", "localhost:1234"); //--------------------------/----------------------------// if(@$fp = @fsockopen("udp://$ip", $port, $errno, $errstr)) { socket_set_timeout($fp,$timeout); $challenge_code = "\xFF\xFF\xFF\xFF\x57"; fwrite($fp, $challenge_code); $buffer = fread($fp, 4096); $server_status = ($buffer ? 'ON' : 'OFF'); $challenge_code = substr($buffer, 5, 4); $challenge = "\xFF\xFF\xFF\xFFU".$challenge_code; fwrite($fp, $challenge); $buffer = fread($fp, 4096); fclose($fp); } //--------------------------/----------------------------// if ($server_status == "ON"){ $player_number = 0; $player[0]['name'] = "<b>Players:</b>"; $player[0]['score'] = "<b>Frags:</b>"; $position = 6; do { $player_number++; $player[$player_number]['id'] = ord($buffer[$position]); $position ++; while($buffer[$position] != "\x00" && $position < 4000) { $player[$player_number]['name'] .= $buffer[$position]; $position ++; } $player[$player_number]['score'] = (ord($buffer[$position + 1])) + (ord($buffer[$position + 2]) * 256) + (ord($buffer[$position + 3]) * 65536) + (ord($buffer[$position + 4]) * 16777216); if ($player[$player_number]['score'] > 2147483648) { $player[$player_number]['score'] -= 4294967296; } $position += 9; } while ($position < strlen($buffer)); echo "<table>\r\n"; for($i=0; isset($player[$i]['name']); $i++) { echo "<tr><td align=\"center\" style=\"border:1px solid #2c2c2c;margin:5px;padding-left:5px;padding-right:5px;padding-top:5px;padding-bottom:5px;font-family:tahoma;font-size:11px;color:#6E6E6E;line-height:12px;\">".$player[$i]['name']."</td><td align=\"center\" style=\"border:1px solid #2c2c2c;margin:5px;padding-left:5px;padding-right:5px;padding-top:5px;padding-bottom:5px;font-family:tahoma;font-size:11px;color:#6E6E6E;line-height:12px;\">".$player[$i]['score']."</td></tr>\r\n"; $i++; if(isset($player[$i]['name']))echo "<tr><td align=\"center\" style=\"border:1px solid #2c2c2c;margin:5px;padding-left:5px;padding-right:5px;padding-top:5px;padding-bottom:5px;font-family:tahoma;font-size:11px; background:#EEE; color:#6E6E6E;line-height:12px;\">".$player[$i]['name']."</td><td align=\"center\" style=\"border:1px solid #2c2c2c;margin:5px;padding-left:5px;padding-right:5px;padding-top:5px;padding-bottom:5px;font-family:tahoma;font-size:11px;background:#EEE;color:#6E6E6E;line-height:12px;\">".$player[$i]['score']."</td></tr>\r\n"; } echo "</table>\r\n"; } ?> Весь суппорт по дополнениям и настройки мониторинга в этой теме Исходники Статусбара |
Поблагодарили 1 раз
|
|
dotsenko
|
28.9.2007, 10:47
Сообщение
|
|
|
ооо вот это да круто спасибо как будут деньги поддержу проект =)
Хотел узнать можно ли сделать на картинке png мониторинг? |
|
|
|
dotsenko
|
28.9.2007, 11:04
Сообщение
|
|
|
|
|
|
|
Lavrik
|
1.11.2007, 9:29
Сообщение
|
![]() |
Еще раз краткая инструкция
Создаем если нет файл .htaccess, и в него пишем: Код Options +MultiViews -Indexes Чтоб инклудить его в сайт надо: Код <?php ...... include "http://siteurl.com/monitoring/ip:port"; ..... ?> Можно еще с браузера посмотреть ) http://siteurl.com/monitoring/ip:port Если это невыполняемо :) меняем Код $params = str_replace(".php","",$_SERVER['SCRIPT_NAME']); $params = getenv('REQUEST_URI'); $params = str_replace(".php","",$params); $params = str_replace(str_replace(".php","",$_SERVER['SCRIPT_NAME']),"",$params); $params = substr($params, 1); list($ip, $port) = explode(":", $params); на Код $ip = "ip"; $port = "port"; И вставляем тупо в скрипт. И вставлять в .htaccess ничего ненадо ;) --------------------------------------------------------------------------------------------------------------------------------- Если вы хотите чтоб скрипт можно было загрузить только через include, впишите вначале Код if("IPSERVERA" != $_SERVER['REMOTE_ADDR'] ) exit();
|
|
|
|
Lavrik
|
1.11.2007, 20:12
Сообщение
|
![]() |
Я блин я забыл добавить <?php в начале :), все исправил. Юзаем нестесняемся
|
|
|
|
Lavrik
|
2.11.2007, 18:49
Сообщение
|
![]() |
Кинь в папку maps =)
https://c-s.net.ua/maps/666.zip Добавь перед Код // Online Server if($server_status != "ON") $typeimg = $server_info['map'] = $maps = $type = null; Или отключи оповищение об ошибках добавь После Код <?php error_reporting(0); |
|
|
|
dotsenko
|
5.11.2007, 12:26
Сообщение
|
|
|
Хм неподскажете как убрать рамку?)
|
|
|
|
dotsenko
|
5.11.2007, 17:36
Сообщение
|
|
|
Спасибо
|
|
|
|
Lavrik
|
11.11.2007, 19:04
Сообщение
|
![]() |
Цитата Lavrik скажи я правильно зделал всё? Все нормЦитата Скажи, а что количество фрагов не суждено будет нам увидеть Конечно да =)
|
Поблагодарили 1 раз
|
|
![]() ![]() |