mirror of https://github.com/CIRCL/AIL-framework
				
				
				
			
		
			
				
	
	
		
			111 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			111 lines
		
	
	
		
			4.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 Term
 | 
						|
 | 
						|
sys.path.append(os.path.join(os.environ['AIL_BIN'], 'lib/'))
 | 
						|
import ConfigLoader
 | 
						|
 | 
						|
 | 
						|
def rreplace(s, old, new, occurrence):
 | 
						|
    li = s.rsplit(old, occurrence)
 | 
						|
    return new.join(li)
 | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
 | 
						|
    start_deb = time.time()
 | 
						|
 | 
						|
    config_loader = ConfigLoader.ConfigLoader()
 | 
						|
 | 
						|
    r_serv_term_stats = config_loader.get_redis_conn("ARDB_Trending")
 | 
						|
    r_serv_termfreq = config_loader.get_redis_conn("ARDB_TermFreq")
 | 
						|
    config_loader = None
 | 
						|
 | 
						|
    r_serv_term_stats.flushdb()
 | 
						|
 | 
						|
    #convert all regex:
 | 
						|
    all_regex = r_serv_termfreq.smembers('TrackedRegexSet')
 | 
						|
    for regex in all_regex:
 | 
						|
        tags = list( r_serv_termfreq.smembers('TrackedNotificationTags_{}'.format(regex)) )
 | 
						|
        mails = list( r_serv_termfreq.smembers('TrackedNotificationEmails_{}'.format(regex)) )
 | 
						|
 | 
						|
        new_term = regex[1:-1]
 | 
						|
        res = Term.parse_json_term_to_add({"term": new_term, "type": 'regex', "tags": tags, "mails": mails, "level": 1}, 'admin@admin.test')
 | 
						|
        if res[1] == 200:
 | 
						|
            term_uuid = res[0]['uuid']
 | 
						|
            list_items = r_serv_termfreq.smembers('regex_{}'.format(regex))
 | 
						|
            for paste_item in list_items:
 | 
						|
                item_id = Item.get_item_id(paste_item)
 | 
						|
                item_date = Item.get_item_date(item_id)
 | 
						|
                Term.add_tracked_item(term_uuid, item_id, item_date)
 | 
						|
 | 
						|
        # Invalid Tracker => remove it
 | 
						|
        else:
 | 
						|
            print('Invalid Regex Removed: {}'.format(regex))
 | 
						|
        print(res[0])
 | 
						|
        # allow reprocess
 | 
						|
        r_serv_termfreq.srem('TrackedRegexSet', regex)
 | 
						|
 | 
						|
    all_tokens = r_serv_termfreq.smembers('TrackedSetTermSet')
 | 
						|
    for token in all_tokens:
 | 
						|
        tags = list( r_serv_termfreq.smembers('TrackedNotificationTags_{}'.format(token)) )
 | 
						|
        mails = list( r_serv_termfreq.smembers('TrackedNotificationEmails_{}'.format(token)) )
 | 
						|
 | 
						|
        res = Term.parse_json_term_to_add({"term": token, "type": 'word', "tags": tags, "mails": mails, "level": 1}, 'admin@admin.test')
 | 
						|
        if res[1] == 200:
 | 
						|
            term_uuid = res[0]['uuid']
 | 
						|
            list_items = r_serv_termfreq.smembers('tracked_{}'.format(token))
 | 
						|
            for paste_item in list_items:
 | 
						|
                item_id = Item.get_item_id(paste_item)
 | 
						|
                item_date = Item.get_item_date(item_id)
 | 
						|
                Term.add_tracked_item(term_uuid, item_id, item_date)
 | 
						|
        # Invalid Tracker => remove it
 | 
						|
        else:
 | 
						|
            print('Invalid Token Removed: {}'.format(token))
 | 
						|
        print(res[0])
 | 
						|
        # allow reprocess
 | 
						|
        r_serv_termfreq.srem('TrackedSetTermSet', token)
 | 
						|
 | 
						|
    all_set = r_serv_termfreq.smembers('TrackedSetSet')
 | 
						|
    for curr_set in all_set:
 | 
						|
        tags = list( r_serv_termfreq.smembers('TrackedNotificationTags_{}'.format(curr_set)) )
 | 
						|
        mails = list( r_serv_termfreq.smembers('TrackedNotificationEmails_{}'.format(curr_set)) )
 | 
						|
 | 
						|
        to_remove = ',{}'.format(curr_set.split(',')[-1])
 | 
						|
        new_set = rreplace(curr_set, to_remove, '', 1)
 | 
						|
        new_set = new_set[2:]
 | 
						|
        new_set = new_set.replace(',', '')
 | 
						|
 | 
						|
        res = Term.parse_json_term_to_add({"term": new_set, "type": 'set', "nb_words": 1, "tags": tags, "mails": mails, "level": 1}, 'admin@admin.test')
 | 
						|
        if res[1] == 200:
 | 
						|
            term_uuid = res[0]['uuid']
 | 
						|
            list_items = r_serv_termfreq.smembers('tracked_{}'.format(curr_set))
 | 
						|
            for paste_item in list_items:
 | 
						|
                item_id = Item.get_item_id(paste_item)
 | 
						|
                item_date = Item.get_item_date(item_id)
 | 
						|
                Term.add_tracked_item(term_uuid, item_id, item_date)
 | 
						|
        # Invalid Tracker => remove it
 | 
						|
        else:
 | 
						|
            print('Invalid Set Removed: {}'.format(curr_set))
 | 
						|
        print(res[0])
 | 
						|
        # allow reprocess
 | 
						|
        r_serv_termfreq.srem('TrackedSetSet', curr_set)
 | 
						|
 | 
						|
    r_serv_termfreq.flushdb()
 | 
						|
 | 
						|
    #Set current ail version
 | 
						|
    r_serv.set('ail:version', 'v2.2')
 | 
						|
 | 
						|
    #Set current ail version
 | 
						|
    r_serv.hset('ail:update_date', 'v2.2', datetime.datetime.now().strftime("%Y%m%d"))
 |