Exemple #1
0
 def __init__(self, server_ip, server_port, priority, allow_frmk_data,
              sendEvents, plugins, stopEvent):
     #self.conf = conf
     self.plugins = plugins
     self.sequence = 0
     self.server_ip = server_ip
     self.server_port = server_port
     self.allow_frmk_data = allow_frmk_data
     self.monitor_scheduler = MonitorScheduler()
     self.monitor_scheduler.start()
     self.__patternFrmkMessageResponse = re.compile(
         "server_ip=\"(?P<srv_ip>(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3}))\" server_name=\"(?P<srv_name>([^\"]+))\" server_port=\"(?P<srv_port>\d+)\" framework_ip=\"(?P<frmk_ip>(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3}))\" framework_name=\"(?P<frmk_name>([^\"]+))\" framework_port=\"(?P<frmk_port>\d+)\""
     )
     self.frmk_hostname = ''
     self.frmk_ip = ''
     self.frmk_port = ''
     self.priority = priority
     self.__isAlive = False
     self.__stopped = False
     self.__sendEvents = sendEvents
     self.__keep_working = True
     self.__validFrmkData = False
     self.__threadControlMessages = None
     self.__controlMsgThread_isRunning = False
     self.__stopEvent = stopEvent
     self.__runningConnect = False
     self.__conn = None
     self.__writeLock = threading.RLock()
Exemple #2
0
 def __init__(self, server_ip, server_port, priority, allow_frmk_data, sendEvents, plugins, stopEvent, sensor_id,systemUUIDFile):
     #self.conf = conf
     self.plugins = plugins
     self.sequence = 0
     self.server_ip = server_ip
     self.server_port = server_port
     self.allow_frmk_data = allow_frmk_data
     self.monitor_scheduler = MonitorScheduler()
     self.monitor_scheduler.start()
     self.__patternFrmkMessageResponse = re.compile("server_ip=\"(?P<srv_ip>(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3}))\" server_name=\"(?P<srv_name>([^\"]+))\" server_port=\"(?P<srv_port>\d+)\" framework_ip=\"(?P<frmk_ip>(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3}))\" framework_name=\"(?P<frmk_name>([^\"]+))\" framework_port=\"(?P<frmk_port>\d+)\"")
     self.__patternChangeUUID = re.compile('noack id="(?P<sec>\d+)" your_sensor_id="(?P<uuid>[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12})"')
     self.frmk_hostname = ''
     self.frmk_ip = ''
     self.frmk_port = ''
     self.priority = priority
     self.__isAlive = False
     self.__stopped = False
     self.__sendEvents = sendEvents
     self.__keep_working = True
     self.__validFrmkData = False
     self.__threadControlMessages = None
     self.__controlMsgThread_isRunning = False
     self.__stopEvent = stopEvent
     self.__sensorID = sensor_id
     self.__runningConnect = False
     self.__conn = None
     self.__systemUUIDFile = systemUUIDFile
     self.__writeLock = threading.RLock()
Exemple #3
0
 def __init__(self, server_ip, server_port, priority, allow_frmk_data, sendEvents, plugins):
     #self.conf = conf
     self.plugins = plugins
     self.sequence = 0
     self.server_ip = server_ip
     self.server_port = server_port
     self.allow_frmk_data = allow_frmk_data
     self.monitor_scheduler = MonitorScheduler()
     self.monitor_scheduler.start()
     self.__patternFrmkMessageResponse = re.compile("server_ip=\"(?P<srv_ip>(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3}))\" server_name=\"(?P<srv_name>([^\"]+))\" server_port=\"(?P<srv_port>\d+)\" framework_ip=\"(?P<frmk_ip>(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3}))\" framework_name=\"(?P<frmk_name>([^\"]+))\" framework_port=\"(?P<frmk_port>\d+)\"")
     self.frmk_hostname = ''
     self.frmk_ip = ''
     self.frmk_port = ''
     self.priority = priority
     self.__isAlive = False
     self.__stopped = False
     self.__sendEvents = sendEvents
     self.__keep_working = True
     self.__validFrmkData = False
Exemple #4
0
class ServerConn:

    __conn = None

    MSG_CONNECT = 'connect id="%s" ' + \
                          'type="sensor" ' + \
                          'version="' + __version__ + '"\n'
    MSG_APPEND_PLUGIN = 'session-append-plugin id="%s" ' + \
                          'plugin_id="%s" enabled="%s" state="%s"\n'
    MSG_GET_FRAMEWORK = 'server-get-framework\n'
    def __init__(self, server_ip, server_port, priority, allow_frmk_data, sendEvents, plugins):
        #self.conf = conf
        self.plugins = plugins
        self.sequence = 0
        self.server_ip = server_ip
        self.server_port = server_port
        self.allow_frmk_data = allow_frmk_data
        self.monitor_scheduler = MonitorScheduler()
        self.monitor_scheduler.start()
        self.__patternFrmkMessageResponse = re.compile("server_ip=\"(?P<srv_ip>(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3}))\" server_name=\"(?P<srv_name>([^\"]+))\" server_port=\"(?P<srv_port>\d+)\" framework_ip=\"(?P<frmk_ip>(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3}))\" framework_name=\"(?P<frmk_name>([^\"]+))\" framework_port=\"(?P<frmk_port>\d+)\"")
        self.frmk_hostname = ''
        self.frmk_ip = ''
        self.frmk_port = ''
        self.priority = priority
        self.__isAlive = False
        self.__stopped = False
        self.__sendEvents = sendEvents
        self.__keep_working = True
        self.__validFrmkData = False

    # connect to server
    #  attempts == 0 means that agent try to connect forever
    #  waittime = seconds between attempts
    def connect(self, attempts=3, waittime=10.0):
        self.__keep_working = True
        self.sequence = 1
        count = 1

        if self.__conn is None:

            logger.info("Connecting to server (%s, %s).." \
                % (self.server_ip, self.server_port))

            while self.__keep_working and not self.__isAlive:

                self.__connect_to_server()
                if self.__conn is not None:
                    self.__isAlive = True
                    self.__append_plugins()
                    if self.allow_frmk_data:
                        self.frmk_hostname, self.frmk_ip, self.frmk_port = self.__get_framework_connection_data()
                        logger.info("Server (%s:%s) Framework Connnection Data FRMK_HN:%s, FRMK_IP:%s, FRMK_PORT:%s" % (self.server_ip, self.server_port, self.frmk_hostname, self.frmk_ip, self.frmk_port))
                    elif not self.__validFrmkData :
                        logger.info("This server (%s:%s) doesn't support framework data connection" % (self.server_ip, self.server_port))
                    break

                else:
                    logger.info("Can't connect to server, " + \
                                "retrying in %d seconds" % (waittime))
                    time.sleep(waittime)

                # check #attempts
                if attempts != 0 and count == attempts:
                    break
                count += 1

        else:
            logger.info("Reusing server connection (%s, %s).." \
                % (self.server_ip, self.server_port))

        return self.__conn


    def close(self):
        logger.info("Closing server connection..")
        if self.__conn is not None:
            self.__conn.close()
            self.__conn = None
        self.__isAlive = False
        self.__keep_working = False


    # Reset the current connection by closing and reopening it
    def reconnect(self, attempts=0, waittime=10.0):

        self.close()
        time.sleep(1)
        Stats.server_reconnect(self.server_ip)
        tmptries = 0
        while tmptries < MAX_TRIES:
            if self.connect(attempts, waittime) is not None:
                break
            tmptries += 1
        if tmptries == MAX_TRIES:
            self.__stopped = True
            self.__keep_working = False


    def send(self, msg):

        while self.__keep_working:
            try:
                if self.__isAlive:
                    self.__conn.send(msg)
            except socket.error, e:
                logger.error(e)
                self.reconnect()
            except AttributeError: # self.__conn == None
                logger.error("Atributte Error, %s" % str(e))
                self.reconnect()
            else:
Exemple #5
0
class ServerConn:

    __conn = None

    MSG_CONNECT = 'connect id="%s" ' + \
                          'type="sensor" ' + \
                          'version="' + __version__ + '"\n'
    MSG_APPEND_PLUGIN = 'session-append-plugin id="%s" ' + \
                          'plugin_id="%s" enabled="%s" state="%s"\n'
    MSG_GET_FRAMEWORK = 'server-get-framework\n'

    def __init__(self, server_ip, server_port, priority, allow_frmk_data,
                 sendEvents, plugins, stopEvent):
        #self.conf = conf
        self.plugins = plugins
        self.sequence = 0
        self.server_ip = server_ip
        self.server_port = server_port
        self.allow_frmk_data = allow_frmk_data
        self.monitor_scheduler = MonitorScheduler()
        self.monitor_scheduler.start()
        self.__patternFrmkMessageResponse = re.compile(
            "server_ip=\"(?P<srv_ip>(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3}))\" server_name=\"(?P<srv_name>([^\"]+))\" server_port=\"(?P<srv_port>\d+)\" framework_ip=\"(?P<frmk_ip>(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3}))\" framework_name=\"(?P<frmk_name>([^\"]+))\" framework_port=\"(?P<frmk_port>\d+)\""
        )
        self.frmk_hostname = ''
        self.frmk_ip = ''
        self.frmk_port = ''
        self.priority = priority
        self.__isAlive = False
        self.__stopped = False
        self.__sendEvents = sendEvents
        self.__keep_working = True
        self.__validFrmkData = False
        self.__threadControlMessages = None
        self.__controlMsgThread_isRunning = False
        self.__stopEvent = stopEvent
        self.__runningConnect = False
        self.__conn = None
        self.__writeLock = threading.RLock()

    def connect(self, attempts=3, waittime=10.0):
        '''
        connect to server:
            - attempts == 0 means that agent try to connect forever
            - waittime = seconds between attempts
        '''
        self.__keep_working = True
        self.sequence = 1
        count = 1

        if self.__conn is None:

            logger.info("Connecting to server (%s, %s).." %
                        (self.server_ip, self.server_port))
            while self.__keep_working and not self.__isAlive:
                if self.__stopEvent.isSet():
                    self.close()
                    continue
                self.__connect_to_server()
                if self.__conn is not None:
                    self.__append_plugins()
                    self.control_messages()
                    if self.allow_frmk_data:
                        self.frmk_hostname, self.frmk_ip, self.frmk_port = self.__get_framework_connection_data(
                        )
                        logger.debug(
                            "Server (%s:%s) Framework Connection Data FRMK_HN:%s, FRMK_IP:%s, FRMK_PORT:%s"
                            %
                            (self.server_ip, self.server_port,
                             self.frmk_hostname, self.frmk_ip, self.frmk_port))
                    elif not self.__validFrmkData:
                        logger.info(
                            "This server (%s:%s) doesn't support framework data connection"
                            % (self.server_ip, self.server_port))
                    break

                else:
                    logger.info("Can't connect to server, " + \
                                "retrying in %d seconds" % (waittime))
                    #if self.__keep_working:
                    time.sleep(waittime)

                # check #attempts
                if attempts != 0 and count == attempts:
                    break
                count += 1

        else:
            logger.info("Reusing server connection (%s, %s).." \
                % (self.server_ip, self.server_port))
        return self.__conn

    def close(self):

        self.__keep_working = False
        self.__isAlive = False
        if self.__conn is not None:
            logger.info("Closing server connection..")
            try:
                self.__conn.shutdown(socket.SHUT_RDWR)
                self.__conn.close()
            except Exception, e:
                pass
        self.__conn = None
        self.__controlMsgThread_isRunning = False
Exemple #6
0
class ServerConn:

    __conn = None

    MSG_CONNECT = 'connect id="%s" ' + \
                          'type="sensor" ' + \
                          'version="' + __version__ + '"  sensor_id="%s" \n'
    MSG_APPEND_PLUGIN = 'session-append-plugin id="%s" ' + \
                          'plugin_id="%s" enabled="%s" state="%s"\n'
    MSG_GET_FRAMEWORK = 'server-get-framework\n'
    def __init__(self, server_ip, server_port, priority, allow_frmk_data, sendEvents, plugins, stopEvent, sensor_id,systemUUIDFile):
        #self.conf = conf
        self.plugins = plugins
        self.sequence = 0
        self.server_ip = server_ip
        self.server_port = server_port
        self.allow_frmk_data = allow_frmk_data
        self.monitor_scheduler = MonitorScheduler()
        self.monitor_scheduler.start()
        self.__patternFrmkMessageResponse = re.compile("server_ip=\"(?P<srv_ip>(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3}))\" server_name=\"(?P<srv_name>([^\"]+))\" server_port=\"(?P<srv_port>\d+)\" framework_ip=\"(?P<frmk_ip>(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3}))\" framework_name=\"(?P<frmk_name>([^\"]+))\" framework_port=\"(?P<frmk_port>\d+)\"")
        self.__patternChangeUUID = re.compile('noack id="(?P<sec>\d+)" your_sensor_id="(?P<uuid>[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12})"')
        self.frmk_hostname = ''
        self.frmk_ip = ''
        self.frmk_port = ''
        self.priority = priority
        self.__isAlive = False
        self.__stopped = False
        self.__sendEvents = sendEvents
        self.__keep_working = True
        self.__validFrmkData = False
        self.__threadControlMessages = None
        self.__controlMsgThread_isRunning = False
        self.__stopEvent = stopEvent
        self.__sensorID = sensor_id
        self.__runningConnect = False
        self.__conn = None
        self.__systemUUIDFile = systemUUIDFile
        self.__writeLock = threading.RLock()

    def connect(self, attempts=3, waittime=10.0):
        '''
        connect to server:
            - attempts == 0 means that agent try to connect forever
            - waittime = seconds between attempts
        '''
        self.__keep_working = True
        self.sequence = 1
        count = 1

        if self.__conn is None:

            logger.info("Connecting to server (%s, %s).." \
                % (self.server_ip, self.server_port))

            while self.__keep_working and not self.__isAlive:
                if self.__stopEvent.isSet():                    
                    self.close()
                    continue                
                self.__connect_to_server()
                if self.__conn is not None:
                    self.__append_plugins()
                    self.control_messages()
                    if self.allow_frmk_data:
                        self.frmk_hostname, self.frmk_ip, self.frmk_port = self.__get_framework_connection_data()
                        logger.debug("Server (%s:%s) Framework Connection Data FRMK_HN:%s, FRMK_IP:%s, FRMK_PORT:%s" % (self.server_ip, self.server_port, self.frmk_hostname, self.frmk_ip, self.frmk_port))
                    elif not self.__validFrmkData :
                        logger.info("This server (%s:%s) doesn't support framework data connection" % (self.server_ip, self.server_port))
                    break

                else:
                    logger.info("Can't connect to server, " + \
                                "retrying in %d seconds" % (waittime))
                    #if self.__keep_working:
                    time.sleep(waittime)

                # check #attempts
                if attempts != 0 and count == attempts:
                    break
                count += 1

        else:
            logger.info("Reusing server connection (%s, %s).." \
                % (self.server_ip, self.server_port))
        
        return self.__conn


    def close(self):
        self.__keep_working = False
        self.__isAlive = False
        if self.__conn is not None:
            logger.info("Closing server connection..")
            try:
                self.__conn.shutdown(socket.SHUT_RDWR)
                self.__conn.close()
            except Exception,e:
                pass
        self.__conn = None
        self.__controlMsgThread_isRunning = False