synapse 2.215.0__tar.gz → 2.216.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 (654) hide show
  1. {synapse-2.215.0/synapse.egg-info → synapse-2.216.0}/PKG-INFO +1 -1
  2. {synapse-2.215.0 → synapse-2.216.0}/pyproject.toml +6 -1
  3. {synapse-2.215.0 → synapse-2.216.0}/synapse/cortex.py +16 -1
  4. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/cell.py +12 -0
  5. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/cmd.py +6 -2
  6. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/layer.py +10 -5
  7. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/schemas.py +9 -2
  8. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/snap.py +15 -5
  9. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/storm.py +1 -1
  10. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/types.py +3 -0
  11. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/version.py +2 -2
  12. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/view.py +16 -7
  13. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/inet.py +7 -1
  14. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/risk.py +2 -0
  15. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_cortex.py +262 -0
  16. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_auth.py +2 -0
  17. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_storm.py +52 -1
  18. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormsvc.py +2 -2
  19. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_types.py +6 -0
  20. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_inet.py +2 -0
  21. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_cryo_cat.py +3 -8
  22. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_storm.py +3 -2
  23. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/utils.py +2 -0
  24. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/aha/clone.py +3 -13
  25. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/aha/easycert.py +5 -18
  26. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/aha/enroll.py +3 -12
  27. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/aha/list.py +2 -15
  28. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/aha/mirror.py +3 -14
  29. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/aha/provision/service.py +3 -13
  30. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/aha/provision/user.py +3 -12
  31. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/apikey.py +3 -13
  32. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/autodoc.py +7 -19
  33. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/axon2axon.py +1 -9
  34. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/cellauth.py +5 -14
  35. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/changelog.py +12 -16
  36. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/cmdr.py +2 -6
  37. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/cryo/cat.py +5 -15
  38. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/cryo/list.py +3 -10
  39. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/csvtool.py +40 -49
  40. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/demote.py +1 -6
  41. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/docker/validate.py +0 -1
  42. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/easycert.py +3 -8
  43. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/feed.py +7 -18
  44. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/genpkg.py +3 -12
  45. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/guid.py +4 -6
  46. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/healthcheck.py +4 -11
  47. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/json2mpk.py +1 -5
  48. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/livebackup.py +3 -13
  49. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/modrole.py +3 -12
  50. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/moduser.py +3 -12
  51. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/pkgs/gendocs.py +1 -1
  52. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/promote.py +3 -13
  53. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/pullfile.py +6 -18
  54. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/pushfile.py +6 -18
  55. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/reload.py +5 -14
  56. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/rstorm.py +4 -12
  57. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/shutdown.py +1 -2
  58. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/snapshot.py +3 -14
  59. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/storm.py +4 -12
  60. {synapse-2.215.0 → synapse-2.216.0/synapse.egg-info}/PKG-INFO +1 -1
  61. {synapse-2.215.0 → synapse-2.216.0}/LICENSE +0 -0
  62. {synapse-2.215.0 → synapse-2.216.0}/README.rst +0 -0
  63. {synapse-2.215.0 → synapse-2.216.0}/setup.cfg +0 -0
  64. {synapse-2.215.0 → synapse-2.216.0}/synapse/__init__.py +0 -0
  65. {synapse-2.215.0 → synapse-2.216.0}/synapse/axon.py +0 -0
  66. {synapse-2.215.0 → synapse-2.216.0}/synapse/cells.py +0 -0
  67. {synapse-2.215.0 → synapse-2.216.0}/synapse/cmds/__init__.py +0 -0
  68. {synapse-2.215.0 → synapse-2.216.0}/synapse/cmds/boss.py +0 -0
  69. {synapse-2.215.0 → synapse-2.216.0}/synapse/cmds/cortex.py +0 -0
  70. {synapse-2.215.0 → synapse-2.216.0}/synapse/cmds/hive.py +0 -0
  71. {synapse-2.215.0 → synapse-2.216.0}/synapse/common.py +0 -0
  72. {synapse-2.215.0 → synapse-2.216.0}/synapse/cryotank.py +0 -0
  73. {synapse-2.215.0 → synapse-2.216.0}/synapse/daemon.py +0 -0
  74. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/__init__.py +0 -0
  75. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
  76. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/attack-flow/README.md +0 -0
  77. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
  78. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA 00.crt +0 -0
  79. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/certs/cas/The Vertex Project ROOT CA.crt +0 -0
  80. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA 00.crl +0 -0
  81. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/certs/crls/The Vertex Project ROOT CA.crl +0 -0
  82. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/iana.tlds.mpk +0 -0
  83. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/iana.uris.mpk +0 -0
  84. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/README.md +0 -0
  85. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
  86. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/binary.json +0 -0
  87. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/bundle.json +0 -0
  88. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/core.json +0 -0
  89. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/cyber-observable-core.json +0 -0
  90. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/dictionary.json +0 -0
  91. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension-definition.json +0 -0
  92. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension.json +0 -0
  93. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/external-reference.json +0 -0
  94. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/granular-marking.json +0 -0
  95. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hashes-type.json +0 -0
  96. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hex.json +0 -0
  97. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/identifier.json +0 -0
  98. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/kill-chain-phase.json +0 -0
  99. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/language-content.json +0 -0
  100. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/marking-definition.json +0 -0
  101. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/properties.json +0 -0
  102. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/timestamp.json +0 -0
  103. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/url-regex.json +0 -0
  104. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/artifact.json +0 -0
  105. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/autonomous-system.json +0 -0
  106. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/directory.json +0 -0
  107. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/domain-name.json +0 -0
  108. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-addr.json +0 -0
  109. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-message.json +0 -0
  110. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/file.json +0 -0
  111. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv4-addr.json +0 -0
  112. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv6-addr.json +0 -0
  113. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mac-addr.json +0 -0
  114. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mutex.json +0 -0
  115. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/network-traffic.json +0 -0
  116. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/process.json +0 -0
  117. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/software.json +0 -0
  118. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/url.json +0 -0
  119. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/user-account.json +0 -0
  120. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/windows-registry-key.json +0 -0
  121. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/x509-certificate.json +0 -0
  122. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/attack-pattern.json +0 -0
  123. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/campaign.json +0 -0
  124. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/course-of-action.json +0 -0
  125. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/grouping.json +0 -0
  126. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/identity.json +0 -0
  127. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/incident.json +0 -0
  128. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/indicator.json +0 -0
  129. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/infrastructure.json +0 -0
  130. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/intrusion-set.json +0 -0
  131. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/location.json +0 -0
  132. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware-analysis.json +0 -0
  133. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware.json +0 -0
  134. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/note.json +0 -0
  135. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/observed-data.json +0 -0
  136. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/opinion.json +0 -0
  137. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/report.json +0 -0
  138. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/threat-actor.json +0 -0
  139. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/tool.json +0 -0
  140. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/vulnerability.json +0 -0
  141. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/relationship.json +0 -0
  142. {synapse-2.215.0 → synapse-2.216.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/sighting.json +0 -0
  143. {synapse-2.215.0 → synapse-2.216.0}/synapse/datamodel.py +0 -0
  144. {synapse-2.215.0 → synapse-2.216.0}/synapse/exc.py +0 -0
  145. {synapse-2.215.0 → synapse-2.216.0}/synapse/glob.py +0 -0
  146. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/__init__.py +0 -0
  147. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/agenda.py +0 -0
  148. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/aha.py +0 -0
  149. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/ast.py +0 -0
  150. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/auth.py +0 -0
  151. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/autodoc.py +0 -0
  152. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/base.py +0 -0
  153. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/boss.py +0 -0
  154. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/cache.py +0 -0
  155. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/certdir.py +0 -0
  156. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/chop.py +0 -0
  157. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/cli.py +0 -0
  158. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/cmdr.py +0 -0
  159. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/config.py +0 -0
  160. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/const.py +0 -0
  161. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/coro.py +0 -0
  162. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/crypto/__init__.py +0 -0
  163. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/crypto/coin.py +0 -0
  164. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/crypto/ecc.py +0 -0
  165. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/crypto/passwd.py +0 -0
  166. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/crypto/rsa.py +0 -0
  167. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/crypto/tinfoil.py +0 -0
  168. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/datfile.py +0 -0
  169. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/drive.py +0 -0
  170. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/dyndeps.py +0 -0
  171. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/encoding.py +0 -0
  172. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/gis.py +0 -0
  173. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/grammar.py +0 -0
  174. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/hashitem.py +0 -0
  175. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/hashset.py +0 -0
  176. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/health.py +0 -0
  177. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/hive.py +0 -0
  178. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/httpapi.py +0 -0
  179. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/ingest.py +0 -0
  180. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/interval.py +0 -0
  181. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/json.py +0 -0
  182. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/jsonstor.py +0 -0
  183. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/link.py +0 -0
  184. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/lmdbslab.py +0 -0
  185. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/modelrev.py +0 -0
  186. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/module.py +0 -0
  187. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/modules.py +0 -0
  188. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/msgpack.py +0 -0
  189. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/multislabseqn.py +0 -0
  190. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/nexus.py +0 -0
  191. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/node.py +0 -0
  192. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/oauth.py +0 -0
  193. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/output.py +0 -0
  194. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/parser.py +0 -0
  195. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/platforms/__init__.py +0 -0
  196. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/platforms/common.py +0 -0
  197. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/platforms/darwin.py +0 -0
  198. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/platforms/freebsd.py +0 -0
  199. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/platforms/linux.py +0 -0
  200. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/platforms/windows.py +0 -0
  201. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/queue.py +0 -0
  202. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/ratelimit.py +0 -0
  203. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/reflect.py +0 -0
  204. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/rstorm.py +0 -0
  205. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/scope.py +0 -0
  206. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/scrape.py +0 -0
  207. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/share.py +0 -0
  208. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/slaboffs.py +0 -0
  209. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/slabseqn.py +0 -0
  210. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/spooled.py +0 -0
  211. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/storm.lark +0 -0
  212. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/storm_format.py +0 -0
  213. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormctrl.py +0 -0
  214. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormhttp.py +0 -0
  215. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/__init__.py +0 -0
  216. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/aha.py +0 -0
  217. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/auth.py +0 -0
  218. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/backup.py +0 -0
  219. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/basex.py +0 -0
  220. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/cache.py +0 -0
  221. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/cell.py +0 -0
  222. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/compression.py +0 -0
  223. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/cortex.py +0 -0
  224. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/easyperm.py +0 -0
  225. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/env.py +0 -0
  226. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/ethereum.py +0 -0
  227. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/gen.py +0 -0
  228. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/gis.py +0 -0
  229. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/graph.py +0 -0
  230. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/hashes.py +0 -0
  231. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/hex.py +0 -0
  232. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/imap.py +0 -0
  233. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/index.py +0 -0
  234. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/infosec.py +0 -0
  235. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/ipv6.py +0 -0
  236. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/iters.py +0 -0
  237. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/json.py +0 -0
  238. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/log.py +0 -0
  239. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/macro.py +0 -0
  240. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/math.py +0 -0
  241. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/mime.py +0 -0
  242. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/model.py +0 -0
  243. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/modelext.py +0 -0
  244. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/notifications.py +0 -0
  245. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/oauth.py +0 -0
  246. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/pack.py +0 -0
  247. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/project.py +0 -0
  248. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/random.py +0 -0
  249. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/scrape.py +0 -0
  250. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/smtp.py +0 -0
  251. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/spooled.py +0 -0
  252. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/stats.py +0 -0
  253. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/stix.py +0 -0
  254. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/storm.py +0 -0
  255. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/tabular.py +0 -0
  256. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/utils.py +0 -0
  257. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/vault.py +0 -0
  258. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/version.py +0 -0
  259. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/xml.py +0 -0
  260. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormlib/yaml.py +0 -0
  261. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormsvc.py +0 -0
  262. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormtypes.py +0 -0
  263. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/stormwhois.py +0 -0
  264. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/structlog.py +0 -0
  265. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/task.py +0 -0
  266. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/thishost.py +0 -0
  267. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/thisplat.py +0 -0
  268. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/threads.py +0 -0
  269. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/time.py +0 -0
  270. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/trigger.py +0 -0
  271. {synapse-2.215.0 → synapse-2.216.0}/synapse/lib/urlhelp.py +0 -0
  272. {synapse-2.215.0 → synapse-2.216.0}/synapse/lookup/__init__.py +0 -0
  273. {synapse-2.215.0 → synapse-2.216.0}/synapse/lookup/cvss.py +0 -0
  274. {synapse-2.215.0 → synapse-2.216.0}/synapse/lookup/iana.py +0 -0
  275. {synapse-2.215.0 → synapse-2.216.0}/synapse/lookup/iso3166.py +0 -0
  276. {synapse-2.215.0 → synapse-2.216.0}/synapse/lookup/macho.py +0 -0
  277. {synapse-2.215.0 → synapse-2.216.0}/synapse/lookup/pe.py +0 -0
  278. {synapse-2.215.0 → synapse-2.216.0}/synapse/lookup/phonenum.py +0 -0
  279. {synapse-2.215.0 → synapse-2.216.0}/synapse/lookup/timezones.py +0 -0
  280. {synapse-2.215.0 → synapse-2.216.0}/synapse/mindmeld.py +0 -0
  281. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/__init__.py +0 -0
  282. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/auth.py +0 -0
  283. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/base.py +0 -0
  284. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/belief.py +0 -0
  285. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/biz.py +0 -0
  286. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/crypto.py +0 -0
  287. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/dns.py +0 -0
  288. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/doc.py +0 -0
  289. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/economic.py +0 -0
  290. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/entity.py +0 -0
  291. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/files.py +0 -0
  292. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/geopol.py +0 -0
  293. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/geospace.py +0 -0
  294. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/gov/__init__.py +0 -0
  295. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/gov/cn.py +0 -0
  296. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/gov/intl.py +0 -0
  297. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/gov/us.py +0 -0
  298. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/infotech.py +0 -0
  299. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/language.py +0 -0
  300. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/material.py +0 -0
  301. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/math.py +0 -0
  302. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/media.py +0 -0
  303. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/orgs.py +0 -0
  304. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/person.py +0 -0
  305. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/planning.py +0 -0
  306. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/proj.py +0 -0
  307. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/science.py +0 -0
  308. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/syn.py +0 -0
  309. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/telco.py +0 -0
  310. {synapse-2.215.0 → synapse-2.216.0}/synapse/models/transport.py +0 -0
  311. {synapse-2.215.0 → synapse-2.216.0}/synapse/servers/__init__.py +0 -0
  312. {synapse-2.215.0 → synapse-2.216.0}/synapse/servers/aha.py +0 -0
  313. {synapse-2.215.0 → synapse-2.216.0}/synapse/servers/axon.py +0 -0
  314. {synapse-2.215.0 → synapse-2.216.0}/synapse/servers/cell.py +0 -0
  315. {synapse-2.215.0 → synapse-2.216.0}/synapse/servers/cortex.py +0 -0
  316. {synapse-2.215.0 → synapse-2.216.0}/synapse/servers/cryotank.py +0 -0
  317. {synapse-2.215.0 → synapse-2.216.0}/synapse/servers/jsonstor.py +0 -0
  318. {synapse-2.215.0 → synapse-2.216.0}/synapse/servers/stemcell.py +0 -0
  319. {synapse-2.215.0 → synapse-2.216.0}/synapse/telepath.py +0 -0
  320. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/__init__.py +0 -0
  321. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
  322. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/__init__.py +0 -0
  323. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/aha/certs/cas/synapse.crt +0 -0
  324. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/aha/certs/cas/synapse.key +0 -0
  325. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.crt +0 -0
  326. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/aha/certs/hosts/00.aha.loop.vertex.link.key +0 -0
  327. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/aha/certs/users/root@synapse.crt +0 -0
  328. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/aha/certs/users/root@synapse.key +0 -0
  329. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
  330. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
  331. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/certdir/cas/ca.crt +0 -0
  332. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/certdir/cas/ca.key +0 -0
  333. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/certdir/hosts/localhost.crt +0 -0
  334. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/certdir/hosts/localhost.key +0 -0
  335. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/certdir/users/root.crt +0 -0
  336. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/certdir/users/root.key +0 -0
  337. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/certdir/users/user.crt +0 -0
  338. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/certdir/users/user.key +0 -0
  339. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/changelog/model_2.176.0_16ee721a6b7221344eaf946c3ab4602dda546b1a.yaml.gz +0 -0
  340. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/changelog/model_2.176.0_2a25c58bbd344716cd7cbc3f4304d8925b0f4ef2.yaml.gz +0 -0
  341. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/cpedata.json +0 -0
  342. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/rstorm/httpresp1.json +0 -0
  343. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/rstorm/httpresp2.json +0 -0
  344. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/rstorm/httpresp3.json +0 -0
  345. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/rstorm/httprespmulti.yaml +0 -0
  346. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/rstorm/testsvc.py +0 -0
  347. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stix_export/basic.json +0 -0
  348. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stix_export/custom0.json +0 -0
  349. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stix_export/risk0.json +0 -0
  350. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stix_import/apt1.json +0 -0
  351. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
  352. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
  353. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
  354. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
  355. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
  356. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormcov/pragma-nocov.storm +0 -0
  357. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormcov/spin.storm +0 -0
  358. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
  359. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormmod/common +0 -0
  360. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
  361. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
  362. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/badendpoints.yaml +0 -0
  363. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
  364. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
  365. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
  366. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +0 -0
  367. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/dotstorm/storm/commands/dotstorm.bar.storm +0 -0
  368. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/dotstorm/storm/modules/dotstorm.foo.storm +0 -0
  369. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/nocontent.yaml +0 -0
  370. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
  371. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
  372. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
  373. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/notitle.yaml +0 -0
  374. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
  375. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD +0 -0
  376. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz +0 -0
  377. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd +0 -0
  378. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/storm/modules/apimod +0 -0
  379. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/storm/modules/testmod +0 -0
  380. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/testpkg.yaml +0 -0
  381. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
  382. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
  383. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
  384. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/test.dat +0 -0
  385. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/testcore/cell.yaml +0 -0
  386. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/testpkg_build_docs/docs/bar.rst +0 -0
  387. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/testpkg_build_docs/docs/foo.rst +0 -0
  388. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/testpkg_build_docs/storm/commands/testcmd.storm +0 -0
  389. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/testpkg_build_docs/storm/modules/apimod.storm +0 -0
  390. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/testpkg_build_docs/storm/modules/testmod.storm +0 -0
  391. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/testpkg_build_docs/storm/testcmd.storm +0 -0
  392. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/files/testpkg_build_docs/testpkg.yaml +0 -0
  393. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/nopmod.py +0 -0
  394. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_axon.py +0 -0
  395. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_cmds_boss.py +0 -0
  396. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_cmds_cortex.py +0 -0
  397. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_cmds_hive.py +0 -0
  398. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_common.py +0 -0
  399. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_cryotank.py +0 -0
  400. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_daemon.py +0 -0
  401. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_data.py +0 -0
  402. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_datamodel.py +0 -0
  403. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_exc.py +0 -0
  404. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_glob.py +0 -0
  405. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_init.py +0 -0
  406. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_agenda.py +0 -0
  407. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_aha.py +0 -0
  408. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_ast.py +0 -0
  409. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_autodoc.py +0 -0
  410. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_base.py +0 -0
  411. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_boss.py +0 -0
  412. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_cache.py +0 -0
  413. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_cell.py +0 -0
  414. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_certdir.py +0 -0
  415. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_chop.py +0 -0
  416. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_cli.py +0 -0
  417. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_config.py +0 -0
  418. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_const.py +0 -0
  419. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_coro.py +0 -0
  420. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
  421. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
  422. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_crypto_passwd.py +0 -0
  423. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
  424. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_datfile.py +0 -0
  425. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_dyndeps.py +0 -0
  426. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_encoding.py +0 -0
  427. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_gis.py +0 -0
  428. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_grammar.py +0 -0
  429. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_hashitem.py +0 -0
  430. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_hashset.py +0 -0
  431. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_health.py +0 -0
  432. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_hive.py +0 -0
  433. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_httpapi.py +0 -0
  434. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_interval.py +0 -0
  435. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_json.py +0 -0
  436. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_jsonstor.py +0 -0
  437. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_layer.py +0 -0
  438. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_link.py +0 -0
  439. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_lmdbslab.py +0 -0
  440. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_modelrev.py +0 -0
  441. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_module.py +0 -0
  442. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_msgpack.py +0 -0
  443. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
  444. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_nexus.py +0 -0
  445. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_node.py +0 -0
  446. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_output.py +0 -0
  447. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
  448. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_queue.py +0 -0
  449. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_ratelimit.py +0 -0
  450. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_reflect.py +0 -0
  451. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_rstorm.py +0 -0
  452. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_scope.py +0 -0
  453. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_scrape.py +0 -0
  454. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_slaboffs.py +0 -0
  455. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_slabseqn.py +0 -0
  456. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_snap.py +0 -0
  457. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_spooled.py +0 -0
  458. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_storm_format.py +0 -0
  459. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormctrl.py +0 -0
  460. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormhttp.py +0 -0
  461. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_aha.py +0 -0
  462. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_auth.py +0 -0
  463. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_backup.py +0 -0
  464. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
  465. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_cache.py +0 -0
  466. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_cell.py +0 -0
  467. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_compression.py +0 -0
  468. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_cortex.py +0 -0
  469. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
  470. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_env.py +0 -0
  471. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
  472. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
  473. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
  474. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
  475. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
  476. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
  477. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_index.py +0 -0
  478. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
  479. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
  480. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
  481. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
  482. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
  483. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_macro.py +0 -0
  484. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
  485. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_model.py +0 -0
  486. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
  487. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
  488. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
  489. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
  490. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
  491. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
  492. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_spooled.py +0 -0
  493. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_stats.py +0 -0
  494. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_stix.py +0 -0
  495. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_storm.py +0 -0
  496. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_tabular.py +0 -0
  497. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_utils.py +0 -0
  498. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
  499. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
  500. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
  501. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormtypes.py +0 -0
  502. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_stormwhois.py +0 -0
  503. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_structlog.py +0 -0
  504. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_task.py +0 -0
  505. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_thishost.py +0 -0
  506. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_time.py +0 -0
  507. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_trigger.py +0 -0
  508. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_urlhelp.py +0 -0
  509. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_version.py +0 -0
  510. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lib_view.py +0 -0
  511. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lookup_iso3166.py +0 -0
  512. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_lookup_phonenum.py +0 -0
  513. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_mindmeld.py +0 -0
  514. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_auth.py +0 -0
  515. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_base.py +0 -0
  516. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_belief.py +0 -0
  517. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_biz.py +0 -0
  518. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_crypto.py +0 -0
  519. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_dns.py +0 -0
  520. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_doc.py +0 -0
  521. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_economic.py +0 -0
  522. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_entity.py +0 -0
  523. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_files.py +0 -0
  524. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_geopol.py +0 -0
  525. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_geospace.py +0 -0
  526. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_gov_cn.py +0 -0
  527. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_gov_intl.py +0 -0
  528. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_gov_us.py +0 -0
  529. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_infotech.py +0 -0
  530. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_language.py +0 -0
  531. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_material.py +0 -0
  532. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_math.py +0 -0
  533. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_media.py +0 -0
  534. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_orgs.py +0 -0
  535. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_person.py +0 -0
  536. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_planning.py +0 -0
  537. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_proj.py +0 -0
  538. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_risk.py +0 -0
  539. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_science.py +0 -0
  540. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_syn.py +0 -0
  541. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_telco.py +0 -0
  542. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_model_transport.py +0 -0
  543. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_servers_axon.py +0 -0
  544. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_servers_cortex.py +0 -0
  545. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_servers_cryotank.py +0 -0
  546. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_servers_stemcell.py +0 -0
  547. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_servers_univ.py +0 -0
  548. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_telepath.py +0 -0
  549. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_aha.py +0 -0
  550. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_apikey.py +0 -0
  551. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_autodoc.py +0 -0
  552. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_axon.py +0 -0
  553. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_axon2axon.py +0 -0
  554. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_backup.py +0 -0
  555. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_cellauth.py +0 -0
  556. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_changelog.py +0 -0
  557. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_cortex_layer.py +0 -0
  558. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_cryo_list.py +0 -0
  559. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_csvtool.py +0 -0
  560. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_demote.py +0 -0
  561. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_docker_validate.py +0 -0
  562. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_easycert.py +0 -0
  563. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_feed.py +0 -0
  564. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_genpkg.py +0 -0
  565. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_guid.py +0 -0
  566. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_healthcheck.py +0 -0
  567. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_hiveload.py +0 -0
  568. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_hivesave.py +0 -0
  569. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_json2mpk.py +0 -0
  570. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_livebackup.py +0 -0
  571. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_modrole.py +0 -0
  572. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_moduser.py +0 -0
  573. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_pkgs_gendocs.py +0 -0
  574. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_promote.py +0 -0
  575. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_pullfile.py +0 -0
  576. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_pushfile.py +0 -0
  577. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_reload.py +0 -0
  578. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_rstorm.py +0 -0
  579. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_shutdown.py +0 -0
  580. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_tools_snapshot.py +0 -0
  581. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_utils.py +0 -0
  582. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_utils_getrefs.py +0 -0
  583. {synapse-2.215.0 → synapse-2.216.0}/synapse/tests/test_utils_stormcov.py +0 -0
  584. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/__init__.py +0 -0
  585. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/aha/__init__.py +0 -0
  586. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/aha/provision/__init__.py +0 -0
  587. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/axon/__init__.py +0 -0
  588. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/axon/dump.py +0 -0
  589. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/axon/load.py +0 -0
  590. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/backup.py +0 -0
  591. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/cortex/__init__.py +0 -0
  592. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/cortex/layer/__init__.py +0 -0
  593. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/cortex/layer/dump.py +0 -0
  594. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/cortex/layer/load.py +0 -0
  595. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/cryo/__init__.py +0 -0
  596. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/docker/__init__.py +0 -0
  597. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/hive/__init__.py +0 -0
  598. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/hive/load.py +0 -0
  599. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/hive/save.py +0 -0
  600. {synapse-2.215.0 → synapse-2.216.0}/synapse/tools/pkgs/pandoc_filter.py +0 -0
  601. {synapse-2.215.0 → synapse-2.216.0}/synapse/utils/__init__.py +0 -0
  602. {synapse-2.215.0 → synapse-2.216.0}/synapse/utils/getrefs.py +0 -0
  603. {synapse-2.215.0 → synapse-2.216.0}/synapse/utils/stormcov/__init__.py +0 -0
  604. {synapse-2.215.0 → synapse-2.216.0}/synapse/utils/stormcov/plugin.py +0 -0
  605. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/__init__.py +0 -0
  606. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cashaddress/LICENSE +0 -0
  607. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cashaddress/__init__.py +0 -0
  608. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cashaddress/base58.py +0 -0
  609. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cashaddress/convert.py +0 -0
  610. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cashaddress/crypto.py +0 -0
  611. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
  612. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
  613. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/LICENSE +0 -0
  614. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/__init__.py +0 -0
  615. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/lib/__init__.py +0 -0
  616. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/lib/email/__init__.py +0 -0
  617. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/lib/email/_parseaddr.py +0 -0
  618. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/lib/email/utils.py +0 -0
  619. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/lib/http/__init__.py +0 -0
  620. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/lib/http/cookies.py +0 -0
  621. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/lib/ipaddress.py +0 -0
  622. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/lib/json.py +0 -0
  623. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/lib/test/__init__.py +0 -0
  624. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/lib/test/support/__init__.py +0 -0
  625. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/lib/test/test_email/__init__.py +0 -0
  626. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/lib/test/test_email/test_email.py +0 -0
  627. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/lib/test/test_email/test_utils.py +0 -0
  628. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/lib/test/test_http_cookies.py +0 -0
  629. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/lib/test/test_ipaddress.py +0 -0
  630. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/cpython/lib/test/test_json.py +0 -0
  631. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
  632. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
  633. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
  634. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
  635. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
  636. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
  637. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/utils.py +0 -0
  638. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/xrpl/LICENSE +0 -0
  639. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/xrpl/__init__.py +0 -0
  640. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/xrpl/constants.py +0 -0
  641. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
  642. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
  643. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
  644. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
  645. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
  646. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
  647. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
  648. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
  649. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
  650. {synapse-2.215.0 → synapse-2.216.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
  651. {synapse-2.215.0 → synapse-2.216.0}/synapse.egg-info/SOURCES.txt +0 -0
  652. {synapse-2.215.0 → synapse-2.216.0}/synapse.egg-info/dependency_links.txt +0 -0
  653. {synapse-2.215.0 → synapse-2.216.0}/synapse.egg-info/requires.txt +0 -0
  654. {synapse-2.215.0 → synapse-2.216.0}/synapse.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synapse
3
- Version: 2.215.0
3
+ Version: 2.216.0
4
4
  Summary: Synapse Intelligence Analysis Framework
5
5
  Author-email: The Vertex Project LLC <root@vertex.link>
6
6
  License-Expression: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = 'setuptools.build_meta'
4
4
 
5
5
  [project]
6
6
  name = 'synapse'
7
- version = '2.215.0'
7
+ version = '2.216.0'
8
8
  authors = [
9
9
  { name = 'The Vertex Project LLC', email = 'root@vertex.link'},
10
10
  ]
@@ -99,11 +99,16 @@ include = ["synapse*"]
99
99
  [tool.ruff]
100
100
  include = [
101
101
  'synapse/*.py',
102
+ 'scripts/*.py',
102
103
  'examples/*.py',
103
104
  ]
104
105
  target-version = "py311"
105
106
 
106
107
  [tool.ruff.lint]
107
108
  select = [
109
+ "E251", # Whitespace around kwargs; preview rule
108
110
  "F821", # Check for undefined names - this is generally fatal
111
+ "W191", "W191", "W292", "W293", "W391", # Whitespace checks; W391 is a preview rule.
112
+ "W605", # invalid escape sequence
109
113
  ]
114
+ preview = true
@@ -758,6 +758,12 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
758
758
  confbase['mirror']['hidedocs'] = False # type: ignore
759
759
  confbase['mirror']['hidecmdl'] = False # type: ignore
760
760
 
761
+ confbase['safemode']['hidecmdl'] = False
762
+ confbase['safemode']['description'] = (
763
+ 'Enable safe-mode which disables crons, triggers, dmons, storm '
764
+ 'package onload handlers, view merge tasks, and storm pools.'
765
+ )
766
+
761
767
  confdefs = {
762
768
  'axon': {
763
769
  'description': 'A telepath URL for a remote axon.',
@@ -1572,9 +1578,11 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1572
1578
  if self.isactive:
1573
1579
  await self._checkLayerModels()
1574
1580
 
1575
- self.addActiveCoro(self.agenda.runloop)
1581
+ if not self.safemode:
1582
+ self.addActiveCoro(self.agenda.runloop)
1576
1583
 
1577
1584
  await self._initStormDmons()
1585
+
1578
1586
  await self._initStormSvcs()
1579
1587
 
1580
1588
  # share ourself via the cell dmon as "cortex"
@@ -1621,6 +1629,9 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1621
1629
 
1622
1630
  async def initStormPool(self):
1623
1631
 
1632
+ if self.safemode:
1633
+ return
1634
+
1624
1635
  try:
1625
1636
 
1626
1637
  byts = self.slab.get(b'storm:pool', db='cell:conf')
@@ -2961,6 +2972,10 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
2961
2972
 
2962
2973
  if onload is not None and self.isactive:
2963
2974
  async def _onload():
2975
+ if self.safemode:
2976
+ await self.fire('core:pkg:onload:skipped', pkg=name, reason='safemode')
2977
+ return
2978
+
2964
2979
  await self.fire('core:pkg:onload:start', pkg=name)
2965
2980
  try:
2966
2981
  async for mesg in self.storm(onload):
@@ -930,6 +930,12 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
930
930
 
931
931
  confdefs = {} # type: ignore # This should be a JSONSchema properties list for an object.
932
932
  confbase = {
933
+ 'safemode': {
934
+ 'default': False,
935
+ 'description': 'Boot the service in safe-mode.',
936
+ 'type': 'boolean',
937
+ 'hidecmdl': True,
938
+ },
933
939
  'cell:guid': {
934
940
  'description': 'An optional hard-coded GUID to store as the permanent GUID for the service.',
935
941
  'type': 'string',
@@ -1200,6 +1206,11 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
1200
1206
  'tasks': 1,
1201
1207
  }
1202
1208
 
1209
+ self.safemode = self.conf.req('safemode')
1210
+ if self.safemode:
1211
+ mesg = f'Booting {self.getCellType()} in safe-mode. Some functionality may be disabled.'
1212
+ logger.warning(mesg)
1213
+
1203
1214
  self.minfree = self.conf.get('limit:disk:free')
1204
1215
  if self.minfree is not None:
1205
1216
  self.minfree = self.minfree / 100
@@ -4816,6 +4827,7 @@ class Cell(s_nexus.Pusher, s_telepath.Aware):
4816
4827
  'iden': self.getCellIden(),
4817
4828
  'paused': self.paused,
4818
4829
  'active': self.isactive,
4830
+ 'safemode': self.safemode,
4819
4831
  'started': self.startms,
4820
4832
  'ready': self.nexsroot.ready.is_set(),
4821
4833
  'commit': self.COMMIT,
@@ -3,15 +3,19 @@ import asyncio
3
3
  import argparse
4
4
 
5
5
  import synapse.exc as s_exc
6
- import synapse.common as s_common
7
6
 
8
7
  import synapse.lib.coro as s_coro
9
8
  import synapse.lib.output as s_output
10
9
 
11
10
  class Parser(argparse.ArgumentParser):
11
+ '''
12
+ argparse.ArgumentParser helper class.
12
13
 
14
+ - exit() is overriden to raise a SynErr ( ParserExit )
15
+ - _print_message prints to an outp object
16
+ - description formatter uses argparse.RawDescriptionHelpFormatter
17
+ '''
13
18
  def __init__(self, prog=None, outp=s_output.stdout, **kwargs):
14
-
15
19
  self.outp = outp
16
20
  self.exited = False
17
21
 
@@ -3489,7 +3489,10 @@ class Layer(s_nexus.Pusher):
3489
3489
 
3490
3490
  valt = edit[1]
3491
3491
  valu, stortype = valt
3492
- if sode.get('valu') == valt:
3492
+
3493
+ isarray = stortype & STOR_FLAG_ARRAY
3494
+
3495
+ if not isarray and sode.get('valu') == valt:
3493
3496
  return ()
3494
3497
 
3495
3498
  abrv = self.setPropAbrv(form, None)
@@ -3500,7 +3503,7 @@ class Layer(s_nexus.Pusher):
3500
3503
  sode['valu'] = valt
3501
3504
  self.setSodeDirty(buid, sode, form)
3502
3505
 
3503
- if stortype & STOR_FLAG_ARRAY:
3506
+ if isarray:
3504
3507
 
3505
3508
  for indx in self.getStorIndx(stortype, valu):
3506
3509
  self.layrslab.put(abrv + indx, buid, db=self.byarray)
@@ -3587,6 +3590,8 @@ class Layer(s_nexus.Pusher):
3587
3590
  if prop[0] == '.': # '.' to detect universal props (as quickly as possible)
3588
3591
  univabrv = self.setPropAbrv(None, prop)
3589
3592
 
3593
+ isarray = stortype & STOR_FLAG_ARRAY
3594
+
3590
3595
  if oldv is not None:
3591
3596
 
3592
3597
  # merge intervals and min times
@@ -3599,7 +3604,7 @@ class Layer(s_nexus.Pusher):
3599
3604
  elif stortype == STOR_TYPE_MAXTIME:
3600
3605
  valu = max(valu, oldv)
3601
3606
 
3602
- if valu == oldv and stortype == oldt:
3607
+ if not isarray and valu == oldv and stortype == oldt:
3603
3608
  return ()
3604
3609
 
3605
3610
  if oldt & STOR_FLAG_ARRAY:
@@ -3638,7 +3643,7 @@ class Layer(s_nexus.Pusher):
3638
3643
  sode['props'][prop] = (valu, stortype)
3639
3644
  self.setSodeDirty(buid, sode, form)
3640
3645
 
3641
- if stortype & STOR_FLAG_ARRAY:
3646
+ if isarray:
3642
3647
 
3643
3648
  realtype = stortype & 0x7fff
3644
3649
 
@@ -3828,7 +3833,7 @@ class Layer(s_nexus.Pusher):
3828
3833
  kvpairs.append((tp_abrv + indx, buid))
3829
3834
  kvpairs.append((ftp_abrv + indx, buid))
3830
3835
 
3831
- await self.layrslab.putmulti(kvpairs, db=self.bytagprop)
3836
+ self.layrslab._putmulti(kvpairs, db=self.bytagprop)
3832
3837
 
3833
3838
  return (
3834
3839
  (EDIT_TAGPROP_SET, (tag, prop, valu, oldv, stortype), ()),
@@ -297,11 +297,18 @@ _authRulesSchema = {
297
297
  'type': 'array',
298
298
  'items': [
299
299
  {'type': 'boolean'},
300
- {'type': 'array', 'items': {'type': 'string'}},
300
+ {
301
+ 'type': 'array',
302
+ 'items': {
303
+ 'type': 'string',
304
+ 'minLength': 1
305
+ },
306
+ 'minItems': 1
307
+ },
301
308
  ],
302
309
  'minItems': 2,
303
310
  'maxItems': 2,
304
- }
311
+ },
305
312
  }
306
313
  reqValidRules = s_config.getJsValidator(_authRulesSchema)
307
314
 
@@ -384,12 +384,22 @@ class ProtoNode:
384
384
 
385
385
  if norminfo is None:
386
386
  try:
387
- valu, norminfo = prop.type.norm(valu)
387
+ if (isinstance(valu, dict) and isinstance(prop.type, s_types.Guid)
388
+ and (form := self.ctx.snap.core.model.form(prop.type.name)) is not None):
389
+
390
+ norms, props = await self.ctx.snap._normGuidNodeDict(form, valu)
391
+ valu = await self.ctx.snap._addGuidNodeByDict(form, norms, props)
392
+ norminfo = {}
393
+ else:
394
+ valu, norminfo = prop.type.norm(valu)
395
+
388
396
  except s_exc.BadTypeValu as e:
389
- oldm = e.get('mesg')
390
- e.update({'prop': prop.name,
391
- 'form': prop.form.name,
392
- 'mesg': f'Bad prop value {prop.full}={valu!r} : {oldm}'})
397
+ if 'prop' not in e.errinfo:
398
+ oldm = e.get('mesg')
399
+ e.update({'prop': prop.name,
400
+ 'form': prop.form.name,
401
+ 'mesg': f'Bad prop value {prop.full}={valu!r} : {oldm}'})
402
+
393
403
  if self.ctx.snap.strict:
394
404
  raise e
395
405
  await self.ctx.snap.warn(e)
@@ -1363,7 +1363,7 @@ class DmonManager(s_base.Base):
1363
1363
  '''
1364
1364
  Start all the dmons.
1365
1365
  '''
1366
- if self.enabled:
1366
+ if self.enabled or self.core.safemode:
1367
1367
  return
1368
1368
  dmons = list(self.dmons.values())
1369
1369
  if not dmons:
@@ -625,6 +625,9 @@ class Guid(Type):
625
625
  )
626
626
 
627
627
  def _normPyList(self, valu):
628
+ if not valu:
629
+ mesg = 'Guid list values cannot be empty.'
630
+ raise s_exc.BadTypeValu(name=self.name, valu=valu, mesg=mesg)
628
631
  return s_common.guid(valu), {}
629
632
 
630
633
  def _normPyStr(self, valu):
@@ -223,6 +223,6 @@ def reqVersion(valu, reqver,
223
223
  ##############################################################################
224
224
  # The following are touched during the release process by bumpversion.
225
225
  # Do not modify these directly.
226
- version = (2, 215, 0)
226
+ version = (2, 216, 0)
227
227
  verstring = '.'.join([str(x) for x in version])
228
- commit = 'f4d48839f7e5f74bacdcc2d1b122d9ade6f1def7'
228
+ commit = '2a44a91a495a7daf2e4e6e44d32c1c3030db3fd2'
@@ -260,6 +260,9 @@ class View(s_nexus.Pusher): # type: ignore
260
260
  if self.merging: # pragma: no cover
261
261
  return
262
262
 
263
+ if self.core.safemode:
264
+ return
265
+
263
266
  if not await self.isMergeReady():
264
267
  return
265
268
 
@@ -380,6 +383,9 @@ class View(s_nexus.Pusher): # type: ignore
380
383
  if not await self.core.isCellActive():
381
384
  return
382
385
 
386
+ if self.core.safemode:
387
+ return
388
+
383
389
  self.mergetask = self.core.schedCoro(self.runViewMerge())
384
390
 
385
391
  async def finiMergeTask(self):
@@ -568,6 +574,9 @@ class View(s_nexus.Pusher): # type: ignore
568
574
  if not await self.core.isCellActive():
569
575
  return
570
576
 
577
+ if self.core.safemode:
578
+ return
579
+
571
580
  self.trigtask = self.schedCoro(self._trigQueueLoop())
572
581
 
573
582
  async def finiTrigTask(self):
@@ -1577,7 +1586,7 @@ class View(s_nexus.Pusher): # type: ignore
1577
1586
 
1578
1587
  async def runTagAdd(self, node, tag, valu):
1579
1588
 
1580
- if self.core.migration:
1589
+ if self.core.migration or self.core.safemode:
1581
1590
  return
1582
1591
 
1583
1592
  # Run any trigger handlers
@@ -1585,21 +1594,21 @@ class View(s_nexus.Pusher): # type: ignore
1585
1594
 
1586
1595
  async def runTagDel(self, node, tag, valu):
1587
1596
 
1588
- if self.core.migration:
1597
+ if self.core.migration or self.core.safemode:
1589
1598
  return
1590
1599
 
1591
1600
  await self.triggers.runTagDel(node, tag)
1592
1601
 
1593
1602
  async def runNodeAdd(self, node):
1594
1603
 
1595
- if self.core.migration:
1604
+ if self.core.migration or self.core.safemode:
1596
1605
  return
1597
1606
 
1598
1607
  await self.triggers.runNodeAdd(node)
1599
1608
 
1600
1609
  async def runNodeDel(self, node):
1601
1610
 
1602
- if self.core.migration:
1611
+ if self.core.migration or self.core.safemode:
1603
1612
  return
1604
1613
 
1605
1614
  await self.triggers.runNodeDel(node)
@@ -1608,21 +1617,21 @@ class View(s_nexus.Pusher): # type: ignore
1608
1617
  '''
1609
1618
  Handle when a prop set trigger event fired
1610
1619
  '''
1611
- if self.core.migration:
1620
+ if self.core.migration or self.core.safemode:
1612
1621
  return
1613
1622
 
1614
1623
  await self.triggers.runPropSet(node, prop, oldv)
1615
1624
 
1616
1625
  async def runEdgeAdd(self, n1, edge, n2):
1617
1626
 
1618
- if self.core.migration:
1627
+ if self.core.migration or self.core.safemode:
1619
1628
  return
1620
1629
 
1621
1630
  await self.triggers.runEdgeAdd(n1, edge, n2)
1622
1631
 
1623
1632
  async def runEdgeDel(self, n1, edge, n2):
1624
1633
 
1625
- if self.core.migration:
1634
+ if self.core.migration or self.core.safemode:
1626
1635
  return
1627
1636
 
1628
1637
  await self.triggers.runEdgeDel(n1, edge, n2)
@@ -1542,7 +1542,7 @@ class InetModule(s_module.CoreModule):
1542
1542
  ('inet:service:app', ('guid', {}), {
1543
1543
  'interfaces': ('inet:service:object',),
1544
1544
  'template': {'service:base': 'application'},
1545
- 'doc': 'A platform specific application.'}),
1545
+ 'doc': 'An application which is part of a service architecture.'}),
1546
1546
 
1547
1547
  ('inet:service:instance', ('guid', {}), {
1548
1548
  'doc': 'An instance of the platform such as Slack or Discord instances.'}),
@@ -3769,6 +3769,12 @@ class InetModule(s_module.CoreModule):
3769
3769
  ('desc', ('str', {}), {
3770
3770
  'disp': {'hint': 'text'},
3771
3771
  'doc': 'A description of the platform specific application.'}),
3772
+
3773
+ ('provider', ('ou:org', {}), {
3774
+ 'doc': 'The organization which provides the application.'}),
3775
+
3776
+ ('provider:name', ('ou:name', {}), {
3777
+ 'doc': 'The name of the organization which provides the application.'}),
3772
3778
  )),
3773
3779
 
3774
3780
  ('inet:service:account', {}, (
@@ -220,6 +220,8 @@ class RiskModule(s_module.CoreModule):
220
220
  'doc': 'The threat cluster targeted the target node.'}),
221
221
  (('risk:threat', 'uses', None), {
222
222
  'doc': 'The threat cluster uses the target node.'}),
223
+ (('risk:threat', 'uses', 'inet:service:app'), {
224
+ 'doc': 'The threat cluster uses the online application.'}),
223
225
  (('risk:attack', 'targets', None), {
224
226
  'doc': 'The attack targeted the target node.'}),
225
227
  (('risk:attack', 'uses', None), {
@@ -8776,6 +8776,268 @@ class CortexBasicTest(s_t_utils.SynTest):
8776
8776
  self.eq(core._test_pre_nexus_index, offs)
8777
8777
  self.ge(core._test_post_nexus_index, core._test_pre_nexus_index)
8778
8778
 
8779
+ async def test_cortex_safemode(self):
8780
+ safemode = {'safemode': True}
8781
+ nosafe = {'safemode': False}
8782
+
8783
+ # Cortex safemode disables the following functionality:
8784
+ # - crons
8785
+ # - triggers
8786
+ # - dmons
8787
+ # - storm package onloads
8788
+ # - merge tasks (e.g. for quorum)
8789
+ # - storm pools
8790
+
8791
+ # Make sure we're logging the message
8792
+ with self.getStructuredAsyncLoggerStream('synapse.lib.cell', 'Booting cortex in safe-mode.') as stream:
8793
+ async with self.getTestCore(conf=safemode) as core:
8794
+ self.true(core.safemode)
8795
+ self.true(await stream.wait(10))
8796
+ msgs = stream.jsonlines()
8797
+ self.len(1, msgs)
8798
+ self.eq(msgs[0].get('message'), 'Booting cortex in safe-mode. Some functionality may be disabled.')
8799
+ self.eq(msgs[0].get('level'), 'WARNING')
8800
+
8801
+ # Check crons, triggers, dmons in this section
8802
+ with self.getTestDir() as dirn:
8803
+
8804
+ # Setup the cortex
8805
+ async with self.getTestCore(dirn=dirn) as core:
8806
+ await core.addCoreQueue('queue:safemode:done', {})
8807
+ # Add a cron job and immediately disable it
8808
+ q = '''
8809
+ cron.add --minute +1 {
8810
+ $now = $lib.cast(time, now)
8811
+ $lib.log.warning(`SAFEMODE CRON: {$now}`)
8812
+ [ test:str=CRON :tick=$now ]
8813
+ } |
8814
+ $job = $lib.cron.list().0
8815
+ cron.disable $job.iden
8816
+ '''
8817
+ await core.callStorm(q)
8818
+ jobs = await core.listCronJobs()
8819
+ self.len(1, jobs)
8820
+ self.eq(jobs[0].get('enabled'), False)
8821
+
8822
+ # Add a regular trigger
8823
+ q = '''
8824
+ $lib.log.warning(`SAFEMODE TRIGGER: {$node}`)
8825
+ $tick = :tick
8826
+ $str = { [( test:str=TRIGGER :hehe=$tick )] }
8827
+ $queue = $lib.queue.gen(queue:safemode)
8828
+ $queue.put($tick)
8829
+ '''
8830
+ opts = {'vars': {'query': q}}
8831
+ await core.callStorm(f'trigger.add prop:set --prop test:str:tick --query {{{q}}}')
8832
+
8833
+ # Add an async trigger
8834
+ q = '''
8835
+ $lib.log.warning(`SAFEMODE ATRIGGER: {$node}`)
8836
+ $tick = :tick
8837
+ $str = { [( test:str=ATRIGGER :hehe=$tick )] }
8838
+ $queue = $lib.queue.gen(queue:safemode)
8839
+ $queue.put($tick)
8840
+ '''
8841
+ opts = {'vars': {'query': q}}
8842
+ await core.callStorm(f'trigger.add prop:set --prop test:str:tick --async --query {{{q}}}')
8843
+
8844
+ # Add a dmon
8845
+ q = '''
8846
+ $queue = $lib.queue.gen(queue:safemode)
8847
+ $queue2 = $lib.queue.gen(queue:safemode:done)
8848
+ while (true) {
8849
+ ($offs, $item) = $queue.get()
8850
+ $lib.log.warning(`SAFEMODE DMON: {$item}`)
8851
+ [ test:str=DMON :hehe=$item ]
8852
+ $queue2.put($item)
8853
+ }
8854
+ '''
8855
+ await core.callStorm(f'$iden = $lib.dmon.add(${{{q}}}) $lib.dmon.start($iden)')
8856
+
8857
+ nodes = await core.nodes('test:str')
8858
+ self.len(0, nodes)
8859
+
8860
+ # Run in safemode and verify cron, trigger, and dmons don't execute
8861
+ with self.getLoggerStream('synapse.storm') as stream:
8862
+ async with self.getTestCore(dirn=dirn, conf=safemode) as core:
8863
+ await core.callStorm('cron.enable $lib.cron.list().0.iden')
8864
+ # Increment the cron tick to get it to fire
8865
+ core.agenda._addTickOff(60)
8866
+
8867
+ # Add a test:str:tick to get the trigger to fire
8868
+ await core.callStorm('[ test:str=newp :tick=1234 ]')
8869
+
8870
+ # Check for test:strs
8871
+ nodes = await core.nodes('test:str')
8872
+ self.len(1, nodes)
8873
+ self.eq(nodes[0].repr(), 'newp')
8874
+
8875
+ with self.raises(TimeoutError):
8876
+ await s_common.wait_for(core.coreQueueGet('queue:safemode:done', wait=True), timeout=2)
8877
+
8878
+ # Add a dmon to make sure it doesn't start
8879
+ await core.addCoreQueue('queue:safemode:started', {})
8880
+ q = '''
8881
+ $queue = $lib.queue.gen(queue:safemode)
8882
+ $queue2 = $lib.queue.get(queue:safemode:started)
8883
+ while (true) {
8884
+ $queue2.put(foo)
8885
+ $lib.log.warning(`SAFEMODE DMON START`)
8886
+ ($offs, $item) = $queue.get()
8887
+ }
8888
+ '''
8889
+ await core.callStorm(f'$iden = $lib.dmon.add(${{{q}}}) $lib.dmon.start($iden)')
8890
+
8891
+ with self.raises(TimeoutError):
8892
+ await s_common.wait_for(core.coreQueueGet('queue:safemode:started', wait=True), timeout=2)
8893
+
8894
+ stream.seek(0)
8895
+ data = stream.read()
8896
+ self.notin('SAFEMODE CRON', data)
8897
+ self.notin('SAFEMODE TRIGGER', data)
8898
+ self.notin('SAFEMODE ATRIGGER', data)
8899
+ self.notin('SAFEMODE DMON', data)
8900
+
8901
+ with self.getLoggerStream('synapse.storm') as stream:
8902
+ async with self.getTestCore(dirn=dirn) as core:
8903
+ core.agenda._addTickOff(60)
8904
+
8905
+ item = await s_common.wait_for(core.coreQueueGet('queue:safemode:done', wait=True), timeout=5)
8906
+ self.len(2, item)
8907
+
8908
+ nodes = await core.nodes('test:str')
8909
+ self.len(5, nodes)
8910
+ self.sorteq(
8911
+ ['newp', 'CRON', 'TRIGGER', 'DMON', 'ATRIGGER'],
8912
+ [k.repr() for k in nodes]
8913
+ )
8914
+
8915
+ stream.seek(0)
8916
+ data = stream.read()
8917
+ self.isin('SAFEMODE CRON', data)
8918
+ self.isin('SAFEMODE TRIGGER', data)
8919
+ self.isin('SAFEMODE ATRIGGER', data)
8920
+ self.isin('SAFEMODE DMON', data)
8921
+
8922
+ # Check storm package onload handlers are not executed
8923
+ with self.getTestDir() as dirn:
8924
+ async with self.getTestCore(dirn=dirn, conf=safemode) as core:
8925
+ pkgdef = {
8926
+ 'name': 'foopkg',
8927
+ 'version': (0, 0, 1),
8928
+ 'onload': '$lib.import(foo.setup).onload()',
8929
+ 'modules': (
8930
+ {
8931
+ 'name': 'foo.setup',
8932
+ 'storm': '''
8933
+ function onload() {
8934
+ $lib.warn('foopkg onload')
8935
+ }
8936
+ ''',
8937
+ },
8938
+ )
8939
+ }
8940
+
8941
+ waiter = core.waiter(1, 'core:pkg:onload:skipped')
8942
+ await core.addStormPkg(pkgdef)
8943
+ events = await waiter.wait(timeout=10)
8944
+ self.nn(events)
8945
+ self.len(1, events)
8946
+ self.eq(events, (('core:pkg:onload:skipped', {'pkg': 'foopkg', 'reason': 'safemode'}),))
8947
+
8948
+ with self.getAsyncLoggerStream('synapse.cortex', 'foopkg onload output: foopkg onload') as stream:
8949
+ async with self.getTestCore(dirn=dirn, conf=nosafe) as core:
8950
+ self.false(core.safemode)
8951
+ await stream.wait(timeout=10)
8952
+
8953
+ # Check merge tasks are not executed
8954
+ with self.getTestDir() as dirn:
8955
+ async with self.getTestCore(dirn=dirn, conf=safemode) as core:
8956
+ alliden = core.auth.allrole.iden
8957
+
8958
+ blackout = await core.auth.addUser('blackout')
8959
+ await blackout.allow(('view', 'read'))
8960
+
8961
+ await core.auth.rootuser.grant(alliden)
8962
+
8963
+ view = core.getView()
8964
+ qnfo = {
8965
+ 'count': 1,
8966
+ 'roles': [alliden],
8967
+ }
8968
+ await view.setViewInfo('quorum', qnfo)
8969
+
8970
+ forkiden = (await view.fork()).get('iden')
8971
+
8972
+ opts = {'view': forkiden}
8973
+
8974
+ nodes = await core.nodes('[ test:str=fork ]', opts=opts)
8975
+ self.len(1, nodes)
8976
+
8977
+ await core.callStorm('$lib.view.get().setMergeRequest()', opts=opts)
8978
+ await core.callStorm('$lib.view.get().setMergeVote()', opts=opts | {'user': blackout.iden})
8979
+
8980
+ fork = core.getView(forkiden)
8981
+
8982
+ self.true(await fork.isMergeReady())
8983
+ self.none(fork.mergetask)
8984
+
8985
+ self.len(0, await core.nodes('test:str'))
8986
+
8987
+ async with self.getTestCore(dirn=dirn, conf=nosafe) as core:
8988
+ nodes = await core.nodes('test:str')
8989
+ self.len(1, nodes)
8990
+ self.eq(nodes[0].repr(), 'fork')
8991
+
8992
+ # Check storm pools are not enabled
8993
+ async with self.getTestAha() as aha:
8994
+
8995
+ ahanet = aha.conf.req('aha:network')
8996
+
8997
+ async with await s_base.Base.anit() as base:
8998
+
8999
+ with self.getTestDir() as dirn:
9000
+
9001
+ dirn00 = s_common.genpath(dirn, 'cell00')
9002
+ dirn01 = s_common.genpath(dirn, 'cell01')
9003
+
9004
+ core00 = await base.enter_context(self.addSvcToAha(aha, '00.core', s_cortex.Cortex, dirn=dirn00,
9005
+ conf=safemode))
9006
+ provinfo = {'mirror': 'core'}
9007
+ core01 = await base.enter_context(self.addSvcToAha(aha, '01.core', s_cortex.Cortex, dirn=dirn01,
9008
+ provinfo=provinfo))
9009
+
9010
+ msgs = await core01.stormlist('aha.pool.add pool00...')
9011
+ self.stormHasNoWarnErr(msgs)
9012
+ self.stormIsInPrint('Created AHA service pool: pool00.synapse', msgs)
9013
+
9014
+ msgs = await core01.stormlist('aha.pool.svc.add pool00... 01.core...')
9015
+ self.stormHasNoWarnErr(msgs)
9016
+ self.stormIsInPrint('AHA service (01.core...) added to service pool (pool00.synapse)', msgs)
9017
+
9018
+ msgs = await core00.stormlist('cortex.storm.pool.set --connection-timeout 1 --sync-timeout 1 aha://pool00...')
9019
+ self.stormHasNoWarnErr(msgs)
9020
+ self.stormIsInPrint('Storm pool configuration set.', msgs)
9021
+
9022
+ # Make sure queries still work
9023
+ nodes = await core00.nodes('[ it:dev:str="stormpools!" ]', opts={'mirror': True})
9024
+ self.len(1, nodes)
9025
+
9026
+ self.none(core00.stormpool)
9027
+
9028
+ await core00.fini()
9029
+
9030
+ # Now disable safemode and check that the stormpool is enabled
9031
+ core00 = await base.enter_context(self.getTestCore(dirn=dirn00, conf=nosafe))
9032
+
9033
+ nodes = await core00.nodes('it:dev:str', opts={'mirror': True})
9034
+ self.len(1, nodes)
9035
+
9036
+ self.nn(core00.stormpool)
9037
+
9038
+ await core00.fini()
9039
+ await core01.fini()
9040
+
8779
9041
  async def test_cortex_queue_mirror_authgates(self):
8780
9042
  async with self.getRegrCore('2.213.0-queue-authgates') as core:
8781
9043
  self.nn(await core.getAuthGate('queue:stillhere'))