{"id":15532376,"url":"https://github.com/traut/opentaxii-echo","last_synced_at":"2026-04-22T23:35:31.894Z","repository":{"id":66921352,"uuid":"39716471","full_name":"traut/opentaxii-echo","owner":"traut","description":"Simple echo implementation of OpenTAXII Persistence API","archived":false,"fork":false,"pushed_at":"2015-09-24T12:53:12.000Z","size":209,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-24T04:41:59.682Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/traut.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-26T06:39:26.000Z","updated_at":"2015-07-26T06:43:00.000Z","dependencies_parsed_at":"2023-02-27T16:00:20.619Z","dependency_job_id":null,"html_url":"https://github.com/traut/opentaxii-echo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/traut/opentaxii-echo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/traut%2Fopentaxii-echo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/traut%2Fopentaxii-echo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/traut%2Fopentaxii-echo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/traut%2Fopentaxii-echo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/traut","download_url":"https://codeload.github.com/traut/opentaxii-echo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/traut%2Fopentaxii-echo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32159959,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T17:06:48.269Z","status":"ssl_error","status_checked_at":"2026-04-22T17:06:19.037Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-02T11:30:00.174Z","updated_at":"2026-04-22T23:35:31.871Z","avatar_url":"https://github.com/traut.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"opentaxii-echo\n==============\n\nSimple Echo implementation of OpenTAXII Persistence API.\n--------------------------------------------------------\n\nEcho Persistence API is fully stateless implementation of OpenTAXII Persistence API.\nThe state of a TAXII server is defined by state parameters in a GET query.\nDefault values are defined in a configuration file `opentaxii-config.yml \u003chttps://github.com/traut/opentaxii-echo/blob/master/opentaxii-config.yml\u003e`_.\n\nFor example, Discovery request sent to::\n\n    http://localhost:9000/discovery/?services=poll,inbox,discovery\u0026discovery_advertised=inbox,poll\n\nwill return Discovery response with 2 services advertised: Poll and Inbox.\n\nSupported state parameters:\n\n.. list-table::\n    :header-rows: 1\n\n    * - Parameter\n      - Value\n      - Defaults\n      - Example\n    * - ``services``\n      - comma separated list of active services. Supported values are ``poll``, ``inbox``, ``collection_management``, ``discovery``\n      - ``discovery``, ``collection_management``, ``poll``, ``inbox``\n      - ``?services=collection_management,discovery``\n    * - ``discovery_advertised``\n      - comma separated list of advertised services\n      - ``discovery``, ``collection_management``, ``poll``, ``inbox``\n      - ``?discovery_advertised=poll,inbox,discovery``\n    * - ``*_address``\n      - service address; ``*`` replaced with a service\n      - ``/discovery/``, ``/collection_management/``, ``/poll/``, ``/inbox/``\n      - ``?inbox_address=/service/inbox``\n    * - ``*_description``\n      - service description; ``*`` replaced with a service\n      - \n      - ``?poll_description=TestDescription``\n    * - ``collections``\n      - comma separated list of the collection names\n      - ``alien-encounters``, ``traces-of-evil-ninjas``\n      - ``?collections=collection-a,collection-b``\n    * - ``*_supported_content``\n      - comma separated list of supported content bindings for a collection; ``*`` replaced with a collection name\n      - \n      - ``?collection-a_supported_content=foo,bar``\n    * - ``*_count``\n      - blocks count for a collection; ``*`` replaced with a collection name\n      - 0\n      - ``?collection-a_count=100\u0026bbb_count=1``\n    * - ``use_cosive``\n      - Use `Cosive \u003chttp://cosive.com\u003e`_ free STIX API to fill content blocks with STIX packages.\n      - ``true``\n      - ``?use_cosive=no``\n    * - ``cosive_objects``\n      - Specify what objets should Cosive API put in STIX. See https://generator.cosive.com/ for details.\n      -\n      - ``?cosive_objects=url,domain``\n    * - ``cosive_count``\n      - Specify how many objects put into STIX package. See https://generator.cosive.com/ for details.\n      -\n      - ``?cosive_count=1``\n    * - ``content_blocks``\n      - how many content block to return in Poll response.\n      - 2\n      - ``?conent_blocks=10``\n    * - ``binding``\n      - content binding of the content blocks to return\n      - ``urn:stix.mitre.org:xml:1.1.1``\n      - ``?binding=urn:stix.mitre.org:xml:1.1.1``\n\nUsing `Cabby \u003chttps://pypi.python.org/pypi/cabby\u003e`_  TAXII client, the requests can look like:\n\n* Discovery request:\n\n.. code-block:: bash\n\n    $ taxii-discovery --path \"http://localhost:9000/discovery/?services=poll,inbox,collection_management,discovery\u0026discovery_advertised=inbox,poll\u0026inbox_address=/some/inbox\u0026poll_description=dummy-description\"\n\n* Collection Management request:\n\n.. code-block:: bash\n\n    $ taxii-collections --path \"http://localhost:9000/collections/?services=poll,inbox,collection_management,discovery\u0026discovery_advertised=inbox,poll\u0026collection_management_address=/collections/\u0026inbox_address=/some/inbox\u0026poll_description=WHAT?\u0026collections=aaa,bbb,ccc\u0026aaa_supported_content=foo,bar\u0026aaa_count=123\u0026bbb_count=999\"\n\n* Poll request:\n\n.. code-block:: bash\n\n    $ taxii-poll --path \"http://localhost:9000/poll/?services=poll,inbox,collection_management,discovery\u0026discovery_advertised=inbox,poll\u0026collection_management_address=/collections/\u0026inbox_address=/some/inbox\u0026poll_description=WHAT?\u0026collections=aaa,bbb,ccc\u0026aaa_supported_content=foo,bar\u0026aaa_count=123\u0026bbb_count=999\u0026return_blocks=100\" -c bbb\n\n\nRunning a server\n----------------\nTo run a server, specify a configuration file ``opentaxii-config.yml`` as ``OPENTAXII_CONFIG`` variable:\n\n.. code-block:: bash\n\n    OPENTAXII_CONFIG=./opentaxii-config.yml opentaxii-run-dev\n\nBody of ``opentaxii-config.yml`` can be:\n\n.. code-block:: yaml\n\n    ---\n    persistence_api:\n      class: opentaxii_echo.persistence.EchoPersistenceAPI\n      parameters:\n\nUsing Docker\n---------------\nTo run a docker container, you can use the default configuration and build the container locally:\n\n.. code-block:: bash\n     docker build -t opentaxii-echo .\n\nAnd then run the container using:\n\n.. code-block:: bash\n     docker run -d -p 9000:9000 opentaxii-echo\n\nor, if you want to use your own configuration, you need to create a file called: opentaxii.yml, and pass\nthe directory in which it is stored as a volume (e.g. the ${PWD}/config directory):\n\n.. code-block:: bash\n     docker run -d -p 9000:9000 -v \"${PWD}/config:/input:ro\"  opentaxii-echo\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftraut%2Fopentaxii-echo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftraut%2Fopentaxii-echo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftraut%2Fopentaxii-echo/lists"}