def get_suspensionIp():
    suspension_ip = SuspensionIpModel()
    sort_col = request.args.get('sort_col');
    if sort_col == None:
        sort_col = 'SuspensionTime';
    sort_type = request.args.get('sort_type')
    if sort_type == None:
        sort_type = 'DESC'
    limit = request.args.get('max')
    if limit == None:
        limit = 5
    offset = int(request.args.get('start'))
    offset = offset*int(limit)
    if offset == None:
        offset = 0;
    info = "find ip :get ip status =0"
    wirte_log_to_file(info)
    total_data = suspension_ip.get_suspensionIp(0,fileds="IpAddress")
    total = len(total_data)
    data = suspension_ip.get_suspensionIp(0,limit = int(limit),offset=int(offset),sort_col=sort_col,order_type=sort_type)
    all_data = {
        "total" :total,
        "data" :data
    }
    return json.dumps(all_data)
示例#2
0
 def unblockIp(self):
     logging.info("start unblock ip ")
     suspension_ip_model = SuspensionIpModel()
     all_suspension_ip = suspension_ip_model.get_suspensionIp(0)
     ip_analysise_service = IPAnalysiseService(self.redis_config)
     currnet_time = self._fromatTime(time.time())
     for i in all_suspension_ip:
         logging.info("unblock ip address %s"%i['IpAddress'])
         ip_SuspensionTime = self._fromatTime(time.mktime(time.strptime(i['SuspensionTime'],'%Y.%m.%d %H:%M:%S')))
         if currnet_time -ip_SuspensionTime > self.clock_ip_time*60000*60:
             suspension_ip_model.update_ip_status(ip_address=i['IpAddress'],Status= 1)
             ip_analysise_service.rem_violation_ip_from_redis(self.suspension_key,i['IpAddress'])
         else:
             continue
     logging.info("end unblock ip ")
 def analysise_ip_data_from_es(self,url,index,path,ip_viste_total = 5000,rangeMinute=5,sort_type = True,lte = datetime.datetime.now().strftime('%Y.%m.%d %H:%M:%S')):
     print(url)
     logging.info(" analysise ip address start ")
     logging.info(" ip limit value: %s"%ip_viste_total )
     elasticsearch_service = elasticsearchLib(url)
     forbid_ip_address = []
     all_ip = elasticsearch_service.getDataByIndex(index,path,rangeMinute,sort_type,lte)
     if all_ip != "notfound":
         suspension_ip_model = SuspensionIpModel()
         forbid_ip_address = []
         for i in all_ip:
             if i[1] > ip_viste_total:
                 logging.info(" forbid ip addrss %s"%i[0])
                 forbid_ip_address.append(i[0])
     for i in  forbid_ip_address:
         i = str(i)
         ip_exist = suspension_ip_model.check_ip_is_in_db(i)
         if ip_exist:
             logging.info(" update exist ip address ")
             suspension_ip_model.update_ip_status(ip_address =i,Status= 0)
         else:
             ip_data = {}
             ip_data['Status'] = 0;
             ip_data['IpAddress'] = i
             ip_data['SuspensionTime'] = str(datetime.datetime.now().strftime('%Y.%m.%d %H:%M:%S'))
             logging.info(" add  ip address to redis")
             suspension_ip_model.add_ip_to_db(ip_data)
         self.add_violation_to_redis(self.hash_key,i)
         logging.info(" analysise ip address end ")