synapse 2.165.0__tar.gz → 2.167.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 (579) hide show
  1. {synapse-2.165.0/synapse.egg-info → synapse-2.167.0}/PKG-INFO +3 -3
  2. {synapse-2.165.0 → synapse-2.167.0}/pyproject.toml +3 -3
  3. {synapse-2.165.0 → synapse-2.167.0}/synapse/axon.py +4 -10
  4. {synapse-2.165.0 → synapse-2.167.0}/synapse/cmds/cortex.py +1 -6
  5. {synapse-2.165.0 → synapse-2.167.0}/synapse/common.py +6 -0
  6. {synapse-2.165.0 → synapse-2.167.0}/synapse/cortex.py +104 -57
  7. {synapse-2.165.0 → synapse-2.167.0}/synapse/datamodel.py +32 -0
  8. {synapse-2.165.0 → synapse-2.167.0}/synapse/exc.py +1 -0
  9. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/agenda.py +81 -51
  10. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/aha.py +2 -0
  11. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/ast.py +21 -23
  12. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/base.py +11 -10
  13. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/cell.py +24 -24
  14. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/hive.py +11 -0
  15. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/httpapi.py +1 -0
  16. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/nexus.py +3 -2
  17. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/node.py +4 -2
  18. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/schemas.py +3 -1
  19. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/snap.py +50 -0
  20. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/storm.py +19 -17
  21. synapse-2.167.0/synapse/lib/stormlib/aha.py +520 -0
  22. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/auth.py +11 -4
  23. synapse-2.167.0/synapse/lib/stormlib/cache.py +202 -0
  24. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/cortex.py +69 -7
  25. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/macro.py +11 -18
  26. synapse-2.167.0/synapse/lib/stormlib/spooled.py +109 -0
  27. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/stix.py +1 -1
  28. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormtypes.py +61 -17
  29. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/trigger.py +10 -12
  30. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/types.py +3 -1
  31. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/version.py +2 -2
  32. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/view.py +16 -3
  33. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/base.py +8 -0
  34. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/files.py +3 -0
  35. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/inet.py +74 -2
  36. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/orgs.py +52 -8
  37. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/person.py +30 -11
  38. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/risk.py +44 -3
  39. {synapse-2.165.0 → synapse-2.167.0}/synapse/telepath.py +115 -32
  40. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/dotstorm/dotstorm.yaml +3 -0
  41. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_cortex.py +79 -8
  42. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_datamodel.py +22 -0
  43. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_agenda.py +8 -1
  44. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_aha.py +19 -6
  45. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_cell.py +6 -2
  46. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_grammar.py +62 -64
  47. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_httpapi.py +1 -1
  48. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_rstorm.py +4 -4
  49. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_storm.py +98 -7
  50. synapse-2.167.0/synapse/tests/test_lib_stormlib_aha.py +196 -0
  51. synapse-2.167.0/synapse/tests/test_lib_stormlib_cache.py +272 -0
  52. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_compression.py +12 -12
  53. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_cortex.py +71 -0
  54. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_macro.py +94 -0
  55. synapse-2.167.0/synapse/tests/test_lib_stormlib_spooled.py +190 -0
  56. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormtypes.py +71 -37
  57. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_view.py +50 -3
  58. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_files.py +3 -0
  59. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_inet.py +67 -0
  60. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_risk.py +6 -0
  61. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_telepath.py +30 -7
  62. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_genpkg.py +26 -0
  63. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_hiveload.py +1 -0
  64. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_hivesave.py +1 -0
  65. synapse-2.167.0/synapse/tests/test_tools_modrole.py +142 -0
  66. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_moduser.py +105 -0
  67. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/utils.py +22 -3
  68. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/autodoc.py +1 -1
  69. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/hive/load.py +3 -0
  70. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/hive/save.py +3 -0
  71. synapse-2.167.0/synapse/tools/modrole.py +119 -0
  72. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/moduser.py +78 -10
  73. {synapse-2.165.0 → synapse-2.167.0/synapse.egg-info}/PKG-INFO +3 -3
  74. {synapse-2.165.0 → synapse-2.167.0}/synapse.egg-info/SOURCES.txt +5 -2
  75. {synapse-2.165.0 → synapse-2.167.0}/synapse.egg-info/requires.txt +2 -2
  76. synapse-2.165.0/synapse/lib/provenance.py +0 -111
  77. synapse-2.165.0/synapse/lib/stormlib/aha.py +0 -167
  78. synapse-2.165.0/synapse/tests/test_lib_provenance.py +0 -37
  79. synapse-2.165.0/synapse/tests/test_tools_modrole.py +0 -61
  80. synapse-2.165.0/synapse/tools/modrole.py +0 -67
  81. {synapse-2.165.0 → synapse-2.167.0}/LICENSE +0 -0
  82. {synapse-2.165.0 → synapse-2.167.0}/README.rst +0 -0
  83. {synapse-2.165.0 → synapse-2.167.0}/setup.cfg +0 -0
  84. {synapse-2.165.0 → synapse-2.167.0}/synapse/__init__.py +0 -0
  85. {synapse-2.165.0 → synapse-2.167.0}/synapse/cells.py +0 -0
  86. {synapse-2.165.0 → synapse-2.167.0}/synapse/cmds/__init__.py +0 -0
  87. {synapse-2.165.0 → synapse-2.167.0}/synapse/cmds/boss.py +0 -0
  88. {synapse-2.165.0 → synapse-2.167.0}/synapse/cmds/hive.py +0 -0
  89. {synapse-2.165.0 → synapse-2.167.0}/synapse/cryotank.py +0 -0
  90. {synapse-2.165.0 → synapse-2.167.0}/synapse/daemon.py +0 -0
  91. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/__init__.py +0 -0
  92. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/attack-flow/LICENSE.txt +0 -0
  93. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/attack-flow/README.md +0 -0
  94. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/attack-flow/attack-flow-schema-2.0.0.json +0 -0
  95. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/certs/cas/The Vertex Project Intermediate CA 00.crt +0 -0
  96. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/certs/cas/The Vertex Project ROOT CA.crt +0 -0
  97. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/certs/crls/The Vertex Project Intermediate CA 00.crl +0 -0
  98. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/certs/crls/The Vertex Project ROOT CA.crl +0 -0
  99. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/iana.tlds.mpk +0 -0
  100. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/README.md +0 -0
  101. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/LICENSE.txt +0 -0
  102. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/binary.json +0 -0
  103. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/bundle.json +0 -0
  104. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/core.json +0 -0
  105. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/cyber-observable-core.json +0 -0
  106. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/dictionary.json +0 -0
  107. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension-definition.json +0 -0
  108. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/extension.json +0 -0
  109. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/external-reference.json +0 -0
  110. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/granular-marking.json +0 -0
  111. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hashes-type.json +0 -0
  112. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/hex.json +0 -0
  113. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/identifier.json +0 -0
  114. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/kill-chain-phase.json +0 -0
  115. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/language-content.json +0 -0
  116. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/marking-definition.json +0 -0
  117. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/properties.json +0 -0
  118. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/timestamp.json +0 -0
  119. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/common/url-regex.json +0 -0
  120. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/artifact.json +0 -0
  121. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/autonomous-system.json +0 -0
  122. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/directory.json +0 -0
  123. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/domain-name.json +0 -0
  124. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-addr.json +0 -0
  125. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/email-message.json +0 -0
  126. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/file.json +0 -0
  127. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv4-addr.json +0 -0
  128. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/ipv6-addr.json +0 -0
  129. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mac-addr.json +0 -0
  130. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/mutex.json +0 -0
  131. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/network-traffic.json +0 -0
  132. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/process.json +0 -0
  133. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/software.json +0 -0
  134. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/url.json +0 -0
  135. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/user-account.json +0 -0
  136. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/windows-registry-key.json +0 -0
  137. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/observables/x509-certificate.json +0 -0
  138. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/attack-pattern.json +0 -0
  139. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/campaign.json +0 -0
  140. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/course-of-action.json +0 -0
  141. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/grouping.json +0 -0
  142. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/identity.json +0 -0
  143. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/incident.json +0 -0
  144. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/indicator.json +0 -0
  145. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/infrastructure.json +0 -0
  146. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/intrusion-set.json +0 -0
  147. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/location.json +0 -0
  148. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware-analysis.json +0 -0
  149. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/malware.json +0 -0
  150. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/note.json +0 -0
  151. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/observed-data.json +0 -0
  152. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/opinion.json +0 -0
  153. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/report.json +0 -0
  154. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/threat-actor.json +0 -0
  155. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/tool.json +0 -0
  156. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sdos/vulnerability.json +0 -0
  157. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/relationship.json +0 -0
  158. {synapse-2.165.0 → synapse-2.167.0}/synapse/data/jsonschemas/raw.githubusercontent.com/oasis-open/cti-stix2-json-schemas/stix2.1/schemas/sros/sighting.json +0 -0
  159. {synapse-2.165.0 → synapse-2.167.0}/synapse/glob.py +0 -0
  160. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/__init__.py +0 -0
  161. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/autodoc.py +0 -0
  162. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/boss.py +0 -0
  163. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/cache.py +0 -0
  164. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/certdir.py +0 -0
  165. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/chop.py +0 -0
  166. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/cli.py +0 -0
  167. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/cmd.py +0 -0
  168. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/cmdr.py +0 -0
  169. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/config.py +0 -0
  170. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/const.py +0 -0
  171. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/coro.py +0 -0
  172. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/crypto/__init__.py +0 -0
  173. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/crypto/coin.py +0 -0
  174. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/crypto/ecc.py +0 -0
  175. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/crypto/passwd.py +0 -0
  176. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/crypto/rsa.py +0 -0
  177. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/crypto/tinfoil.py +0 -0
  178. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/datfile.py +0 -0
  179. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/dyndeps.py +0 -0
  180. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/encoding.py +0 -0
  181. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/gis.py +0 -0
  182. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/grammar.py +0 -0
  183. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/hashitem.py +0 -0
  184. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/hashset.py +0 -0
  185. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/health.py +0 -0
  186. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/hiveauth.py +0 -0
  187. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/ingest.py +0 -0
  188. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/interval.py +0 -0
  189. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/jsonstor.py +0 -0
  190. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/jupyter.py +0 -0
  191. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/layer.py +0 -0
  192. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/link.py +0 -0
  193. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/lmdbslab.py +0 -0
  194. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/modelrev.py +0 -0
  195. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/module.py +0 -0
  196. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/modules.py +0 -0
  197. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/msgpack.py +0 -0
  198. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/multislabseqn.py +0 -0
  199. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/oauth.py +0 -0
  200. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/output.py +0 -0
  201. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/parser.py +0 -0
  202. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/platforms/__init__.py +0 -0
  203. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/platforms/common.py +0 -0
  204. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/platforms/darwin.py +0 -0
  205. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/platforms/freebsd.py +0 -0
  206. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/platforms/linux.py +0 -0
  207. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/platforms/windows.py +0 -0
  208. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/queue.py +0 -0
  209. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/ratelimit.py +0 -0
  210. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/reflect.py +0 -0
  211. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/rstorm.py +0 -0
  212. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/scope.py +0 -0
  213. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/scrape.py +0 -0
  214. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/share.py +0 -0
  215. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/slaboffs.py +0 -0
  216. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/slabseqn.py +0 -0
  217. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/spooled.py +0 -0
  218. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/storm.lark +0 -0
  219. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/storm_format.py +0 -0
  220. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormctrl.py +0 -0
  221. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormhttp.py +0 -0
  222. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/__init__.py +0 -0
  223. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/backup.py +0 -0
  224. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/basex.py +0 -0
  225. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/cell.py +0 -0
  226. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/compression.py +0 -0
  227. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/easyperm.py +0 -0
  228. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/ethereum.py +0 -0
  229. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/gen.py +0 -0
  230. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/gis.py +0 -0
  231. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/graph.py +0 -0
  232. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/hashes.py +0 -0
  233. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/hex.py +0 -0
  234. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/imap.py +0 -0
  235. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/infosec.py +0 -0
  236. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/ipv6.py +0 -0
  237. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/iters.py +0 -0
  238. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/json.py +0 -0
  239. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/log.py +0 -0
  240. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/math.py +0 -0
  241. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/mime.py +0 -0
  242. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/model.py +0 -0
  243. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/modelext.py +0 -0
  244. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/notifications.py +0 -0
  245. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/oauth.py +0 -0
  246. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/pack.py +0 -0
  247. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/project.py +0 -0
  248. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/random.py +0 -0
  249. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/scrape.py +0 -0
  250. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/smtp.py +0 -0
  251. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/stats.py +0 -0
  252. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/storm.py +0 -0
  253. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/vault.py +0 -0
  254. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/version.py +0 -0
  255. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/xml.py +0 -0
  256. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormlib/yaml.py +0 -0
  257. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormsvc.py +0 -0
  258. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/stormwhois.py +0 -0
  259. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/structlog.py +0 -0
  260. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/task.py +0 -0
  261. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/thishost.py +0 -0
  262. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/thisplat.py +0 -0
  263. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/threads.py +0 -0
  264. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/time.py +0 -0
  265. {synapse-2.165.0 → synapse-2.167.0}/synapse/lib/urlhelp.py +0 -0
  266. {synapse-2.165.0 → synapse-2.167.0}/synapse/lookup/__init__.py +0 -0
  267. {synapse-2.165.0 → synapse-2.167.0}/synapse/lookup/cvss.py +0 -0
  268. {synapse-2.165.0 → synapse-2.167.0}/synapse/lookup/iana.py +0 -0
  269. {synapse-2.165.0 → synapse-2.167.0}/synapse/lookup/iso3166.py +0 -0
  270. {synapse-2.165.0 → synapse-2.167.0}/synapse/lookup/macho.py +0 -0
  271. {synapse-2.165.0 → synapse-2.167.0}/synapse/lookup/pe.py +0 -0
  272. {synapse-2.165.0 → synapse-2.167.0}/synapse/lookup/phonenum.py +0 -0
  273. {synapse-2.165.0 → synapse-2.167.0}/synapse/lookup/timezones.py +0 -0
  274. {synapse-2.165.0 → synapse-2.167.0}/synapse/mindmeld.py +0 -0
  275. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/__init__.py +0 -0
  276. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/auth.py +0 -0
  277. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/belief.py +0 -0
  278. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/biz.py +0 -0
  279. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/crypto.py +0 -0
  280. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/dns.py +0 -0
  281. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/economic.py +0 -0
  282. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/geopol.py +0 -0
  283. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/geospace.py +0 -0
  284. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/gov/__init__.py +0 -0
  285. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/gov/cn.py +0 -0
  286. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/gov/intl.py +0 -0
  287. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/gov/us.py +0 -0
  288. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/infotech.py +0 -0
  289. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/language.py +0 -0
  290. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/material.py +0 -0
  291. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/media.py +0 -0
  292. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/proj.py +0 -0
  293. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/science.py +0 -0
  294. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/syn.py +0 -0
  295. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/telco.py +0 -0
  296. {synapse-2.165.0 → synapse-2.167.0}/synapse/models/transport.py +0 -0
  297. {synapse-2.165.0 → synapse-2.167.0}/synapse/servers/__init__.py +0 -0
  298. {synapse-2.165.0 → synapse-2.167.0}/synapse/servers/aha.py +0 -0
  299. {synapse-2.165.0 → synapse-2.167.0}/synapse/servers/axon.py +0 -0
  300. {synapse-2.165.0 → synapse-2.167.0}/synapse/servers/cell.py +0 -0
  301. {synapse-2.165.0 → synapse-2.167.0}/synapse/servers/cortex.py +0 -0
  302. {synapse-2.165.0 → synapse-2.167.0}/synapse/servers/cryotank.py +0 -0
  303. {synapse-2.165.0 → synapse-2.167.0}/synapse/servers/jsonstor.py +0 -0
  304. {synapse-2.165.0 → synapse-2.167.0}/synapse/servers/stemcell.py +0 -0
  305. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/__init__.py +0 -0
  306. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/TestUtilsGetrefs.test_basics.yaml +0 -0
  307. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/__init__.py +0 -0
  308. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/attack_flow/CISA AA22-138B VMWare Workspace (Alt).json +0 -0
  309. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/attack_flow/CISA_Iranian_APT.json +0 -0
  310. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/certdir/cas/ca.crt +0 -0
  311. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/certdir/cas/ca.key +0 -0
  312. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/certdir/hosts/localhost.crt +0 -0
  313. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/certdir/hosts/localhost.key +0 -0
  314. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/certdir/users/root.crt +0 -0
  315. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/certdir/users/root.key +0 -0
  316. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/certdir/users/user.crt +0 -0
  317. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/certdir/users/user.key +0 -0
  318. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/rstorm/httpresp1.json +0 -0
  319. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/rstorm/httpresp2.json +0 -0
  320. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/rstorm/httpresp3.json +0 -0
  321. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/rstorm/httprespmulti.yaml +0 -0
  322. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/rstorm/testsvc.py +0 -0
  323. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stix_export/basic.json +0 -0
  324. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stix_export/custom0.json +0 -0
  325. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stix_export/risk0.json +0 -0
  326. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stix_import/apt1.json +0 -0
  327. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stix_import/oasis-example-00.json +0 -0
  328. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormcov/argvquery.storm +0 -0
  329. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormcov/dupesubs.storm +0 -0
  330. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormcov/lookup.storm +0 -0
  331. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormcov/pivot.storm +0 -0
  332. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormcov/spin.storm +0 -0
  333. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormcov/stormctrl.storm +0 -0
  334. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormmod/common +0 -0
  335. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/badapidef.yaml +0 -0
  336. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/badcmdname.yaml +0 -0
  337. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/badjsonpkg.yaml +0 -0
  338. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/docs/foobar.md +0 -0
  339. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/docs/foobar.svg +0 -0
  340. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/dotstorm/storm/commands/dotstorm.bar.storm +0 -0
  341. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/dotstorm/storm/modules/dotstorm.foo.storm +0 -0
  342. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/nocontent.yaml +0 -0
  343. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/nomime.yaml +0 -0
  344. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/nopath.yaml +0 -0
  345. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/nosuchfile.yaml +0 -0
  346. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/notitle.yaml +0 -0
  347. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/optic/index.html +0 -0
  348. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/storm/commands/invalidCMD +0 -0
  349. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/storm/commands/testpkg.baz +0 -0
  350. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/storm/commands/testpkgcmd +0 -0
  351. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/storm/modules/apimod +0 -0
  352. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/storm/modules/testmod +0 -0
  353. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/testpkg.yaml +0 -0
  354. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/workflows/testpkg-bam.newp +0 -0
  355. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/workflows/testpkg-baz.yaml +0 -0
  356. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/stormpkg/workflows/testpkg-foo.yaml +0 -0
  357. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/test.dat +0 -0
  358. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/files/testcore/cell.yaml +0 -0
  359. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/nopmod.py +0 -0
  360. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_axon.py +0 -0
  361. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_cmds_boss.py +0 -0
  362. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_cmds_cortex.py +0 -0
  363. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_cmds_hive.py +0 -0
  364. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_common.py +0 -0
  365. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_cryotank.py +0 -0
  366. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_daemon.py +0 -0
  367. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_data.py +0 -0
  368. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_exc.py +0 -0
  369. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_glob.py +0 -0
  370. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_init.py +0 -0
  371. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_ast.py +0 -0
  372. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_autodoc.py +0 -0
  373. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_base.py +0 -0
  374. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_boss.py +0 -0
  375. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_cache.py +0 -0
  376. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_certdir.py +0 -0
  377. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_chop.py +0 -0
  378. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_cli.py +0 -0
  379. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_config.py +0 -0
  380. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_const.py +0 -0
  381. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_coro.py +0 -0
  382. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_crypto_coin.py +0 -0
  383. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_crypto_ecc.py +0 -0
  384. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_crypto_passwd.py +0 -0
  385. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_crypto_tinfoil.py +0 -0
  386. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_datfile.py +0 -0
  387. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_dyndeps.py +0 -0
  388. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_encoding.py +0 -0
  389. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_gis.py +0 -0
  390. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_hashitem.py +0 -0
  391. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_hashset.py +0 -0
  392. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_health.py +0 -0
  393. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_hive.py +0 -0
  394. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_hiveauth.py +0 -0
  395. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_interval.py +0 -0
  396. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_jsonstor.py +0 -0
  397. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_jupyter.py +0 -0
  398. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_layer.py +0 -0
  399. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_link.py +0 -0
  400. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_lmdbslab.py +0 -0
  401. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_modelrev.py +0 -0
  402. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_module.py +0 -0
  403. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_msgpack.py +0 -0
  404. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_multislabseqn.py +0 -0
  405. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_nexus.py +0 -0
  406. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_node.py +0 -0
  407. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_output.py +0 -0
  408. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_platforms_linux.py +0 -0
  409. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_queue.py +0 -0
  410. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_ratelimit.py +0 -0
  411. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_reflect.py +0 -0
  412. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_scope.py +0 -0
  413. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_scrape.py +0 -0
  414. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_slaboffs.py +0 -0
  415. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_slabseqn.py +0 -0
  416. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_snap.py +0 -0
  417. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_spooled.py +0 -0
  418. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_storm_format.py +0 -0
  419. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormhttp.py +0 -0
  420. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_auth.py +0 -0
  421. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_backup.py +0 -0
  422. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_basex.py +0 -0
  423. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_cell.py +0 -0
  424. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_easyperm.py +0 -0
  425. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_ethereum.py +0 -0
  426. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_gen.py +0 -0
  427. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_gis.py +0 -0
  428. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_hashes.py +0 -0
  429. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_hex.py +0 -0
  430. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_imap.py +0 -0
  431. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_infosec.py +0 -0
  432. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_ipv6.py +0 -0
  433. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_iters.py +0 -0
  434. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_json.py +0 -0
  435. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_log.py +0 -0
  436. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_mime.py +0 -0
  437. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_model.py +0 -0
  438. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_modelext.py +0 -0
  439. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_oauth.py +0 -0
  440. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_pack.py +0 -0
  441. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_random.py +0 -0
  442. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_scrape.py +0 -0
  443. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_smtp.py +0 -0
  444. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_stats.py +0 -0
  445. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_stix.py +0 -0
  446. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_storm.py +0 -0
  447. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_vault.py +0 -0
  448. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_xml.py +0 -0
  449. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormlib_yaml.py +0 -0
  450. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormsvc.py +0 -0
  451. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_stormwhois.py +0 -0
  452. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_structlog.py +0 -0
  453. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_task.py +0 -0
  454. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_thishost.py +0 -0
  455. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_time.py +0 -0
  456. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_trigger.py +0 -0
  457. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_types.py +0 -0
  458. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_urlhelp.py +0 -0
  459. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lib_version.py +0 -0
  460. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lookup_iso3166.py +0 -0
  461. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_lookup_phonenum.py +0 -0
  462. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_mindmeld.py +0 -0
  463. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_auth.py +0 -0
  464. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_base.py +0 -0
  465. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_belief.py +0 -0
  466. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_biz.py +0 -0
  467. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_crypto.py +0 -0
  468. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_dns.py +0 -0
  469. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_economic.py +0 -0
  470. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_geopol.py +0 -0
  471. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_geospace.py +0 -0
  472. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_gov_cn.py +0 -0
  473. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_gov_intl.py +0 -0
  474. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_gov_us.py +0 -0
  475. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_infotech.py +0 -0
  476. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_language.py +0 -0
  477. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_material.py +0 -0
  478. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_media.py +0 -0
  479. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_orgs.py +0 -0
  480. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_person.py +0 -0
  481. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_proj.py +0 -0
  482. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_science.py +0 -0
  483. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_syn.py +0 -0
  484. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_telco.py +0 -0
  485. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_model_transport.py +0 -0
  486. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_servers_axon.py +0 -0
  487. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_servers_cortex.py +0 -0
  488. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_servers_cryotank.py +0 -0
  489. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_servers_stemcell.py +0 -0
  490. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_servers_univ.py +0 -0
  491. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_aha.py +0 -0
  492. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_autodoc.py +0 -0
  493. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_axon2axon.py +0 -0
  494. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_backup.py +0 -0
  495. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_cellauth.py +0 -0
  496. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_cryo_cat.py +0 -0
  497. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_cryo_list.py +0 -0
  498. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_csvtool.py +0 -0
  499. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_docker_validate.py +0 -0
  500. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_easycert.py +0 -0
  501. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_feed.py +0 -0
  502. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_guid.py +0 -0
  503. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_healthcheck.py +0 -0
  504. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_json2mpk.py +0 -0
  505. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_livebackup.py +0 -0
  506. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_pullfile.py +0 -0
  507. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_pushfile.py +0 -0
  508. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_reload.py +0 -0
  509. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_rstorm.py +0 -0
  510. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_tools_storm.py +0 -0
  511. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_utils.py +0 -0
  512. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_utils_getrefs.py +0 -0
  513. {synapse-2.165.0 → synapse-2.167.0}/synapse/tests/test_utils_stormcov.py +0 -0
  514. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/__init__.py +0 -0
  515. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/aha/__init__.py +0 -0
  516. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/aha/easycert.py +0 -0
  517. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/aha/enroll.py +0 -0
  518. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/aha/list.py +0 -0
  519. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/aha/provision/__init__.py +0 -0
  520. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/aha/provision/service.py +0 -0
  521. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/aha/provision/user.py +0 -0
  522. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/axon2axon.py +0 -0
  523. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/backup.py +0 -0
  524. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/cellauth.py +0 -0
  525. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/cmdr.py +0 -0
  526. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/cryo/__init__.py +0 -0
  527. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/cryo/cat.py +0 -0
  528. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/cryo/list.py +0 -0
  529. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/csvtool.py +0 -0
  530. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/docker/__init__.py +0 -0
  531. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/docker/validate.py +0 -0
  532. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/easycert.py +0 -0
  533. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/feed.py +0 -0
  534. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/genpkg.py +0 -0
  535. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/guid.py +0 -0
  536. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/healthcheck.py +0 -0
  537. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/hive/__init__.py +0 -0
  538. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/json2mpk.py +0 -0
  539. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/livebackup.py +0 -0
  540. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/promote.py +0 -0
  541. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/pullfile.py +0 -0
  542. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/pushfile.py +0 -0
  543. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/reload.py +0 -0
  544. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/rstorm.py +0 -0
  545. {synapse-2.165.0 → synapse-2.167.0}/synapse/tools/storm.py +0 -0
  546. {synapse-2.165.0 → synapse-2.167.0}/synapse/utils/__init__.py +0 -0
  547. {synapse-2.165.0 → synapse-2.167.0}/synapse/utils/getrefs.py +0 -0
  548. {synapse-2.165.0 → synapse-2.167.0}/synapse/utils/stormcov/__init__.py +0 -0
  549. {synapse-2.165.0 → synapse-2.167.0}/synapse/utils/stormcov/plugin.py +0 -0
  550. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/__init__.py +0 -0
  551. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/cashaddress/LICENSE +0 -0
  552. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/cashaddress/__init__.py +0 -0
  553. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/cashaddress/base58.py +0 -0
  554. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/cashaddress/convert.py +0 -0
  555. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/cashaddress/crypto.py +0 -0
  556. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/cashaddress/tests/__init__.py +0 -0
  557. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/cashaddress/tests/test_cashaddress.py +0 -0
  558. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/substrateinterface/LICENSE +0 -0
  559. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/substrateinterface/__init__.py +0 -0
  560. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/substrateinterface/tests/__init__.py +0 -0
  561. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/substrateinterface/tests/test_ss58.py +0 -0
  562. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/substrateinterface/utils/__init__.py +0 -0
  563. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/substrateinterface/utils/ss58.py +0 -0
  564. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/utils.py +0 -0
  565. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/xrpl/LICENSE +0 -0
  566. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/xrpl/__init__.py +0 -0
  567. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/xrpl/constants.py +0 -0
  568. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/xrpl/core/__init__.py +0 -0
  569. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/xrpl/core/addresscodec/__init__.py +0 -0
  570. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/xrpl/core/addresscodec/codec.py +0 -0
  571. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/xrpl/core/addresscodec/exceptions.py +0 -0
  572. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/xrpl/core/addresscodec/main.py +0 -0
  573. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/xrpl/core/addresscodec/utils.py +0 -0
  574. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/xrpl/tests/__init__.py +0 -0
  575. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/xrpl/tests/test_codec.py +0 -0
  576. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/xrpl/tests/test_main.py +0 -0
  577. {synapse-2.165.0 → synapse-2.167.0}/synapse/vendor/xrpl/tests/test_main_test_cases.py +0 -0
  578. {synapse-2.165.0 → synapse-2.167.0}/synapse.egg-info/dependency_links.txt +0 -0
  579. {synapse-2.165.0 → synapse-2.167.0}/synapse.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: synapse
3
- Version: 2.165.0
3
+ Version: 2.167.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
@@ -36,7 +36,7 @@ Requires-Dist: lark==1.1.9
36
36
  Requires-Dist: Pygments<2.18.0,>=2.7.4
37
37
  Requires-Dist: packaging<24.0,>=20.0
38
38
  Requires-Dist: fastjsonschema<2.20.0,>=2.18.0
39
- Requires-Dist: stix2-validator<4.0.0,>=3.0.0
39
+ Requires-Dist: stix2-validator<4.0.0,>=3.2.0
40
40
  Requires-Dist: vcrpy<5.2.0,>=4.3.1
41
41
  Requires-Dist: base58<2.2.0,>=2.1.0
42
42
  Requires-Dist: python-bitcoinlib<0.13.0,>=0.11.0
@@ -46,7 +46,7 @@ Requires-Dist: scalecodec<1.3.0,>=1.0.2
46
46
  Requires-Dist: cbor2<5.7.0,>=5.4.1
47
47
  Requires-Dist: bech32==1.2.0
48
48
  Requires-Dist: oauthlib<4.0.0,>=3.2.1
49
- Requires-Dist: idna<3.7,>=3.6
49
+ Requires-Dist: idna<3.8,>=3.6
50
50
  Requires-Dist: python-dateutil<3.0,>=2.8
51
51
  Requires-Dist: pytz<2024.1,>=2023.3
52
52
  Requires-Dist: beautifulsoup4[html5lib]<5.0,>=4.11.1
@@ -4,7 +4,7 @@ build-backend = 'setuptools.build_meta'
4
4
 
5
5
  [project]
6
6
  name = 'synapse'
7
- version = '2.165.0'
7
+ version = '2.167.0'
8
8
  authors = [
9
9
  { name = 'The Vertex Project LLC', email = 'root@vertex.link'},
10
10
  ]
@@ -40,7 +40,7 @@ dependencies = [
40
40
  'Pygments>=2.7.4,<2.18.0',
41
41
  'packaging>=20.0,<24.0',
42
42
  'fastjsonschema>=2.18.0,<2.20.0',
43
- 'stix2-validator>=3.0.0,<4.0.0',
43
+ 'stix2-validator>=3.2.0,<4.0.0',
44
44
  'vcrpy>=4.3.1,<5.2.0',
45
45
  'base58>=2.1.0,<2.2.0',
46
46
  'python-bitcoinlib>=0.11.0,<0.13.0',
@@ -50,7 +50,7 @@ dependencies = [
50
50
  'cbor2>=5.4.1,<5.7.0',
51
51
  'bech32==1.2.0',
52
52
  'oauthlib>=3.2.1,<4.0.0',
53
- 'idna>=3.6,<3.7',
53
+ 'idna>=3.6,<3.8',
54
54
  'python-dateutil>=2.8,<3.0',
55
55
  'pytz>=2023.3,<2024.1',
56
56
  'beautifulsoup4[html5lib]>=4.11.1,<5.0',
@@ -1509,7 +1509,6 @@ class Axon(s_cell.Cell):
1509
1509
  atimeout = aiohttp.ClientTimeout(total=timeout)
1510
1510
 
1511
1511
  async with aiohttp.ClientSession(connector=connector, timeout=atimeout) as sess:
1512
-
1513
1512
  try:
1514
1513
  data = aiohttp.FormData()
1515
1514
  data._is_multipart = True
@@ -1523,7 +1522,9 @@ class Axon(s_cell.Cell):
1523
1522
 
1524
1523
  sha256 = field.get('sha256')
1525
1524
  if sha256:
1526
- valu = self.get(s_common.uhex(sha256))
1525
+ sha256b = s_common.uhex(sha256)
1526
+ await self._reqHas(sha256b)
1527
+ valu = self.get(sha256b)
1527
1528
  else:
1528
1529
  valu = field.get('value')
1529
1530
  if not isinstance(valu, (bytes, str)):
@@ -1547,9 +1548,6 @@ class Axon(s_cell.Cell):
1547
1548
  }
1548
1549
  return info
1549
1550
 
1550
- except asyncio.CancelledError: # pramga: no cover
1551
- raise
1552
-
1553
1551
  except Exception as e:
1554
1552
  logger.exception(f'Error POSTing files to [{s_urlhelp.sanitizeUrl(url)}]')
1555
1553
  err = s_common.err(e)
@@ -1586,9 +1584,8 @@ class Axon(s_cell.Cell):
1586
1584
  atimeout = aiohttp.ClientTimeout(total=timeout)
1587
1585
 
1588
1586
  async with aiohttp.ClientSession(connector=connector, timeout=atimeout) as sess:
1589
-
1590
1587
  try:
1591
-
1588
+ await self._reqHas(sha256)
1592
1589
  async with sess.request(method, url, headers=headers, params=params,
1593
1590
  data=self.get(sha256), ssl=ssl) as resp:
1594
1591
 
@@ -1601,9 +1598,6 @@ class Axon(s_cell.Cell):
1601
1598
  }
1602
1599
  return info
1603
1600
 
1604
- except asyncio.CancelledError: # pramga: no cover
1605
- raise
1606
-
1607
1601
  except Exception as e:
1608
1602
  logger.exception(f'Error streaming [{sha256}] to [{s_urlhelp.sanitizeUrl(url)}]')
1609
1603
  err = s_common.err(e)
@@ -212,7 +212,7 @@ class StormCmd(s_cli.Cmd):
212
212
  * nodeedits (default),
213
213
  * count (just counts of nodeedits), or
214
214
  * none (no such messages emitted).
215
- --show-prov: Show provenance messages.
215
+ --show-prov: Deprecated. This no longer does anything.
216
216
  --raw: Print the nodes in their raw format. This overrides --hide-tags and --hide-props.
217
217
  --debug: Display cmd debug information along with nodes in raw format. This overrides other display arguments.
218
218
  --path: Get path information about returned nodes.
@@ -256,7 +256,6 @@ class StormCmd(s_cli.Cmd):
256
256
  'err': self._onErr,
257
257
  'node:edits': self._onNodeEdits,
258
258
  'node:edits:count': self._onNodeEditsCount,
259
- 'prov:new': self._onProvNew, # TODO remove in 3.0.0
260
259
  }
261
260
  self._indented = False
262
261
 
@@ -281,10 +280,6 @@ class StormCmd(s_cli.Cmd):
281
280
  s_cli.Cmd.printf(self, '.' * count, addnl=False, color=NODEEDIT_COLOR)
282
281
  self._indented = True
283
282
 
284
- def _onProvNew(self, mesg, opts):
285
- if opts.get('show-prov'):
286
- self.printf(repr(mesg), color=PROVNEW_COLOR)
287
-
288
283
  def _printNodeProp(self, name, valu):
289
284
  self.printf(f' {name} = {valu}')
290
285
 
@@ -973,6 +973,12 @@ def unjsonsafe_nodeedits(nodeedits):
973
973
 
974
974
  return retn
975
975
 
976
+ def reprauthrule(rule):
977
+ text = '.'.join(rule[1])
978
+ if not rule[0]:
979
+ text = '!' + text
980
+ return text
981
+
976
982
  def reqJsonSafeStrict(item):
977
983
  '''
978
984
  Require the item to be safe to serialize to JSON without type coercion issues.
@@ -53,7 +53,6 @@ import synapse.lib.crypto.rsa as s_rsa
53
53
  import synapse.lib.stormhttp as s_stormhttp # NOQA
54
54
  import synapse.lib.stormwhois as s_stormwhois # NOQA
55
55
 
56
- import synapse.lib.provenance as s_provenance
57
56
  import synapse.lib.stormtypes as s_stormtypes
58
57
 
59
58
  import synapse.lib.stormlib.aha as s_stormlib_aha # NOQA
@@ -74,6 +73,7 @@ import synapse.lib.stormlib.smtp as s_stormlib_smtp # NOQA
74
73
  import synapse.lib.stormlib.stix as s_stormlib_stix # NOQA
75
74
  import synapse.lib.stormlib.yaml as s_stormlib_yaml # NOQA
76
75
  import synapse.lib.stormlib.basex as s_stormlib_basex # NOQA
76
+ import synapse.lib.stormlib.cache as s_stormlib_cache # NOQA
77
77
  import synapse.lib.stormlib.graph as s_stormlib_graph # NOQA
78
78
  import synapse.lib.stormlib.iters as s_stormlib_iters # NOQA
79
79
  import synapse.lib.stormlib.macro as s_stormlib_macro
@@ -89,6 +89,7 @@ import synapse.lib.stormlib.random as s_stormlib_random # NOQA
89
89
  import synapse.lib.stormlib.scrape as s_stormlib_scrape # NOQA
90
90
  import synapse.lib.stormlib.infosec as s_stormlib_infosec # NOQA
91
91
  import synapse.lib.stormlib.project as s_stormlib_project # NOQA
92
+ import synapse.lib.stormlib.spooled as s_stormlib_spooled # NOQA
92
93
  import synapse.lib.stormlib.version as s_stormlib_version # NOQA
93
94
  import synapse.lib.stormlib.easyperm as s_stormlib_easyperm # NOQA
94
95
  import synapse.lib.stormlib.ethereum as s_stormlib_ethereum # NOQA
@@ -286,10 +287,8 @@ class CoreApi(s_cell.CellApi):
286
287
  s_common.deprecated('CoreApi.addNode')
287
288
  async with await self.cell.snap(user=self.user) as snap:
288
289
  self.user.confirm(('node', 'add', form), gateiden=snap.wlyr.iden)
289
- with s_provenance.claim('coreapi', meth='node:add', user=snap.user.iden):
290
-
291
- node = await snap.addNode(form, valu, props=props)
292
- return node.pack()
290
+ node = await snap.addNode(form, valu, props=props)
291
+ return node.pack()
293
292
 
294
293
  async def addNodes(self, nodes):
295
294
  '''
@@ -317,16 +316,14 @@ class CoreApi(s_cell.CellApi):
317
316
  done[formname] = True
318
317
 
319
318
  async with await self.cell.snap(user=self.user) as snap:
320
- with s_provenance.claim('coreapi', meth='node:add', user=snap.user.iden):
321
319
 
322
- snap.strict = False
323
-
324
- async for node in snap.addNodes(nodes):
320
+ snap.strict = False
321
+ async for node in snap.addNodes(nodes):
325
322
 
326
- if node is not None:
327
- node = node.pack()
323
+ if node is not None:
324
+ node = node.pack()
328
325
 
329
- yield node
326
+ yield node
330
327
 
331
328
  async def getFeedFuncs(self):
332
329
  '''
@@ -361,9 +358,8 @@ class CoreApi(s_cell.CellApi):
361
358
  })
362
359
 
363
360
  async with await self.cell.snap(user=self.user, view=view) as snap:
364
- with s_provenance.claim('feed:data', name=name, user=snap.user.iden):
365
- snap.strict = False
366
- await snap.addFeedData(name, items)
361
+ snap.strict = False
362
+ await snap.addFeedData(name, items)
367
363
 
368
364
  async def count(self, text, opts=None):
369
365
  '''
@@ -1002,7 +998,16 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1002
998
  'multiqueue': self.multiqueue,
1003
999
  })
1004
1000
 
1005
- await self.auth.addAuthGate('cortex', 'cortex')
1001
+ # TODO - Remove this in 3.0.0
1002
+ ag = await self.auth.addAuthGate('cortex', 'cortex')
1003
+ for (useriden, user) in ag.gateusers.items():
1004
+ mesg = f'User {useriden} ({user.name}) has a rule on the "cortex" authgate. This authgate is not used ' \
1005
+ f'for permission checks and will be removed in Synapse v3.0.0.'
1006
+ logger.warning(mesg, extra=await self.getLogExtra(user=useriden, username=user.name))
1007
+ for (roleiden, role) in ag.gateroles.items():
1008
+ mesg = f'Role {roleiden} ({role.name}) has a rule on the "cortex" authgate. This authgate is not used ' \
1009
+ f'for permission checks and will be removed in Synapse v3.0.0.'
1010
+ logger.warning(mesg, extra=await self.getLogExtra(role=roleiden, rolename=role.name))
1006
1011
 
1007
1012
  self._initVaults()
1008
1013
 
@@ -1011,6 +1016,12 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1011
1016
  (2, self._storLayrFeedDefaults),
1012
1017
  ), nexs=False)
1013
1018
 
1019
+ async def _viewNomergeToProtected(self):
1020
+ for view in self.views.values():
1021
+ nomerge = view.info.get('nomerge', False)
1022
+ await view.setViewInfo('protected', nomerge)
1023
+ await view.setViewInfo('nomerge', None)
1024
+
1014
1025
  async def _storUpdateMacros(self):
1015
1026
  for name, node in await self.hive.open(('cortex', 'storm', 'macros')):
1016
1027
 
@@ -1045,6 +1056,9 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1045
1056
 
1046
1057
  def getStormMacro(self, name, user=None):
1047
1058
 
1059
+ if not name:
1060
+ raise s_exc.BadArg(mesg=f'Macro names must be at least 1 character long')
1061
+
1048
1062
  if len(name) > 491:
1049
1063
  raise s_exc.BadArg(mesg='Macro names may only be up to 491 chars.')
1050
1064
 
@@ -1135,6 +1149,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1135
1149
  raise s_exc.BadArg(mesg=f'Duplicate macro name: {name}')
1136
1150
 
1137
1151
  self.slab.put(name.encode(), s_msgpack.en(mdef), db=self.macrodb)
1152
+ await self.feedBeholder('storm:macro:add', {'macro': mdef})
1138
1153
  return mdef
1139
1154
 
1140
1155
  async def delStormMacro(self, name, user=None):
@@ -1146,9 +1161,15 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1146
1161
 
1147
1162
  @s_nexus.Pusher.onPush('storm:macro:del')
1148
1163
  async def _delStormMacro(self, name):
1164
+ if not name:
1165
+ raise s_exc.BadArg(mesg=f'Macro names must be at least 1 character long')
1166
+
1149
1167
  byts = self.slab.pop(name.encode(), db=self.macrodb)
1168
+
1150
1169
  if byts is not None:
1151
- return s_msgpack.un(byts)
1170
+ macro = s_msgpack.un(byts)
1171
+ await self.feedBeholder('storm:macro:del', {'name': name, 'iden': macro.get('iden')})
1172
+ return macro
1152
1173
 
1153
1174
  async def modStormMacro(self, name, info, user=None):
1154
1175
  if user is not None:
@@ -1178,6 +1199,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1178
1199
  else:
1179
1200
  self.slab.put(name.encode(), s_msgpack.en(mdef), db=self.macrodb)
1180
1201
 
1202
+ await self.feedBeholder('storm:macro:mod', {'macro': mdef, 'info': info})
1181
1203
  return mdef
1182
1204
 
1183
1205
  async def setStormMacroPerm(self, name, scope, iden, level, user=None):
@@ -1196,6 +1218,14 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1196
1218
  reqValidStormMacro(mdef)
1197
1219
 
1198
1220
  self.slab.put(name.encode(), s_msgpack.en(mdef), db=self.macrodb)
1221
+
1222
+ info = {
1223
+ 'scope': scope,
1224
+ 'iden': iden,
1225
+ 'level': level
1226
+ }
1227
+
1228
+ await self.feedBeholder('storm:macro:set:perm', {'macro': mdef, 'info': info})
1199
1229
  return mdef
1200
1230
 
1201
1231
  async def getStormMacros(self, user=None):
@@ -1395,6 +1425,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1395
1425
 
1396
1426
  await self._bumpCellVers('cortex:defaults', (
1397
1427
  (1, self._addAllLayrRead),
1428
+ (2, self._viewNomergeToProtected),
1398
1429
  ))
1399
1430
 
1400
1431
  async def _addAllLayrRead(self):
@@ -1447,6 +1478,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1447
1478
  async def initServiceActive(self):
1448
1479
 
1449
1480
  await self.stormdmons.start()
1481
+ await self.agenda.clearRunningStatus()
1450
1482
 
1451
1483
  for view in self.views.values():
1452
1484
  await view.initTrigTask()
@@ -1472,19 +1504,28 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
1472
1504
 
1473
1505
  async def initStormPool(self):
1474
1506
 
1475
- byts = self.slab.get(b'storm:pool', db='cell:conf')
1476
- if byts is None:
1477
- return
1507
+ try:
1508
+
1509
+ byts = self.slab.get(b'storm:pool', db='cell:conf')
1510
+ if byts is None:
1511
+ return
1478
1512
 
1479
- url, opts = s_msgpack.un(byts)
1513
+ url, opts = s_msgpack.un(byts)
1480
1514
 
1481
- self.stormpoolurl = url
1482
- self.stormpoolopts = opts
1515
+ self.stormpoolurl = url
1516
+ self.stormpoolopts = opts
1483
1517
 
1484
- self.stormpool = await s_telepath.open(url)
1518
+ async def onlink(proxy, urlinfo):
1519
+ _url = s_urlhelp.sanitizeUrl(s_telepath.zipurl(urlinfo))
1520
+ logger.debug(f'Stormpool client connected to {_url}')
1485
1521
 
1486
- # make this one a fini weakref vs the fini() handler
1487
- self.onfini(self.stormpool)
1522
+ self.stormpool = await s_telepath.open(url, onlink=onlink)
1523
+
1524
+ # make this one a fini weakref vs the fini() handler
1525
+ self.onfini(self.stormpool)
1526
+
1527
+ except Exception as e: # pragma: no cover
1528
+ logger.exception(f'Error starting stormpool, it will not be available: {e}')
1488
1529
 
1489
1530
  async def finiStormPool(self):
1490
1531
 
@@ -3478,14 +3519,12 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
3478
3519
  buid = s_common.uhex(iden)
3479
3520
  async with await self.snap(user=user) as snap:
3480
3521
 
3481
- with s_provenance.claim('coreapi', meth='tag:add', user=snap.user.iden):
3482
-
3483
- node = await snap.getNodeByBuid(buid)
3484
- if node is None:
3485
- raise s_exc.NoSuchIden(iden=iden)
3522
+ node = await snap.getNodeByBuid(buid)
3523
+ if node is None:
3524
+ raise s_exc.NoSuchIden(iden=iden)
3486
3525
 
3487
- await node.addTag(tag, valu=valu)
3488
- return node.pack()
3526
+ await node.addTag(tag, valu=valu)
3527
+ return node.pack()
3489
3528
 
3490
3529
  async def addNode(self, user, form, valu, props=None):
3491
3530
 
@@ -3505,14 +3544,12 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
3505
3544
 
3506
3545
  async with await self.snap(user=user) as snap:
3507
3546
 
3508
- with s_provenance.claim('coreapi', meth='tag:del', user=snap.user.iden):
3509
-
3510
- node = await snap.getNodeByBuid(buid)
3511
- if node is None:
3512
- raise s_exc.NoSuchIden(iden=iden)
3547
+ node = await snap.getNodeByBuid(buid)
3548
+ if node is None:
3549
+ raise s_exc.NoSuchIden(iden=iden)
3513
3550
 
3514
- await node.delTag(tag)
3515
- return node.pack()
3551
+ await node.delTag(tag)
3552
+ return node.pack()
3516
3553
 
3517
3554
  async def _onCoreFini(self):
3518
3555
  '''
@@ -4130,7 +4167,7 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
4130
4167
  @s_nexus.Pusher.onPushAuto('http:api:mod')
4131
4168
  async def modHttpExtApi(self, iden, name, valu):
4132
4169
  # Created, Creator, Updated are not mutable
4133
- if name in ('name', 'desc', 'runas', 'methods', 'authenticated', 'perms', 'readonly', 'vars'):
4170
+ if name in ('name', 'desc', 'runas', 'methods', 'authenticated', 'pool', 'perms', 'readonly', 'vars'):
4134
4171
  # Schema takes care of these values
4135
4172
  pass
4136
4173
  elif name == 'owner':
@@ -4447,6 +4484,10 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
4447
4484
  if view is None:
4448
4485
  raise s_exc.NoSuchView(mesg=f'No such view {iden=}', iden=iden)
4449
4486
 
4487
+ if view.info.get('protected'):
4488
+ mesg = f'Cannot delete view ({iden}) that has protected set.'
4489
+ raise s_exc.CantDelView(mesg=mesg)
4490
+
4450
4491
  return await self._push('view:del', iden)
4451
4492
 
4452
4493
  @s_nexus.Pusher.onPush('view:del')
@@ -5280,12 +5321,14 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5280
5321
  return mirropts
5281
5322
 
5282
5323
  async def _getMirrorProxy(self):
5283
- if isinstance(self.stormpool, s_telepath.Pool) and self.stormpool.size() == 0:
5284
- mesg = 'Storm query mirror pool is empty, running locally instead.'
5285
- logger.warning(mesg)
5324
+
5325
+ if self.stormpool is None: # pragma: no cover
5326
+ return None
5327
+
5328
+ if self.stormpool.size() == 0:
5329
+ logger.warning('Storm query mirror pool is empty, running query locally.')
5286
5330
  return None
5287
5331
 
5288
- proxy = None
5289
5332
  try:
5290
5333
  timeout = self.stormpoolopts.get('timeout:connection')
5291
5334
  proxy = await self.stormpool.proxy(timeout=timeout)
@@ -5293,10 +5336,12 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5293
5336
  if proxyname is not None and proxyname == self.ahasvcname:
5294
5337
  # we are part of the pool and were selected. Convert to local use.
5295
5338
  return None
5339
+
5340
+ return proxy
5341
+
5296
5342
  except (TimeoutError, s_exc.IsFini):
5297
- mesg = 'Unable to get proxy for query mirror, running locally instead.'
5298
- logger.warning(mesg)
5299
- return proxy
5343
+ logger.warning('Timeout waiting for pool mirror, running query locally.')
5344
+ return None
5300
5345
 
5301
5346
  async def storm(self, text, opts=None):
5302
5347
 
@@ -5767,16 +5812,15 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
5767
5812
 
5768
5813
  async def _initCoreMods(self):
5769
5814
 
5770
- with s_provenance.claim('init', meth='_initCoreMods'):
5771
- for ctor, modu in list(self.modules.items()):
5815
+ for ctor, modu in list(self.modules.items()):
5772
5816
 
5773
- try:
5774
- await s_coro.ornot(modu.initCoreModule)
5775
- except asyncio.CancelledError: # pragma: no cover TODO: remove once >= py 3.8 only
5776
- raise
5777
- except Exception:
5778
- logger.exception(f'module initCoreModule failed: {ctor}')
5779
- self.modules.pop(ctor, None)
5817
+ try:
5818
+ await s_coro.ornot(modu.initCoreModule)
5819
+ except asyncio.CancelledError: # pragma: no cover TODO: remove once >= py 3.8 only
5820
+ raise
5821
+ except Exception:
5822
+ logger.exception(f'module initCoreModule failed: {ctor}')
5823
+ self.modules.pop(ctor, None)
5780
5824
 
5781
5825
  def _loadCoreModule(self, ctor, conf=None):
5782
5826
 
@@ -6033,6 +6077,9 @@ class Cortex(s_oauth.OAuthMixin, s_cell.Cell): # type: ignore
6033
6077
  elif name == 'doc':
6034
6078
  appt.doc = str(valu)
6035
6079
 
6080
+ elif name == 'pool':
6081
+ appt.pool = bool(valu)
6082
+
6036
6083
  else:
6037
6084
  mesg = f'editCronJob name {name} is not supported for editing.'
6038
6085
  raise s_exc.BadArg(mesg=mesg)
@@ -873,10 +873,42 @@ class Model:
873
873
  for ifname in form.type.info.get('interfaces', ()):
874
874
  self._addFormIface(form, ifname)
875
875
 
876
+ self._checkFormDisplay(form)
877
+
876
878
  self.formprefixcache.clear()
877
879
 
878
880
  return form
879
881
 
882
+ def _checkFormDisplay(self, form):
883
+
884
+ formtype = self.types.get(form.full)
885
+
886
+ display = formtype.info.get('display')
887
+ if display is None:
888
+ return
889
+
890
+ for column in display.get('columns', ()):
891
+ coltype = column.get('type')
892
+ colopts = column.get('opts')
893
+
894
+ if coltype == 'prop':
895
+ curf = form
896
+ propname = colopts.get('name')
897
+ parts = propname.split('::')
898
+
899
+ for partname in parts:
900
+ prop = curf.prop(partname)
901
+ if prop is None:
902
+ mesg = (f'Form {form.name} defines prop column {propname}'
903
+ f' but {curf.full} has no property named {partname}.')
904
+ raise s_exc.BadFormDef(mesg=mesg)
905
+
906
+ curf = self.form(prop.type.name)
907
+
908
+ else:
909
+ mesg = f'Form {form.name} defines column with invalid type ({coltype}).'
910
+ raise s_exc.BadFormDef(mesg=mesg)
911
+
880
912
  def delForm(self, formname):
881
913
 
882
914
  form = self.forms.get(formname)
@@ -145,6 +145,7 @@ class CantDelForm(SynErr): pass
145
145
  class CantDelProp(SynErr): pass
146
146
  class CantDelType(SynErr): pass
147
147
  class CantDelUniv(SynErr): pass
148
+ class CantDelView(SynErr): pass
148
149
  class CantMergeView(SynErr): pass
149
150
  class CantRevLayer(SynErr): pass
150
151
  class CliFini(SynErr):