AIL-framework/bin/core/D4_client.py

60 lines
1.6 KiB
Python
Executable File

#!/usr/bin/env python3
# -*-coding:UTF-8 -*
"""
The D4_Client Module
============================
The D4_Client modules send all DNS records to a D4 Server.
Data produced by D4 sensors are ingested into
a Passive DNS server which can be queried later to search for the Passive DNS records.
"""
import os
import sys
import time
sys.path.append(os.environ['AIL_BIN'])
##################################
# Import Project packages
#################################
from modules.abstract_module import AbstractModule
from lib import d4
# # TODO: launch me in core screen
# # TODO: check if already launched in core screen
class D4Client(AbstractModule):
"""
D4Client module for AIL framework
"""
def __init__(self):
super(D4Client, self).__init__()
self.d4_client = d4.create_d4_client()
self.last_refresh = time.time()
self.last_config_check = time.time()
# Send module state to logs
self.logger.info(f'Module {self.module_name} initialized')
def compute(self, dns_record):
# Refresh D4 Client
if self.last_config_check < int(time.time()) - 30:
print('refresh rrrr')
if self.last_refresh < d4.get_config_last_update_time():
self.d4_client = d4.create_d4_client()
self.last_refresh = time.time()
print('D4 Client: config updated')
self.last_config_check = time.time()
if self.d4_client:
# Send DNS Record to D4Server
self.d4_client.send_manual_data(dns_record)
if __name__ == '__main__':
module = D4Client()
module.run()