BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 29 мар 2024, 04:08

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 06 ноя 2013, 16:19 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
случается иногда, что сессия не сбросилась на мпд, либо сбой какой. в результате, сессия работает, а в биллинге ее нет. не хорошо.
Код:
import bitel.billing.server.util.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.sql.*;

public void main( setup, con, conSlave )
{
   int MID = 1 ;
   String[][] mpdnases = {//урлки мпд насов, и их логин/пароль
      {"http://10.11.1.1:5006", "user:password"},
      {"http://10.11.1.2:5006", "user:password"},
      {"http://10.11.1.3:5006", "user:password"},
      {"http://10.11.1.4:5006", "user:password"},
      {"http://10.11.1.5:5006", "user:password"}
   };

   GregorianCalendar cal = new GregorianCalendar();
   int yy = cal.get(Calendar.YEAR);
   int _mm = cal.get(Calendar.MONTH)+1;
   String mm = Integer.toString(_mm);
   if (_mm >= 1 && _mm <= 9)
      mm = "0"+_mm;   

   String SQL = "SELECT id FROM log_session_"+MID+"_"+yy+mm+" WHERE login_name=? AND status=0";
   PreparedStatement ps = con.prepareStatement( SQL );


   for (int i = 0; i < mpdnases.length; i++ ){
      print("LOOKING MPD " + mpdnases[i][0] + "\n") ;
      String encoded = new sun.misc.BASE64Encoder().encode (mpdnases[i][1].getBytes());
      String line = null;
      String login = null;
      URL serverAddress = new URL( mpdnases[i][0] + "/bincmd?show%20sessions");
      HttpURLConnection connection = (HttpURLConnection)serverAddress.openConnection();
      connection.setReadTimeout(10000);
      connection.setRequestProperty ("Authorization", "Basic " + encoded);
      connection.connect();
      BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
      String[] tmp = null ;

      while ((line = rd.readLine()) != null)
      {
         tmp = line.split("\\t");
         if (tmp.length > 7 ){
            if ( !( tmp[1].startsWith("10.") || tmp[1].startsWith("192.168.") ) ){
               login = tmp[7].trim() ;
               ps.setString(1,login) ;
               ResultSet rs = ps.executeQuery();
               if ( !rs.next() ) //в биллинге нет сессии, сбрасываем
               {
                  String urlclose = mpdnases[i][0] + "/bincmd?link%20"+tmp[4] + "&close" ;
                  print("closing session for " + login + "..." ) ;
                  HttpURLConnection connClose = (HttpURLConnection)new URL(urlclose).openConnection();
                  connClose.setReadTimeout(10000);
                  connClose.setRequestProperty ("Authorization", "Basic " + encoded);
                  connClose.connect();
                  if (connClose.getResponseCode() == HttpURLConnection.HTTP_OK ){
                     print ("CLOSED!");
                  }else{
                     print ("WARNING. Session not closed" + connClose.getResponseCode());
                  }

               }
            }
         }
      }
   }
}

Глобальный скрипт в помощь. Можно в планировщик сунуть, раз в сутки, ночью чтобы подчищал хвосты.

_________________
интеграция биллинга с 1с http://bgbilling-1c.ru/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 ноя 2013, 19:57 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
модуль то какой?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 ноя 2013, 20:17 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
skyb писал(а):
модуль то какой?

Вангую
Код:
String SQL = "SELECT id FROM log_session_"+MID+"_"+yy+mm+" WHERE login_name=? AND status=0";

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 ноя 2013, 13:02 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
модуль диалап. в общем скрипт сбрасывает лишние сессии с мпд наса. лишние сессии тут определяются по модулю диалапа. возможно и инет можно задействовать, поправив запрос, что Phricker указал

_________________
интеграция биллинга с 1с http://bgbilling-1c.ru/


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.154s | 26 Queries | GZIP : On ]