Перейти к публикации

Рекомендованные сообщения

изначально предупреждаю, что с пхп ток знакомлюсь...

вообщем хак, который позволяет выводить информацию о статусе нужного фтп и заодно вопрос...

вообщем в index.php добавил перед

$config['http_home_url'] = reset(explode("index.php", $_SERVER['PHP_SELF']));
вот это
				if ( stristr( $tpl->copy_template, "{ftp" ) ) {


		$tpl->copy_template = preg_replace( "#\\{ftp ip=['\"](.+?)['\"] port=['\"](.+?)['\"] user=['\"](.+?)['\"] pass=['\"](.+?)['\"]\\}#ies", "check_ftp('\\1', '\\2', '\\3', '\\4')", $tpl->copy_template );


	}

и в файл 'engine/modules/functions.php' добавил вот такую функцию...
function check_ftp ($ip, $port, $user, $pass) { 


	$conn_id = ftp_connect($ip, $port, 1);	 

	if (!$conn_id) {	

	   $check_ftp = "не работает";			  

	} else {				


		if (@ftp_login($conn_id, $user, $pass)) {	  

			$check_ftp = "<font color=\"#00FF3F\"> работает </font>";  


		} else {	

			$check_ftp = "<font color=\"#00FF3F\"> не работает </font>";	


		}  

   ftp_close($conn_id);	 

   } 

return $check_ftp;   

}

и терь на странице поместив {ftp ip="нужное айпи" port="порт" user="юзверь" pass="пароль"} можно будет получить работает/не работает фтп...

вообще это было бы полезно в самой новости, но немного не знаю как сделать...

по сути то, что добавили в индекс.пхп нужно и в show.custom/short/full.php добавить, но почему-то не заменяет там...

надеюсь кому-то пригодится;)

Ссылка на сообщение
Поделиться на других сайтах

я с этим ни разу не работал, но вопрос: времени запрос много занимает? страница от этого не виснет на секунды? Я как-то однажды так со статусом icq лажанулся, когда в пхп скрипте зашил обращение к их серверу :)

Ссылка на сообщение
Поделиться на других сайтах

ну допустим новости юзеры постят и файлы у себя ложат на фтп...вот люди бы сразу и видели возможна ли скачка на даный момент...

да писал по сути даж не из-за потребностей...видел кто-то спрашивал, дк хотелось как-то поудобней сделать...

Al-x, все вроде зависит от указаного timeout-а...просто если много таких статусов напихать, то может быть задержка загрузки страницы, т.к. кажись поочередно проверяет...

Ссылка на сообщение
Поделиться на других сайтах

я сделал для дополнительных полей когда обнавляеш новость

очень прикольно сделано спасибо

если ктото хочет в дополниетельные поля сделать обращайтесь 3951533

Ссылка на сообщение
Поделиться на других сайтах

Неудачная затея. Во-первых, число одновременных пользователей фтп обычно ограничено, а тут логинятся все подряд с целью узнать, горит ли зеленая лампочка статуса. Во-вторых, если сайт пользуется популярностью - ДДОС атака получается. Ну и задержки при открытии страницы - само собой, если в этом стиле делать мониторинг.

Ссылка на сообщение
Поделиться на других сайтах

удачная-неудачная, но кому-то мож и пригодится...:-/

по поводу первого замечания, то создаешь отдельного тестового пользователя без этого самого ограничения...

Ссылка на сообщение
Поделиться на других сайтах

Вот тебе пример как это ДОЛЖНО работать.


<HTML>

<HEAD>

<TITLE>Online or Offline checker</TITLE>

<META HTTP-EQUIV="refresh" CONTENT="60; text/html; charset=windows-1251">

<?

//Функция проверки

//Первый аргумент - адрес, второй - порт

function check_online($ip,$port)

{

$online_state = @fsockopen($ip, $port, $errno, $errstr, 10);

if ($online_state)

 {

  $status = "<font color='green'>Online</font>";

 }

else

 {

  $status = "<font color='red'>Offline</font>";

 }

echo $status;

}

?>

<body bgcolor="white">

<table width="100%" border="0" cellspacing="1" cellpadding="0">

 <tr>

  <td>ftp.bizzon.net</td>

  <td><? check_online("ftp.bizzon.net","21"); ?></td>

 </tr>

 <tr>

  <td>forum.bizzon.net</td>

  <td><? check_online("forum.bizzon.net","80"); ?></td>

 </tr>

 <tr>

  <td>bizzon.net</td>

  <td><? check_online("bizzon.net","80"); ?></td>

 </tr>

 <tr>

  <td>apollo.ws</td>

  <td><? check_online("apollo.ws","21"); ?></td>

 </tr>

</table>

</body>

Ссылка на сообщение
Поделиться на других сайтах

не...ну я на счет своей криворукости спорить не буду...

я подробностей пхп, что относится к фтп не знаю (как впрочем и чего-то другого)...просто увидел скрипт проверки и попытался как-то притулить к дле, чтобы вводишь {ftp ...} и оно выводило...

не спорю, что чуть вышеописаный код лучше мною предложенного, но здесь просто выводится страница со статусами нескольких серверов...просто я задавался целью выводить информацию о чем-то определенном и в определенном месте...

спс за хоть какое-то разьяснение.

Ссылка на сообщение
Поделиться на других сайтах

Итак.


Модификация "Блок статуса ftp" by IT-Security

Открываем main.tpl

В нужное место вставляем {ftp_stat}

Открываем index.php

Ищем require_once ROOT_DIR.'/engine/init.php';

После этой строчки вставляем:

/*

   Скрипт проверки ftp by IT-Security

*/

function check_online($ip,$port)

 {

   $online_state = @fsockopen($ip, $port, $errno, $errstr, 10);

   if ($online_state)

	 {

	   $status = "<font color='green'>Online</font>";

	 }

   else

	 {

	   $status = "<font color='red'>Offline</font>";

	 }

return $status;

}

// Конец модификации

Дальше ищем $tpl->set('{login}',$login_panel);

И ниже вставляем:

$tpl->set('{ftp_stat}',check_online("IP_сервера", "21"));

Проверяем и пишем сюда

Для добавления нового сервера пишем в tpl ещё 1 тэг и делаем ещё 1 замену в index.php

Изменено пользователем IT-Security
Ссылка на сообщение
Поделиться на других сайтах

За небольшую сумму денег сделаю такое же с кэшированием, соответственно не будет большого количества запросов при большой посещаемости.

Ссылка на сообщение
Поделиться на других сайтах

классно, спасибо...

ток вот если вместо

$tpl->set('{ftp_stat}',check_online("IP_сервера", "21"));
в том же индекс.пхп добавить
	if ( stristr( $tpl->copy_template, "{ftp" ) ) {


		$tpl->copy_template = preg_replace( "#\\{ftp ip=['\"](.+?)['\"]\\}#ies", "check_online('\\1')", $tpl->copy_template );


	}

*в функции естессно $port корректно заменить

дк в самом мейнт.тпл все работает, а новости так и оставляет {ftp ip="*.*.*.*"}, возможно ли как-то это побороть?

Ссылка на сообщение
Поделиться на других сайтах

Это немного разные хаки.

Мой показывает статус выбранного сервера в блоке.

А твой в новости показывает статус сервера.

Ссылка на сообщение
Поделиться на других сайтах

дк дело в том, что твой показывает в новости, а мой отказывается:)

тобишь то, к чему я стремился так и не было осуществлено:-/ ну по сути я тут это и спрашивал...

лан...то, чего я хотел я уже добился и теперь, благодаря опыту создания этого, сделал хак вывода популярных новостей путем тега {topnews category="ID нужной категории"}

еще раз спасиб, IT-Security.

Ссылка на сообщение
Поделиться на других сайтах

Не за что.

Накануне почитай про кэширование.

Идея в том, чтобы проверять дату создания кэша и если она больше минуты от текущего времени, то стереть кэш файл, загрузить новую инфу и обновить кэш.

Тогда не будет проблем с посещаемостью, так как если ftp не локальный, то могут быть проблемы с скоростью загрузки страницы.

Изменено пользователем IT-Security
Ссылка на сообщение
Поделиться на других сайтах
  • 4 недели спустя...

Проверяем и пишем сюда

Для добавления нового сервера пишем в tpl ещё 1 тэг и делаем ещё 1 замену в index.php

Скажи пожалуйста,а как выводить информацию о нескольких ftp??

Ссылка на сообщение
Поделиться на других сайтах

И ниже вставляем:

$tpl->set('{ftp_stat}',check_online("IP_сервера", "21"));
тобишь под $tpl->set('{login}',$login_panel); будет

$tpl->set('{ftp_stat_1}',check_online("111.111.111.111", "21"));

$tpl->set('{ftp_stat_2}',check_online("222.222.222.222", "21"));

и в тпл выводишь {ftp_stat_1} и {ftp_stat_2}

Ссылка на сообщение
Поделиться на других сайтах
  • 3 месяца спустя...

В новостях и статике - можно написать скрипт, который чекает и вставляется через

<img src='ftp_checker.php?server=11.11.22.33&port=21'>

А внутри сделать выдачу или одной картинки или другой.

Стучим в аську - придумаем что-нибудь

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...