File indexing completed on 2026-04-20 07:58:56
0001 import os
0002 import socket
0003 import threading
0004
0005 from pandaharvester.harvestercore import core_utils
0006 from pandaharvester.harvestercore.db_interface import DBInterface
0007
0008
0009
0010 class AgentBase(threading.Thread):
0011
0012 def __init__(self, single_mode):
0013 threading.Thread.__init__(self)
0014 self.singleMode = single_mode
0015 self.stopEvent = None
0016 self.hostname = socket.gethostname()
0017 self.os_pid = os.getpid()
0018 self.dbInterface = DBInterface()
0019
0020
0021 def set_stop_event(self, stop_event):
0022 self.stopEvent = stop_event
0023
0024
0025 def terminated(self, wait_interval, randomize=True):
0026 if self.singleMode:
0027 return True
0028 return core_utils.sleep(wait_interval, self.stopEvent, randomize)
0029
0030
0031 def get_pid(self):
0032 thread_id = self.ident if self.ident else 0
0033 return f"{self.hostname}_{self.os_pid}-{format(thread_id, 'x')}"
0034
0035
0036 def make_logger(self, base_log, token=None, method_name=None, send_dialog=True):
0037 if send_dialog and hasattr(self, "dbInterface"):
0038 hook = self.dbInterface
0039 else:
0040 hook = None
0041 return core_utils.make_logger(base_log, token=token, method_name=method_name, hook=hook)