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

Как убить все сессии с определенных ip
http://forum.bitel.ru/viewtopic.php?f=44&t=11817
Страница 1 из 1

Автор:  Nessero [ 25 июл 2016, 20:28 ]
Заголовок сообщения:  Как убить все сессии с определенных ip

в inet_connection_1 ipAdress начинается на ac10, каким запросом можно убить все сессии с такими ip ?

Автор:  Phricker [ 25 июл 2016, 20:40 ]
Заголовок сообщения:  Re: Как убить все сессии с определенных ip

Код:
package xxx.inet;

import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase;
import ru.bitel.bgbilling.modules.inet.api.common.service.InetServService;
import ru.bitel.bgbilling.modules.inet.api.common.service.InetSessionService;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class breakSessions
   extends GlobalScriptBase
   {
      static int INET_MID = 12; //ID модуля Inet
      
      @Override
      public void execute( Setup setup, ConnectionSet connectionSet )
         throws Exception
      {
         Connection con  = connectionSet.getConnection();
         ServerContext context = ServerContext.get();
         InetSessionService inetServ = context.getService(InetSessionService.class, INET_MID);
         
         int count = 0;
         
         print("Start");
         long timeStart = System.currentTimeMillis();
         String query =    " SELECT id FROM inet_connection_12 WHERE ipaddress BETWEEN UNHEX(CONV(INET_ATON('172.24.219.1'), 10, 16)) AND UNHEX(CONV(INET_ATON('172.24.255.255'), 10, 16)) AND STATUS = 1 ";

         PreparedStatement ps = con.prepareStatement( query );
         ResultSet rs = ps.executeQuery();
         while ( rs.next() )
         {
            count++;
            long sessionId = rs.getInt( 1 );
            inetServ.connectionClose(sessionId);
            //inetServ.connectionFinish(sessionId);
         }
         rs.close();
         ps.close();
         print("Сброшено " + count + " соединений");
         long timeEnd = System.currentTimeMillis();
         print( "Process time: " + (timeEnd - timeStart)/1000 + " s." );
      }
   }

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