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

Помогите со скриптом авторизации с числовым User-Name
http://forum.bitel.ru/viewtopic.php?f=5&t=4999
Страница 1 из 2

Автор:  jek815 [ 18 янв 2011, 18:52 ]
Заголовок сообщения:  Помогите со скриптом авторизации с числовым User-Name

Помогите написать скрипт предобработки чтобы к числовым логинам добавлялась буква N
bgbilling 5.0

Автор:  Cromeshnic [ 18 янв 2011, 20:31 ]
Заголовок сообщения:  Re: Помогите со скриптом

Код:
import bitel.billing.server.radius.*;
import ru.bitel.bgbilling.kernel.network.radius.*;

userName = request.getStringAttribute(-1, 1, "")

if (request.getCode() == RadiusPacket.ACCESS_REQUEST) {
   if (userName.matches("^[0-9]+$")) {
      request.setStringAttribute(-1, RadiusStandartAttributes.User_Name, "N"+userName);
   }
}


- для 5.1, например.

А задача какая у вас?

Автор:  jek815 [ 18 янв 2011, 22:33 ]
Заголовок сообщения:  Re: Помогите со скриптом

версия 5.0
Дело в том что у нас цифровые логины для авторизации пользователя (к примеру 000300) соответственно числовые алиасы не допустимы,а договора уже на руках и логины прописаны числовые. Выход завести алиасы в билинге с буквой N000300. Пользователь вводит логин "000300" - скрипт приписывает букву "N" - билинг распознает алиас как N000300 и все счастливы!

Автор:  Cromeshnic [ 18 янв 2011, 22:54 ]
Заголовок сообщения:  Re: Помогите со скриптом

Проще и правильнее в базе руками поменять алиасы на числовые - всё будет работать. У самого так определённый класс договоров заведён.
По факту только в клиенте при задании алиаса проверяется, числовой он или нет.

Код:
update  user_alias_<mid> set login_alias= <...> where <...>

Автор:  jek815 [ 19 янв 2011, 00:15 ]
Заголовок сообщения:  Re: Помогите со скриптом

А можно немного поподробнее про команду?
update user_alias_<код модуля> set login_alias=<значение> where <строка>

вот к примеру если алиас под логином №8 назначить 100 то как выглядит команда?
update user_alias_2 set login_alias=100 where 8?

Автор:  Cromeshnic [ 19 янв 2011, 07:23 ]
Заголовок сообщения:  Re: Помогите со скриптом

Это mysql - запрос.
"Под номером 8" - это как? У него логин "8" или id в базе?

Автор:  jek815 [ 19 янв 2011, 11:37 ]
Заголовок сообщения:  Re: Помогите со скриптом

да ,у него логин 8
но видимо надо знать ID в базе для этой команды.
Посмотрел в таблице базы user_alias_2, логин с пустыми алиасами не записываюся и соответственно позиция ID не совпадает с номерным логиным

Автор:  skyb [ 19 янв 2011, 11:41 ]
Заголовок сообщения:  Re: Помогите со скриптом

так они же у вас есть, вам же только поменять нужно?
и у вас все одинаковые? можно посмотреть в сторону как мускул работает с текстовыми полями. либо скриптик написать который апдетит запросы подставляя regxp в поле where

не...а че не воспользоваться скриптом который предоставили выше?

Автор:  jek815 [ 19 янв 2011, 11:44 ]
Заголовок сообщения:  Re: Помогите со скриптом

вот кстати если кому надо еще скрипт

Скрипт такой должен работать, тут если User-Name начинается не с цифры к
нему прибавляется N.
Скрипт располагается в конфигурации NASа.

userName = request.getStringAttribute( 1 );
if( userName!=null && !Character.isDigit( userName.charAt( 0 ) ) )
{
request.setStringAttribute( 1, "N" + userName);
}

Автор:  jek815 [ 19 янв 2011, 11:48 ]
Заголовок сообщения:  Re: Помогите со скриптом

просто заинтересовала команда update
в самой базе сейчас ковыряю с помощью MySQL Developer Studio

Автор:  skyb [ 19 янв 2011, 12:47 ]
Заголовок сообщения:  Re: Помогите со скриптом

http://phpclub.ru/mysql/doc/update.html
так же можно посмотреть возможности работы mysql с текстовыми полями.
и
используйте консоль mysql будете лучше разбираться во всем этом ;)

Автор:  jek815 [ 20 янв 2011, 23:00 ]
Заголовок сообщения:  Re: Помогите со скриптом

при использовании скрипта

import bitel.billing.server.radius.*;
import java.util.*;
userName = request.getStringAttribute( RadiusStandartAttributes.User_Name );
if( Character.isDigit( userName.charAt(1) ) )
{
request.setStringAttribute( 1, "N" + userName);
}

выдается ошибка
{02} Неверный пароль логина
почему такое происходит?

Автор:  Администратор [ 21 янв 2011, 11:37 ]
Заголовок сообщения:  Re: Помогите со скриптом

Вы какой тип авторизации используете? Нельзя MS-CHAP v.2 использовать при такой схеме, т.к. там в алгоритме проверки пароля используется User-Name.
Попробуйте Chap.

Автор:  jek815 [ 21 янв 2011, 12:52 ]
Заголовок сообщения:  Re: Помогите со скриптом

Спасибо, отключил MS-CHAP и всё прекрасно заработало !!!

Автор:  jek815 [ 24 янв 2011, 12:18 ]
Заголовок сообщения:  Re: Помогите со скриптом

Авторизация пользователей работает нормально, но теперь возникла другая сложность:
Не сбрасываются подключенные сессии. Видимо дело в том что не совпадают логины в mikrotike (висит сессия логина 000111) и билинга (радиус передает имя пользователя N000111).. Что можно сделать в этой ситуации?

Автор:  Администратор [ 24 янв 2011, 12:32 ]
Заголовок сообщения:  Re: Помогите со скриптом

А по Acct-Session-Id микротик скидывать не умеет? Вы PoD ом отключаете?

Автор:  jek815 [ 24 янв 2011, 13:30 ]
Заголовок сообщения:  Re: Помогите со скриптом

отклучаем
nas.inspector.class=bitel.billing.server.processor.PoDNASConnectionInspector
nas.inspector.pod.port=1700
nas.inspector.pod.attributes=User-Name;Framed-IP-Address;Acct-Session-Id

Автор:  Администратор [ 24 янв 2011, 13:42 ]
Заголовок сообщения:  Re: Помогите со скриптом

Ну попробуйте User-Name из атрибутов убрать.

Автор:  jek815 [ 24 янв 2011, 14:16 ]
Заголовок сообщения:  Re: Помогите со скриптом

User-Name убрали, не помогает

вот что в микротике
11:22:26 hotspot,error,info,debug Radius disconnect request for unknown ip 10.10.10.10
11:22:26 radius,debug,packet received Disconnect-Request with id 250 from 172.16
8.1.240:1288
11:22:26 radius,debug,packet Signature = 0x90e3e4a24f20ad4184fe95050d898a93
11:22:26 radius,debug,packet Framed-IP-Address = 10.10.10.10
11:22:26 radius,debug,packet Acct-Session-Id = "8160009d"
11:22:26 radius,debug received remote request 252 code=Disconnect-Request from 1
72.168.1.240:1288
11:22:26 radius,debug sending Disconnect-NAK to remote request 252
11:22:26 radius,debug,packet sending Disconnect-NAK with id 250 to 172.168.1.240:1288
11:22:26 radius,debug,packet Signature = 0x48cabbc2d50865257a798f32ee435c8d
11:22:26 radius,debug,packet Error-Cause = 406
11:22:26 radius,debug,packet NAS-Identifier = "MikroTik"
11:22:26 radius,debug,packet NAS-IP-Address = 172.168.1.252

Автор:  jek815 [ 24 янв 2011, 14:58 ]
Заголовок сообщения:  Re: Помогите со скриптом

странно почему ip не известный..

Автор:  jek815 [ 24 янв 2011, 17:31 ]
Заголовок сообщения:  Re: Помогите со скриптом

Кто-нибудь может подсказать как в данной ситуации сбросить сессию?

Автор:  Администратор [ 25 янв 2011, 10:38 ]
Заголовок сообщения:  Re: Помогите со скриптом

Посмотрите в connection.log в каком виде PoD пакет уходит. И сюда выложите.

Автор:  Kostiksnz [ 09 фев 2011, 15:25 ]
Заголовок сообщения:  Re: Помогите со скриптом

Добрый день

Создал скрипт поведения

который как было написано - добавляет N в начале логина
Код:
import bitel.billing.server.radius.*;
import ru.bitel.bgbilling.kernel.network.radius.*;

userName = request.getStringAttribute(-1, 1, "");

if (request.getCode() == RadiusPacket.ACCESS_REQUEST) {
   if (userName.matches("^[0-9]+$")) {
      request.setStringAttribute(-1, RadiusStandartAttributes.User_Name, "N"+userName);
   }
}


привязал данный скрипт к событию Радиус аутентификации

привязал к договору
пробую коннектиться - в логах выполнения
Код:
GENERATE_TIME: 09.02.11 14:23:13
EXECUTION_STOP_TIME: 09.02.11 14:23:13
PROCESS_TIME: 17

OUT:


EXCEPTIONS:
Sourced file: Function [id:3; title:New] : Attempt to resolve method: getStringAttribute() on undefined variable or class name: request : at Line: 4 : in file: Function [id:3; title:New] : request .getStringAttribute ( - 1 , 1 , "" )

java.util.concurrent.ExecutionException: Sourced file: Function [id:3; title:New] : Attempt to resolve method: getStringAttribute() on undefined variable or class name: request : at Line: 4 : in file: Function [id:3; title:New] : request .getStringAttribute ( - 1 , 1 , "" )

   at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)
   at java.util.concurrent.FutureTask.get(Unknown Source)
   at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine.runScriptImpl(ScriptMachine.java:371)
   at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:129)
   at bitel.billing.server.script.bean.event.EventProcessor.processContractEvent(EventProcessor.java:299)
   at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:217)
   at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:201)
   at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:188)
   at ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor.accessRequest(RadiusProcessor.java:328)
   at ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker.run(RadiusListenerWorker.java:172)
   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
   at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40)
Caused by: Sourced file: Function [id:3; title:New] : Attempt to resolve method: getStringAttribute() on undefined variable or class name: request : at Line: 4 : in file: Function [id:3; title:New] : request .getStringAttribute ( - 1 , 1 , "" )

   at bsh.UtilEvalError.toEvalError(Unknown Source)
   at bsh.UtilEvalError.toEvalError(Unknown Source)
   at bsh.BSHMethodInvocation.eval(Unknown Source)
   at bsh.BSHPrimaryExpression.eval(Unknown Source)
   at bsh.BSHPrimaryExpression.eval(Unknown Source)
   at bsh.BSHAssignment.eval(Unknown Source)
   at bsh.Interpreter.eval(Unknown Source)
   at ru.bitel.bgbilling.kernel.script.server.bean.ScriptInstance.eval(ScriptInstance.java:352)
   at bitel.billing.server.script.bean.ScriptMachine$SimpleScriptRunner.runScript(ScriptMachine.java:70)
   at bitel.billing.server.script.bean.ScriptMachine.runScriptImpl(ScriptMachine.java:190)
   at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine.access$0(ScriptMachine.java:1)
   at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine$1.call(ScriptMachine.java:361)
   at bitel.billing.server.script.bean.ScriptMachine$ThreadedScriptMachine$1.call(ScriptMachine.java:1)
   at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
   at java.util.concurrent.FutureTask.run(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)


уже и так и сяк... куда крутить?

Автор:  aardvark [ 09 фев 2011, 18:57 ]
Заголовок сообщения:  Re: Помогите со скриптом

создать переменную request правильно.
в случае скрипта поведения это значит получать её через метод getRequest() , то бишь нехватает
request = event.getRequest()
в вашем случае
и вобще помоему это скрипт предобработки.

Автор:  Kostiksnz [ 10 фев 2011, 12:01 ]
Заголовок сообщения:  Re: Помогите со скриптом

aardvark писал(а):
создать переменную request правильно.
в случае скрипта поведения это значит получать её через метод getRequest() , то бишь нехватает
request = event.getRequest()
в вашем случае
и вобще помоему это скрипт предобработки.



а скрипт переработки куда нить логи пишет?

BGBillingServer/log/script.log отсутсвует

Автор:  Cromeshnic [ 10 фев 2011, 12:25 ]
Заголовок сообщения:  Re: Помогите со скриптом

Скрипт предобработки выполняется в контексте радиуса и пишет в /usr/local/BGRadiusDialup/log/script.log

Автор:  jek815 [ 11 фев 2011, 14:03 ]
Заголовок сообщения:  Re: Помогите со скриптом

Администратор писал(а):
Посмотрите в connection.log в каком виде PoD пакет уходит. И сюда выложите.


Вот что там:

02-11/10:58:10 INFO [Thread-9] connections - [ N000111; NN000111; 60171 ] PoD reset packet on 172.168.1.252:1700
Type=40
Attributes:
Framed-IP-Address=10.10.10.10
Acct-Session-Id=8190017c

02-11/10:58:12 INFO [Thread-9] connections - [ N000111; N000111; 60171 ] sendKillRequest
02-11/10:58:12 INFO [Thread-9] connections - [ N000111; N000111; 60171 ] Set connection to KILL

Сессия не сбрасывается

Автор:  jek815 [ 11 фев 2011, 14:17 ]
Заголовок сообщения:  Re: Помогите со скриптом

Заметил разницу
В микротике в логах в кавычках
Acct-Session-Id = "8160009d"

а передайтся билингом без кавычек
Acct-Session-Id = 8160009d
Может в этом дело, не совпадают типы данных?

Автор:  jek815 [ 11 фев 2011, 16:18 ]
Заголовок сообщения:  Re: Помогите со скриптом

Может разные тип данных и поэтому не может сбросить сессию ни по Framed-IP-Address ни по Acct-Session-Id
Кто нибудь пробывал сбрасывать сессии кроме как по User-Name???

Автор:  jek815 [ 14 фев 2011, 11:45 ]
Заголовок сообщения:  Re: Помогите со скриптом

Ну так может всетаки подскажут разработчики как решить ситуацию с 700 пользователями у которых числовой User-Name и поэтому мы не можем использовать биллинг? Или проще заменить договора у этих людей???

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