Небольшой фикс скрипта оповещения о статусе сервера. Бывает, что даже тот хост, на котором будет лежать сей скрипт, вдруг может упасть (мало ли бывает, профилактика сети и т.д.) Вот как раз, если идут работы с сетью в том ДЦ, где находится хост на котором лежит скрипт статуса сервера, при его выполнении, скрипт соответственно не будет видеть Ваш проверяемый сервер и ошибочно полагая, что он упал, будет отсылать оповещение, но так как само собой доступа к интернету нету у хоста (как я писал, вдруг профилактика, работ с сетью), то неотправленный емайл скорее всего попадет в очередь отправки и представляете сколько таких оповещений может накопиться в очереди? Когда сеть появится, ваш телефон сильно заспамит СМСками(особенно если интервал проверки 5 минут), что будто Ваш сервер упал (хотя это не так скорее всего). Как избежать ложных оповещений, если вдруг у хоста временно недоступна сеть? Внести в скрипт проверку на доступность интернета для хоста. <? $inet = @fsockopen("ya.ru", "80", $errno, $errstr, 1); if($inet){ $to = "[email protected],"; //указываем почтовый адрес от сервиса МТС, с указанием вашего номера телефона. $to .= "[email protected]"; //Дополнительный почтовый адрес, например обычная ваша почта, куда будет дублироваться уведомление, либо для подстраховки другой сервис СМС оповещения через емайл. $datez = date("Y-m-d G:i:s"); //Время отправки уведомления $subject ='=?utf-8?B?'. base64_encode ("SERVER PW OFF").'?='; $m = $datez." SERVER PW OFF"; $headers = "MIME-Version: 1.0 \r\n"; $headers .= "Content-type: text/html; charset='utf-8' \r\n"; $headers .= "From: [email protected]\r\n"; //Вписываем адрес отправителя, раз уж от лица сервера, то имя почты можно задать [email protected] $ip1="demo.ru"; //хост сервера IP или домен, например demo.ru $port1="29000"; // Порт проверяемой службы, например 29000, т.е. проверяем статус игрового сервера PW. $fp = @fsockopen($ip1, $port1, $errno, $errstr, 1); //коннектимся и получаем денные if(!$fp) mail($to, $subject, $m, $headers); //если ничего не получили, отсылаем оповещение. }else{ print "inet no connect!"; } ?> Как многие из вас заметили, в скрипте в самом начале мы делаем проверку на доступность всеми известного yandex.ru (ya.ru), он то 100% всегда работает, и если скрипт вдруг его не увидит, значит на сервере проблема с доступом к интернету и в таком случае исключены ложные проверки Вашего сервера, а скрипт выведет сообщение inet no connect!. Если интернет есть, соответственно скрипт проверит и как обычно оповестит, если ваш сервер упал.
ещё вариант с пхп классом https://github.com/geerlingguy/Ping
Всем привет вот заинтересовал статус сервера На этом портале много статусов сервера но есть ли статус сервера и ниже например показывается пинг сервера сам писать не умею тк не знаю пхп Если у кого нибудь есть выложите буду очень благодарен <? function ping($host, $port, $timeout) { $tB = microtime(true); $fP = fSockOpen($host, $port, $errno, $errstr, $timeout); if (!$fP) { return "down"; } $tA = microtime(true); return round((($tA - $tB) * 1000), 0)." ms"; } //Echoing it will display the ping if the host is up, if not it'll say "down". echo ping("www.google.com", 80, 10); ?>
Продолжая тему Botchal`a, хотелось бы несколько расширить полезность приведенного там скрипта, возможно кто то скажет "вот мол открыл Америку!", ну а кому то эта информация окажется полезной... И так! Многим администраторам своих серверов видимо хочется быть всегда в курсе того, что происходит с сервером и при его отказе быстро получать об этом извещение. Как вариант настроить СМС оповещение (хотя у тех, где покупаете сервер часто такую услугу дают и так, но обычно ведется общий мониторинг сервера, а не отдельные его службы, вроде игр), но к сожалению реально бесплатных смс-шлюзов я так и не нашел (сервисы с капчей отправки смс не в счет). Но немного подумав, вспомнил про почтовые сервисы с оповещением по СМС, таковые есть и в МТС, Билайн и других мобильных операторов, а так же есть почтовые сервисы позволяющие уведомлять о новой почте об смс (например на mail.ru). Ну, а так как я абонент МТС, то рассмотрим на примере подключение сервиса с этого мобильного оператора. Что для этого понадобится? 1. Собственно быть абонентом МТС. 2. Иметь доступ в личный кабинет mts.ru 3. Иметь мобильный аппарат конечно =) 4. Сам скрипт. 5. Крон (CRON) планировщик задач на хосте где будет выполнятся скрипт по расписанию. И так, идем в ЛК МТС, заходим там в интернет-помощник, а там выбираем управление услугами, наша цель там, подключить такую услугу: SMS to e-mail/e-mail to SMS [ATTACH] И так, разобрались, подключили услугу? Т.е. Отображается в списке подключенных услуг, как на скрине? если нет, тогда кликаем по ссылке +Подключить новые услуги и там ищем и подключаем такую услугу. Ну я думаю, Вы все же разобрались и подключили её. Пришло время настроить PHP скрипт: <? $to = "[email protected],"; //указываем почтовый адрес от сервиса МТС, с указанием вашего номера телефона. $to .= "[email protected]"; //Дополнительный почтовый адрес, например обычная ваша почта, куда будет дублироваться уведомление, либо для подстраховки другой сервис СМС оповещения через емайл. $datez = date("Y-m-d G:i:s"); //Время отправки уведомления $subject ='=?utf-8?B?'. base64_encode ("SERVER PW OFF").'?='; $m = $datez." SERVER PW OFF"; $headers = "MIME-Version: 1.0 \r\n"; $headers .= "Content-type: text/html; charset='utf-8' \r\n"; $headers .= "From: [email protected]\r\n"; //Вписываем адрес отправителя, раз уж от лица сервера, то имя почты можно задать [email protected] $ip1="demo.ru"; //хост сервера IP или домен, например demo.ru $port1="29000"; // Порт проверяемой службы, например 29000, т.е. проверяем статус игрового сервера PW. $fp = @fsockopen($ip1, $port1, $errno, $errstr, 1); //коннектимся и получаем денные if(!$fp) mail($to, $subject, $m, $headers); //если ничего не получили, отсылаем оповещение. ?> все, можем считать, что скрипт настроен, и залит на хост. Кстати, рекомендую конечно чекать(проверять) статус сервера с другого хоста, а не с самого сервера где установлен ваш игровой сервер, ведь если вдруг будут траблы с самим физическим сервером, то и оповещения не получите. Сейчас практически любой хостинг, даже самый недорогой поддерживает крон, оттуда можно и чекать. Приступим к настройке задания крона, я это делал в отдельном хосте через ISPmanager [ATTACH] Установим например 5 минут, т.е. каждые 5 минут крон будет обращаться к скрипту, а тот в свою очередь и будет делать проверку и отсылать оповещение при необходимости. Конечно, способ команды обращения к скрипту можете сделать и по другому, но я решил обратится к нему через wget. Все, оповещение настроено! Можете конечно проверить работу, указав в скрипте порт, который заведомо не используется ничем, соответственно и ответа скрипт с него не получит, зато Вы получите оповещение. PS: Как я уже говорил, есть немало сервисов по оповещению на СМС, через емайл. На mail.ru например можно завести специальный ящик для таких уведомлений на смс.
погуглил, нашел это: в файлике listenserver.cfg ввести sv_lan 0 и ещё советуют ставить RevEmu
Программа удобная, управление сервером очень удобно управлять, все как на ладони, я уверен программа будет пополнятся новыми функциями, в частности, хотелось бы видеть такие: 1. Проверка на существование аккаунтов (бывают момент, когда разные бекапы ставишь и получается много персонажей без аккаунтов, и новые игроки получают чужих персонажей) потому хотелось бы функцию вроде сканнера на наличие персов без акков, и выбор действия с ними, удалить, забанить и т.д. 2. На сервере заметили многих игроков с дабл скилами (когда кроме ад скиллов, умудряются учить ещё и рай умения), исходя из такого, хотелось бы увидеть функцию сброса умений по выбору (глобально, на определенные расы, на определенного персонажа) Еще раз спасибо за сей продукт.
Перед тем как озвучить свою проблему хочу поздравить мой любимый форум с восстановлением !!! Ура! Ура! Ура! Уважаемые знатоки помогите пжлст перенести базу аккаунтов и персонажей с версии 1.4.5 на 1.4.6. Ранумеется не бесплатно.. Зараннее спсасибо тем кто откликнется.. недавно переносил базу с 1.4.4. на 1.4.7, успешно, при том все бесплатно разжевали на этом же форуме. Касательно аккаунтов, там лишь хеши паролей могут быть другие, что не составит труда решить (например игроки просто могут использовать опцию восстановления пароля)
ЙѕіэБЛГ»УРЙъІъЕд·ЅµДІрЅв¶ФПу 28533 ЙѕіэБЛГ»УРЙъІъЕд·ЅµДІрЅв¶ФПу 28534 ЙѕіэБЛГ»УРЙъІъЕд·ЅµДІрЅв¶ФПу 28611 ЙѕіэБЛГ»УРЙъІъЕд·ЅµДІрЅв¶ФПу 28612 ЙѕіэБЛГ»УРЙъІъЕд·ЅµДІрЅв¶ФПу 28955 ЙѕіэБЛГ»УРЙъІъЕд·ЅµДІрЅв¶ФПу 28956 ЙѕіэБЛГ»УРЙъІъЕд·ЅµДІрЅв¶ФПу 29719 ЙѕіэБЛГ»УРЙъІъЕд·ЅµДІрЅв¶ФПу 30349 ЙѕіэБЛГ»УРЙъІъЕд·ЅµДІрЅв¶ФПу 30350 ЙѕіэБЛГ»УРЙъІъЕд·ЅµДІрЅв¶ФПу 32766 ЙѕіэБЛГ»УРЙъІъЕд·ЅµДІрЅв¶ФПу 35506 ЙѕіэБЛГ»УРЙъІъЕд·ЅµДІрЅв¶ФПу 35507 ЙѕіэБЛГ»УРЙъІъЕд·ЅµДІрЅв¶ФПу 35508 ЙѕіэБЛГ»УРЙъІъЕд·ЅµДІрЅв¶ФПу 36517 ЧФ¶ЇЖҐЕдБЛ2969ІрЅвЕд·Ѕ,БнУР267ёцЧ°±ёГ»УРїЙТФЖҐЕдµДЕд·Ѕ ґнОуµДіиОпКэѕЭЈ¬іиОпid:10584 ґнОуµДіиОпКэѕЭЈ¬іиОпid:32103 ґнОуµДіиОпКэѕЭЈ¬іиОпid:32104 ґнОуµДіиОпКэѕЭЈ¬іиОпid:32105 ЧЬ№ІјУИлБЛ80ёцПЎУРОпЖ· ЧЬ№ІґжФЪ693ёцИЛГс±ТОпЖ· LUAД_±ѕ°ж±ѕ102 іхКј»Ї gs01 їЄКјКАЅзВЯјіхКј»Ї... ОпЖ·24347ОЄК±Р§ОпЖ· ОпЖ·24346ОЄК±Р§ОпЖ· ОпЖ·24345ОЄК±Р§ОпЖ· ОпЖ·24344ОЄК±Р§ОпЖ· ОпЖ·24343ОЄК±Р§ОпЖ· ОпЖ·24342ОЄК±Р§ОпЖ· ОпЖ·24341ОЄК±Р§ОпЖ· ОпЖ·27052ОЄК±Р§ОпЖ· ОпЖ·26640ОЄК±Р§ОпЖ· ОпЖ·34733ОЄК±Р§ОпЖ·,№эЖЪК±јд1355954400 ОпЖ·35234ОЄК±Р§ОпЖ·,№эЖЪК±јд1346450400 ОпЖ·36845ОЄК±Р§ОпЖ·,№эЖЪК±јд1354312800 ОпЖ·37533ОЄК±Р§ОпЖ·,№эЖЪК±јд1370037600 іБГФµДИэёцК±јдІОКэОЄ2,4,5 ,іБГФ»Цёґ·ЅКЅОЄ:'РЭПўК±јдµЅґп' ·АіБД繦ДЬПµНіїЄЖф ·ґНв№ТіН·Ј№¦ДЬїЄЖф К№УГ±кЧј°ж±ѕДЪИЭ К№УГ±кЧј°ж±ѕДЪИЭ Tue Aug 20 12:54:42 2013 Starting world No.1 Л«±¶ѕСйК±јдГїЦЬЖрКјК±јдОЄ:РЗЖЪТ» 01:00 ЧКФґёщДїВј:'/home/PW/gamed/config/world/' Create grid: 800*800 with step 25.000000 Grid Region: {-10000.00,-10000.00} - {10000.00,10000.00} Loca (самый конец) Проблема мне кажется в npcgen.data Только понять не могу, где именно. elements.data (нормально грузит) - Стало такое, после очередной обновы npcgen.data конкретнее в логах GS смотрите, очень помогает.
Ссылка на тему - *РЕКЛАМА* я кидал достаточно давно ссылку на прогу Invalid or Deleted File. The key you provided for file download was invalid. This is usually caused because the file is no longer stored on MediaFire. This occurs when the file is removed by the originating user or MediaFire. Still have questions, or think we've made a mistake? Please contact support for further assistance. Хоть проверяли источник? Обновите ссылку на файл, если есть файл у вас.
Наврятли кто согласится тратить личное время на это... Тем более для проекта, который пока не раскручен и нет гарантий того, что он что то принесет. Хотите успешный проект, тогда сначала вложитесь в него (купите сервер, ПО, наймите штат, купите рекламу и т.п.) первое время придется самому все проплачивать, но потом в случае успеха вполне возможно все затраты на содержание сервера, сотрудников будет окупаться с прибыли получаемой с доната и прочих финансовых операций проекта. А так, как вы тут ищите, у меня сразу впечатление сложилось, что успеха у проекта скорее всего не будет. Не тот подход у вас.
Я ступил немного в том посте =) Сверил твои скрипты с докой вебманек, ошибок не нашел. LMI_MODE ведь устанавливается в настройках аккаунта? Мистика оО Создал новый кошель, настроил по аналогии с первым и... заработало! А старый кошель так и не хочет отдавать нормальный хеш... Странно...
До формирования хэша отобрази все данные которые его формируют и сравни До формирования? т.е. до того, как система вернет данные в результ? Хеш по идее и подавно не совпадет, ведь данные о времени будут другими, а они тоже участвуют в создании хеша. Я вот как раз спецом в строку объеденил все ПОСТ данные, которые вернул сервис мерчанта $str_hash = $_POST['LMI_PAYEE_PURSE'].$_POST['LMI_PAYMENT_AMOUNT'].$_POST['LMI_PAYMENT_NO'].$_POST['LMI_MODE'].$_POST['LMI_SYS_INVS_NO'].$_POST['LMI_SYS_TRANS_NO'].$_POST['LMI_SYS_TRANS_DATE'].$LMI_SECRET_KEY.$_POST['LMI_PAYER_PURSE'].$_POST['LMI_PAYER_WM']; $str_hash = strtoupper(md5($str_hash)); т.е. 1 в 1 но с присланным хешем от системы хеш полученный из склееных строк не совпадает...
сорь слегка разделом промахнулся, перенесите в веб программирование )
В общем, суть проблемы в том, что хеши md5 не хотят совпадать, хоть тресни... Хоть и все настроено как положено... Форма запроса платежа как и положено отправляет данные... $output .= "<div class=w1 align=center>Пополнение баланса <img src='' border=0> <div class=multiple3> <form method='POST' action='https://merchant.webmoney.ru/lmi/payment.asp'> <input style=\"width: 15%; height: 35px; font-size:20px;\" type='text' name='LMI_PAYMENT_AMOUNT' value=''> <input type='hidden' name='LMI_PAYMENT_DESC_BASE64' value='".base64_encode("Пополнение баланса для ".$mkportals->member['name'])."'> <input type='hidden' name='LMI_PAYMENT_NO' value='{$mkportals->member['id']}'> <input type='hidden' name='LMI_PAYEE_PURSE' value='R850275512100'>"; $output .= "</select><input style=\"width: 20%; height: 35px; font-size:20px;\" type=submit value='Пополнить'> </form></div></div>"; Все данные проходят и успешно оплата производится (с кошелька покупателя списывается, продавцу зачисляется), но вот хеши не совпадают. Собственно использую такой код для результ обработчика: <?php //кошелек на который будут перечислены средства $wm_purce = "R850275512100"; if( isset($_POST['LMI_PREREQUEST']) && $_POST['LMI_PREREQUEST'] == 1) { $sql = "SELECT id,price FROM orders WHERE id=".$_POST['LMI_PAYMENT_NO']; $result = mysql_query($sql); $rows = mysql_num_rows($result); if ( $rows != 1 ) { exit('Order not faund'); } else { $row = mysql_fetch_array($result); if($_POST['LMI_PAYMENT_NO'] == $row['id'] && $_POST['LMI_PAYEE_PURSE'] == $wm_purce && $_POST['LMI_PAYMENT_AMOUNT'] == $row['price']) { echo 'YES'; } else { exit(); } } } else { $LMI_SECRET_KEY = "Тут мой секретный ключ, идентичный тому что установил в настройках кошелька"; $sql = "SELECT id,price FROM orders WHERE id=".$_POST['LMI_PAYMENT_NO']; $result = mysql_query($sql); $rows = mysql_num_rows($result); if ( $rows != 1 ) { exit('Order not faund'); } else { $row = mysql_fetch_array($result); $str_hash = $wm_purce. $row['price']. $row['id']. $_POST['LMI_MODE']. $_POST['LMI_SYS_INVS_NO']. $_POST['LMI_SYS_TRANS_NO']. $_POST['LMI_SYS_TRANS_DATE']. $LMI_SECRET_KEY. $_POST['LMI_PAYER_PURSE']. $_POST['LMI_PAYER_WM']; $str_hash = strtoupper(md5($str_hash)); if($str_hash == $_POST['LMI_HASH']) { //обновляем статус заказа - оплачен и //отправляем пользователю письмо о том что его оплата прошла. } else { exit(); } } } ?> Решил в код добавить запись в файл, чтобы понять, что действительно хеши разные $str_hash = $_POST['LMI_PAYEE_PURSE'].$_POST['LMI_PAYMENT_AMOUNT'].$_POST['LMI_PAYMENT_NO'].$_POST['LMI_MODE'].$_POST['LMI_SYS_INVS_NO'].$_POST['LMI_SYS_TRANS_NO'].$_POST['LMI_SYS_TRANS_DATE'].$LMI_SECRET_KEY.$_POST['LMI_PAYER_PURSE'].$_POST['LMI_PAYER_WM']; $str_hash = strtoupper(md5($str_hash)); $fp = fopen("t.txt", "a"); $mytext = $str_hash." - ".$_POST['LMI_HASH']."\r\n"; fwrite($fp, $mytext); fclose($fp); if($str_hash == $_POST['LMI_HASH']) { //обновляем статус заказа - оплачен и //отправляем пользователю письмо о том что его оплата прошла. } как видно из кода, весь порядок генерации хеша мною соблюден, но хеши получаются разные, это видно из файла Слева от дефиса хеш сгенерирован согласно тому порядку, что взят из официального источника, слева хеш, который присылает система, и как видно он совсем другой. В чем дело? F815E4EBB45A559431983B4E9DA1F60F - F38F2CFEC237D2E5C4CEE4B4A6E116C1 5298C17D649459D7310CDC3A7AE2E34A - 8917A7F68F92042C5163CF2B24258A49 398643F6AA5DCDB5428C3E5A8D3F16F0 - 4BC6C192CEAE2E3188C170DE0A5DEA98 197FA3A4061B44FA67268387ADB21FBC - 437169ED3EE0BB1BBB83A0AE4FB60E2F 183674E7ECB524C4B1420B6EEB69739F - 87572CF7BF952F383EF31669F63BF074 9393573DEAD6C63AD1B2FCB563BE8D32 - 898EC43A5857E35A626E7767058A2592
Ну знаешь делай тогда сам как тебе хочется) да, уже сделал, хоть и надо будет ещё допилить, но пока сойдет. Еще раз спасибо, что постарался помочь. ЗЫ: твою работу пожалуй поставлю на аву )
[IMG][IMG][IMG][IMG] Спасибо ) Конечно не так, как задумывалось, я имел ввиду прямоугольное лого, надпись так же не креативна, обычный шрифт... и стиля веб 2.0 смотрю нету, ну да ладно, как говорится даренному коню ... За старания спасибо.
/gamed/rare_item , как то так Вот меня больше интересует, где сам текст хранится Вея... Из надежных источников....
у меня их достаточно . если есть деньги, арендуй машинку в Дата центре, как писал приятель выше меня, погугли. За разумные деньги можно снять сервер с 8 гб оперативкой, чего хватит для запуска мира и немного локаций(данжей). Если хочется максимализма, то бери сервер с 16 гиг. оперативной памяти или выше. В принципе, есть места по 35-40 баксов в мес. за машину с 8 гиг. оперативки... гугли короче )
[IMG] Можешь мне сваять лого для сайта? , чтоб в нем было использовано изображение (с моей аватарки, сохранить его в профиле если что можно) Требования к данному изображению (с аватарки) Тон с синего изменить до фиолетового, фон, тот что белый сейчас (внутри листа и вокруг окружности его) сделать прозрачным и креативно оформленную надпись webserverok, в такой раскладке сама надпись WebServerOk В целом у полученного лого фон прозрачный пусть будет. габариты лого высота 140 пикселей, ширина на твое усмотрение, ну конечно не на пол страницы ))) (изображению листа размеры менять не нужно) Ну и как модно у лого в стиле web2.0 делают типа отсветку частичную. PS: если понадобится изображение листа в круге более высокого разрешения, у меня есть, если что пиши, скину. :)
Пашет норм. А на троллей которые пишут типо "говнокод" или плагиат, забей, они ущербные люди, не могли сделать сами, но зато умеют чесать языком. В общем держи плюс за старания )
Имена участников (разделяйте запятой).