forum.bitel.ru
http://forum.bitel.ru/

Подскажите как лучше сделать
http://forum.bitel.ru/viewtopic.php?f=44&t=11024
Страница 1 из 1

Автор:  cigan43 [ 23 окт 2015, 19:12 ]
Заголовок сообщения:  Подскажите как лучше сделать

Добрый день!
Подскажите, пожалуйста, какой тип устройства лучше завести и привязать к стороннему скрипту?
Нам нужно привязать IP к договору . По этому IP не происходит сбор трафика, по договору нет авторизации. Эта формальная привязка названия договора и IP адреса. IP Нужен только при блокировке договора, чтобы скрипт передал атрибуты: IP, состояние договора (выключен, либо включен) внешнему скрипту. Внешний скрипт на python. С его помощью мы блокируем и разблокируем абонентов.
P.S Версия биллинга 6.2

Автор:  zavndw [ 24 окт 2015, 04:22 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

Так зачем тогда тип устройств, ip вносите в параметр договора и скриптом его передавайте. Блокировка происходит при не уплате абонентской платы?

Автор:  vkulakov [ 24 окт 2015, 16:33 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

Для блокировки/разблокировки абонентов в какой-то внешней системе удобно использовать активаторы модуля Inet: пишите скрипт для активатора на дин. коде и он сам будет делать нужные действия. Здесь много плюсов: не нужен внешний скрипт; если деньги неожиданно кончатся, то сервис сразу заблокируется (не нужно по крону проверку делать); ну и всё в одном месте.

Если Inet используется только для хранения IP-адресов, то смысла в нём нет - зачем платить лишние деньги?

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

Автор:  cigan43 [ 26 окт 2015, 16:29 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

Вообщем заводим договор, на договоре есть IP, также на договоре будет тариф с помесячным снятием абон. платы, и опции скорости, думаю как описал "vkulakov" будет правильно.Какие еще детали нужны?

Автор:  vkulakov [ 26 окт 2015, 18:52 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

Так тогда создавайте произвольный тип устройства. В качестве сервиса активатора пишите свой скрипт, который будет пинать внешнюю систему. В качестве обработчика протокола дефолтный выбирайте - он всё-равно делать ничего не будет.

Пока не понятно в чём сложность и деталей тогда, вроде, достаточно.

Автор:  cigan43 [ 28 окт 2015, 21:47 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

Вот пишите свой скрипт это пока проблема, мне пока не понятно с чего начать, в яве не силен(это поправимо), с биллингом только разбираюсь

Автор:  Amir [ 28 окт 2015, 22:19 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

http://wiki.bitel.ru/index.php/%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA_%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%B0%D1%86%D0%B8%D0%B8_%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%BE%D0%B2_%D0%BF%D0%BE_telnet

viewtopic.php?f=42&t=9154&p=80828#p80903
viewtopic.php?f=44&t=8528&p=69690

Тоже самое есть для SSH, также есть ExecServiceActivator.

Автор:  ikoctya [ 31 мар 2017, 13:39 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

Сегодня пробовал протестировать работу ExecServiceActivator, чтобы перейти с SSHServiceActivator на него.

Если пишу простую команду типа touch или ls с параметрами, они отрабатывают. Если же пробую curl или wget для запроса url по http - ничего не происходит и в логах акксеса ошибок тоже нет.

В чем проблема - непонятно. Может быть ExecServiceActivator не может работать с утилитами, которые используют интернет/сетью.

Автор:  Amir [ 31 мар 2017, 15:58 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

Может SELinux не даёт?

Автор:  ikoctya [ 31 мар 2017, 16:16 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

отключил давно
Код:
[root@billing BGInetAccess]# sestatus
SELinux status:                 disabled

Автор:  Amir [ 03 апр 2017, 15:54 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

может кавычек для URL не хватает?

Автор:  ikoctya [ 03 апр 2017, 18:29 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

Вот как-то так командую:
sa.command.onAccountingStart=wget "http://xxx.xxx.xxx.xxx/?w=add&i=$ip&r=$option"

Для проверки делал так sa.command.onAccountingStart=touch $ip
Все работало - появлялись файлы с именем ip-адреса в каталоге акксесс сервера

Автор:  snark [ 05 апр 2017, 17:01 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

ikoctya писал(а):
Вот как-то так командую:
sa.command.onAccountingStart=wget "http://xxx.xxx.xxx.xxx/?w=add&i=$ip&r=$option"

Такое
Код:
sa.command.onAccountingStart=echo $PATH
ну или
Код:
sa.command.onAccountingStart=printenv
что говорит?
wget есть в путях, а то может он попросту не видится? Если указать полный путь к wget работает?
Код:
sa.command.onAccountingStart=/usr/bin/wget "http://xxx.xxx.xxx.xxx/?w=add&i=$ip&r=$option"

Автор:  ikoctya [ 06 апр 2017, 00:58 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

$PATH туда не передается
printenv - Тот же результат.
с полным путем ничего не меняется

та же утилита ping из папки /bin срабатывает нормально, а вот curl или wget не работают,
причем просто от любого пользователя работают нормально

Автор:  ikoctya [ 06 апр 2017, 12:51 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

Вот что выковырять получилось:
Код:
connection 04-06/10:21:30  INFO [sa-p-11-t-58] ExecServiceActivator - [AAA: [10.0.0.3]] execute: env
connection 04-06/10:21:30  INFO [sa-p-11-t-58] ExecServiceActivator - HOSTNAME=billing
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
SSH_CLIENT=xx.xx.xx.xx 9106 22
QTDIR=/usr/lib64/qt-3.3
OLDPWD=/opt/BGInetAccess
QTINC=/usr/lib64/qt-3.3/include
SSH_TTY=/dev/pts/7
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;
MC_TMPDIR=/tmp/mc-root
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
MAIL=/var/spool/mail/root
PWD=/opt/BGInetAccess
LANG=ru_RU.UTF-8
HISTCONTROL=ignorespace
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
HOME=/root
SHLVL=4
MC_SID=6909
LOGNAME=root
CVS_RSH=ssh
QTLIB=/usr/lib64/qt-3.3/lib
SSH_CONNECTION=xx.xx.xx.xx 9106 yy.yy.yy.3 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES=1
_=/usr/bin/nohup
NLSPATH=/usr/dt/lib/nls/msg/%L/%N.cat
XFILESEARCHPATH=/usr/dt/app-defaults/%L/Dt

Автор:  snark [ 06 апр 2017, 13:21 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

В логе сервера команда как выглядит? Там видно что передается или нет?

Автор:  ikoctya [ 06 апр 2017, 13:59 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

snark писал(а):
В логе сервера команда как выглядит? Там видно что передается или нет?


видно, но ничего дальше не следует...

Код:
connection 04-06/09:52:58  INFO [sa-p-11-t-85] ExecServiceActivator - [AAA: [10.0.0.3]] execute: curl "http://my_http_server_ip/?w=add&i=xxx.xxx.xxx.xxx&r=3"
connection 04-06/09:52:58  INFO [sa-p-11-t-85] ExecServiceActivator -.


на сервере, на который осуществляется запрос, в логах апача тоже пусто!

Автор:  Phricker [ 06 апр 2017, 14:04 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

А если просто из командной строки (не из дин.кода) выполнить эту же команду - что будет?

Автор:  ikoctya [ 06 апр 2017, 14:11 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

Phricker писал(а):
А если просто из командной строки (не из дин.кода) выполнить эту же команду - что будет?


Все норм отрабатывает! И на том сервере в логах сразу видно обращение/запрос.

Я вот думаю, может активатору сервиса не хватает каких то прав... !?

Автор:  snark [ 06 апр 2017, 14:17 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

ikoctya писал(а):
может активатору сервиса не хватает каких то прав

Так вроде ж от рута работает, нет?
ikoctya писал(а):
Код:
USER=root

Или это твое окружение, а не окружение сервера?

Автор:  Amir [ 06 апр 2017, 14:51 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

После 94 строки
Код:
IOUtils.transfer( process.getInputStream(), baos, 256 );
добавьте
Код:
IOUtils.transfer( process.getErrorStream(), baos, 256 );
Нажмите Сохранить и скомпилировать и Перечитать конфигурацию.

Автор:  ikoctya [ 06 апр 2017, 15:31 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

Amir писал(а):
После 94 строки
Код:
IOUtils.transfer( process.getInputStream(), baos, 256 );
добавьте
Код:
IOUtils.transfer( process.getErrorStream(), baos, 256 );
Нажмите Сохранить и скомпилировать и Перечитать конфигурацию.


А вот и причина:
Код:
curl: (1) Protocol "http not supported or disabled in libcurl

Как исправить только не знаю.

А пока прикрутил "костыль". Сделал bash скриптик с вызовом этой же команды - все сработало. curl тот же. Странно как-то)))

А ещё у меня к разработчикам пожелание!
Может быть есть смысл реализовать что-то вроде "HTTPServiceActivator", который бы осуществлял запросы к нужному веб-серверу прямо из биллинга!?

Автор:  Amir [ 06 апр 2017, 15:48 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

Цитата:
"http
- попробуйте убрать кавычки.

Автор:  snark [ 06 апр 2017, 15:50 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

ikoctya писал(а):
Может быть есть смысл реализовать что-то вроде "HTTPServiceActivator", который бы осуществлял запросы к нужному веб-серверу прямо из биллинга!?

Я не разработчик, но думаю, что в этом нет смыла, т.к. скрипт - этакая "обертка" для качалки, на любом удобном/известном языке (sh/bash/perl/php/etc.), которому будут тупо передаваться параметры, сделает абсолютно все что нужно и даже больше.

Автор:  ikoctya [ 06 апр 2017, 17:27 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

Amir писал(а):
Цитата:
"http
- попробуйте убрать кавычки.

Спасибо! Работает!

Цитата:
snark писал(а):
ikoctya писал(а):
Может быть есть смысл реализовать что-то вроде "HTTPServiceActivator", который бы осуществлял запросы к нужному веб-серверу прямо из биллинга!?

Я не разработчик, но думаю, что в этом нет смыла, т.к. скрипт - этакая "обертка" для качалки, на любом удобном/известном языке (sh/bash/perl/php/etc.), которому будут тупо передаваться параметры, сделает абсолютно все что нужно и даже больше.



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

Автор:  snark [ 06 апр 2017, 21:36 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

ikoctya писал(а):
Не соглашусь! Задачи у всех разные, кому-то может будет удобней делать так

Со мной можно не соглашаться, но сложно отрицать тот факт, что мое предложение со скриптом вписывается в текущее положение дел с активаторами, т.е. его можно реализовать сразу, что называется из коробки, а вот если вам из коробки нужен какой-то особенный активатор с блекджеком и шлюхами, реализующий одному вам (пока?) нужный функционал и вы не хотите его реализовать самостоятельно, то на этом форуме есть известный большинству способ получить желаемое:
dimOn писал(а):
хелпдеск => доработка => профит

Работоспособность данного метода создания доработок неоднократно проверена и признана неувядающей классической.


ikoctya писал(а):
многое оборудование сейчас поддерживает http запросы

Пожалуйста, примеры в студию!

Автор:  ikoctya [ 07 апр 2017, 11:00 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

Хотя бы gsm-шлюзы различные

Автор:  snark [ 07 апр 2017, 13:25 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

GSM шлюз - очень специфичная штука, гораздо менее распространенная чем какой-нибудь свич.
Не советую через GSM шлюз сливать трафик, иначе к вам рано или поздно придут. Инфа 100%

Автор:  ikoctya [ 07 апр 2017, 14:22 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

У них другое предназначение! СМС-информирование в данном случае

Автор:  snark [ 07 апр 2017, 15:00 ]
Заголовок сообщения:  Re: Подскажите как лучше сделать

ikoctya писал(а):
СМС-информирование

Многие для этого GSM шлюз напрямую в СОМ порт втыкают и общаются с ним, так сказать, напрямую.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/