synapse 3.2.0__tar.gz → 3.4.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.
- {synapse-3.2.0/synapse.egg-info → synapse-3.4.0}/PKG-INFO +1 -1
- {synapse-3.2.0 → synapse-3.4.0}/pyproject.toml +1 -1
- {synapse-3.2.0 → synapse-3.4.0}/synapse/cortex.py +25 -6
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/skills/storm/SKILL.md +6 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/datamodel.py +68 -0
- {synapse-3.2.0/synapse/tools/storm → synapse-3.4.0/synapse/lib}/_http.py +64 -2
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/ast.py +42 -12
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/auth.py +29 -10
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/cmd.py +3 -3
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/crypto/passwd.py +17 -2
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/mddocs.py +193 -10
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/node.py +27 -3
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/parser.py +62 -2
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/process.py +8 -1
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/aha.py +168 -29
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/oauth.py +1 -1
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/pkg.py +228 -10
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/stats.py +15 -11
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/stix.py +4 -2
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/storm.py +11 -13
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormtypes.py +62 -3
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/types.py +7 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/version.py +2 -2
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/view.py +34 -10
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/auth.py +19 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/entity.py +2 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/geospace.py +4 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/infotech.py +111 -11
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/proj.py +3 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/testpkg.yaml +2 -2
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_cortex.py +183 -1
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_datamodel.py +15 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_ast.py +104 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_auth.py +29 -0
- synapse-3.4.0/synapse/tests/test_lib_cmd.py +75 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_passwd.py +49 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_grammar.py +64 -0
- synapse-3.4.0/synapse/tests/test_lib_http.py +383 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_layer.py +76 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_mddocs.py +267 -6
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_process.py +16 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_aha.py +109 -2
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_pkg.py +255 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_stats.py +62 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_stix.py +8 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_storm.py +70 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormtypes.py +130 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_types.py +65 -0
- synapse-3.4.0/synapse/tests/test_model_auth.py +66 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_entity.py +13 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_geospace.py +12 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_infotech.py +71 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_proj.py +2 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_aha.py +126 -10
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_axon_copy.py +11 -1
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_cortex_csv.py +18 -1
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_healthcheck.py +16 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_cli.py +14 -278
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_pkg_gen.py +148 -0
- synapse-3.4.0/synapse/tests/test_tools_utils_docmanifest.py +83 -0
- synapse-3.4.0/synapse/tests/test_tools_utils_optimize.py +134 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/utils.py +19 -0
- synapse-3.4.0/synapse/tools/aha/mirror.py +341 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/axon/copy.py +1 -5
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/cortex/csv.py +1 -4
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/healthcheck.py +1 -4
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/shutdown.py +1 -1
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/_cli.py +3 -24
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/pkg/gen.py +33 -5
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/pkg/publish.py +1 -2
- synapse-3.4.0/synapse/tools/utils/docmanifest.py +36 -0
- synapse-3.4.0/synapse/tools/utils/optimize.py +181 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/utils/stormcov.py +12 -0
- {synapse-3.2.0 → synapse-3.4.0/synapse.egg-info}/PKG-INFO +1 -1
- {synapse-3.2.0 → synapse-3.4.0}/synapse.egg-info/SOURCES.txt +7 -1
- synapse-3.2.0/synapse/tests/test_model_auth.py +0 -22
- synapse-3.2.0/synapse/tools/aha/mirror.py +0 -171
- {synapse-3.2.0 → synapse-3.4.0}/LICENSE +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/README.md +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/setup.cfg +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/assets/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/axon.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/cells.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/common.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/daemon.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/attack-flow/README.md +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA (2026).crt +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/certs/cas/The Vertex Project ROOT CA (2026).crt +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA (2026).crl +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/certs/crls/The Vertex Project ROOT CA (2026).crl +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/iana.tlds.mpk +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/iana.uris.mpk +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/README.md +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/json-schema.org/draft-07/schema +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/binary.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/bundle.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/core.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/cyber-observable-core.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/dictionary.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension-definition.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/external-reference.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/granular-marking.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hashes-type.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hex.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/identifier.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/kill-chain-phase.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/language-content.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/marking-definition.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/properties.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/timestamp.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/url-regex.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/artifact.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/autonomous-system.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/directory.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/domain-name.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-addr.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-message.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/file.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv4-addr.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv6-addr.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mac-addr.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mutex.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/network-traffic.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/process.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/software.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/url.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/user-account.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/windows-registry-key.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/x509-certificate.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/attack-pattern.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/campaign.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/course-of-action.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/grouping.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/identity.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/incident.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/indicator.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/infrastructure.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/intrusion-set.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/location.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware-analysis.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/note.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/observed-data.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/opinion.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/report.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/threat-actor.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/tool.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/vulnerability.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/relationship.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/sighting.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/lark/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/lark/imap.lark +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/lark/storm.lark +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/data/v2modelmap.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/exc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/glob.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/agenda.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/aha.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/autodoc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/base.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/boss.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/cache.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/cell.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/certdir.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/chop.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/cli.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/cluster.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/config.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/const.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/coro.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/crypto/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/crypto/coin.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/crypto/ecc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/crypto/jwk.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/crypto/rsa.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/crypto/tinfoil.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/crypto/utils.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/datfile.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/drive.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/dyndeps.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/editor.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/gis.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/grammar.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/hashitem.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/hashset.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/health.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/httpapi.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/httpclient.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/json.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/jsonstor.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/jsrpc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/layer.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/link.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/lmdbslab.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/logging.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/mcp.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/mdstorm.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/modelrev.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/msgpack.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/multislabseqn.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/nexus.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/nodefuse.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/oauth.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/output.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/platforms/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/platforms/common.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/platforms/darwin.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/platforms/freebsd.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/platforms/linux.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/platforms/windows.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/processpool.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/provision.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/queue.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/reflect.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/schemas.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/scope.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/scrape.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/share.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/slabseqn.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/spawner.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/spooled.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/storm.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/storm_format.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormctrl.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormhttp.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/auth.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/basex.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/bytes.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/cache.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/cell.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/compression.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/cortex.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/cryptoutils.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/easyperm.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/ecc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/ethereum.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/file.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/gen.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/gis.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/graph.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/hashes.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/hex.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/imap.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/index.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/infosec.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/ipv6.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/iters.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/json.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/jwt.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/log.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/macro.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/math.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/mime.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/model.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/modelext.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/pack.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/quorum.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/random.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/rsa.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/scrape.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/smtp.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/spooled.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/tabular.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/task.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/utils.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/vault.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/version.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/vertex.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/xml.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormlib/yaml.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/stormsvc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/task.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/thishost.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/thisplat.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/threads.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/time.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/trigger.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lib/urlhelp.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lookup/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lookup/cvss.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lookup/iana.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lookup/macho.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lookup/pe.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lookup/phonenum.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/lookup/timezones.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/base.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/belief.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/biz.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/crypto.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/dns.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/doc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/economic.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/files.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/geopol.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/gov.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/ind.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/inet.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/language.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/material.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/orgs.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/person.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/planning.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/risk.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/science.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/syn.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/telco.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/models/transport.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/servers/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/servers/aha.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/servers/axon.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/servers/cell.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/servers/cortex.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/servers/jsonstor.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/telepath.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/cas/synapse.crt.tinfoil +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/cas/synapse.key.tinfoil +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.crt.tinfoil +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.key.tinfoil +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/users/root@synapse.crt.tinfoil +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/aha/certs/users/root@synapse.key.tinfoil +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/certdir/cas/ca.crt.tinfoil +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/certdir/cas/ca.key.tinfoil +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/certdir/hosts/localhost.crt.tinfoil +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/certdir/hosts/localhost.key.tinfoil +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/certdir/users/root.crt.tinfoil +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/certdir/users/root.key.tinfoil +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/certdir/users/user.crt.tinfoil +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/certdir/users/user.key.tinfoil +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/cpedata.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/mdstorm/httprespmulti.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/mdstorm/testsvc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stix_export/basic.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stix_export/custom0.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stix_export/risk0.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stix_import/apt1.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stix_import/scos.json +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/argvquery2.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/argvquery3.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/argvquery4.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/argvquery5.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/badstorm.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/continueloop.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/dupewarn.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/dupfunc.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/embedquery.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/embedquery2.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/embedquery3.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/embedquery4.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/embedquery5.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/emptybody.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/exprdict.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/forloop.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/ifelif.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/ifelse.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/pragma-nocov.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/runtsafety.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/spin.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/stopreturn.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/switch.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/switchnodefault.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/trycatch.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/whilebackedge.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/whilecontinue.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/whileloop.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormcov/whilewithnode.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormmod/common +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badendpoints.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badinits.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badvaultskeys.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/badvaultsschema.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/declaredfiles.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/docs/index.md +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/dotstorm_noevents/dotstorm.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/dotstorm_noevents/storm/commands/dotstorm.bar.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/dotstorm_noevents/storm/modules/dotstorm.foo.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/files/data.dat +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/files/sub/nested.dat +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/storm/modules/apimod.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/storm/modules/testmod.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/test.dat +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/index.md +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/mocks/cassette.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/stormpackage.md +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/sub/image.svg +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/sub/nested.md +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/docs/userguide.md +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/storm/commands/testcmd.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/storm/modules/apimod.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/storm/modules/testmod.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/storm/testcmd.storm +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs/testpkg.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs_no_h1/docs/index.md +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs_no_h1/docs/noh1.md +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/files/testpkg_build_docs_no_h1/testpkg.yaml +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/nopmod.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_assets.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_axon.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_common.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_daemon.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_data.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_docs_stormref.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_exc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_glob.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_agenda.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_aha.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_autodoc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_base.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_boss.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_cache.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_cell.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_certdir.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_chop.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_cli.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_cluster.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_config.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_const.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_coro.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_jwk.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_rsa.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_datfile.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_drive.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_dyndeps.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_gis.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_hashitem.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_hashset.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_health.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_httpapi.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_httpclient.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_json.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_jsonstor.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_jsrpc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_link.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_lmdbslab.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_logging.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_mcp.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_mdstorm.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_modelrev.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_msgpack.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_nexus.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_node.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_output.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_processpool.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_provision.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_queue.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_reflect.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_scope.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_scrape.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_slabseqn.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_spawner.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_spooled.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_storm.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_storm_format.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormctrl.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormhttp.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_auth.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_cache.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_cell.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_cortex.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_ecc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_env.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_file.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_index.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_jwt.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_macro.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_model.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_quorum.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_rsa.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_spooled.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_tabular.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_task.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_utils.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_vertex.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_stormsvc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_task.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_thishost.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_time.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_trigger.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_urlhelp.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_version.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lib_view.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_lookup_phonenum.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_base.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_belief.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_biz.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_crypto.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_dns.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_doc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_economic.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_files.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_geopol.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_gov.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_gov_cn.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_gov_intl.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_gov_us.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_inet.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_language.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_material.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_orgs.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_person.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_planning.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_risk.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_science.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_syn.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_telco.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_model_transport.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_servers_axon.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_servers_cortex.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_servers_univ.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_telepath.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_axon_dump_load.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_axon_get.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_axon_put.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_cortex_docmodel.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_cortex_feed.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_cortex_layer.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_docker_validate.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_apikey.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_backup.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_demote.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_modrole.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_moduser.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_promote.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_reload.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_shutdown.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_service_snapshot.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_pkg_doc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_pkg_publish.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_printer.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_tester.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_storm_validate.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_utils_doc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_utils_easycert.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_utils_guid.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_utils_json2mpk.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_tools_utils_mdstorm.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_utils.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_utils_getrefs.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tests/test_utils_stormcov.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/clone.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/del.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/easycert.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/enroll.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/list.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/provision/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/provision/service.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/aha/provision/user.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/axon/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/axon/dump.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/axon/get.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/axon/load.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/axon/put.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/cortex/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/cortex/docmodel.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/cortex/feed.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/cortex/layer/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/cortex/layer/dump.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/cortex/layer/load.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/docker/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/docker/validate.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/apikey.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/backup.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/demote.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/modrole.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/moduser.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/promote.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/reload.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/service/snapshot.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/__main__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/_printer.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/pkg/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/pkg/doc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/tester.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/storm/validate.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/utils/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/utils/doc.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/utils/easycert.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/utils/guid.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/utils/json2mpk.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/tools/utils/mdstorm.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/utils/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/utils/getrefs.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cashaddress/LICENSE +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cashaddress/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cashaddress/base58.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cashaddress/convert.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cashaddress/crypto.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/LICENSE +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/email/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/email/_parseaddr.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/email/utils.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/ipaddress.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/json.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/support/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_email/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_email/test_email.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_email/test_parseaddr.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_email/test_utils.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_ipaddress.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/cpython/lib/test/test_json.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/utils.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/LICENSE +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/constants.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse.egg-info/dependency_links.txt +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse.egg-info/requires.txt +0 -0
- {synapse-3.2.0 → synapse-3.4.0}/synapse.egg-info/top_level.txt +0 -0
|
@@ -742,6 +742,7 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
|
|
|
742
742
|
self.viewsbylayer = collections.defaultdict(list)
|
|
743
743
|
|
|
744
744
|
self.stormcmds = {}
|
|
745
|
+
self._stormdocs = None
|
|
745
746
|
|
|
746
747
|
self.maxnodes = self.conf.get('max:nodes')
|
|
747
748
|
self.nodecount = 0
|
|
@@ -2103,9 +2104,11 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
|
|
|
2103
2104
|
|
|
2104
2105
|
name = cdef.get('name')
|
|
2105
2106
|
self.stormcmds[name] = ctor
|
|
2107
|
+
self._stormdocs = None
|
|
2106
2108
|
|
|
2107
2109
|
def _popStormCmd(self, name):
|
|
2108
2110
|
self.stormcmds.pop(name, None)
|
|
2111
|
+
self._stormdocs = None
|
|
2109
2112
|
|
|
2110
2113
|
async def delStormCmd(self, name):
|
|
2111
2114
|
'''
|
|
@@ -2135,6 +2138,7 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
|
|
|
2135
2138
|
if not self.readonly:
|
|
2136
2139
|
self.cmddefs.pop(name)
|
|
2137
2140
|
self.stormcmds.pop(name, None)
|
|
2141
|
+
self._stormdocs = None
|
|
2138
2142
|
|
|
2139
2143
|
async def addStormPkg(self, pkgdef, verify=False):
|
|
2140
2144
|
'''
|
|
@@ -2332,13 +2336,13 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
|
|
|
2332
2336
|
'''
|
|
2333
2337
|
Resolve a dependency/conflict name to a currently loaded package def.
|
|
2334
2338
|
|
|
2335
|
-
The reserved names in self.PKG_PROVIDES refer to
|
|
2336
|
-
|
|
2339
|
+
The reserved names in self.PKG_PROVIDES refer to self.VERSION rather than to a
|
|
2340
|
+
loaded Storm package.
|
|
2337
2341
|
'''
|
|
2338
2342
|
if pkgname in self.PKG_PROVIDES:
|
|
2339
2343
|
return {
|
|
2340
2344
|
'name': pkgname,
|
|
2341
|
-
'version':
|
|
2345
|
+
'version': self.VERSION
|
|
2342
2346
|
}
|
|
2343
2347
|
|
|
2344
2348
|
return await self.getStormPkg(pkgname)
|
|
@@ -5344,6 +5348,7 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
|
|
|
5344
5348
|
raise s_exc.BadCmdName(name=ctor.name)
|
|
5345
5349
|
|
|
5346
5350
|
self.stormcmds[ctor.name] = ctor
|
|
5351
|
+
self._stormdocs = None
|
|
5347
5352
|
|
|
5348
5353
|
async def addStormDmon(self, ddef):
|
|
5349
5354
|
'''
|
|
@@ -6075,7 +6080,7 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
|
|
|
6075
6080
|
except Exception as e:
|
|
6076
6081
|
return s_common.retnexc(e)
|
|
6077
6082
|
|
|
6078
|
-
def _logStormQuery(self, text, user, info=None, meta=None):
|
|
6083
|
+
def _logStormQuery(self, text, user, info=None, meta=None, via=None):
|
|
6079
6084
|
'''
|
|
6080
6085
|
Log a storm query.
|
|
6081
6086
|
|
|
@@ -6084,6 +6089,7 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
|
|
|
6084
6089
|
user: The User who ran the query.
|
|
6085
6090
|
info (dict): Fields to record alongside the query.
|
|
6086
6091
|
meta (dict): The caller supplied meta opt, if any.
|
|
6092
|
+
via (str): The name of the Storm command or library which dispatched the query.
|
|
6087
6093
|
'''
|
|
6088
6094
|
if self.stormlog:
|
|
6089
6095
|
if info is None:
|
|
@@ -6097,8 +6103,12 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
|
|
|
6097
6103
|
if meta is not None:
|
|
6098
6104
|
info['meta'] = meta
|
|
6099
6105
|
|
|
6100
|
-
|
|
6101
|
-
|
|
6106
|
+
if via is None:
|
|
6107
|
+
stormlogger.log(self.stormloglvl, 'Executing storm query {%s} as [%s]', text, user.name,
|
|
6108
|
+
extra=self.getLogExtra(**info))
|
|
6109
|
+
else:
|
|
6110
|
+
stormlogger.log(self.stormloglvl, 'Executing storm query via %s {%s} as [%s]', via, text, user.name,
|
|
6111
|
+
extra=self.getLogExtra(**info))
|
|
6102
6112
|
|
|
6103
6113
|
async def getCoreInfoV2(self):
|
|
6104
6114
|
return {
|
|
@@ -6111,10 +6121,18 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
|
|
|
6111
6121
|
'''
|
|
6112
6122
|
Get a struct containing the Storm Types documentation.
|
|
6113
6123
|
|
|
6124
|
+
Notes:
|
|
6125
|
+
The return value is a cached structure shared across callers and
|
|
6126
|
+
must not be mutated.
|
|
6127
|
+
|
|
6114
6128
|
Returns:
|
|
6115
6129
|
dict: A Dictionary of storm documentation information.
|
|
6116
6130
|
'''
|
|
6117
6131
|
|
|
6132
|
+
stormdocs = self._stormdocs
|
|
6133
|
+
if stormdocs is not None:
|
|
6134
|
+
return stormdocs
|
|
6135
|
+
|
|
6118
6136
|
cmds = []
|
|
6119
6137
|
|
|
6120
6138
|
for name, cmd in self.stormcmds.items():
|
|
@@ -6137,6 +6155,7 @@ class Cortex(s_oauth.OAuthMixin, s_axon.HasAxon, s_jsonstor.HasJsonStor, s_cell.
|
|
|
6137
6155
|
'commands': cmds,
|
|
6138
6156
|
# 'packages': ... # TODO - Support inline information for packages?
|
|
6139
6157
|
}
|
|
6158
|
+
self._stormdocs = ret
|
|
6140
6159
|
return ret
|
|
6141
6160
|
|
|
6142
6161
|
async def reqFeedDataAllowed(self, items, user, viewiden=None):
|
|
@@ -754,6 +754,12 @@ $x = (true)
|
|
|
754
754
|
$y = (999)
|
|
755
755
|
$dict = ({})
|
|
756
756
|
$list = ([])
|
|
757
|
+
|
|
758
|
+
// WRONG - redundant parens inside a JSON expression
|
|
759
|
+
$props = ({"ids": ([$iden]), "opts": ({"asof": $asof})})
|
|
760
|
+
|
|
761
|
+
// CORRECT
|
|
762
|
+
$props = ({"ids": [$iden], "opts": {"asof": $asof}})
|
|
757
763
|
```
|
|
758
764
|
|
|
759
765
|
### 3. Forgetting `|` After Inline Commands
|
|
@@ -677,6 +677,9 @@ class Model:
|
|
|
677
677
|
self.formprefixcache = s_cache.LruDict(PREFIX_CACHE_SIZE)
|
|
678
678
|
|
|
679
679
|
self._lookup_hints = None
|
|
680
|
+
self._virts_by_type = None
|
|
681
|
+
|
|
682
|
+
self._modeldict = None
|
|
680
683
|
|
|
681
684
|
self._type_pends = collections.defaultdict(list)
|
|
682
685
|
self._modeldef = {
|
|
@@ -748,6 +751,33 @@ class Model:
|
|
|
748
751
|
return ()
|
|
749
752
|
return list(props.values())
|
|
750
753
|
|
|
754
|
+
def getVirtsByType(self, name):
|
|
755
|
+
'''
|
|
756
|
+
Return the (formname, virtname) tuples for the indexed virtual properties
|
|
757
|
+
of a form primary property which reference the given form name. A virt on
|
|
758
|
+
a secondary property is not a ref because the node for the property value
|
|
759
|
+
carries the ref, the same as Form.getRefsOut().
|
|
760
|
+
'''
|
|
761
|
+
if self._virts_by_type is None:
|
|
762
|
+
|
|
763
|
+
virtsbytype = collections.defaultdict(list)
|
|
764
|
+
|
|
765
|
+
for formname, form in self.forms.items():
|
|
766
|
+
for virtname, virtinfo in form.type.virts.items():
|
|
767
|
+
|
|
768
|
+
typename = virtinfo[0].name
|
|
769
|
+
if self.forms.get(typename) is None:
|
|
770
|
+
continue
|
|
771
|
+
|
|
772
|
+
if form.type.virtindx.get(virtname) is None:
|
|
773
|
+
continue
|
|
774
|
+
|
|
775
|
+
virtsbytype[typename].append((formname, virtname))
|
|
776
|
+
|
|
777
|
+
self._virts_by_type = virtsbytype
|
|
778
|
+
|
|
779
|
+
return self._virts_by_type.get(name, ())
|
|
780
|
+
|
|
751
781
|
def getProps(self):
|
|
752
782
|
return [pobj for pname, pobj in self.props.items()
|
|
753
783
|
if not (isinstance(pname, tuple))]
|
|
@@ -1182,6 +1212,20 @@ class Model:
|
|
|
1182
1212
|
return resolved
|
|
1183
1213
|
|
|
1184
1214
|
def getModelDict(self):
|
|
1215
|
+
'''
|
|
1216
|
+
Get a dictionary which describes the data model.
|
|
1217
|
+
|
|
1218
|
+
Notes:
|
|
1219
|
+
The return value is a cached structure shared across callers and
|
|
1220
|
+
must not be mutated.
|
|
1221
|
+
|
|
1222
|
+
Returns:
|
|
1223
|
+
dict: A dictionary representation of the data model.
|
|
1224
|
+
'''
|
|
1225
|
+
modeldict = self._modeldict
|
|
1226
|
+
if modeldict is not None:
|
|
1227
|
+
return modeldict
|
|
1228
|
+
|
|
1185
1229
|
retn = {
|
|
1186
1230
|
'metas': (
|
|
1187
1231
|
('created', ('time', {}), {
|
|
@@ -1212,6 +1256,7 @@ class Model:
|
|
|
1212
1256
|
for eobj in self.edges.values():
|
|
1213
1257
|
retn['edges'].append(eobj.pack())
|
|
1214
1258
|
|
|
1259
|
+
self._modeldict = retn
|
|
1215
1260
|
return retn
|
|
1216
1261
|
|
|
1217
1262
|
def convertPolyinfo(self, propdef):
|
|
@@ -1561,6 +1606,12 @@ class Model:
|
|
|
1561
1606
|
self.metatypes['created'] = self.getTypeClone(('time', {'ismin': True}))
|
|
1562
1607
|
self.metatypes['updated'] = self.getTypeClone(('time', {}))
|
|
1563
1608
|
|
|
1609
|
+
# addType()/addForm()/addEdge()/addTagProp()/addIface() above each
|
|
1610
|
+
# already clear the cache, but the ctor-based type pass above (which
|
|
1611
|
+
# writes self.types / self.ifacepolys directly) does not, so clear
|
|
1612
|
+
# once more to be certain.
|
|
1613
|
+
self._modeldict = None
|
|
1614
|
+
|
|
1564
1615
|
def _getFormsMaybeIface(self, name):
|
|
1565
1616
|
|
|
1566
1617
|
form = self.forms.get(name)
|
|
@@ -1608,6 +1659,8 @@ class Model:
|
|
|
1608
1659
|
for n2form in n2forms:
|
|
1609
1660
|
self._valid_edges[(n1form, verb, n2form)] = edge
|
|
1610
1661
|
|
|
1662
|
+
self._modeldict = None
|
|
1663
|
+
|
|
1611
1664
|
def delEdge(self, edgetype):
|
|
1612
1665
|
|
|
1613
1666
|
edge = self.edges.get(edgetype)
|
|
@@ -1634,6 +1687,8 @@ class Model:
|
|
|
1634
1687
|
for n2form in n2forms:
|
|
1635
1688
|
self._valid_edges.pop((n1form, verb, n2form), None)
|
|
1636
1689
|
|
|
1690
|
+
self._modeldict = None
|
|
1691
|
+
|
|
1637
1692
|
def _reqFormName(self, name):
|
|
1638
1693
|
form = self.forms.get(name)
|
|
1639
1694
|
if form is None:
|
|
@@ -1666,6 +1721,8 @@ class Model:
|
|
|
1666
1721
|
if not skipinit:
|
|
1667
1722
|
self._modeldef['types'].append(newtype.getTypeDef())
|
|
1668
1723
|
|
|
1724
|
+
self._modeldict = None
|
|
1725
|
+
|
|
1669
1726
|
def reqVirtTypes(self, virts):
|
|
1670
1727
|
|
|
1671
1728
|
for (name, tdef, info) in virts:
|
|
@@ -1790,6 +1847,8 @@ class Model:
|
|
|
1790
1847
|
self.formprefixcache.clear()
|
|
1791
1848
|
self.pivchaincache.clear()
|
|
1792
1849
|
self._lookup_hints = None
|
|
1850
|
+
self._virts_by_type = None
|
|
1851
|
+
self._modeldict = None
|
|
1793
1852
|
|
|
1794
1853
|
return form
|
|
1795
1854
|
|
|
@@ -1904,6 +1963,8 @@ class Model:
|
|
|
1904
1963
|
self.formprefixcache.clear()
|
|
1905
1964
|
self.pivchaincache.clear()
|
|
1906
1965
|
self._lookup_hints = None
|
|
1966
|
+
self._virts_by_type = None
|
|
1967
|
+
self._modeldict = None
|
|
1907
1968
|
|
|
1908
1969
|
if parentform:
|
|
1909
1970
|
self.childforms[parentform.name].remove(formname)
|
|
@@ -1917,6 +1978,7 @@ class Model:
|
|
|
1917
1978
|
raise s_exc.DupName(mesg=f'Interface name conflicts with existing interface: {name}')
|
|
1918
1979
|
|
|
1919
1980
|
self.ifaces[name] = info
|
|
1981
|
+
self._modeldict = None
|
|
1920
1982
|
|
|
1921
1983
|
def reqTypeNotInUse(self, typename):
|
|
1922
1984
|
if self.propsbytype.get(typename):
|
|
@@ -1948,6 +2010,7 @@ class Model:
|
|
|
1948
2010
|
self.propsbytype.pop(typename, None)
|
|
1949
2011
|
self.arraysbytype.pop(typename, None)
|
|
1950
2012
|
self.tagpropsbytype.pop(typename, None)
|
|
2013
|
+
self._modeldict = None
|
|
1951
2014
|
|
|
1952
2015
|
def addFormProp(self, formname, propname, tdef, info):
|
|
1953
2016
|
form = self.forms.get(formname)
|
|
@@ -2060,6 +2123,7 @@ class Model:
|
|
|
2060
2123
|
self.childpropcache.clear()
|
|
2061
2124
|
self.pivchaincache.clear()
|
|
2062
2125
|
self._lookup_hints = None
|
|
2126
|
+
self._modeldict = None
|
|
2063
2127
|
|
|
2064
2128
|
return prop
|
|
2065
2129
|
|
|
@@ -2208,6 +2272,7 @@ class Model:
|
|
|
2208
2272
|
def delTagProp(self, name):
|
|
2209
2273
|
if (prop := self.tagprops.pop(name, None)) is not None:
|
|
2210
2274
|
self.tagpropsbytype[prop.type.name].pop(name, None)
|
|
2275
|
+
self._modeldict = None
|
|
2211
2276
|
return prop
|
|
2212
2277
|
|
|
2213
2278
|
def addTagProp(self, name, tdef, info):
|
|
@@ -2222,6 +2287,8 @@ class Model:
|
|
|
2222
2287
|
f' be removed in 4.0.0'
|
|
2223
2288
|
logger.warning(mesg)
|
|
2224
2289
|
|
|
2290
|
+
self._modeldict = None
|
|
2291
|
+
|
|
2225
2292
|
return prop
|
|
2226
2293
|
|
|
2227
2294
|
def getTagProp(self, name):
|
|
@@ -2272,6 +2339,7 @@ class Model:
|
|
|
2272
2339
|
self.childpropcache.clear()
|
|
2273
2340
|
self.pivchaincache.clear()
|
|
2274
2341
|
self._lookup_hints = None
|
|
2342
|
+
self._modeldict = None
|
|
2275
2343
|
|
|
2276
2344
|
def type(self, name):
|
|
2277
2345
|
'''
|
|
@@ -15,6 +15,8 @@ import synapse.lib.const as s_const
|
|
|
15
15
|
import synapse.lib.httpapi as s_httpapi
|
|
16
16
|
import synapse.lib.msgpack as s_msgpack
|
|
17
17
|
import synapse.lib.urlhelp as s_urlhelp
|
|
18
|
+
import synapse.lib.version as s_version
|
|
19
|
+
import synapse.lib.httpclient as s_httpclient
|
|
18
20
|
import synapse.lib.crypto.passwd as s_passwd
|
|
19
21
|
|
|
20
22
|
logger = logging.getLogger(__name__)
|
|
@@ -34,6 +36,11 @@ EXPORT_TIMEOUT = 3600
|
|
|
34
36
|
# The number of chunks buffered while streaming bytes into an Axon HTTP upload.
|
|
35
37
|
UPLOAD_QSIZE = 4
|
|
36
38
|
|
|
39
|
+
# The product token in the default outbound User-Agent. A Cell derives its own token
|
|
40
|
+
# from its cell type ( see Cell._getUserAgentProd ); this client is not a Cell, and it
|
|
41
|
+
# ships with Synapse, so its version is the Synapse version.
|
|
42
|
+
USER_AGENT_PROD = 'Synapse-Client'
|
|
43
|
+
|
|
37
44
|
apikeymesg = 'A user API key is required to connect to a Cortex over HTTP. ' \
|
|
38
45
|
'Provide it in the URL as https://<apikey>@host:port/.'
|
|
39
46
|
|
|
@@ -49,6 +56,43 @@ def isHttpsUrl(url):
|
|
|
49
56
|
'''
|
|
50
57
|
return url.lower().startswith('https://')
|
|
51
58
|
|
|
59
|
+
def addHttpsArgs(pars):
|
|
60
|
+
'''
|
|
61
|
+
Add the options which configure the Cortex HTTP API client to an argument parser.
|
|
62
|
+
|
|
63
|
+
Note:
|
|
64
|
+
Shared by every CLI tool which accepts an https:// Cortex URL, so the options
|
|
65
|
+
and their help text cannot drift apart between them.
|
|
66
|
+
|
|
67
|
+
Args:
|
|
68
|
+
pars (s_cmd.Parser): The argument parser.
|
|
69
|
+
'''
|
|
70
|
+
pars.add_argument('--https-proxy', default=None,
|
|
71
|
+
help='An aiohttp-socks compatible proxy URL to use for https:// URLs.')
|
|
72
|
+
pars.add_argument('--https-ca-dir', default=None,
|
|
73
|
+
help='A directory of CAs which are added to the TLS CA chain for https:// URLs.')
|
|
74
|
+
pars.add_argument('--https-noverify', default=False, action='store_true',
|
|
75
|
+
help='Ignore SSL certificate validation errors for https:// URLs.')
|
|
76
|
+
|
|
77
|
+
def reqTeleOpts(opts):
|
|
78
|
+
'''
|
|
79
|
+
Require that the https only options are not used with a telepath URL.
|
|
80
|
+
|
|
81
|
+
Args:
|
|
82
|
+
opts (argparse.Namespace): The parsed arguments.
|
|
83
|
+
'''
|
|
84
|
+
httponly = (
|
|
85
|
+
('--https-proxy', opts.https_proxy),
|
|
86
|
+
('--https-ca-dir', opts.https_ca_dir),
|
|
87
|
+
('--https-noverify', opts.https_noverify or None),
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
for name, valu in httponly:
|
|
91
|
+
|
|
92
|
+
if valu is not None:
|
|
93
|
+
mesg = f'The {name} option may only be used with an https:// Cortex URL.'
|
|
94
|
+
raise s_exc.BadArg(mesg=mesg, arg=name)
|
|
95
|
+
|
|
52
96
|
async def openurl(url, cadir=None, proxy=None, verify=True):
|
|
53
97
|
'''
|
|
54
98
|
Open a Cortex HTTP API client which duck types the Telepath CoreApi.
|
|
@@ -190,7 +234,8 @@ class HttpCortex(s_base.Base):
|
|
|
190
234
|
'''
|
|
191
235
|
A Cortex client which uses the HTTP API rather than Telepath.
|
|
192
236
|
|
|
193
|
-
This implements the subset of the Telepath CoreApi
|
|
237
|
+
This implements the subset of the Telepath CoreApi used by the CLI tools which
|
|
238
|
+
accept an https:// Cortex URL.
|
|
194
239
|
|
|
195
240
|
Note:
|
|
196
241
|
Messages are deserialized from JSON, so nested sequences are lists where the
|
|
@@ -237,9 +282,14 @@ class HttpCortex(s_base.Base):
|
|
|
237
282
|
# running Storm queries.
|
|
238
283
|
timeout = aiohttp.ClientTimeout(total=None)
|
|
239
284
|
|
|
285
|
+
headers = {
|
|
286
|
+
'X-API-KEY': apikey,
|
|
287
|
+
'User-Agent': s_httpclient.getUserAgent(USER_AGENT_PROD, s_version.version),
|
|
288
|
+
}
|
|
289
|
+
|
|
240
290
|
sess = aiohttp.ClientSession(connector=connector,
|
|
241
291
|
timeout=timeout,
|
|
242
|
-
headers=
|
|
292
|
+
headers=headers,
|
|
243
293
|
max_line_size=s_const.MAX_LINE_SIZE,
|
|
244
294
|
max_field_size=s_const.MAX_FIELD_SIZE)
|
|
245
295
|
|
|
@@ -378,6 +428,18 @@ class HttpCortex(s_base.Base):
|
|
|
378
428
|
mesg = 'The Cortex HTTP API export stream ended with a partial node.'
|
|
379
429
|
raise s_exc.BadDataValu(mesg=mesg)
|
|
380
430
|
|
|
431
|
+
async def addStormPkg(self, pkgdef, *, verify=False):
|
|
432
|
+
'''
|
|
433
|
+
Add a Storm package to the Cortex.
|
|
434
|
+
|
|
435
|
+
Note:
|
|
436
|
+
The HTTP API has no package endpoint, so this runs $lib.pkg.add() which
|
|
437
|
+
confirms the same pkg.add permission and calls the same Cortex API the
|
|
438
|
+
Telepath CoreApi method does.
|
|
439
|
+
'''
|
|
440
|
+
opts = {'vars': {'pkgdef': pkgdef, 'verify': verify}}
|
|
441
|
+
return await self.callStorm('return($lib.pkg.add($pkgdef, verify=$verify))', opts=opts)
|
|
442
|
+
|
|
381
443
|
async def getCoreInfoV2(self):
|
|
382
444
|
|
|
383
445
|
async with self.sess.get(self._getUrl('/api/v3/core/info'), **self.reqinfo) as resp:
|
|
@@ -312,9 +312,10 @@ class Lookup(Query):
|
|
|
312
312
|
return
|
|
313
313
|
|
|
314
314
|
hints = runt.model.getLookupHints()
|
|
315
|
-
if not hints:
|
|
316
|
-
return
|
|
317
315
|
|
|
316
|
+
# the remainder tokens are resolved by the data model lookup hints and
|
|
317
|
+
# then by the search interface. Nodes from those two steps are
|
|
318
|
+
# deduplicated against each other.
|
|
318
319
|
async with await s_spooled.Set.anit(dirn=view.core.dirn, cell=view.core) as nidset:
|
|
319
320
|
|
|
320
321
|
for tokn in remtokns:
|
|
@@ -331,6 +332,22 @@ class Lookup(Query):
|
|
|
331
332
|
except (s_exc.BadTypeValu, s_exc.BadCmprValu, s_exc.NoSuchCmpr):
|
|
332
333
|
continue
|
|
333
334
|
|
|
335
|
+
todo = s_common.todo('search', remtokns)
|
|
336
|
+
async for _, nid in view.mergeStormIface('search', todo):
|
|
337
|
+
|
|
338
|
+
nid = s_common.int64en(nid)
|
|
339
|
+
if nid in nidset:
|
|
340
|
+
await asyncio.sleep(0)
|
|
341
|
+
continue
|
|
342
|
+
|
|
343
|
+
await nidset.add(nid)
|
|
344
|
+
|
|
345
|
+
node = await view.getNodeByNid(nid)
|
|
346
|
+
if node is None:
|
|
347
|
+
continue
|
|
348
|
+
|
|
349
|
+
yield node, runt.initPath(node)
|
|
350
|
+
|
|
334
351
|
realgenr = lookgenr()
|
|
335
352
|
if len(self.kids) > 1:
|
|
336
353
|
realgenr = self.kids[1].run(runt, realgenr)
|
|
@@ -2714,6 +2731,13 @@ class PivotIn(PivotOper):
|
|
|
2714
2731
|
|
|
2715
2732
|
name, valu = node.ndef
|
|
2716
2733
|
|
|
2734
|
+
for formtype in node.form.formtypes:
|
|
2735
|
+
for formname, virtname in runt.model.getVirtsByType(formtype):
|
|
2736
|
+
link = {'type': 'prop', 'prop': f'.{virtname}', 'reverse': True}
|
|
2737
|
+
|
|
2738
|
+
async for pivo in runt.view.nodesByPropValu(formname, '=', valu, norm=False, virt=virtname):
|
|
2739
|
+
yield pivo, path.fork(pivo, link)
|
|
2740
|
+
|
|
2717
2741
|
for formtype in node.form.formtypes:
|
|
2718
2742
|
for prop in runt.model.getPropsByType(formtype):
|
|
2719
2743
|
link = {'type': 'prop', 'prop': prop.name, 'reverse': True}
|
|
@@ -4044,12 +4068,13 @@ class TagVirtCond(Cond):
|
|
|
4044
4068
|
valu = await rval.compute(runt, path)
|
|
4045
4069
|
virt = await vkid.compute(runt, path)
|
|
4046
4070
|
|
|
4047
|
-
(ptyp, getr) = ival.
|
|
4071
|
+
(ptyp, getr) = ival.getTagVirtInfo(virt)
|
|
4048
4072
|
|
|
4049
4073
|
if (cmprctor := ptyp.getCmprCtor(cmpr)) is None:
|
|
4050
4074
|
raise self.kids[2].addExcInfo(s_exc.NoSuchCmpr(cmpr=cmpr, name=ptyp.name))
|
|
4051
4075
|
|
|
4052
|
-
tval
|
|
4076
|
+
if (tval := node.getTag(name, getr=getr)) is None:
|
|
4077
|
+
return False
|
|
4053
4078
|
|
|
4054
4079
|
return await (await cmprctor(valu))(tval)
|
|
4055
4080
|
|
|
@@ -4061,7 +4086,7 @@ class TagVirtCond(Cond):
|
|
|
4061
4086
|
valu = await rval.compute(runt, None)
|
|
4062
4087
|
virt = await vkid.compute(runt, None)
|
|
4063
4088
|
|
|
4064
|
-
(ptyp, getr) = ival.
|
|
4089
|
+
(ptyp, getr) = ival.getTagVirtInfo(virt)
|
|
4065
4090
|
|
|
4066
4091
|
if (cmprctor := ptyp.getCmprCtor(cmpr)) is None:
|
|
4067
4092
|
raise self.kids[2].addExcInfo(s_exc.NoSuchCmpr(cmpr=cmpr, name=ptyp.name))
|
|
@@ -4069,7 +4094,9 @@ class TagVirtCond(Cond):
|
|
|
4069
4094
|
cmpr = await cmprctor(valu)
|
|
4070
4095
|
|
|
4071
4096
|
async def cond(node, path):
|
|
4072
|
-
tval
|
|
4097
|
+
if (tval := node.getTag(name, getr=getr)) is None:
|
|
4098
|
+
return False
|
|
4099
|
+
|
|
4073
4100
|
return await cmpr(tval)
|
|
4074
4101
|
|
|
4075
4102
|
return cond
|
|
@@ -4079,12 +4106,13 @@ class TagVirtCond(Cond):
|
|
|
4079
4106
|
valu = await rval.compute(runt, path)
|
|
4080
4107
|
virt = await vkid.compute(runt, path)
|
|
4081
4108
|
|
|
4082
|
-
(ptyp, getr) = ival.
|
|
4109
|
+
(ptyp, getr) = ival.getTagVirtInfo(virt)
|
|
4083
4110
|
|
|
4084
4111
|
if (cmprctor := ptyp.getCmprCtor(cmpr)) is None:
|
|
4085
4112
|
raise self.kids[2].addExcInfo(s_exc.NoSuchCmpr(cmpr=cmpr, name=ptyp.name))
|
|
4086
4113
|
|
|
4087
|
-
tval
|
|
4114
|
+
if (tval := node.getTag(name, getr=getr)) is None:
|
|
4115
|
+
return False
|
|
4088
4116
|
|
|
4089
4117
|
return await (await cmprctor(valu))(tval)
|
|
4090
4118
|
|
|
@@ -4433,8 +4461,8 @@ class TagVirtValue(Value):
|
|
|
4433
4461
|
name = await self.kids[0].compute(runt, path)
|
|
4434
4462
|
virt = await self.kids[1].compute(runt, path)
|
|
4435
4463
|
|
|
4436
|
-
getr = runt.model.type('ival').
|
|
4437
|
-
return
|
|
4464
|
+
(_, getr) = runt.model.type('ival').getTagVirtInfo(virt)
|
|
4465
|
+
return path.node.getTag(name, getr=getr)
|
|
4438
4466
|
|
|
4439
4467
|
class TagProp(Value):
|
|
4440
4468
|
|
|
@@ -5862,10 +5890,12 @@ class N1Walk(Oper):
|
|
|
5862
5890
|
for destform in destforms:
|
|
5863
5891
|
prop = runt.model.prop(destform)
|
|
5864
5892
|
if prop is not None:
|
|
5893
|
+
# a form or prop name also matches the forms which inherit from it
|
|
5865
5894
|
if prop.isform:
|
|
5866
|
-
forms.
|
|
5895
|
+
forms.update(runt.model.getChildForms(destform))
|
|
5867
5896
|
else:
|
|
5868
|
-
|
|
5897
|
+
for cprop in runt.model.getChildProps(prop):
|
|
5898
|
+
formprops[cprop.form.name][cprop.name] = cprop
|
|
5869
5899
|
continue
|
|
5870
5900
|
|
|
5871
5901
|
formlist = runt.model.reqFormsByLook(destform, extra=self.kids[0].addExcInfo)
|
|
@@ -44,14 +44,7 @@ async def _getEmailType():
|
|
|
44
44
|
|
|
45
45
|
return _emailtype
|
|
46
46
|
|
|
47
|
-
async def
|
|
48
|
-
'''
|
|
49
|
-
Normalize an email address for use as a unique key via the inet:email type.
|
|
50
|
-
|
|
51
|
-
Returns the normalized form or None if the input is None or normalizes
|
|
52
|
-
to an empty string. Raises BadArg if the value is not a string or does
|
|
53
|
-
not parse as an email address.
|
|
54
|
-
'''
|
|
47
|
+
async def _normEmail(email):
|
|
55
48
|
if email is None:
|
|
56
49
|
return None
|
|
57
50
|
|
|
@@ -64,11 +57,37 @@ async def normEmail(email):
|
|
|
64
57
|
|
|
65
58
|
try:
|
|
66
59
|
etype = await _getEmailType()
|
|
67
|
-
|
|
60
|
+
return await etype.norm(valu)
|
|
68
61
|
except s_exc.BadTypeValu as e:
|
|
69
62
|
raise s_exc.BadArg(mesg=e.get('mesg'), name='email') from None
|
|
70
63
|
|
|
71
|
-
|
|
64
|
+
async def normEmail(email):
|
|
65
|
+
'''
|
|
66
|
+
Normalize an email address for use as a unique key via the inet:email type.
|
|
67
|
+
|
|
68
|
+
Returns the normalized form or None if the input is None or normalizes
|
|
69
|
+
to an empty string. Raises BadArg if the value is not a string or does
|
|
70
|
+
not parse as an email address.
|
|
71
|
+
'''
|
|
72
|
+
retn = await _normEmail(email)
|
|
73
|
+
if retn is None:
|
|
74
|
+
return None
|
|
75
|
+
|
|
76
|
+
return retn[0]
|
|
77
|
+
|
|
78
|
+
async def normEmailFqdn(email):
|
|
79
|
+
'''
|
|
80
|
+
Extract the normalized FQDN from an email address via the inet:email type.
|
|
81
|
+
|
|
82
|
+
Returns the normalized FQDN or None if the input is None or normalizes
|
|
83
|
+
to an empty string. Raises BadArg if the value is not a string or does
|
|
84
|
+
not parse as an email address.
|
|
85
|
+
'''
|
|
86
|
+
retn = await _normEmail(email)
|
|
87
|
+
if retn is None:
|
|
88
|
+
return None
|
|
89
|
+
|
|
90
|
+
return retn[1]['subs']['fqdn'][1]
|
|
72
91
|
|
|
73
92
|
@dataclasses.dataclass(slots=True)
|
|
74
93
|
class _allowedReason:
|
|
@@ -36,7 +36,7 @@ class Parser(argparse.ArgumentParser):
|
|
|
36
36
|
if message is not None:
|
|
37
37
|
self.outp.printf(message)
|
|
38
38
|
|
|
39
|
-
raise s_exc.ParserExit(mesg=message,
|
|
39
|
+
raise s_exc.ParserExit(mesg=message, exitcode=status)
|
|
40
40
|
|
|
41
41
|
def _print_message(self, text, fd=None):
|
|
42
42
|
'''
|
|
@@ -54,8 +54,8 @@ async def wrapmain(func, logconf=None): # pragma: no cover
|
|
|
54
54
|
try:
|
|
55
55
|
return await func(sys.argv[1:])
|
|
56
56
|
|
|
57
|
-
except s_exc.ParserExit:
|
|
58
|
-
return 1
|
|
57
|
+
except s_exc.ParserExit as e:
|
|
58
|
+
return e.get('exitcode', 1)
|
|
59
59
|
|
|
60
60
|
except Exception as e:
|
|
61
61
|
print(f'ERROR: {s_exc.reprexc(e)}')
|
|
@@ -21,6 +21,9 @@ PBKDF2_ITERATIONS = 310_000 # OWASP recommended value 20221004
|
|
|
21
21
|
|
|
22
22
|
DEFAULT_PTYP = PBKDF2
|
|
23
23
|
|
|
24
|
+
APIKEY_PREFIX = 'syn-'
|
|
25
|
+
APIKEY_PREFIX_SIZE = len(APIKEY_PREFIX)
|
|
26
|
+
|
|
24
27
|
def _getPbkdf2(passwd):
|
|
25
28
|
salt = os.urandom(32)
|
|
26
29
|
func_params = {'salt': salt,
|
|
@@ -130,11 +133,11 @@ async def generateApiKey(iden=None):
|
|
|
130
133
|
if not s_common.isguid(iden):
|
|
131
134
|
raise s_exc.CryptoErr(mesg=f'Invalid iden provided: {iden}, must be a guid.')
|
|
132
135
|
secv = s_common.guid()
|
|
133
|
-
key = base64.b64encode(s_common.uhex(iden) + s_common.uhex(secv), altchars=b'-_').decode('utf-8')
|
|
136
|
+
key = APIKEY_PREFIX + base64.b64encode(s_common.uhex(iden) + s_common.uhex(secv), altchars=b'-_').decode('utf-8')
|
|
134
137
|
shadow = await getShadowV2(secv)
|
|
135
138
|
return iden, key, shadow
|
|
136
139
|
|
|
137
|
-
def
|
|
140
|
+
def _parseApiKey(valu):
|
|
138
141
|
if '+' in valu or '/' in valu:
|
|
139
142
|
return False, 'Invalid character in API key.'
|
|
140
143
|
try:
|
|
@@ -144,3 +147,15 @@ def parseApiKey(valu):
|
|
|
144
147
|
if len(buf) != 32:
|
|
145
148
|
return False, f'Incorrect length, got {len(valu)}'
|
|
146
149
|
return True, (s_common.ehex(buf[:16]), s_common.ehex(buf[16:]))
|
|
150
|
+
|
|
151
|
+
def parseApiKey(valu):
|
|
152
|
+
# keys issued before APIKEY_PREFIX was added carry no prefix and must still parse.
|
|
153
|
+
# '-_' is the altchars alphabet, so a legacy key can itself begin with the prefix
|
|
154
|
+
# ('s', 'y', 'n', '-' are all valid altchars); fall back to the unprefixed parse
|
|
155
|
+
# rather than stripping unconditionally.
|
|
156
|
+
if valu.startswith(APIKEY_PREFIX):
|
|
157
|
+
isok, retn = _parseApiKey(valu[APIKEY_PREFIX_SIZE:])
|
|
158
|
+
if isok:
|
|
159
|
+
return True, retn
|
|
160
|
+
|
|
161
|
+
return _parseApiKey(valu)
|