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.

Files changed (628) hide show
  1. {synapse-2.195.1/synapse.egg-info → synapse-2.197.0}/PKG-INFO +1 -1
  2. {synapse-2.195.1 → synapse-2.197.0}/pyproject.toml +1 -1
  3. {synapse-2.195.1 → synapse-2.197.0}/synapse/axon.py +72 -5
  4. {synapse-2.195.1 → synapse-2.197.0}/synapse/common.py +23 -0
  5. {synapse-2.195.1 → synapse-2.197.0}/synapse/cortex.py +13 -8
  6. {synapse-2.195.1 → synapse-2.197.0}/synapse/cryotank.py +2 -2
  7. {synapse-2.195.1 → synapse-2.197.0}/synapse/daemon.py +1 -0
  8. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/aha.py +159 -4
  9. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/cell.py +133 -8
  10. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/config.py +3 -3
  11. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/jsonstor.py +2 -1
  12. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/modelrev.py +5 -1
  13. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/multislabseqn.py +2 -2
  14. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/nexus.py +4 -1
  15. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/reflect.py +4 -5
  16. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/schemas.py +478 -1
  17. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/snap.py +14 -7
  18. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/storm.py +12 -394
  19. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/aha.py +351 -1
  20. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/graph.py +0 -61
  21. synapse-2.197.0/synapse/lib/stormlib/index.py +52 -0
  22. synapse-2.197.0/synapse/lib/stormlib/utils.py +37 -0
  23. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormtypes.py +121 -1
  24. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/task.py +13 -2
  25. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/urlhelp.py +1 -1
  26. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/version.py +2 -2
  27. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/base.py +3 -0
  28. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/doc.py +62 -0
  29. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/infotech.py +55 -16
  30. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/orgs.py +20 -14
  31. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/risk.py +23 -10
  32. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/transport.py +8 -3
  33. {synapse-2.195.1 → synapse-2.197.0}/synapse/telepath.py +12 -0
  34. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_axon.py +23 -0
  35. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_common.py +28 -0
  36. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_datamodel.py +15 -0
  37. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_aha.py +201 -0
  38. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_boss.py +15 -6
  39. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_cell.py +104 -0
  40. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_jsonstor.py +1 -0
  41. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_modelrev.py +6 -0
  42. synapse-2.197.0/synapse/tests/test_lib_stormlib_aha.py +383 -0
  43. synapse-2.197.0/synapse/tests/test_lib_stormlib_index.py +39 -0
  44. synapse-2.197.0/synapse/tests/test_lib_stormlib_utils.py +14 -0
  45. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormtypes.py +90 -3
  46. synapse-2.197.0/synapse/tests/test_lib_task.py +75 -0
  47. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_base.py +2 -0
  48. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_doc.py +38 -0
  49. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_infotech.py +28 -1
  50. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_orgs.py +9 -0
  51. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_risk.py +2 -0
  52. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_transport.py +1 -0
  53. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_telepath.py +26 -0
  54. synapse-2.197.0/synapse/tests/test_tools_aha.py +364 -0
  55. synapse-2.197.0/synapse/tools/aha/mirror.py +193 -0
  56. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/changelog.py +32 -27
  57. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/genpkg.py +2 -2
  58. {synapse-2.195.1 → synapse-2.197.0/synapse.egg-info}/PKG-INFO +1 -1
  59. {synapse-2.195.1 → synapse-2.197.0}/synapse.egg-info/SOURCES.txt +5 -0
  60. synapse-2.195.1/synapse/tests/test_lib_stormlib_aha.py +0 -195
  61. synapse-2.195.1/synapse/tests/test_lib_task.py +0 -57
  62. synapse-2.195.1/synapse/tests/test_tools_aha.py +0 -172
  63. {synapse-2.195.1 → synapse-2.197.0}/LICENSE +0 -0
  64. {synapse-2.195.1 → synapse-2.197.0}/README.rst +0 -0
  65. {synapse-2.195.1 → synapse-2.197.0}/setup.cfg +0 -0
  66. {synapse-2.195.1 → synapse-2.197.0}/synapse/__init__.py +0 -0
  67. {synapse-2.195.1 → synapse-2.197.0}/synapse/cells.py +0 -0
  68. {synapse-2.195.1 → synapse-2.197.0}/synapse/cmds/__init__.py +0 -0
  69. {synapse-2.195.1 → synapse-2.197.0}/synapse/cmds/boss.py +0 -0
  70. {synapse-2.195.1 → synapse-2.197.0}/synapse/cmds/cortex.py +0 -0
  71. {synapse-2.195.1 → synapse-2.197.0}/synapse/cmds/hive.py +0 -0
  72. {synapse-2.195.1 → synapse-2.197.0}/synapse/data/__init__.py +0 -0
  73. {synapse-2.195.1 → synapse-2.197.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
  74. {synapse-2.195.1 → synapse-2.197.0}/synapse/data/attack-flow/README.md +0 -0
  75. {synapse-2.195.1 → synapse-2.197.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
  76. {synapse-2.195.1 → synapse-2.197.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA 00.crt +0 -0
  77. {synapse-2.195.1 → synapse-2.197.0}/synapse/data/certs/cas/The Vertex Project ROOT CA.crt +0 -0
  78. {synapse-2.195.1 → synapse-2.197.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA 00.crl +0 -0
  79. {synapse-2.195.1 → synapse-2.197.0}/synapse/data/certs/crls/The Vertex Project ROOT CA.crl +0 -0
  80. {synapse-2.195.1 → synapse-2.197.0}/synapse/data/iana.tlds.mpk +0 -0
  81. {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/README.md +0 -0
  82. {synapse-2.195.1 → synapse-2.197.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
  83. {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
  84. {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
  85. {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
  86. {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
  87. {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
  88. {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
  89. {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
  90. {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
  91. {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
  92. {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
  93. {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
  94. {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
  95. {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
  96. {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
  97. {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
  98. {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
  99. {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
  100. {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
  101. {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
  102. {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
  103. {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
  104. {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
  105. {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
  106. {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
  107. {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
  108. {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
  109. {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
  110. {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
  111. {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
  112. {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
  113. {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
  114. {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
  115. {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
  116. {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
  117. {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
  118. {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
  119. {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
  120. {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
  121. {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
  122. {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
  123. {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
  124. {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
  125. {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
  126. {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
  127. {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
  128. {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
  129. {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
  130. {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
  131. {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
  132. {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
  133. {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
  134. {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
  135. {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
  136. {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
  137. {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
  138. {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
  139. {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
  140. {synapse-2.195.1 → synapse-2.197.0}/synapse/datamodel.py +0 -0
  141. {synapse-2.195.1 → synapse-2.197.0}/synapse/exc.py +0 -0
  142. {synapse-2.195.1 → synapse-2.197.0}/synapse/glob.py +0 -0
  143. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/__init__.py +0 -0
  144. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/agenda.py +0 -0
  145. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/ast.py +0 -0
  146. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/auth.py +0 -0
  147. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/autodoc.py +0 -0
  148. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/base.py +0 -0
  149. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/boss.py +0 -0
  150. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/cache.py +0 -0
  151. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/certdir.py +0 -0
  152. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/chop.py +0 -0
  153. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/cli.py +0 -0
  154. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/cmd.py +0 -0
  155. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/cmdr.py +0 -0
  156. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/const.py +0 -0
  157. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/coro.py +0 -0
  158. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/crypto/__init__.py +0 -0
  159. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/crypto/coin.py +0 -0
  160. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/crypto/ecc.py +0 -0
  161. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/crypto/passwd.py +0 -0
  162. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/crypto/rsa.py +0 -0
  163. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/crypto/tinfoil.py +0 -0
  164. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/datfile.py +0 -0
  165. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/drive.py +0 -0
  166. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/dyndeps.py +0 -0
  167. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/encoding.py +0 -0
  168. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/gis.py +0 -0
  169. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/grammar.py +0 -0
  170. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/hashitem.py +0 -0
  171. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/hashset.py +0 -0
  172. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/health.py +0 -0
  173. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/hive.py +0 -0
  174. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/hiveauth.py +0 -0
  175. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/httpapi.py +0 -0
  176. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/ingest.py +0 -0
  177. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/interval.py +0 -0
  178. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/layer.py +0 -0
  179. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/link.py +0 -0
  180. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/lmdbslab.py +0 -0
  181. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/module.py +0 -0
  182. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/modules.py +0 -0
  183. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/msgpack.py +0 -0
  184. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/node.py +0 -0
  185. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/oauth.py +0 -0
  186. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/output.py +0 -0
  187. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/parser.py +0 -0
  188. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/platforms/__init__.py +0 -0
  189. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/platforms/common.py +0 -0
  190. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/platforms/darwin.py +0 -0
  191. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/platforms/freebsd.py +0 -0
  192. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/platforms/linux.py +0 -0
  193. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/platforms/windows.py +0 -0
  194. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/queue.py +0 -0
  195. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/ratelimit.py +0 -0
  196. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/rstorm.py +0 -0
  197. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/scope.py +0 -0
  198. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/scrape.py +0 -0
  199. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/share.py +0 -0
  200. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/slaboffs.py +0 -0
  201. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/slabseqn.py +0 -0
  202. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/spooled.py +0 -0
  203. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/storm.lark +0 -0
  204. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/storm_format.py +0 -0
  205. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormctrl.py +0 -0
  206. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormhttp.py +0 -0
  207. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/__init__.py +0 -0
  208. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/auth.py +0 -0
  209. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/backup.py +0 -0
  210. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/basex.py +0 -0
  211. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/cache.py +0 -0
  212. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/cell.py +0 -0
  213. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/compression.py +0 -0
  214. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/cortex.py +0 -0
  215. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/easyperm.py +0 -0
  216. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/env.py +0 -0
  217. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/ethereum.py +0 -0
  218. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/gen.py +0 -0
  219. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/gis.py +0 -0
  220. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/hashes.py +0 -0
  221. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/hex.py +0 -0
  222. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/imap.py +0 -0
  223. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/infosec.py +0 -0
  224. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/ipv6.py +0 -0
  225. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/iters.py +0 -0
  226. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/json.py +0 -0
  227. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/log.py +0 -0
  228. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/macro.py +0 -0
  229. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/math.py +0 -0
  230. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/mime.py +0 -0
  231. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/model.py +0 -0
  232. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/modelext.py +0 -0
  233. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/notifications.py +0 -0
  234. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/oauth.py +0 -0
  235. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/pack.py +0 -0
  236. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/project.py +0 -0
  237. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/random.py +0 -0
  238. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/scrape.py +0 -0
  239. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/smtp.py +0 -0
  240. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/spooled.py +0 -0
  241. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/stats.py +0 -0
  242. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/stix.py +0 -0
  243. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/storm.py +0 -0
  244. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/tabular.py +0 -0
  245. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/vault.py +0 -0
  246. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/version.py +0 -0
  247. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/xml.py +0 -0
  248. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormlib/yaml.py +0 -0
  249. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormsvc.py +0 -0
  250. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/stormwhois.py +0 -0
  251. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/structlog.py +0 -0
  252. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/thishost.py +0 -0
  253. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/thisplat.py +0 -0
  254. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/threads.py +0 -0
  255. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/time.py +0 -0
  256. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/trigger.py +0 -0
  257. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/types.py +0 -0
  258. {synapse-2.195.1 → synapse-2.197.0}/synapse/lib/view.py +0 -0
  259. {synapse-2.195.1 → synapse-2.197.0}/synapse/lookup/__init__.py +0 -0
  260. {synapse-2.195.1 → synapse-2.197.0}/synapse/lookup/cvss.py +0 -0
  261. {synapse-2.195.1 → synapse-2.197.0}/synapse/lookup/iana.py +0 -0
  262. {synapse-2.195.1 → synapse-2.197.0}/synapse/lookup/iso3166.py +0 -0
  263. {synapse-2.195.1 → synapse-2.197.0}/synapse/lookup/macho.py +0 -0
  264. {synapse-2.195.1 → synapse-2.197.0}/synapse/lookup/pe.py +0 -0
  265. {synapse-2.195.1 → synapse-2.197.0}/synapse/lookup/phonenum.py +0 -0
  266. {synapse-2.195.1 → synapse-2.197.0}/synapse/lookup/timezones.py +0 -0
  267. {synapse-2.195.1 → synapse-2.197.0}/synapse/mindmeld.py +0 -0
  268. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/__init__.py +0 -0
  269. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/auth.py +0 -0
  270. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/belief.py +0 -0
  271. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/biz.py +0 -0
  272. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/crypto.py +0 -0
  273. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/dns.py +0 -0
  274. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/economic.py +0 -0
  275. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/entity.py +0 -0
  276. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/files.py +0 -0
  277. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/geopol.py +0 -0
  278. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/geospace.py +0 -0
  279. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/gov/__init__.py +0 -0
  280. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/gov/cn.py +0 -0
  281. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/gov/intl.py +0 -0
  282. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/gov/us.py +0 -0
  283. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/inet.py +0 -0
  284. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/language.py +0 -0
  285. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/material.py +0 -0
  286. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/math.py +0 -0
  287. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/media.py +0 -0
  288. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/person.py +0 -0
  289. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/planning.py +0 -0
  290. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/proj.py +0 -0
  291. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/science.py +0 -0
  292. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/syn.py +0 -0
  293. {synapse-2.195.1 → synapse-2.197.0}/synapse/models/telco.py +0 -0
  294. {synapse-2.195.1 → synapse-2.197.0}/synapse/servers/__init__.py +0 -0
  295. {synapse-2.195.1 → synapse-2.197.0}/synapse/servers/aha.py +0 -0
  296. {synapse-2.195.1 → synapse-2.197.0}/synapse/servers/axon.py +0 -0
  297. {synapse-2.195.1 → synapse-2.197.0}/synapse/servers/cell.py +0 -0
  298. {synapse-2.195.1 → synapse-2.197.0}/synapse/servers/cortex.py +0 -0
  299. {synapse-2.195.1 → synapse-2.197.0}/synapse/servers/cryotank.py +0 -0
  300. {synapse-2.195.1 → synapse-2.197.0}/synapse/servers/jsonstor.py +0 -0
  301. {synapse-2.195.1 → synapse-2.197.0}/synapse/servers/stemcell.py +0 -0
  302. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/__init__.py +0 -0
  303. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
  304. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/__init__.py +0 -0
  305. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/aha/certs/cas/synapse.crt +0 -0
  306. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/aha/certs/cas/synapse.key +0 -0
  307. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.crt +0 -0
  308. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.key +0 -0
  309. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/aha/certs/users/root@synapse.crt +0 -0
  310. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/aha/certs/users/root@synapse.key +0 -0
  311. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
  312. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
  313. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/certdir/cas/ca.crt +0 -0
  314. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/certdir/cas/ca.key +0 -0
  315. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/certdir/hosts/localhost.crt +0 -0
  316. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/certdir/hosts/localhost.key +0 -0
  317. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/certdir/users/root.crt +0 -0
  318. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/certdir/users/root.key +0 -0
  319. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/certdir/users/user.crt +0 -0
  320. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/certdir/users/user.key +0 -0
  321. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/changelog/model_2.176.0_16ee721a6b7221344eaf946c3ab4602dda546b1a.yaml.gz +0 -0
  322. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/changelog/model_2.176.0_2a25c58bbd344716cd7cbc3f4304d8925b0f4ef2.yaml.gz +0 -0
  323. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/cpedata.json +0 -0
  324. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/rstorm/httpresp1.json +0 -0
  325. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/rstorm/httpresp2.json +0 -0
  326. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/rstorm/httpresp3.json +0 -0
  327. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/rstorm/httprespmulti.yaml +0 -0
  328. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/rstorm/testsvc.py +0 -0
  329. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stix_export/basic.json +0 -0
  330. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stix_export/custom0.json +0 -0
  331. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stix_export/risk0.json +0 -0
  332. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stix_import/apt1.json +0 -0
  333. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
  334. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
  335. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
  336. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
  337. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
  338. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormcov/pragma-nocov.storm +0 -0
  339. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormcov/spin.storm +0 -0
  340. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
  341. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormmod/common +0 -0
  342. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
  343. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
  344. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
  345. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
  346. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
  347. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
  348. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/dotstorm/storm/commands/dotstorm.bar.storm +0 -0
  349. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/dotstorm/storm/modules/dotstorm.foo.storm +0 -0
  350. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/nocontent.yaml +0 -0
  351. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
  352. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
  353. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
  354. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/notitle.yaml +0 -0
  355. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
  356. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD +0 -0
  357. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz +0 -0
  358. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd +0 -0
  359. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/storm/modules/apimod +0 -0
  360. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/storm/modules/testmod +0 -0
  361. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/testpkg.yaml +0 -0
  362. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
  363. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
  364. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
  365. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/test.dat +0 -0
  366. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/files/testcore/cell.yaml +0 -0
  367. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/nopmod.py +0 -0
  368. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_cmds_boss.py +0 -0
  369. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_cmds_cortex.py +0 -0
  370. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_cmds_hive.py +0 -0
  371. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_cortex.py +0 -0
  372. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_cryotank.py +0 -0
  373. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_daemon.py +0 -0
  374. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_data.py +0 -0
  375. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_exc.py +0 -0
  376. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_glob.py +0 -0
  377. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_init.py +0 -0
  378. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_agenda.py +0 -0
  379. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_ast.py +0 -0
  380. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_auth.py +0 -0
  381. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_autodoc.py +0 -0
  382. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_base.py +0 -0
  383. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_cache.py +0 -0
  384. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_certdir.py +0 -0
  385. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_chop.py +0 -0
  386. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_cli.py +0 -0
  387. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_config.py +0 -0
  388. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_const.py +0 -0
  389. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_coro.py +0 -0
  390. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
  391. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
  392. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_crypto_passwd.py +0 -0
  393. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
  394. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_datfile.py +0 -0
  395. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_dyndeps.py +0 -0
  396. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_encoding.py +0 -0
  397. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_gis.py +0 -0
  398. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_grammar.py +0 -0
  399. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_hashitem.py +0 -0
  400. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_hashset.py +0 -0
  401. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_health.py +0 -0
  402. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_hive.py +0 -0
  403. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_httpapi.py +0 -0
  404. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_interval.py +0 -0
  405. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_layer.py +0 -0
  406. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_link.py +0 -0
  407. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_lmdbslab.py +0 -0
  408. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_module.py +0 -0
  409. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_msgpack.py +0 -0
  410. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
  411. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_nexus.py +0 -0
  412. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_node.py +0 -0
  413. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_output.py +0 -0
  414. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
  415. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_queue.py +0 -0
  416. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_ratelimit.py +0 -0
  417. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_reflect.py +0 -0
  418. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_rstorm.py +0 -0
  419. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_scope.py +0 -0
  420. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_scrape.py +0 -0
  421. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_slaboffs.py +0 -0
  422. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_slabseqn.py +0 -0
  423. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_snap.py +0 -0
  424. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_spooled.py +0 -0
  425. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_storm.py +0 -0
  426. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_storm_format.py +0 -0
  427. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormctrl.py +0 -0
  428. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormhttp.py +0 -0
  429. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_auth.py +0 -0
  430. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_backup.py +0 -0
  431. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
  432. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_cache.py +0 -0
  433. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_cell.py +0 -0
  434. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
  435. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_cortex.py +0 -0
  436. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
  437. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_env.py +0 -0
  438. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
  439. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
  440. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
  441. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
  442. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
  443. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
  444. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
  445. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
  446. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
  447. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
  448. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
  449. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_macro.py +0 -0
  450. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
  451. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_model.py +0 -0
  452. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
  453. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
  454. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
  455. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
  456. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
  457. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
  458. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_spooled.py +0 -0
  459. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_stats.py +0 -0
  460. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_stix.py +0 -0
  461. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_storm.py +0 -0
  462. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_tabular.py +0 -0
  463. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
  464. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
  465. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
  466. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormsvc.py +0 -0
  467. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_stormwhois.py +0 -0
  468. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_structlog.py +0 -0
  469. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_thishost.py +0 -0
  470. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_time.py +0 -0
  471. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_trigger.py +0 -0
  472. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_types.py +0 -0
  473. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_urlhelp.py +0 -0
  474. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_version.py +0 -0
  475. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lib_view.py +0 -0
  476. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lookup_iso3166.py +0 -0
  477. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_lookup_phonenum.py +0 -0
  478. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_mindmeld.py +0 -0
  479. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_auth.py +0 -0
  480. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_belief.py +0 -0
  481. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_biz.py +0 -0
  482. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_crypto.py +0 -0
  483. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_dns.py +0 -0
  484. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_economic.py +0 -0
  485. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_files.py +0 -0
  486. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_geopol.py +0 -0
  487. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_geospace.py +0 -0
  488. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_gov_cn.py +0 -0
  489. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_gov_intl.py +0 -0
  490. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_gov_us.py +0 -0
  491. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_inet.py +0 -0
  492. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_language.py +0 -0
  493. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_material.py +0 -0
  494. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_math.py +0 -0
  495. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_media.py +0 -0
  496. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_person.py +0 -0
  497. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_planning.py +0 -0
  498. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_proj.py +0 -0
  499. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_science.py +0 -0
  500. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_syn.py +0 -0
  501. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_model_telco.py +0 -0
  502. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_servers_axon.py +0 -0
  503. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_servers_cortex.py +0 -0
  504. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_servers_cryotank.py +0 -0
  505. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_servers_stemcell.py +0 -0
  506. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_servers_univ.py +0 -0
  507. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_apikey.py +0 -0
  508. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_autodoc.py +0 -0
  509. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_axon2axon.py +0 -0
  510. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_backup.py +0 -0
  511. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_cellauth.py +0 -0
  512. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_changelog.py +0 -0
  513. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_cryo_cat.py +0 -0
  514. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_cryo_list.py +0 -0
  515. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_csvtool.py +0 -0
  516. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_docker_validate.py +0 -0
  517. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_easycert.py +0 -0
  518. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_feed.py +0 -0
  519. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_genpkg.py +0 -0
  520. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_guid.py +0 -0
  521. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_healthcheck.py +0 -0
  522. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_hiveload.py +0 -0
  523. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_hivesave.py +0 -0
  524. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_json2mpk.py +0 -0
  525. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_livebackup.py +0 -0
  526. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_modrole.py +0 -0
  527. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_moduser.py +0 -0
  528. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_promote.py +0 -0
  529. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_pullfile.py +0 -0
  530. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_pushfile.py +0 -0
  531. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_reload.py +0 -0
  532. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_rstorm.py +0 -0
  533. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_snapshot.py +0 -0
  534. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_tools_storm.py +0 -0
  535. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_utils.py +0 -0
  536. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_utils_getrefs.py +0 -0
  537. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/test_utils_stormcov.py +0 -0
  538. {synapse-2.195.1 → synapse-2.197.0}/synapse/tests/utils.py +0 -0
  539. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/__init__.py +0 -0
  540. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/aha/__init__.py +0 -0
  541. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/aha/clone.py +0 -0
  542. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/aha/easycert.py +0 -0
  543. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/aha/enroll.py +0 -0
  544. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/aha/list.py +0 -0
  545. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/aha/provision/__init__.py +0 -0
  546. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/aha/provision/service.py +0 -0
  547. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/aha/provision/user.py +0 -0
  548. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/apikey.py +0 -0
  549. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/autodoc.py +0 -0
  550. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/axon2axon.py +0 -0
  551. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/backup.py +0 -0
  552. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/cellauth.py +0 -0
  553. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/cmdr.py +0 -0
  554. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/cryo/__init__.py +0 -0
  555. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/cryo/cat.py +0 -0
  556. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/cryo/list.py +0 -0
  557. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/csvtool.py +0 -0
  558. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/docker/__init__.py +0 -0
  559. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/docker/validate.py +0 -0
  560. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/easycert.py +0 -0
  561. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/feed.py +0 -0
  562. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/guid.py +0 -0
  563. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/healthcheck.py +0 -0
  564. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/hive/__init__.py +0 -0
  565. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/hive/load.py +0 -0
  566. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/hive/save.py +0 -0
  567. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/json2mpk.py +0 -0
  568. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/livebackup.py +0 -0
  569. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/modrole.py +0 -0
  570. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/moduser.py +0 -0
  571. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/promote.py +0 -0
  572. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/pullfile.py +0 -0
  573. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/pushfile.py +0 -0
  574. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/reload.py +0 -0
  575. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/rstorm.py +0 -0
  576. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/snapshot.py +0 -0
  577. {synapse-2.195.1 → synapse-2.197.0}/synapse/tools/storm.py +0 -0
  578. {synapse-2.195.1 → synapse-2.197.0}/synapse/utils/__init__.py +0 -0
  579. {synapse-2.195.1 → synapse-2.197.0}/synapse/utils/getrefs.py +0 -0
  580. {synapse-2.195.1 → synapse-2.197.0}/synapse/utils/stormcov/__init__.py +0 -0
  581. {synapse-2.195.1 → synapse-2.197.0}/synapse/utils/stormcov/plugin.py +0 -0
  582. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/__init__.py +0 -0
  583. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cashaddress/LICENSE +0 -0
  584. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cashaddress/__init__.py +0 -0
  585. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cashaddress/base58.py +0 -0
  586. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cashaddress/convert.py +0 -0
  587. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cashaddress/crypto.py +0 -0
  588. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
  589. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
  590. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/LICENSE +0 -0
  591. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/__init__.py +0 -0
  592. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/__init__.py +0 -0
  593. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/email/__init__.py +0 -0
  594. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/email/_parseaddr.py +0 -0
  595. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/email/utils.py +0 -0
  596. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/http/__init__.py +0 -0
  597. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/http/cookies.py +0 -0
  598. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/ipaddress.py +0 -0
  599. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/test/__init__.py +0 -0
  600. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/test/support/__init__.py +0 -0
  601. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/test/test_email/__init__.py +0 -0
  602. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/test/test_email/test_email.py +0 -0
  603. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/test/test_email/test_utils.py +0 -0
  604. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/test/test_http_cookies.py +0 -0
  605. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/cpython/lib/test/test_ipaddress.py +0 -0
  606. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
  607. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
  608. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
  609. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
  610. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
  611. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
  612. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/utils.py +0 -0
  613. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/LICENSE +0 -0
  614. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/__init__.py +0 -0
  615. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/constants.py +0 -0
  616. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
  617. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
  618. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
  619. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
  620. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
  621. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
  622. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
  623. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
  624. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
  625. {synapse-2.195.1 → synapse-2.197.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
  626. {synapse-2.195.1 → synapse-2.197.0}/synapse.egg-info/dependency_links.txt +0 -0
  627. {synapse-2.195.1 → synapse-2.197.0}/synapse.egg-info/requires.txt +0 -0
  628. {synapse-2.195.1 → synapse-2.197.0}/synapse.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: synapse
3
- Version: 2.195.1
3
+ Version: 2.197.0
4
4
  Summary: Synapse Intelligence Analysis Framework
5
5
  Author-email: The Vertex Project LLC <root@vertex.link>
6
6
  License: Apache License 2.0
@@ -4,7 +4,7 @@ build-backend = 'setuptools.build_meta'
4
4
 
5
5
  [project]
6
6
  name = 'synapse'
7
- version = '2.195.1'
7
+ version = '2.197.0'
8
8
  authors = [
9
9
  { name = 'The Vertex Project LLC', email = 'root@vertex.link'},
10
10
  ]
@@ -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
- s_storm.reqValidPermDef(pdef)
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
- s_stormlib_graph.reqValidGdef(gdef)
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
- s_stormlib_graph.reqValidGdef(gdef)
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
- s_stormlib_graph.reqValidGdef(gdef)
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
- s_stormlib_graph.reqValidGdef(gdef)
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
- s_storm.reqValidPkgdef(pkgdef)
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
- s_storm.reqValidPermDef(pdef)
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
- s_storm.reqValidDdef(ddef)
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.storm as s_storm
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
- s_storm.reqValidPermDef(pdef)
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
- # TODO plumb using a remote jsonstor?
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