synapse 2.195.1__tar.gz → 2.197.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of synapse might be problematic. Click here for more details.
- {synapse-2.195.1/synapse.egg-info → synapse-2.197.0}/PKG-INFO +1 -1
- {synapse-2.195.1 → synapse-2.197.0}/pyproject.toml +1 -1
- {synapse-2.195.1 → synapse-2.197.0}/synapse/axon.py +72 -5
- {synapse-2.195.1 → synapse-2.197.0}/synapse/common.py +23 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/cortex.py +13 -8
- {synapse-2.195.1 → synapse-2.197.0}/synapse/cryotank.py +2 -2
- {synapse-2.195.1 → synapse-2.197.0}/synapse/daemon.py +1 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/aha.py +159 -4
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/cell.py +133 -8
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/config.py +3 -3
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/jsonstor.py +2 -1
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/modelrev.py +5 -1
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/multislabseqn.py +2 -2
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/nexus.py +4 -1
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/reflect.py +4 -5
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/schemas.py +478 -1
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/snap.py +14 -7
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/storm.py +12 -394
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/aha.py +351 -1
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/graph.py +0 -61
- synapse-2.197.0/synapse/lib/stormlib/index.py +52 -0
- synapse-2.197.0/synapse/lib/stormlib/utils.py +37 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormtypes.py +121 -1
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/task.py +13 -2
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/urlhelp.py +1 -1
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/version.py +2 -2
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/base.py +3 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/doc.py +62 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/infotech.py +55 -16
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/orgs.py +20 -14
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/risk.py +23 -10
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/transport.py +8 -3
- {synapse-2.195.1 → synapse-2.197.0}/synapse/telepath.py +12 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_axon.py +23 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_common.py +28 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_datamodel.py +15 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_aha.py +201 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_boss.py +15 -6
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_cell.py +104 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_jsonstor.py +1 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_modelrev.py +6 -0
- synapse-2.197.0/synapse/tests/test_lib_stormlib_aha.py +383 -0
- synapse-2.197.0/synapse/tests/test_lib_stormlib_index.py +39 -0
- synapse-2.197.0/synapse/tests/test_lib_stormlib_utils.py +14 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormtypes.py +90 -3
- synapse-2.197.0/synapse/tests/test_lib_task.py +75 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_base.py +2 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_doc.py +38 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_infotech.py +28 -1
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_orgs.py +9 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_risk.py +2 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_transport.py +1 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_telepath.py +26 -0
- synapse-2.197.0/synapse/tests/test_tools_aha.py +364 -0
- synapse-2.197.0/synapse/tools/aha/mirror.py +193 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/changelog.py +32 -27
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/genpkg.py +2 -2
- {synapse-2.195.1 → synapse-2.197.0/synapse.egg-info}/PKG-INFO +1 -1
- {synapse-2.195.1 → synapse-2.197.0}/synapse.egg-info/SOURCES.txt +5 -0
- synapse-2.195.1/synapse/tests/test_lib_stormlib_aha.py +0 -195
- synapse-2.195.1/synapse/tests/test_lib_task.py +0 -57
- synapse-2.195.1/synapse/tests/test_tools_aha.py +0 -172
- {synapse-2.195.1 → synapse-2.197.0}/LICENSE +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/README.rst +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/setup.cfg +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/cells.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/cmds/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/cmds/boss.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/cmds/cortex.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/cmds/hive.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/attack-flow/README.md +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA 00.crt +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/certs/cas/The Vertex Project ROOT CA.crt +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA 00.crl +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/certs/crls/The Vertex Project ROOT CA.crl +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/iana.tlds.mpk +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/README.md +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/binary.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/bundle.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/core.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/cyber-observable-core.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/dictionary.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension-definition.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/external-reference.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/granular-marking.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hashes-type.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hex.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/identifier.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/kill-chain-phase.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/language-content.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/marking-definition.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/properties.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/timestamp.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/url-regex.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/artifact.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/autonomous-system.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/directory.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/domain-name.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-addr.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-message.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/file.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv4-addr.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv6-addr.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mac-addr.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mutex.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/network-traffic.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/process.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/software.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/url.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/user-account.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/windows-registry-key.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/x509-certificate.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/attack-pattern.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/campaign.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/course-of-action.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/grouping.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/identity.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/incident.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/indicator.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/infrastructure.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/intrusion-set.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/location.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware-analysis.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/note.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/observed-data.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/opinion.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/report.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/threat-actor.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/tool.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/vulnerability.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/relationship.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/sighting.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/datamodel.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/exc.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/glob.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/agenda.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/ast.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/auth.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/autodoc.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/base.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/boss.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/cache.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/certdir.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/chop.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/cli.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/cmd.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/cmdr.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/const.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/coro.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/crypto/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/crypto/coin.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/crypto/ecc.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/crypto/passwd.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/crypto/rsa.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/crypto/tinfoil.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/datfile.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/drive.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/dyndeps.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/encoding.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/gis.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/grammar.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/hashitem.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/hashset.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/health.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/hive.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/hiveauth.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/httpapi.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/ingest.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/interval.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/layer.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/link.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/lmdbslab.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/module.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/modules.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/msgpack.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/node.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/oauth.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/output.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/parser.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/platforms/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/platforms/common.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/platforms/darwin.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/platforms/freebsd.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/platforms/linux.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/platforms/windows.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/queue.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/ratelimit.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/rstorm.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/scope.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/scrape.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/share.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/slaboffs.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/slabseqn.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/spooled.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/storm.lark +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/storm_format.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormctrl.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormhttp.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/auth.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/backup.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/basex.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/cache.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/cell.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/compression.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/cortex.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/easyperm.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/env.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/ethereum.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/gen.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/gis.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/hashes.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/hex.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/imap.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/infosec.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/ipv6.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/iters.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/json.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/log.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/macro.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/math.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/mime.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/model.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/modelext.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/notifications.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/oauth.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/pack.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/project.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/random.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/scrape.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/smtp.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/spooled.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/stats.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/stix.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/storm.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/tabular.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/vault.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/version.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/xml.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/yaml.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormsvc.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormwhois.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/structlog.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/thishost.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/thisplat.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/threads.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/time.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/trigger.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/types.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/view.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lookup/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lookup/cvss.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lookup/iana.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lookup/iso3166.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lookup/macho.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lookup/pe.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lookup/phonenum.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/lookup/timezones.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/mindmeld.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/auth.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/belief.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/biz.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/crypto.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/dns.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/economic.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/entity.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/files.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/geopol.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/geospace.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/gov/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/gov/cn.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/gov/intl.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/gov/us.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/inet.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/language.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/material.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/math.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/media.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/person.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/planning.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/proj.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/science.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/syn.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/models/telco.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/servers/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/servers/aha.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/servers/axon.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/servers/cell.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/servers/cortex.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/servers/cryotank.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/servers/jsonstor.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/servers/stemcell.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/aha/certs/cas/synapse.crt +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/aha/certs/cas/synapse.key +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.crt +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.key +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/aha/certs/users/root@synapse.crt +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/aha/certs/users/root@synapse.key +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/certdir/cas/ca.crt +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/certdir/cas/ca.key +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/certdir/hosts/localhost.crt +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/certdir/hosts/localhost.key +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/certdir/users/root.crt +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/certdir/users/root.key +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/certdir/users/user.crt +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/certdir/users/user.key +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/changelog/model_2.176.0_16ee721a6b7221344eaf946c3ab4602dda546b1a.yaml.gz +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/changelog/model_2.176.0_2a25c58bbd344716cd7cbc3f4304d8925b0f4ef2.yaml.gz +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/cpedata.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/rstorm/httpresp1.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/rstorm/httpresp2.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/rstorm/httpresp3.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/rstorm/httprespmulti.yaml +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/rstorm/testsvc.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stix_export/basic.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stix_export/custom0.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stix_export/risk0.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stix_import/apt1.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormcov/pragma-nocov.storm +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormcov/spin.storm +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormmod/common +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/dotstorm/storm/commands/dotstorm.bar.storm +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/dotstorm/storm/modules/dotstorm.foo.storm +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/nocontent.yaml +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/notitle.yaml +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/storm/modules/apimod +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/storm/modules/testmod +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/testpkg.yaml +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/test.dat +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/testcore/cell.yaml +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/nopmod.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_cmds_boss.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_cmds_cortex.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_cmds_hive.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_cortex.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_cryotank.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_daemon.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_data.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_exc.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_glob.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_init.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_agenda.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_ast.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_auth.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_autodoc.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_base.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_cache.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_certdir.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_chop.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_cli.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_config.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_const.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_coro.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_crypto_passwd.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_datfile.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_dyndeps.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_encoding.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_gis.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_grammar.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_hashitem.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_hashset.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_health.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_hive.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_httpapi.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_interval.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_layer.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_link.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_lmdbslab.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_module.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_msgpack.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_nexus.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_node.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_output.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_queue.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_ratelimit.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_reflect.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_rstorm.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_scope.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_scrape.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_slaboffs.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_slabseqn.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_snap.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_spooled.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_storm.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_storm_format.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormctrl.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormhttp.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_auth.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_backup.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_cache.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_cell.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_cortex.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_env.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_macro.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_model.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_spooled.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_stats.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_stix.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_storm.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_tabular.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormsvc.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormwhois.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_structlog.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_thishost.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_time.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_trigger.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_types.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_urlhelp.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_version.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_view.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lookup_iso3166.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lookup_phonenum.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_mindmeld.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_auth.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_belief.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_biz.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_crypto.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_dns.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_economic.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_files.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_geopol.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_geospace.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_gov_cn.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_gov_intl.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_gov_us.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_inet.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_language.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_material.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_math.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_media.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_person.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_planning.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_proj.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_science.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_syn.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_telco.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_servers_axon.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_servers_cortex.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_servers_cryotank.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_servers_stemcell.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_servers_univ.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_apikey.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_autodoc.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_axon2axon.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_backup.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_cellauth.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_changelog.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_cryo_cat.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_cryo_list.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_csvtool.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_docker_validate.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_easycert.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_feed.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_genpkg.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_guid.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_healthcheck.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_hiveload.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_hivesave.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_json2mpk.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_livebackup.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_modrole.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_moduser.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_promote.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_pullfile.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_pushfile.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_reload.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_rstorm.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_snapshot.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_storm.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_utils.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_utils_getrefs.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_utils_stormcov.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/utils.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/aha/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/aha/clone.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/aha/easycert.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/aha/enroll.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/aha/list.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/aha/provision/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/aha/provision/service.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/aha/provision/user.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/apikey.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/autodoc.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/axon2axon.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/backup.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/cellauth.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/cmdr.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/cryo/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/cryo/cat.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/cryo/list.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/csvtool.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/docker/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/docker/validate.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/easycert.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/feed.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/guid.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/healthcheck.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/hive/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/hive/load.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/hive/save.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/json2mpk.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/livebackup.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/modrole.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/moduser.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/promote.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/pullfile.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/pushfile.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/reload.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/rstorm.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/snapshot.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/storm.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/utils/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/utils/getrefs.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/utils/stormcov/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/utils/stormcov/plugin.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cashaddress/LICENSE +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cashaddress/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cashaddress/base58.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cashaddress/convert.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cashaddress/crypto.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/LICENSE +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/email/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/email/_parseaddr.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/email/utils.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/http/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/http/cookies.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/ipaddress.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/test/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/test/support/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/test/test_email/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/test/test_email/test_email.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/test/test_email/test_utils.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/test/test_http_cookies.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/test/test_ipaddress.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/utils.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/LICENSE +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/constants.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse.egg-info/dependency_links.txt +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse.egg-info/requires.txt +0 -0
- {synapse-2.195.1 → synapse-2.197.0}/synapse.egg-info/top_level.txt +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import csv
|
|
2
2
|
import json
|
|
3
|
+
import struct
|
|
3
4
|
import asyncio
|
|
4
5
|
import hashlib
|
|
5
6
|
import logging
|
|
@@ -759,6 +760,26 @@ class AxonApi(s_cell.CellApi, s_share.Share): # type: ignore
|
|
|
759
760
|
async for item in self.cell.jsonlines(sha256, errors=errors):
|
|
760
761
|
yield item
|
|
761
762
|
|
|
763
|
+
async def unpack(self, sha256, fmt, offs=0):
|
|
764
|
+
'''
|
|
765
|
+
Unpack bytes from a file in the Axon using struct.
|
|
766
|
+
|
|
767
|
+
Args:
|
|
768
|
+
sha256 (bytes): The sha256 hash of the file in bytes.
|
|
769
|
+
fmt (str): The struct format string.
|
|
770
|
+
offs (int): The offset to start reading from.
|
|
771
|
+
|
|
772
|
+
Returns:
|
|
773
|
+
tuple: The unpacked values.
|
|
774
|
+
|
|
775
|
+
Raises:
|
|
776
|
+
synapse.exc.NoSuchFile: If the file does not exist.
|
|
777
|
+
synapse.exc.BadArg: If the struct format is invalid or reads too much data.
|
|
778
|
+
synapse.exc.BadDataValu: If the file does not contain the expected number of bytes.
|
|
779
|
+
synapse.exc.FeatureNotSupported: Feature is not supported.
|
|
780
|
+
'''
|
|
781
|
+
await self._reqUserAllowed(('axon', 'get'))
|
|
782
|
+
return await self.cell.unpack(sha256, fmt, offs=offs)
|
|
762
783
|
|
|
763
784
|
class Axon(s_cell.Cell):
|
|
764
785
|
|
|
@@ -816,6 +837,15 @@ class Axon(s_cell.Cell):
|
|
|
816
837
|
# modularize blob storage
|
|
817
838
|
await self._initBlobStor()
|
|
818
839
|
|
|
840
|
+
# Set the byterange flag as an integer AFTER we've called
|
|
841
|
+
# _initBlobStor which may set it to true. That will allow
|
|
842
|
+
# downstream implementations to continue working as expected
|
|
843
|
+
# out of the gate.
|
|
844
|
+
self.features.update({
|
|
845
|
+
'byterange': int(self.byterange),
|
|
846
|
+
'unpack': 1,
|
|
847
|
+
})
|
|
848
|
+
|
|
819
849
|
async def initServiceRuntime(self):
|
|
820
850
|
|
|
821
851
|
# share ourself via the cell dmon as "axon"
|
|
@@ -825,11 +855,6 @@ class Axon(s_cell.Cell):
|
|
|
825
855
|
self._initAxonHttpApi()
|
|
826
856
|
self.addHealthFunc(self._axonHealth)
|
|
827
857
|
|
|
828
|
-
async def getCellInfo(self):
|
|
829
|
-
info = await s_cell.Cell.getCellInfo(self)
|
|
830
|
-
info['features']['byterange'] = self.byterange
|
|
831
|
-
return info
|
|
832
|
-
|
|
833
858
|
@contextlib.asynccontextmanager
|
|
834
859
|
async def holdHashLock(self, hashbyts):
|
|
835
860
|
'''
|
|
@@ -1487,6 +1512,48 @@ class Axon(s_cell.Cell):
|
|
|
1487
1512
|
raise s_exc.BadJsonText(mesg=f'Bad json line encountered while processing {sha256}, ({e})',
|
|
1488
1513
|
sha256=sha256) from None
|
|
1489
1514
|
|
|
1515
|
+
async def unpack(self, sha256, fmt, offs=0):
|
|
1516
|
+
'''
|
|
1517
|
+
Unpack bytes from a file in the Axon using struct.
|
|
1518
|
+
|
|
1519
|
+
Args:
|
|
1520
|
+
sha256 (bytes): The sha256 hash of the file in bytes.
|
|
1521
|
+
fmt (str): The struct format string.
|
|
1522
|
+
offs (int): The offset to start reading from.
|
|
1523
|
+
|
|
1524
|
+
Returns:
|
|
1525
|
+
tuple: The unpacked values.
|
|
1526
|
+
|
|
1527
|
+
Raises:
|
|
1528
|
+
synapse.exc.NoSuchFile: If the file does not exist.
|
|
1529
|
+
synapse.exc.BadArg: If the struct format is invalid.
|
|
1530
|
+
synapse.exc.BadDataValu: If the expected number of bytes is not received.
|
|
1531
|
+
synapse.exc.FeatureNotSupported: Feature is not supported.
|
|
1532
|
+
'''
|
|
1533
|
+
|
|
1534
|
+
if not isinstance(fmt, str):
|
|
1535
|
+
raise s_exc.BadArg(mesg='Format string must be a string', fmt=fmt)
|
|
1536
|
+
|
|
1537
|
+
try:
|
|
1538
|
+
size = struct.calcsize(fmt)
|
|
1539
|
+
|
|
1540
|
+
if size > s_const.mebibyte:
|
|
1541
|
+
raise s_exc.BadArg(mesg=f'Struct format would read too much data: {size} bytes', size=size)
|
|
1542
|
+
|
|
1543
|
+
byts = b''
|
|
1544
|
+
async for chunk in self.get(sha256, offs=offs, size=size):
|
|
1545
|
+
byts += chunk
|
|
1546
|
+
|
|
1547
|
+
if len(byts) != size:
|
|
1548
|
+
mesg = f'Expected {size} bytes but got {len(byts)} bytes'
|
|
1549
|
+
raise s_exc.BadDataValu(mesg=mesg, expected=size, received=len(byts))
|
|
1550
|
+
|
|
1551
|
+
return struct.unpack(fmt, byts)
|
|
1552
|
+
|
|
1553
|
+
except struct.error as e:
|
|
1554
|
+
mesg = f'Failed to unpack bytes with format {fmt}: {str(e)}'
|
|
1555
|
+
raise s_exc.BadArg(mesg=mesg) from None
|
|
1556
|
+
|
|
1490
1557
|
async def postfiles(self, fields, url, params=None, headers=None, method='POST',
|
|
1491
1558
|
ssl=True, timeout=None, proxy=True, ssl_opts=None):
|
|
1492
1559
|
'''
|
|
@@ -1383,6 +1383,29 @@ def _timeout(delay):
|
|
|
1383
1383
|
"""
|
|
1384
1384
|
loop = asyncio.get_running_loop()
|
|
1385
1385
|
return _Timeout(loop.time() + delay if delay is not None else None)
|
|
1386
|
+
# End - Vendored Code from Python 3.12+
|
|
1387
|
+
|
|
1388
|
+
async def waitretn(futu, timeout):
|
|
1389
|
+
try:
|
|
1390
|
+
valu = await wait_for(futu, timeout)
|
|
1391
|
+
return (True, valu)
|
|
1392
|
+
except Exception as e:
|
|
1393
|
+
return (False, excinfo(e))
|
|
1394
|
+
|
|
1395
|
+
async def waitgenr(genr, timeout):
|
|
1396
|
+
|
|
1397
|
+
async with contextlib.aclosing(genr.__aiter__()) as genr:
|
|
1398
|
+
|
|
1399
|
+
while True:
|
|
1400
|
+
retn = await waitretn(genr.__anext__(), timeout)
|
|
1401
|
+
|
|
1402
|
+
if not retn[0] and retn[1]['err'] == 'StopAsyncIteration':
|
|
1403
|
+
return
|
|
1404
|
+
|
|
1405
|
+
yield retn
|
|
1406
|
+
|
|
1407
|
+
if not retn[0]:
|
|
1408
|
+
return
|
|
1386
1409
|
|
|
1387
1410
|
def format(text, **kwargs):
|
|
1388
1411
|
'''
|
|
@@ -77,12 +77,14 @@ import synapse.lib.stormlib.yaml as s_stormlib_yaml # NOQA
|
|
|
77
77
|
import synapse.lib.stormlib.basex as s_stormlib_basex # NOQA
|
|
78
78
|
import synapse.lib.stormlib.cache as s_stormlib_cache # NOQA
|
|
79
79
|
import synapse.lib.stormlib.graph as s_stormlib_graph # NOQA
|
|
80
|
+
import synapse.lib.stormlib.index as s_stormlib_index # NOQA
|
|
80
81
|
import synapse.lib.stormlib.iters as s_stormlib_iters # NOQA
|
|
81
82
|
import synapse.lib.stormlib.macro as s_stormlib_macro
|
|
82
83
|
import synapse.lib.stormlib.model as s_stormlib_model
|
|
83
84
|
import synapse.lib.stormlib.oauth as s_stormlib_oauth # NOQA
|
|
84
85
|
import synapse.lib.stormlib.stats as s_stormlib_stats # NOQA
|
|
85
86
|
import synapse.lib.stormlib.storm as s_stormlib_storm # NOQA
|
|
87
|
+
import synapse.lib.stormlib.utils as s_stormlib_utils # NOQA
|
|
86
88
|
import synapse.lib.stormlib.vault as s_stormlib_vault # NOQA
|
|
87
89
|
import synapse.lib.stormlib.backup as s_stormlib_backup # NOQA
|
|
88
90
|
import synapse.lib.stormlib.cortex as s_stormlib_cortex # NOQA
|
|
@@ -1495,7 +1497,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
|
|
|
1495
1497
|
'desc': 'Controls the ability to remove a file from the Axon.'},
|
|
1496
1498
|
))
|
|
1497
1499
|
for pdef in self._cortex_permdefs:
|
|
1498
|
-
|
|
1500
|
+
s_schemas.reqValidPermDef(pdef)
|
|
1499
1501
|
|
|
1500
1502
|
def _getPermDefs(self):
|
|
1501
1503
|
|
|
@@ -1769,7 +1771,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
|
|
|
1769
1771
|
gdef['updated'] = now
|
|
1770
1772
|
gdef['permissions']['users'][user.iden] = s_cell.PERM_ADMIN
|
|
1771
1773
|
|
|
1772
|
-
|
|
1774
|
+
s_schemas.reqValidGdef(gdef)
|
|
1773
1775
|
|
|
1774
1776
|
await self.reqValidStormGraph(gdef)
|
|
1775
1777
|
|
|
@@ -1777,7 +1779,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
|
|
|
1777
1779
|
|
|
1778
1780
|
@s_nexus.Pusher.onPush('storm:graph:add')
|
|
1779
1781
|
async def _addStormGraph(self, gdef):
|
|
1780
|
-
|
|
1782
|
+
s_schemas.reqValidGdef(gdef)
|
|
1781
1783
|
|
|
1782
1784
|
await self.reqValidStormGraph(gdef)
|
|
1783
1785
|
|
|
@@ -1856,7 +1858,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
|
|
|
1856
1858
|
gdef = copy.deepcopy(gdef)
|
|
1857
1859
|
gdef.update(info)
|
|
1858
1860
|
|
|
1859
|
-
|
|
1861
|
+
s_schemas.reqValidGdef(gdef)
|
|
1860
1862
|
|
|
1861
1863
|
await self.reqValidStormGraph(gdef)
|
|
1862
1864
|
|
|
@@ -1878,7 +1880,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
|
|
|
1878
1880
|
|
|
1879
1881
|
await self._setEasyPerm(gdef, scope, iden, level)
|
|
1880
1882
|
|
|
1881
|
-
|
|
1883
|
+
s_schemas.reqValidGdef(gdef)
|
|
1882
1884
|
|
|
1883
1885
|
self.graphs.set(gden, gdef)
|
|
1884
1886
|
|
|
@@ -2875,7 +2877,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
|
|
|
2875
2877
|
await self.reqValidStormGraph(gdef)
|
|
2876
2878
|
|
|
2877
2879
|
# Validate package def (post normalization)
|
|
2878
|
-
|
|
2880
|
+
s_schemas.reqValidPkgdef(pkgdef)
|
|
2879
2881
|
|
|
2880
2882
|
for configvar in pkgdef.get('configvars', ()):
|
|
2881
2883
|
self._reqStormPkgVarType(pkgname, configvar.get('type'))
|
|
@@ -4420,6 +4422,9 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
|
|
|
4420
4422
|
for cdef in s_stormlib_vault.stormcmds:
|
|
4421
4423
|
await self._trySetStormCmd(cdef.get('name'), cdef)
|
|
4422
4424
|
|
|
4425
|
+
for cdef in s_stormlib_index.stormcmds:
|
|
4426
|
+
await self._trySetStormCmd(cdef.get('name'), cdef)
|
|
4427
|
+
|
|
4423
4428
|
async def _initPureStormCmds(self):
|
|
4424
4429
|
oldcmds = []
|
|
4425
4430
|
for name, cdef in self.cmddefs.items():
|
|
@@ -4450,7 +4455,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
|
|
|
4450
4455
|
for path, ctor in s_stormtypes.registry.iterLibs():
|
|
4451
4456
|
# Ensure each ctor's permdefs are valid
|
|
4452
4457
|
for pdef in ctor._storm_lib_perms:
|
|
4453
|
-
|
|
4458
|
+
s_schemas.reqValidPermDef(pdef)
|
|
4454
4459
|
# Skip libbase which is registered as a default ctor in the storm Runtime
|
|
4455
4460
|
if path:
|
|
4456
4461
|
self.addStormLib(path, ctor)
|
|
@@ -5671,7 +5676,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
|
|
|
5671
5676
|
async def runStormDmon(self, iden, ddef):
|
|
5672
5677
|
|
|
5673
5678
|
# validate ddef before firing task
|
|
5674
|
-
|
|
5679
|
+
s_schemas.reqValidDdef(ddef)
|
|
5675
5680
|
|
|
5676
5681
|
dmon = self.stormdmons.getDmon(iden)
|
|
5677
5682
|
if dmon is not None:
|
|
@@ -8,7 +8,7 @@ import synapse.common as s_common
|
|
|
8
8
|
|
|
9
9
|
import synapse.lib.base as s_base
|
|
10
10
|
import synapse.lib.cell as s_cell
|
|
11
|
-
import synapse.lib.
|
|
11
|
+
import synapse.lib.schemas as s_schemas
|
|
12
12
|
import synapse.lib.lmdbslab as s_lmdbslab
|
|
13
13
|
import synapse.lib.slabseqn as s_slabseqn
|
|
14
14
|
import synapse.lib.slaboffs as s_slaboffs
|
|
@@ -314,7 +314,7 @@ class CryoCell(s_cell.Cell):
|
|
|
314
314
|
))
|
|
315
315
|
|
|
316
316
|
for pdef in self._cryo_permdefs:
|
|
317
|
-
|
|
317
|
+
s_schemas.reqValidPermDef(pdef)
|
|
318
318
|
|
|
319
319
|
def _getPermDefs(self):
|
|
320
320
|
permdefs = list(s_cell.Cell._getPermDefs(self))
|
|
@@ -462,6 +462,7 @@ class Daemon(s_base.Base):
|
|
|
462
462
|
link.set('sess', sess)
|
|
463
463
|
|
|
464
464
|
if isinstance(item, s_telepath.Aware):
|
|
465
|
+
reply[1]['features'] = await item.getTeleFeats()
|
|
465
466
|
item = await s_coro.ornot(item.getTeleApi, link, mesg, path)
|
|
466
467
|
if isinstance(item, s_base.Base):
|
|
467
468
|
link.onfini(item)
|
|
@@ -132,10 +132,18 @@ class AhaApi(s_cell.CellApi):
|
|
|
132
132
|
|
|
133
133
|
async def getAhaUrls(self, user='root'):
|
|
134
134
|
ahaurls = await self.cell.getAhaUrls(user=user)
|
|
135
|
-
if ahaurls is None:
|
|
136
|
-
return ()
|
|
137
135
|
return ahaurls
|
|
138
136
|
|
|
137
|
+
@s_cell.adminapi()
|
|
138
|
+
async def callAhaPeerApi(self, iden, todo, timeout=None, skiprun=None):
|
|
139
|
+
async for item in self.cell.callAhaPeerApi(iden, todo, timeout=timeout, skiprun=skiprun):
|
|
140
|
+
yield item
|
|
141
|
+
|
|
142
|
+
@s_cell.adminapi()
|
|
143
|
+
async def callAhaPeerGenr(self, iden, todo, timeout=None, skiprun=None):
|
|
144
|
+
async for item in self.cell.callAhaPeerGenr(iden, todo, timeout=timeout, skiprun=skiprun):
|
|
145
|
+
yield item
|
|
146
|
+
|
|
139
147
|
async def getAhaSvc(self, name, filters=None):
|
|
140
148
|
'''
|
|
141
149
|
Return an AHA service description dictionary for a service name.
|
|
@@ -366,7 +374,6 @@ class AhaApi(s_cell.CellApi):
|
|
|
366
374
|
'''
|
|
367
375
|
return await self.cell.clearAhaClones()
|
|
368
376
|
|
|
369
|
-
|
|
370
377
|
class ProvDmon(s_daemon.Daemon):
|
|
371
378
|
|
|
372
379
|
async def __anit__(self, aha):
|
|
@@ -571,7 +578,8 @@ class AhaCell(s_cell.Cell):
|
|
|
571
578
|
|
|
572
579
|
async def initServiceStorage(self):
|
|
573
580
|
|
|
574
|
-
|
|
581
|
+
self.features['callpeers'] = 1
|
|
582
|
+
|
|
575
583
|
dirn = s_common.gendir(self.dirn, 'slabs', 'jsonstor')
|
|
576
584
|
|
|
577
585
|
slab = await s_lmdbslab.Slab.anit(dirn)
|
|
@@ -682,8 +690,126 @@ class AhaCell(s_cell.Cell):
|
|
|
682
690
|
self.addHttpApi('/api/v1/aha/services', AhaServicesV1, {'cell': self})
|
|
683
691
|
self.addHttpApi('/api/v1/aha/provision/service', AhaProvisionServiceV1, {'cell': self})
|
|
684
692
|
|
|
693
|
+
async def callAhaSvcApi(self, name, todo, timeout=None):
|
|
694
|
+
name = self._getAhaName(name)
|
|
695
|
+
svcdef = await self._getAhaSvc(name)
|
|
696
|
+
return self._callAhaSvcApi(svcdef, todo, timeout=timeout)
|
|
697
|
+
|
|
698
|
+
async def _callAhaSvcApi(self, svcdef, todo, timeout=None):
|
|
699
|
+
try:
|
|
700
|
+
proxy = await self.getAhaSvcProxy(svcdef, timeout=timeout)
|
|
701
|
+
meth = getattr(proxy, todo[0])
|
|
702
|
+
return await s_common.waitretn(meth(*todo[1], **todo[2]), timeout=timeout)
|
|
703
|
+
except Exception as e:
|
|
704
|
+
# in case proxy construction fails
|
|
705
|
+
return (False, s_common.excinfo(e))
|
|
706
|
+
|
|
707
|
+
async def _callAhaSvcGenr(self, svcdef, todo, timeout=None):
|
|
708
|
+
try:
|
|
709
|
+
proxy = await self.getAhaSvcProxy(svcdef, timeout=timeout)
|
|
710
|
+
meth = getattr(proxy, todo[0])
|
|
711
|
+
async for item in s_common.waitgenr(meth(*todo[1], **todo[2]), timeout=timeout):
|
|
712
|
+
yield item
|
|
713
|
+
except Exception as e:
|
|
714
|
+
# in case proxy construction fails
|
|
715
|
+
yield (False, s_common.excinfo(e))
|
|
716
|
+
|
|
717
|
+
async def getAhaSvcsByIden(self, iden, online=True, skiprun=None):
|
|
718
|
+
|
|
719
|
+
runs = set()
|
|
720
|
+
async for svcdef in self.getAhaSvcs():
|
|
721
|
+
await asyncio.sleep(0)
|
|
722
|
+
|
|
723
|
+
# TODO services by iden indexes (SYN-8467)
|
|
724
|
+
if svcdef['svcinfo'].get('iden') != iden:
|
|
725
|
+
continue
|
|
726
|
+
|
|
727
|
+
if online and svcdef['svcinfo'].get('online') is None:
|
|
728
|
+
continue
|
|
729
|
+
|
|
730
|
+
svcrun = svcdef['svcinfo'].get('run')
|
|
731
|
+
if svcrun in runs:
|
|
732
|
+
continue
|
|
733
|
+
|
|
734
|
+
if skiprun == svcrun:
|
|
735
|
+
continue
|
|
736
|
+
|
|
737
|
+
runs.add(svcrun)
|
|
738
|
+
yield svcdef
|
|
739
|
+
|
|
740
|
+
def getAhaSvcUrl(self, svcdef, user='root'):
|
|
741
|
+
svcfull = svcdef.get('name')
|
|
742
|
+
svcnetw = svcdef.get('svcnetw')
|
|
743
|
+
host = svcdef['svcinfo']['urlinfo']['host']
|
|
744
|
+
port = svcdef['svcinfo']['urlinfo']['port']
|
|
745
|
+
return f'ssl://{host}:{port}?hostname={svcfull}&certname={user}@{svcnetw}'
|
|
746
|
+
|
|
747
|
+
async def callAhaPeerApi(self, iden, todo, timeout=None, skiprun=None):
|
|
748
|
+
|
|
749
|
+
if not self.isactive:
|
|
750
|
+
proxy = await self.nexsroot.client.proxy(timeout=timeout)
|
|
751
|
+
async for item in proxy.callAhaPeerApi(iden, todo, timeout=timeout, skiprun=skiprun):
|
|
752
|
+
yield item
|
|
753
|
+
|
|
754
|
+
queue = asyncio.Queue()
|
|
755
|
+
async with await s_base.Base.anit() as base:
|
|
756
|
+
|
|
757
|
+
async def call(svcdef):
|
|
758
|
+
svcfull = svcdef.get('name')
|
|
759
|
+
await queue.put((svcfull, await self._callAhaSvcApi(svcdef, todo, timeout=timeout)))
|
|
760
|
+
|
|
761
|
+
count = 0
|
|
762
|
+
async for svcdef in self.getAhaSvcsByIden(iden, skiprun=skiprun):
|
|
763
|
+
count += 1
|
|
764
|
+
base.schedCoro(call(svcdef))
|
|
765
|
+
|
|
766
|
+
for i in range(count):
|
|
767
|
+
yield await queue.get()
|
|
768
|
+
|
|
769
|
+
async def callAhaPeerGenr(self, iden, todo, timeout=None, skiprun=None):
|
|
770
|
+
|
|
771
|
+
if not self.isactive:
|
|
772
|
+
proxy = await self.nexsroot.client.proxy(timeout=timeout)
|
|
773
|
+
async for item in proxy.callAhaPeerGenr(iden, todo, timeout=timeout, skiprun=skiprun):
|
|
774
|
+
yield item
|
|
775
|
+
|
|
776
|
+
queue = asyncio.Queue()
|
|
777
|
+
async with await s_base.Base.anit() as base:
|
|
778
|
+
|
|
779
|
+
async def call(svcdef):
|
|
780
|
+
svcfull = svcdef.get('name')
|
|
781
|
+
try:
|
|
782
|
+
async for item in self._callAhaSvcGenr(svcdef, todo, timeout=timeout):
|
|
783
|
+
await queue.put((svcfull, item))
|
|
784
|
+
finally:
|
|
785
|
+
await queue.put(None)
|
|
786
|
+
|
|
787
|
+
count = 0
|
|
788
|
+
async for svcdef in self.getAhaSvcsByIden(iden, skiprun=skiprun):
|
|
789
|
+
count += 1
|
|
790
|
+
base.schedCoro(call(svcdef))
|
|
791
|
+
|
|
792
|
+
while count > 0:
|
|
793
|
+
|
|
794
|
+
item = await queue.get()
|
|
795
|
+
if item is None:
|
|
796
|
+
count -= 1
|
|
797
|
+
continue
|
|
798
|
+
|
|
799
|
+
yield item
|
|
800
|
+
|
|
801
|
+
async def _finiSvcClients(self):
|
|
802
|
+
for client in list(self.clients.values()):
|
|
803
|
+
await client.fini()
|
|
804
|
+
|
|
805
|
+
async def initServicePassive(self):
|
|
806
|
+
await self._finiSvcClients()
|
|
807
|
+
|
|
685
808
|
async def initServiceRuntime(self):
|
|
686
809
|
|
|
810
|
+
self.clients = {}
|
|
811
|
+
self.onfini(self._finiSvcClients)
|
|
812
|
+
|
|
687
813
|
self.addActiveCoro(self._clearInactiveSessions)
|
|
688
814
|
|
|
689
815
|
if self.isactive:
|
|
@@ -897,6 +1023,31 @@ class AhaCell(s_cell.Cell):
|
|
|
897
1023
|
await self.fire('aha:svcadd', svcinfo=svcinfo)
|
|
898
1024
|
await self.fire(f'aha:svcadd:{svcfull}', svcinfo=svcinfo)
|
|
899
1025
|
|
|
1026
|
+
async def getAhaSvcProxy(self, svcdef, timeout=None):
|
|
1027
|
+
|
|
1028
|
+
client = await self.getAhaSvcClient(svcdef)
|
|
1029
|
+
if client is None:
|
|
1030
|
+
return None
|
|
1031
|
+
|
|
1032
|
+
return await client.proxy(timeout=timeout)
|
|
1033
|
+
|
|
1034
|
+
async def getAhaSvcClient(self, svcdef):
|
|
1035
|
+
|
|
1036
|
+
svcfull = svcdef.get('name')
|
|
1037
|
+
|
|
1038
|
+
client = self.clients.get(svcfull)
|
|
1039
|
+
if client is not None:
|
|
1040
|
+
return client
|
|
1041
|
+
|
|
1042
|
+
svcurl = self.getAhaSvcUrl(svcdef)
|
|
1043
|
+
|
|
1044
|
+
client = self.clients[svcfull] = await s_telepath.ClientV2.anit(svcurl)
|
|
1045
|
+
async def fini():
|
|
1046
|
+
self.clients.pop(svcfull, None)
|
|
1047
|
+
|
|
1048
|
+
client.onfini(fini)
|
|
1049
|
+
return client
|
|
1050
|
+
|
|
900
1051
|
def _getAhaName(self, name):
|
|
901
1052
|
# the modern version of names is absolute or ...
|
|
902
1053
|
if name.endswith('...'):
|
|
@@ -1066,6 +1217,10 @@ class AhaCell(s_cell.Cell):
|
|
|
1066
1217
|
logger.info(f'Set [{svcfull}] offline.',
|
|
1067
1218
|
extra=await self.getLogExtra(name=svcname, netw=svcnetw))
|
|
1068
1219
|
|
|
1220
|
+
client = self.clients.pop(svcfull, None)
|
|
1221
|
+
if client is not None:
|
|
1222
|
+
await client.fini()
|
|
1223
|
+
|
|
1069
1224
|
async def getAhaSvc(self, name, filters=None):
|
|
1070
1225
|
|
|
1071
1226
|
name = self._getAhaName(name)
|
|
@@ -83,6 +83,8 @@ permnames = {
|
|
|
83
83
|
PERM_ADMIN: 'admin',
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
+
feat_aha_callpeers_v1 = ('callpeers', 1)
|
|
87
|
+
|
|
86
88
|
diskspace = "Insufficient free space on disk."
|
|
87
89
|
|
|
88
90
|
def adminapi(log=False):
|
|
@@ -435,6 +437,19 @@ class CellApi(s_base.Base):
|
|
|
435
437
|
async def kill(self, iden):
|
|
436
438
|
return await self.cell.kill(self.user, iden)
|
|
437
439
|
|
|
440
|
+
@adminapi()
|
|
441
|
+
async def getTasks(self, peers=True, timeout=None):
|
|
442
|
+
async for task in self.cell.getTasks(peers=peers, timeout=timeout):
|
|
443
|
+
yield task
|
|
444
|
+
|
|
445
|
+
@adminapi()
|
|
446
|
+
async def getTask(self, iden, peers=True, timeout=None):
|
|
447
|
+
return await self.cell.getTask(iden, peers=peers, timeout=timeout)
|
|
448
|
+
|
|
449
|
+
@adminapi()
|
|
450
|
+
async def killTask(self, iden, peers=True, timeout=None):
|
|
451
|
+
return await self.cell.killTask(iden, peers=peers, timeout=timeout)
|
|
452
|
+
|
|
438
453
|
@adminapi(log=True)
|
|
439
454
|
async def behold(self):
|
|
440
455
|
'''
|
|
@@ -765,8 +780,8 @@ class CellApi(s_base.Base):
|
|
|
765
780
|
return await self.cell.saveHiveTree(path=path)
|
|
766
781
|
|
|
767
782
|
@adminapi()
|
|
768
|
-
async def getNexusChanges(self, offs, tellready=False):
|
|
769
|
-
async for item in self.cell.getNexusChanges(offs, tellready=tellready):
|
|
783
|
+
async def getNexusChanges(self, offs, tellready=False, wait=True):
|
|
784
|
+
async for item in self.cell.getNexusChanges(offs, tellready=tellready, wait=wait):
|
|
770
785
|
yield item
|
|
771
786
|
|
|
772
787
|
@adminapi()
|
|
@@ -1165,6 +1180,11 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
|
|
|
1165
1180
|
self.netready = asyncio.Event()
|
|
1166
1181
|
|
|
1167
1182
|
self.conf = self._initCellConf(conf)
|
|
1183
|
+
self.features = {
|
|
1184
|
+
'tellready': 1,
|
|
1185
|
+
'dynmirror': 1,
|
|
1186
|
+
'tasks': 1,
|
|
1187
|
+
}
|
|
1168
1188
|
|
|
1169
1189
|
self.minfree = self.conf.get('limit:disk:free')
|
|
1170
1190
|
if self.minfree is not None:
|
|
@@ -2382,8 +2402,8 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
|
|
|
2382
2402
|
async def initServicePassive(self): # pragma: no cover
|
|
2383
2403
|
pass
|
|
2384
2404
|
|
|
2385
|
-
async def getNexusChanges(self, offs, tellready=False):
|
|
2386
|
-
async for item in self.nexsroot.iter(offs, tellready=tellready):
|
|
2405
|
+
async def getNexusChanges(self, offs, tellready=False, wait=True):
|
|
2406
|
+
async for item in self.nexsroot.iter(offs, tellready=tellready, wait=wait):
|
|
2387
2407
|
yield item
|
|
2388
2408
|
|
|
2389
2409
|
def _reqBackDirn(self, name):
|
|
@@ -4414,6 +4434,111 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
|
|
|
4414
4434
|
|
|
4415
4435
|
return retn
|
|
4416
4436
|
|
|
4437
|
+
async def getAhaProxy(self, timeout=None, feats=None):
|
|
4438
|
+
|
|
4439
|
+
if self.ahaclient is None:
|
|
4440
|
+
return
|
|
4441
|
+
|
|
4442
|
+
proxy = await self.ahaclient.proxy(timeout=timeout)
|
|
4443
|
+
if proxy is None:
|
|
4444
|
+
logger.warning('AHA client connection failed.')
|
|
4445
|
+
return
|
|
4446
|
+
|
|
4447
|
+
if feats is not None:
|
|
4448
|
+
for name, vers in feats:
|
|
4449
|
+
if not proxy._hasTeleFeat(name, vers):
|
|
4450
|
+
logger.warning(f'AHA server does not support feature: {name} >= {vers}')
|
|
4451
|
+
return None
|
|
4452
|
+
|
|
4453
|
+
return proxy
|
|
4454
|
+
|
|
4455
|
+
async def callPeerApi(self, todo, timeout=None):
|
|
4456
|
+
'''
|
|
4457
|
+
Yield responses from our peers via the AHA gather call API.
|
|
4458
|
+
'''
|
|
4459
|
+
proxy = await self.getAhaProxy(timeout=timeout, feats=(feat_aha_callpeers_v1,))
|
|
4460
|
+
if proxy is None:
|
|
4461
|
+
return
|
|
4462
|
+
|
|
4463
|
+
async for item in proxy.callAhaPeerApi(self.iden, todo, timeout=timeout, skiprun=self.runid):
|
|
4464
|
+
yield item
|
|
4465
|
+
|
|
4466
|
+
async def callPeerGenr(self, todo, timeout=None):
|
|
4467
|
+
'''
|
|
4468
|
+
Yield responses from invoking a generator via the AHA gather API.
|
|
4469
|
+
'''
|
|
4470
|
+
proxy = await self.getAhaProxy(timeout=timeout, feats=(feat_aha_callpeers_v1,))
|
|
4471
|
+
if proxy is None:
|
|
4472
|
+
return
|
|
4473
|
+
|
|
4474
|
+
async for item in proxy.callAhaPeerGenr(self.iden, todo, timeout=timeout, skiprun=self.runid):
|
|
4475
|
+
yield item
|
|
4476
|
+
|
|
4477
|
+
async def getTasks(self, peers=True, timeout=None):
|
|
4478
|
+
|
|
4479
|
+
for task in self.boss.ps():
|
|
4480
|
+
|
|
4481
|
+
item = task.packv2()
|
|
4482
|
+
item['service'] = self.ahasvcname
|
|
4483
|
+
|
|
4484
|
+
yield item
|
|
4485
|
+
|
|
4486
|
+
if not peers:
|
|
4487
|
+
return
|
|
4488
|
+
|
|
4489
|
+
todo = s_common.todo('getTasks', peers=False)
|
|
4490
|
+
# we can ignore the yielded aha names because we embed it in the task
|
|
4491
|
+
async for (ahasvc, (ok, retn)) in self.callPeerGenr(todo, timeout=timeout):
|
|
4492
|
+
|
|
4493
|
+
if not ok: # pragma: no cover
|
|
4494
|
+
logger.warning(f'getTasks() on {ahasvc} failed: {retn}')
|
|
4495
|
+
continue
|
|
4496
|
+
|
|
4497
|
+
yield retn
|
|
4498
|
+
|
|
4499
|
+
async def getTask(self, iden, peers=True, timeout=None):
|
|
4500
|
+
|
|
4501
|
+
task = self.boss.get(iden)
|
|
4502
|
+
if task is not None:
|
|
4503
|
+
item = task.packv2()
|
|
4504
|
+
item['service'] = self.ahasvcname
|
|
4505
|
+
return item
|
|
4506
|
+
|
|
4507
|
+
if not peers:
|
|
4508
|
+
return
|
|
4509
|
+
|
|
4510
|
+
todo = s_common.todo('getTask', iden, peers=False, timeout=timeout)
|
|
4511
|
+
async for ahasvc, (ok, retn) in self.callPeerApi(todo, timeout=timeout):
|
|
4512
|
+
|
|
4513
|
+
if not ok: # pragma: no cover
|
|
4514
|
+
logger.warning(f'getTask() on {ahasvc} failed: {retn}')
|
|
4515
|
+
continue
|
|
4516
|
+
|
|
4517
|
+
if retn is not None:
|
|
4518
|
+
return retn
|
|
4519
|
+
|
|
4520
|
+
async def killTask(self, iden, peers=True, timeout=None):
|
|
4521
|
+
|
|
4522
|
+
task = self.boss.get(iden)
|
|
4523
|
+
if task is not None:
|
|
4524
|
+
await task.kill()
|
|
4525
|
+
return True
|
|
4526
|
+
|
|
4527
|
+
if not peers:
|
|
4528
|
+
return False
|
|
4529
|
+
|
|
4530
|
+
todo = s_common.todo('killTask', iden, peers=False, timeout=timeout)
|
|
4531
|
+
async for ahasvc, (ok, retn) in self.callPeerApi(todo, timeout=timeout):
|
|
4532
|
+
|
|
4533
|
+
if not ok: # pragma: no cover
|
|
4534
|
+
logger.warning(f'killTask() on {ahasvc} failed: {retn}')
|
|
4535
|
+
continue
|
|
4536
|
+
|
|
4537
|
+
if retn:
|
|
4538
|
+
return True
|
|
4539
|
+
|
|
4540
|
+
return False
|
|
4541
|
+
|
|
4417
4542
|
async def kill(self, user, iden):
|
|
4418
4543
|
perm = ('task', 'del')
|
|
4419
4544
|
isallowed = await self.isUserAllowed(user.iden, perm)
|
|
@@ -4488,13 +4613,13 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
|
|
|
4488
4613
|
'https': self.https_listeners,
|
|
4489
4614
|
}
|
|
4490
4615
|
},
|
|
4491
|
-
'features':
|
|
4492
|
-
'tellready': True,
|
|
4493
|
-
'dynmirror': True,
|
|
4494
|
-
},
|
|
4616
|
+
'features': self.features,
|
|
4495
4617
|
}
|
|
4496
4618
|
return ret
|
|
4497
4619
|
|
|
4620
|
+
async def getTeleFeats(self):
|
|
4621
|
+
return dict(self.features)
|
|
4622
|
+
|
|
4498
4623
|
async def getSystemInfo(self):
|
|
4499
4624
|
'''
|
|
4500
4625
|
Get info about the system in which the cell is running
|