def register(self, connector: OpenCTIConnector) -> Dict: """register a connector with OpenCTI :param connector: `OpenCTIConnector` connector object :type connector: OpenCTIConnector :return: the response registerConnector data dict :rtype: dict """ query = """ mutation RegisterConnector($input: RegisterConnectorInput) { registerConnector(input: $input) { id connector_state config { connection { host port user pass } listen listen_exchange push push_exchange } connector_user { id } } } """ result = self.api.query(query, connector.to_input()) return result["data"]["registerConnector"]
def __init__(self, config: dict): # Load API config self.opencti_url = get_config_variable("OPENCTI_URL", ["opencti", "url"], config) self.opencti_token = get_config_variable("OPENCTI_TOKEN", ["opencti", "token"], config) # Load connector config self.connect_id = get_config_variable("CONNECTOR_ID", ["connector", "id"], config) self.connect_type = get_config_variable("CONNECTOR_TYPE", ["connector", "type"], config) self.connect_name = get_config_variable("CONNECTOR_NAME", ["connector", "name"], config) self.connect_confidence_level = get_config_variable( "CONNECTOR_CONFIDENCE_LEVEL", ["connector", "confidence_level"], config, True, ) self.connect_scope = get_config_variable("CONNECTOR_SCOPE", ["connector", "scope"], config) self.log_level = get_config_variable("CONNECTOR_LOG_LEVEL", ["connector", "log_level"], config) # Configure logger numeric_level = getattr(logging, self.log_level.upper(), None) if not isinstance(numeric_level, int): raise ValueError("Invalid log level: " + self.log_level) logging.basicConfig(level=numeric_level) # Initialize configuration self.api = OpenCTIApiClient(self.opencti_url, self.opencti_token, self.log_level) self.current_work_id = None # Register the connector in OpenCTI self.connector = OpenCTIConnector(self.connect_id, self.connect_name, self.connect_type, self.connect_scope) connector_configuration = self.api.connector.register(self.connector) self.connector_id = connector_configuration["id"] self.connector_state = connector_configuration["connector_state"] self.config = connector_configuration["config"] # Start ping thread self.ping = PingAlive(self.connector.id, self.api, self.get_state, self.set_state) self.ping.start() # Initialize caching self.cache_index = {} self.cache_added = []
def register(self, connector: OpenCTIConnector): query = """ mutation RegisterConnector($input: RegisterConnectorInput) { registerConnector(input: $input) { id connector_state config { uri listen listen_exchange push push_exchange } } } """ result = self.api.query(query, connector.to_input()) return result["data"]["registerConnector"]
def __init__(self, config: dict): # Load API config self.opencti_url = os.getenv('OPENCTI_URL') or config['opencti']['url'] self.opencti_token = os.getenv('OPENCTI_TOKEN') or config['opencti']['token'] # Load connector config self.connect_id = os.getenv('CONNECTOR_ID') or config['connector']['id'] self.connect_type = os.getenv('CONNECTOR_TYPE') or config['connector']['type'] self.connect_name = os.getenv('CONNECTOR_NAME') or config['connector']['name'] self.connect_confidence_level = int( os.getenv('CONNECTOR_CONFIDENCE_LEVEL') or config['connector']['confidence_level'] or 2) self.connect_scope = os.getenv('CONNECTOR_SCOPE') or config['connector']['scope'] self.log_level = os.getenv('CONNECTOR_LOG_LEVEL') or config['connector']['log_level'] or 'info' # Configure logger² numeric_level = getattr(logging, self.log_level.upper(), None) if not isinstance(numeric_level, int): raise ValueError('Invalid log level: ' + self.log_level) logging.basicConfig(level=numeric_level) # Initialize configuration self.api = OpenCTIApiClient(self.opencti_url, self.opencti_token, self.log_level) self.current_work_id = None # Register the connector in OpenCTI self.connector = OpenCTIConnector(self.connect_id, self.connect_name, self.connect_type, self.connect_scope) connector_configuration = self.api.connector.register(self.connector) self.connector_id = connector_configuration['id'] self.connector_state = connector_configuration['connector_state'] self.config = connector_configuration['config'] # Start ping thread self.ping = PingAlive(self.connector.id, self.api, self.get_state, self.set_state) self.ping.start() # Initialize caching self.cache_index = {} self.cache_added = []
def __init__(self, config: Dict) -> None: # Load API config self.opencti_url = get_config_variable( "OPENCTI_URL", ["opencti", "url"], config ) self.opencti_token = get_config_variable( "OPENCTI_TOKEN", ["opencti", "token"], config ) self.opencti_ssl_verify = get_config_variable( "OPENCTI_SSL_VERIFY", ["opencti", "ssl_verify"], config, False, True ) self.opencti_json_logging = get_config_variable( "OPENCTI_JSON_LOGGING", ["opencti", "json_logging"], config ) # Load connector config self.connect_id = get_config_variable( "CONNECTOR_ID", ["connector", "id"], config ) self.connect_type = get_config_variable( "CONNECTOR_TYPE", ["connector", "type"], config ) self.connect_live_stream_id = get_config_variable( "CONNECTOR_LIVE_STREAM_ID", ["connector", "live_stream_id"], config, False, None, ) self.connect_live_stream_listen_delete = get_config_variable( "CONNECTOR_LIVE_STREAM_LISTEN_DELETE", ["connector", "live_stream_listen_delete"], config, False, True, ) self.connect_live_stream_no_dependencies = get_config_variable( "CONNECTOR_LIVE_STREAM_NO_DEPENDENCIES", ["connector", "live_stream_no_dependencies"], config, False, False, ) self.connect_name = get_config_variable( "CONNECTOR_NAME", ["connector", "name"], config ) self.connect_confidence_level = get_config_variable( "CONNECTOR_CONFIDENCE_LEVEL", ["connector", "confidence_level"], config, True, ) self.connect_scope = get_config_variable( "CONNECTOR_SCOPE", ["connector", "scope"], config ) self.connect_auto = get_config_variable( "CONNECTOR_AUTO", ["connector", "auto"], config, False, False ) self.connect_only_contextual = get_config_variable( "CONNECTOR_ONLY_CONTEXTUAL", ["connector", "only_contextual"], config, False, False, ) self.log_level = get_config_variable( "CONNECTOR_LOG_LEVEL", ["connector", "log_level"], config ) self.connect_run_and_terminate = get_config_variable( "CONNECTOR_RUN_AND_TERMINATE", ["connector", "run_and_terminate"], config, False, False, ) self.connect_validate_before_import = get_config_variable( "CONNECTOR_VALIDATE_BEFORE_IMPORT", ["connector", "validate_before_import"], config, False, False, ) # Configure logger numeric_level = getattr( logging, self.log_level.upper() if self.log_level else "INFO", None ) if not isinstance(numeric_level, int): raise ValueError(f"Invalid log level: {self.log_level}") logging.basicConfig(level=numeric_level) # Initialize configuration self.api = OpenCTIApiClient( self.opencti_url, self.opencti_token, self.log_level, json_logging=self.opencti_json_logging, ) # Register the connector in OpenCTI self.connector = OpenCTIConnector( self.connect_id, self.connect_name, self.connect_type, self.connect_scope, self.connect_auto, self.connect_only_contextual, ) connector_configuration = self.api.connector.register(self.connector) logging.info("%s", f"Connector registered with ID: {self.connect_id}") self.connector_id = connector_configuration["id"] self.work_id = None self.applicant_id = connector_configuration["connector_user"]["id"] self.connector_state = connector_configuration["connector_state"] self.config = connector_configuration["config"] # Start ping thread if not self.connect_run_and_terminate: self.ping = PingAlive( self.connector.id, self.api, self.get_state, self.set_state ) self.ping.start() # self.listen_stream = None self.listen_queue = None
def __init__(self, config: dict): # Load API config self.opencti_url = get_config_variable( "OPENCTI_URL", ["opencti", "url"], config ) self.opencti_token = get_config_variable( "OPENCTI_TOKEN", ["opencti", "token"], config ) self.opencti_ssl_verify = get_config_variable( "OPENCTI_SSL_VERIFY", ["opencti", "ssl_verify"], config, False, True ) # Load connector config self.connect_id = get_config_variable( "CONNECTOR_ID", ["connector", "id"], config ) self.connect_type = get_config_variable( "CONNECTOR_TYPE", ["connector", "type"], config ) self.connect_name = get_config_variable( "CONNECTOR_NAME", ["connector", "name"], config ) self.connect_confidence_level = get_config_variable( "CONNECTOR_CONFIDENCE_LEVEL", ["connector", "confidence_level"], config, True, ) self.connect_scope = get_config_variable( "CONNECTOR_SCOPE", ["connector", "scope"], config ) self.connect_auto = get_config_variable( "CONNECTOR_AUTO", ["connector", "auto"], config, False, False ) self.connect_only_contextual = get_config_variable( "CONNECTOR_ONLY_CONTEXTUAL", ["connector", "only_contextual"], config, False, False, ) self.log_level = get_config_variable( "CONNECTOR_LOG_LEVEL", ["connector", "log_level"], config ) # Configure logger numeric_level = getattr( logging, self.log_level.upper() if self.log_level else "INFO", None ) if not isinstance(numeric_level, int): raise ValueError("Invalid log level: " + self.log_level) logging.basicConfig(level=numeric_level) # Initialize configuration self.api = OpenCTIApiClient( self.opencti_url, self.opencti_token, self.log_level ) # Register the connector in OpenCTI self.connector = OpenCTIConnector( self.connect_id, self.connect_name, self.connect_type, self.connect_scope, self.connect_auto, self.connect_only_contextual, ) connector_configuration = self.api.connector.register(self.connector) logging.info("Connector registered with ID:" + self.connect_id) self.connector_id = connector_configuration["id"] self.work_id = None self.applicant_id = connector_configuration["connector_user"]["id"] self.connector_state = connector_configuration["connector_state"] self.config = connector_configuration["config"] # Start ping thread self.ping = PingAlive( self.connector.id, self.api, self.get_state, self.set_state ) self.ping.start()