mirror of https://github.com/CIRCL/AIL-framework
				
				
				
			
		
			
				
	
	
		
			87 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			87 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
| #!/usr/bin/env python3
 | |
| # -*-coding:UTF-8 -*
 | |
| 
 | |
| import os
 | |
| import re
 | |
| import sys
 | |
| import time
 | |
| import redis
 | |
| import datetime
 | |
| 
 | |
| sys.path.append(os.path.join(os.environ['AIL_BIN'], 'packages/'))
 | |
| import Item
 | |
| import Tag
 | |
| from Cryptocurrency import cryptocurrency
 | |
| from Pgp import pgp
 | |
| 
 | |
| sys.path.append(os.path.join(os.environ['AIL_BIN'], 'lib/'))
 | |
| import ConfigLoader
 | |
| import Decoded
 | |
| import Domain
 | |
| 
 | |
| def update_update_stats():
 | |
|     nb_updated = int(r_serv_db.get('update:nb_elem_converted'))
 | |
|     progress = int((nb_updated * 100) / nb_elem_to_update)
 | |
|     print('{}/{}    updated    {}%'.format(nb_updated, nb_elem_to_update, progress))
 | |
|     r_serv_db.set('ail:current_background_script_stat', progress)
 | |
| 
 | |
| def update_domain_by_item(domain_obj, item_id):
 | |
|     domain_name = domain_obj.get_domain_name()
 | |
|     # update domain tags
 | |
|     for tag in Tag.get_obj_tag(item_id):
 | |
|         if tag != 'infoleak:submission="crawler"' and tag != 'infoleak:submission="manual"':
 | |
|             Tag.add_tag("domain", tag, domain_name, obj_date=Item.get_item_date(item_id))
 | |
| 
 | |
|     # update domain correlation
 | |
|     item_correlation = Item.get_item_all_correlation(item_id)
 | |
| 
 | |
|     for correlation_name in item_correlation:
 | |
|         for correlation_type in item_correlation[correlation_name]:
 | |
|             if correlation_name in ('pgp', 'cryptocurrency'):
 | |
|                 for correl_value in item_correlation[correlation_name][correlation_type]:
 | |
|                     if correlation_name=='pgp':
 | |
|                         pgp.save_domain_correlation(domain_name, correlation_type, correl_value)
 | |
|                     if correlation_name=='cryptocurrency':
 | |
|                         cryptocurrency.save_domain_correlation(domain_name, correlation_type, correl_value)
 | |
|             if correlation_name=='decoded':
 | |
|                 for decoded_item in item_correlation['decoded']:
 | |
|                     Decoded.save_domain_decoded(domain_name, decoded_item)
 | |
| 
 | |
| if __name__ == '__main__':
 | |
| 
 | |
|     start_deb = time.time()
 | |
| 
 | |
|     config_loader = ConfigLoader.ConfigLoader()
 | |
|     r_serv_db = config_loader.get_redis_conn("ARDB_DB")
 | |
|     r_serv_onion = config_loader.get_redis_conn("ARDB_Onion")
 | |
|     config_loader = None
 | |
| 
 | |
|     r_serv.set('ail:current_background_script', 'domain update')
 | |
| 
 | |
|     nb_elem_to_update = r_serv_db.get('update:nb_elem_to_convert')
 | |
|     if not nb_elem_to_update:
 | |
|         nb_elem_to_update = 0
 | |
|     else:
 | |
|         nb_elem_to_update = int(nb_elem_to_update)
 | |
| 
 | |
|     while True:
 | |
|         domain = r_serv_onion.spop('domain_update_v2.4')
 | |
|         if domain is not None:
 | |
|             print(domain)
 | |
|             domain = Domain.Domain(domain)
 | |
|             for domain_history in domain.get_domain_history():
 | |
| 
 | |
|                 domain_item = domain.get_domain_items_crawled(epoch=domain_history[1]) # item_tag
 | |
|                 if "items" in domain_item:
 | |
|                     for item_dict in domain_item['items']:
 | |
|                         update_domain_by_item(domain, item_dict['id'])
 | |
| 
 | |
|             r_serv_db.incr('update:nb_elem_converted')
 | |
|             update_update_stats()
 | |
| 
 | |
|         else:
 | |
|             r_serv.delete('update:nb_elem_to_convert')
 | |
|             r_serv.delete('update:nb_elem_converted')
 | |
|             r_serv_db.set('ail:current_background_script_stat', 100)
 | |
|             sys.exit(0)
 |