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/ |