#!/usr/bin/env python3
# -*-coding:UTF-8 -*

"""
The Hosts Module
======================

This module is consuming the Redis-list created by the Global module.

It is looking for Hosts

"""

##################################
# Import External packages
##################################
import os
import re
import sys

import DomainClassifier.domainclassifier

sys.path.append(os.environ['AIL_BIN'])
##################################
# Import Project packages
##################################
from modules.abstract_module import AbstractModule
from lib.ConfigLoader import ConfigLoader

class Hosts(AbstractModule):
    """
    Hosts module for AIL framework
    """

    def __init__(self):
        super(Hosts, self).__init__()

        config_loader = ConfigLoader()
        self.r_cache = config_loader.get_redis_conn("Redis_Cache")

        # regex timeout
        self.regex_timeout = 30

        # Waiting time in seconds between to message processed
        self.pending_seconds = 1

        redis_host = config_loader.get_config_str('Redis_Cache', 'host')
        redis_port = config_loader.get_config_int('Redis_Cache', 'port')
        redis_db = config_loader.get_config_int('Redis_Cache', 'db')
        self.dom_classifier = DomainClassifier.domainclassifier.Extract(rawtext="",
                                                                        redis_host=redis_host,
                                                                        redis_port=redis_port,
                                                                        redis_db=redis_db,
                                                                        re_timeout=30)
        self.logger.info(f"Module: {self.module_name} Launched")

    def compute(self, message):
        obj = self.get_obj()

        content = obj.get_content()
        self.dom_classifier.text(content)
        if self.dom_classifier.domain:
            print(f'{len(self.dom_classifier.domain)} host     {obj.get_id()}')
            # print(self.dom_classifier.domain)
            for domain in self.dom_classifier.domain:
                if domain:
                    self.add_message_to_queue(message=domain, queue='Host')


if __name__ == '__main__':
    module = Hosts()
    module.run()