UTMTray альтернатива

Технические вопросы по UTM 5.0
Ответить
Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Сообщение Magnum72 »

Rav писал(а):Этот мониторчик случаем не ICL называется? Если он, то после 2,5К абонентов этот биллинг загнется. Был у нас такой. Удобный, но много не держит.
Не должен, у меня напиример в p2p сидит 8000 клиентов, запросы каждую секунду штук по 10-20, а там метод доставки запросов аналогичный если не хуже, и ниче нормально все. Это как раз замечательная идея не клиента заставлять бегать на сервак периодически, а серваку рассылать пакеты корректирующие тем клиентам которые поддерживали состояние за последнии например 10 минут.

Rav
Сообщения: 70
Зарегистрирован: Пт июн 29, 2007 17:02

Сообщение Rav »

Magnum72 писал(а):
Rav писал(а):Этот мониторчик случаем не ICL называется? Если он, то после 2,5К абонентов этот биллинг загнется. Был у нас такой. Удобный, но много не держит.
Не должен, у меня напиример в p2p сидит 8000 клиентов, запросы каждую секунду штук по 10-20, а там метод доставки запросов аналогичный если не хуже, и ниче нормально все. Это как раз замечательная идея не клиента заставлять бегать на сервак периодически, а серваку рассылать пакеты корректирующие тем клиентам которые поддерживали состояние за последнии например 10 минут.
ICL вроде слал каждые 10 или 15 секунд пакет с балансом и каждую секунду проверку запущена программа или нет. Походу от последнего и загибался. Вот если бы настраивать интервалы можно было по отсылке этих пакетов, то было бы нормально. На УТМ перешли как раз из-за этого + ICL не сертифицированный, а сеть сдавать надо было. В целом поддерживаю, идея хорошая по сравнению с UTM5 Wintray Client'. Много думал о создании своего клиент/серверного приложения, которое будет выполнять функции оповещения абонентов о их балансе и прочие полезные вещи, но мало опыта в программировании на С++/UNIX. Пока довольствуемся оригинальным личным кабинетом. В планах написать свой кабинет используя недавно приобретенный urfa_client.

Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

Благодаря появлению urfa php сделал новую утилиту.
Полностью переработал код и избавился от всего лишнего. Так же благодаря urfa php и написанию на его базе личного кабинета на joomla, из утилиты убраны отчеты, кредиты, оплата, смена пароля.

Итак что осталось:

Вкладка Новости:
Вкладка RSS лента - без изменений.
Вкладка Инормация о провайдере - без изменений

Вкладка Информация:
Вкладка Информация пользователя - без изменений
Информация об услугах - изменеия в внешнем виде и способе формирования. Теперь на сервере формируется txt или rtf файл и показываются пользователю

Вкладка Сообщения:
Отказался от ущербного message-engine нетапа, отказался от жручего DB-подобного способа показа и хранения сообщений. Теперь для обмена сообщениями используется Jabber. Для хранения - обычный текстовый файл.

Вкладка настройки:
Убрана смена пароля.

Исправлены следующие глюки:
Не восстановление нормальной работы после обрыва связи. Теперь утилита корректно восстанавливается при потерях связи до запуска, во время запуска и во время работы. При потере соединения, видимые баланс и параметры пользователя остаются без изменений (раньше все сбрасывалось в ноль и стоило много нервов ошарашенным пользователям).

Изменение принципов работы:
Теперь в серверном конфиге можно задать параметры четырех таймеров - Проверка баланса и инета (используеться функция rpcf_user5_brief_report_for_wintray()), проверка данных пользователя (rpcf_user5_get_user_info(), параметры тарифа (rpcf_user5_get_services() и rpcf_user5_get_services_info($slink_id)), проверка сообщений.
Это позволяет более гибко настраивать нагрузку на сервер.

Вся серверная часть теперь состоит из конфига и скрипта utmtray.php. Установка и запуск утилиты стал на порядок проще и быстрее.

Занимаемая оперативка утилиты уменьшена с 48Мб до 5Мб, быстродействие увеличено в несколько раз.

Вот содержимое utmtray.php, заметьте что теперь вы можете переписать под себя способ получения ответов пользователю (к примеру напрямую брать из БД)

Код: Выделить всё

<?php

//@ini_set&#40;"display_errors", "1"&#41;;
//error_reporting&#40;E_ALL&#41;;

require_once&#40;"../stat/urfa/URFAClient.php"&#41;;
include 'XMPPHP/XMPP.php';

//print_r&#40;$_POST&#41;;
//print "<BR>****************************************<BR>";
//print_r&#40;$_GET&#41;;

$jabber_host = 'jb.flint.net';
$jabber_port = 5222;
$jabber_admin = 'kayfolom@flint.net';

$Param = $_GET;
//$Param = $_POST;

function filter_tclass&#40;$s&#41; &#123;
	$ret = '';
	if &#40;strpos&#40;$s,'&#40;10&#41;'&#41;>0&#41; &#123;
		$ret = str_replace&#40;'&#40;10&#41;','',$s&#41;;
	&#125;
	if &#40;strpos&#40;$s,'&#40;14&#41;'&#41;>0&#41; &#123;
		$ret = str_replace&#40;'&#40;14&#41;','',$s&#41;;
	&#125;
	return $ret;
&#125;

$login = $Param&#91;'login'&#93;;
$password = $Param&#91;'password'&#93;;
$cmd =  $Param&#91;'cmd'&#93;;

if &#40;$cmd=='ping'&#41; &#123;
	exit&#40;'pong'&#41;;
&#125;

$urfa_user5 = new URFAClient_User5&#40;$login, $password, "127.0.0.1", "11758",false&#41;;
if &#40;$urfa_user5->error<>''&#41; &#123;
	exit&#40;$urfa_user5->error&#41;;
&#125; 

switch &#40;$cmd&#41; &#123;
	case 'basic_report' &#58; 
		$result = $urfa_user5->rpcf_user5_brief_report_for_wintray&#40;&#41;; //-0x4026
		$result_str = 'int_status='.$result&#91;'int_status'&#93;."\r\n".
		$result_str = $result_str.'balance='.$result&#91;'balance'&#93;."\r\n";
		exit&#40;$result_str&#41;;
	case 'base_report' &#58;
		$result_str = '&#91;base_report&#93;'."\r\n";
		$result = $urfa_user5->rpcf_user5_get_user_info&#40;&#41;;
		$result_str = $result_str.'login='.$result&#91;'login'&#93;."\r\n";
		$result_str = $result_str.'basic_account='.$result&#91;'basic_account'&#93;."\r\n";
		$result_str = $result_str.'balance='.$result&#91;'balance'&#93;."\r\n";
		$result_str = $result_str.'credit='.$result&#91;'credit'&#93;."\r\n";
		$result_str = $result_str.'is_blocked='.$result&#91;'is_blocked'&#93;."\r\n";
		$result_str = $result_str.'full_name='.$result&#91;'full_name'&#93;."\r\n";
		$result_str = $result_str.'int_status='.$result&#91;'int_status'&#93;."\r\n";
		exit&#40;$result_str&#41;;
	case 'tariff_report' &#58;
		$result_str = 'Тариф &#58; ';
   	    $services = $urfa_user5->rpcf_user5_get_services&#40;&#41;;
        $str_exp = explode&#40;" ", $services&#91;'services'&#93;&#91;0&#93;&#91;'discount_period'&#93;&#41;;
        $date_start = $str_exp&#91;1&#93;.' '.$str_exp&#91;2&#93;.' '.$str_exp&#91;3&#93;.' '.$str_exp&#91;4&#93;;
        $date_end = $str_exp&#91;7&#93;.' '.$str_exp&#91;8&#93;.' '.$str_exp&#91;9&#93;.' '.$str_exp&#91;10&#93;;
        $date_start = date&#40;"d.m.Y", strtotime&#40;$date_start&#41;&#41;;
        $date_end = date&#40;"d.m.Y", strtotime&#40;$date_end&#41;&#41;;
		$result_str = $result_str.$services&#91;'services'&#93;&#91;0&#93;&#91;'tariff_name'&#93;."\r\n";
		$result_str = $result_str.'Расчетный период &#58; '.$date_start." - ".$date_end."\r\n";
		$service_type = 3;
		$service_traff_index = 0;
		for &#40;$i=0;$i<$services&#91;'count'&#93;;$i++&#41; &#123;
			if &#40;$services&#91;'services'&#93;&#91;$i&#93;&#91;'service_type'&#93;==$service_type&#41; &#123;
				$slink_id = $services&#91;'services'&#93;&#91;$service_traff_index&#93;&#91;'id'&#93;;
				break;
			&#125;
		&#125;
		$services_info = $urfa_user5->rpcf_user5_get_services_info&#40;$slink_id&#41;;  //-0x4024 
//		print_r&#40;$services_info&#41;;
		$result_str =  $result_str.'Скачано в текущем расчетном периоде&#58;'."\r\n";
		for &#40;$i=0;$i<$services_info&#91;'iptsl_downloaded_size'&#93;;$i++&#41; &#123;
			$result_str = $result_str.filter_tclass&#40;"\t".$services_info&#91;'iptsl_downloaded_size_list'&#93;&#91;$i&#93;&#91;'tclass'&#93;.' '.sprintf &#40;"%01.3f Мб", $services_info&#91;'iptsl_downloaded_size_list'&#93;&#91;$i&#93;&#91;'downloaded'&#93;/1048576&#41;."\r\n"&#41;;
		&#125;
		$result_str = $result_str.'Предоплаченно'."\r\n";
		for &#40;$i=0;$i<$services_info&#91;'iptsd_prepaid_size'&#93;;$i++&#41; &#123;
			$result_str = $result_str.filter_tclass&#40;"\t".$services_info&#91;'iptsd_prepaid_size_list'&#93;&#91;$i&#93;&#91;'tclass_name_p'&#93;.' '.sprintf &#40;"%01.3f Мб", $services_info&#91;'iptsd_prepaid_size_list'&#93;&#91;$i&#93;&#91;'prepaid_p'&#93;/1048576&#41;."\r\n"&#41;;
		&#125;

		$result_str = $result_str.'Стоимость превышения'."\r\n";
		for &#40;$i=0;$i<$services_info&#91;'iptsd_borders_size'&#93;;$i++&#41; &#123;
			$result_str = $result_str.filter_tclass&#40;"\t".$services_info&#91;'iptsd_borders_size_list'&#93;&#91;$i&#93;&#91;'tclass_name'&#93;.' '.sprintf &#40;"%01.2f руб.", $services_info&#91;'iptsd_borders_size_list'&#93;&#91;$i&#93;&#91;'cost1'&#93;&#41;."\r\n"&#41;;
		&#125;

		$result_str = $result_str.'IP адреса'."\r\n";
		for &#40;$i=0;$i<$services_info&#91;'ipgroup_size'&#93;;$i++&#41; &#123;
			$result_str = $result_str."\t".$services_info&#91;'ipgroup_size_list'&#93;&#91;$i&#93;&#91;'ip'&#93;.' Mask '.$services_info&#91;'ipgroup_size_list'&#93;&#91;$i&#93;&#91;'mask'&#93;."\r\n";
		&#125;
		exit&#40;$result_str&#41;;
	case 'internet_on'&#58;
		$urfa_user5->rpcf_user5_change_int_status&#40;1&#41;;
		exit;
	case 'internet_off'&#58;
		$urfa_user5->rpcf_user5_change_int_status&#40;0&#41;;
		exit;
	case 'send_msg' &#58;
		if &#40;!isset&#40;$Param&#91;'message'&#93;&#41;&#41; exit&#40;'ERROR null message'&#41;;
		$conn = new XMPPHP_XMPP&#40;$jabber_host, $jabber_port, $login , $password, 'utmtray', 'flint.net', $printlog=false, $loglevel=XMPPHP_Log&#58;&#58;LEVEL_INFO&#41;;
		try &#123;
			$conn->UseEncryption = true;
		    $conn->connect&#40;&#41;;
		    $conn->processUntil&#40;'session_start'&#41;;
		    $conn->message&#40;$jabber_admin,$Param&#91;'message'&#93;&#41;;
		    $conn->disconnect&#40;&#41;;
		&#125; catch&#40;XMPPHP_Exception $e&#41; &#123;
		    print 'ERROR';
		    die&#40;$e->getMessage&#40;&#41;&#41;;
		&#125;
		print 'OK';
		exit;
	case 'receive_msg' &#58;
		$conn = new XMPPHP_XMPP&#40;$jabber_host, $jabber_port, $login , $password, 'utmtray', 'flint.net', $printlog=false, $loglevel=XMPPHP_Log&#58;&#58;LEVEL_INFO&#41;;
		$i = 0;
		$message_num = 1;
		$result_str = '';
		try &#123;
		    $conn->connect&#40;&#41;;
			while&#40;!$conn->isDisconnected&#40;&#41;&#41; &#123;
		    	$payloads = $conn->processUntil&#40;array&#40;'message', 'session_start'&#41;,1&#41;;
		    	foreach&#40;$payloads as $event&#41; &#123;
		    		$pl = $event&#91;1&#93;;
		    		switch&#40;$event&#91;0&#93;&#41; &#123;
		    			case 'message'&#58; 
		    				$result_str = $result_str.'&#91;message&#93;'."\r\n";
							$result_str = $result_str.'from='.$pl&#91;'from'&#93;."\r\n";
							$result_str = $result_str.'body='.$pl&#91;'body'&#93;."\r\n";
							$message_num = $message_num + 1;
		    			case 'session_start'&#58;
		    				$conn->presence&#40;&#41;;
			    			break;
		    		&#125;
		    	&#125;
			    $i=$i+1;
			    if &#40;$i==2&#41; exit&#40;$result_str&#41;;
		    &#125;
		&#125; catch&#40;XMPPHP_Exception $e&#41; &#123;
		    print 'ERROR';
		    die&#40;$e->getMessage&#40;&#41;&#41;;
		&#125;
		exit&#40;$result_str&#41;;
	default&#58;
		exit&#40;'ERORR unknow command'&#41;;
&#125;


?>
В данный момент утилита проходит бета-тест, как отшлифую - сразу выложу.[/list]

Аватара пользователя
netvirus
Сообщения: 30
Зарегистрирован: Пт мар 02, 2007 10:15

Сообщение netvirus »

А можно краткий ликбез ? :)

Вот я скачал архивчик urfaclient-1.0b4.tar.gz и распаковал его, внутри обнаружил:

-rw-r--r-- 1 root root 2854 2008-12-26 14:07 Changelog
-rwxr-xr-x 1 root root 3638 2008-12-26 14:07 cli.php
-rw-r--r-- 1 root root 24641 2008-12-26 13:54 functions.php
-rw-r--r-- 1 root root 3308 2008-12-25 02:37 packet.php
-rw-r--r-- 1 root root 4062 2008-12-26 13:59 socket.php
-rw-r--r-- 1 root root 7582 2008-12-26 14:08 user_functions.php

Дальше чего делать та ? :)

У вас ссылка идёт на файл URFAClient.php но его там нет, может надо переименовать в cli.php...
Вобщем кому не лень, в двух слова плз. объясните что с чем связать и как :) спс.

Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

netvirus писал(а):А можно краткий ликбез ? :)

Вот я скачал архивчик urfaclient-1.0b4.tar.gz и распаковал его, внутри обнаружил:

-rw-r--r-- 1 root root 2854 2008-12-26 14:07 Changelog
-rwxr-xr-x 1 root root 3638 2008-12-26 14:07 cli.php
-rw-r--r-- 1 root root 24641 2008-12-26 13:54 functions.php
-rw-r--r-- 1 root root 3308 2008-12-25 02:37 packet.php
-rw-r--r-- 1 root root 4062 2008-12-26 13:59 socket.php
-rw-r--r-- 1 root root 7582 2008-12-26 14:08 user_functions.php

Дальше чего делать та ? :)

У вас ссылка идёт на файл URFAClient.php но его там нет, может надо переименовать в cli.php...
Вобщем кому не лень, в двух слова плз. объясните что с чем связать и как :) спс.
Это старая версия урфы, новая работает на классах. Ждем релиза от автора. Когда выложу утилиту, с нейже выложу и свой пак урфы. Но у меня она не релизная, а глубоко-бетовая ;)
Так же выложу и джаберовский интерфейс XMPPHP, чуток подправленный.

Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

Новая версия http://www.ukhta-inform.ru/UTMTray1.0.4.4.zip
Со старой осталось мало общего.
На стороне сервера теперь всего один скрипт php (ну плюс urfa php, интерфейс к джаберу).
Общение спользователями теперь realtime, посредством джабера (сервер в комплект не входит ;) )
Вся логика перенесена на сервер, гораздо больше возможностей переписать под себя (при условии владения php, хотя серверный скрипт можно на чем угодно переписать).
Сама утилита стала стабильна, восстанавливает нормальную работу после обрывов связи и прочих катаклизмов. Проверено 2-х недельным тестом в рабочей сети, на полутысячи бета-тестеров ;)
Также прямо в утилиту встроил Личный кабинет (ссылка в серверном конфиге) - пользователям понравилось что можно прямо из утилиты туда ходить, не открывая браузер.

Внимание!!! нагрузка на httpd возрасла по сравнению со старой утилитой на ~20%, но без проблем можно поставить на отдельный комп.

В архиве папки :

MakeInstall - скрипт для создания инсталяции (основная функция инсталяции - прописать в реестре WEBroot, чтоб пользователя не напрягать настройками.

Server_side
utmtray.ini.php - конфиг отдающийся клиенту
utmtray.php - сам скрипт
urfa - urfa php
XMPPHP - интерфейс работы с джабером (малость подправленный)

UTMTray
Cама утилита

ga6iem
Сообщения: 32
Зарегистрирован: Пт фев 22, 2008 14:28

Сообщение ga6iem »

Как это ставить, не пойму. :( Можно описать последовательность действий? Что куда кладется, как инсталить?

Sky
Сообщения: 44
Зарегистрирован: Пн янв 24, 2005 08:01

Сообщение Sky »

Нужно поправить косяк. Если нет ветки в реестре программа рушится с ошибкой.

Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

Sky писал(а):Нужно поправить косяк. Если нет ветки в реестре программа рушится с ошибкой.
Ок. Проверю.

Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

ga6iem писал(а):Как это ставить, не пойму. :( Можно описать последовательность действий? Что куда кладется, как инсталить?
Ставиться как обычная клиент-серверная система. Серверную часть на сервер. Настраиваем, проверяем отвечает ли.
Клиентскую часть на клиента. Она обращается к серверной части.

ga6iem
Сообщения: 32
Зарегистрирован: Пт фев 22, 2008 14:28

Сообщение ga6iem »

Замечательно былоб в архив вложить что-то типа рид.ми файлика с описнием архива и способа установки idea:

Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

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

ga6iem
Сообщения: 32
Зарегистрирован: Пт фев 22, 2008 14:28

Сообщение ga6iem »

ну вот к примеру, папка server_side:
ее, я так понимаю в www_root
далее правим db.sql и импортим в UTM5, так? Все? xml-ы никакие править не надо?
ЗЫ: версия 0006

Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

ga6iem писал(а):ну вот к примеру, папка server_side:
ее, я так понимаю в www_root
далее правим db.sql и импортим в UTM5, так? Все? xml-ы никакие править не надо?
ЗЫ: версия 0006
db.sql - нафик, это из моего проекта вебморды на ждумле затесалось ;)
Сожержимое server_side - куда угодно, клиент будет обращаться туда по заданному в реестре на клиентской машине WEBRoot путю.

Для начала добейтесь чтоб у вас заработала серверная часть. В обычном браузере попробуйте обратиться в https://you_server/utmtray.php?cmd=ping , если ответом будет pong значит пол дела сделано. Ну и так далее по аналогии...

Не знаю о каких xml-файлах идет речь, нет их.

ga6iem
Сообщения: 32
Зарегистрирован: Пт фев 22, 2008 14:28

Сообщение ga6iem »

При запуске UTMtray.exe (v.1.0.4.4) тишина, приложение не запускается. Пробовал на 3х разных машинах (WinXP_SP3)

Ответить