synapse 2.224.0__py311-none-any.whl → 2.225.0__py311-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of synapse might be problematic. Click here for more details.
- synapse/axon.py +10 -5
- synapse/lib/cell.py +1 -1
- synapse/lib/const.py +4 -0
- synapse/lib/multislabseqn.py +36 -1
- synapse/lib/nexus.py +67 -8
- synapse/lib/queue.py +4 -1
- synapse/lib/rstorm.py +2 -2
- synapse/lib/schemas.py +11 -1
- synapse/lib/slabseqn.py +28 -0
- synapse/lib/storm.py +5 -1
- synapse/lib/stormhttp.py +7 -1
- synapse/lib/version.py +2 -2
- synapse/models/inet.py +4 -0
- synapse/models/media.py +4 -0
- synapse/models/risk.py +3 -0
- synapse/tests/test_cortex.py +2 -2
- synapse/tests/test_lib_agenda.py +1 -1
- synapse/tests/test_lib_cell.py +1 -1
- synapse/tests/test_lib_certdir.py +1 -1
- synapse/tests/test_lib_httpapi.py +1 -1
- synapse/tests/test_lib_layer.py +1 -1
- synapse/tests/test_lib_multislabseqn.py +22 -0
- synapse/tests/test_lib_nexus.py +42 -1
- synapse/tests/test_lib_slabseqn.py +30 -1
- synapse/tests/test_lib_storm.py +59 -1
- synapse/tests/test_lib_stormhttp.py +16 -0
- synapse/tests/test_lib_stormlib_oauth.py +1 -1
- synapse/tests/test_lib_stormsvc.py +1 -1
- synapse/tests/test_lib_trigger.py +1 -1
- synapse/tests/test_model_inet.py +6 -0
- synapse/tests/test_model_media.py +4 -1
- synapse/tests/test_model_risk.py +2 -0
- synapse/tests/{test_tools_axon2axon.py → test_tools_axon_copy.py} +4 -4
- synapse/tests/{test_tools_pullfile.py → test_tools_axon_get.py} +4 -4
- synapse/tests/{test_tools_pushfile.py → test_tools_axon_put.py} +7 -7
- synapse/tests/{test_tools_csvtool.py → test_tools_cortex_csv.py} +12 -3
- synapse/tests/{test_tools_feed.py → test_tools_cortex_feed.py} +2 -2
- synapse/tests/{test_tools_apikey.py → test_tools_service_apikey.py} +1 -4
- synapse/tests/{test_tools_backup.py → test_tools_service_backup.py} +5 -5
- synapse/tests/{test_tools_demote.py → test_tools_service_demote.py} +1 -1
- synapse/tests/{test_tools_healthcheck.py → test_tools_service_healthcheck.py} +1 -1
- synapse/tests/{test_tools_livebackup.py → test_tools_service_livebackup.py} +1 -1
- synapse/tests/{test_tools_modrole.py → test_tools_service_modrole.py} +1 -1
- synapse/tests/{test_tools_moduser.py → test_tools_service_moduser.py} +1 -1
- synapse/tests/{test_tools_promote.py → test_tools_service_promote.py} +1 -1
- synapse/tests/{test_tools_reload.py → test_tools_service_reload.py} +1 -1
- synapse/tests/{test_tools_shutdown.py → test_tools_service_shutdown.py} +1 -1
- synapse/tests/{test_tools_snapshot.py → test_tools_service_snapshot.py} +1 -1
- synapse/tests/{test_tools_storm.py → test_tools_storm_cli.py} +1 -1
- synapse/tests/{test_tools_pkgs_gendocs.py → test_tools_storm_pkg_doc.py} +12 -3
- synapse/tests/{test_tools_genpkg.py → test_tools_storm_pkg_gen.py} +1 -1
- synapse/tests/{test_tools_autodoc.py → test_tools_utils_autodoc.py} +1 -1
- synapse/tests/test_tools_utils_changelog.py +454 -0
- synapse/tests/{test_tools_easycert.py → test_tools_utils_easycert.py} +48 -46
- synapse/tests/{test_tools_guid.py → test_tools_utils_guid.py} +3 -3
- synapse/tests/{test_tools_json2mpk.py → test_tools_utils_json2mpk.py} +3 -3
- synapse/tests/{test_tools_rstorm.py → test_tools_utils_rstorm.py} +6 -1
- synapse/tests/utils.py +3 -1
- synapse/tools/apikey.py +4 -83
- synapse/tools/autodoc.py +3 -1031
- synapse/tools/axon/copy.py +44 -0
- synapse/tools/axon/get.py +64 -0
- synapse/tools/axon/put.py +122 -0
- synapse/tools/axon2axon.py +3 -36
- synapse/tools/backup.py +6 -176
- synapse/tools/changelog.py +3 -1098
- synapse/tools/cortex/csv.py +236 -0
- synapse/tools/cortex/feed.py +151 -0
- synapse/tools/csvtool.py +3 -227
- synapse/tools/demote.py +4 -40
- synapse/tools/docker/validate.py +3 -3
- synapse/tools/easycert.py +4 -129
- synapse/tools/feed.py +3 -140
- synapse/tools/genpkg.py +3 -307
- synapse/tools/guid.py +7 -6
- synapse/tools/healthcheck.py +3 -101
- synapse/tools/json2mpk.py +6 -38
- synapse/tools/livebackup.py +4 -27
- synapse/tools/modrole.py +3 -108
- synapse/tools/moduser.py +3 -179
- synapse/tools/pkgs/gendocs.py +3 -164
- synapse/tools/promote.py +4 -41
- synapse/tools/pullfile.py +3 -56
- synapse/tools/pushfile.py +3 -114
- synapse/tools/reload.py +4 -61
- synapse/tools/rstorm.py +3 -26
- synapse/tools/service/__init__.py +0 -0
- synapse/tools/service/apikey.py +90 -0
- synapse/tools/service/backup.py +181 -0
- synapse/tools/service/demote.py +47 -0
- synapse/tools/service/healthcheck.py +109 -0
- synapse/tools/service/livebackup.py +34 -0
- synapse/tools/service/modrole.py +116 -0
- synapse/tools/service/moduser.py +184 -0
- synapse/tools/service/promote.py +48 -0
- synapse/tools/service/reload.py +68 -0
- synapse/tools/service/shutdown.py +51 -0
- synapse/tools/service/snapshot.py +64 -0
- synapse/tools/shutdown.py +5 -45
- synapse/tools/snapshot.py +4 -57
- synapse/tools/storm/__init__.py +0 -0
- synapse/tools/storm/__main__.py +5 -0
- synapse/tools/{storm.py → storm/_cli.py} +0 -3
- synapse/tools/storm/pkg/__init__.py +0 -0
- synapse/tools/{pkgs/pandoc_filter.py → storm/pkg/_pandoc_filter.py} +1 -1
- synapse/tools/storm/pkg/doc.py +176 -0
- synapse/tools/storm/pkg/gen.py +315 -0
- synapse/tools/utils/__init__.py +0 -0
- synapse/tools/utils/autodoc.py +1040 -0
- synapse/tools/utils/changelog.py +1124 -0
- synapse/tools/utils/easycert.py +136 -0
- synapse/tools/utils/guid.py +11 -0
- synapse/tools/utils/json2mpk.py +46 -0
- synapse/tools/utils/rstorm.py +35 -0
- {synapse-2.224.0.dist-info → synapse-2.225.0.dist-info}/METADATA +1 -1
- {synapse-2.224.0.dist-info → synapse-2.225.0.dist-info}/RECORD +120 -91
- synapse/tests/test_tools_changelog.py +0 -196
- /synapse/tests/{test_tools_axon.py → test_tools_axon_dump_load.py} +0 -0
- {synapse-2.224.0.dist-info → synapse-2.225.0.dist-info}/WHEEL +0 -0
- {synapse-2.224.0.dist-info → synapse-2.225.0.dist-info}/licenses/LICENSE +0 -0
- {synapse-2.224.0.dist-info → synapse-2.225.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
|
|
3
|
+
import synapse.exc as s_exc
|
|
4
|
+
import synapse.lib.cmd as s_cmd
|
|
5
|
+
import synapse.lib.output as s_output
|
|
6
|
+
import synapse.lib.certdir as s_certdir
|
|
7
|
+
|
|
8
|
+
descr = '''
|
|
9
|
+
Command line tool to generate simple x509 certs
|
|
10
|
+
'''
|
|
11
|
+
|
|
12
|
+
async def main(argv, outp=s_output.stdout):
|
|
13
|
+
|
|
14
|
+
pars = argparse.ArgumentParser(prog='synapse.tools.utils.easycert', description=descr)
|
|
15
|
+
pars.add_argument('--certdir', default='~/.syn/certs', help='Directory for certs/keys')
|
|
16
|
+
pars.add_argument('--importfile', choices=('cas', 'hosts', 'users'), help='import certs and/or keys into local certdir')
|
|
17
|
+
|
|
18
|
+
pars.add_argument('--ca', default=False, action='store_true', help='mark the certificate as a CA/CRL signer')
|
|
19
|
+
pars.add_argument('--crl', default=False, action='store_true', help='Generate a new CRL for the given CA name.')
|
|
20
|
+
pars.add_argument('--p12', default=False, action='store_true', help='mark the certificate as a p12 archive')
|
|
21
|
+
pars.add_argument('--code', default=False, action='store_true', help='mark the certificate for use in code signing.')
|
|
22
|
+
pars.add_argument('--server', default=False, action='store_true', help='mark the certificate as a server')
|
|
23
|
+
pars.add_argument('--server-sans', help='server cert subject alternate names')
|
|
24
|
+
|
|
25
|
+
pars.add_argument('--csr', default=False, action='store_true', help='generate a cert signing request')
|
|
26
|
+
pars.add_argument('--sign-csr', default=False, action='store_true', help='sign a cert signing request')
|
|
27
|
+
pars.add_argument('--signas', help='sign the new cert with the given cert name')
|
|
28
|
+
pars.add_argument('--revokeas', help='Revoke a cert as the given CA and add it to the CSR.')
|
|
29
|
+
|
|
30
|
+
pars.add_argument('name', help='common name for the certificate (or filename for CSR signing)')
|
|
31
|
+
|
|
32
|
+
opts = pars.parse_args(argv)
|
|
33
|
+
|
|
34
|
+
cdir = s_certdir.CertDir(path=opts.certdir)
|
|
35
|
+
|
|
36
|
+
try:
|
|
37
|
+
|
|
38
|
+
if opts.crl:
|
|
39
|
+
|
|
40
|
+
crl = cdir.genCaCrl(opts.name)
|
|
41
|
+
crl._save()
|
|
42
|
+
|
|
43
|
+
outp.printf(f'CRL saved: {crl.path}')
|
|
44
|
+
|
|
45
|
+
return 0
|
|
46
|
+
|
|
47
|
+
if opts.revokeas:
|
|
48
|
+
|
|
49
|
+
if opts.code:
|
|
50
|
+
cert = cdir.getCodeCert(opts.name)
|
|
51
|
+
|
|
52
|
+
elif opts.server:
|
|
53
|
+
cert = cdir.getHostCert(opts.name)
|
|
54
|
+
|
|
55
|
+
elif opts.ca:
|
|
56
|
+
cert = cdir.getCaCert(opts.name)
|
|
57
|
+
|
|
58
|
+
else:
|
|
59
|
+
cert = cdir.getUserCert(opts.name)
|
|
60
|
+
|
|
61
|
+
if cert is None:
|
|
62
|
+
outp.printf(f'Certificate not found: {opts.name}')
|
|
63
|
+
return 1
|
|
64
|
+
|
|
65
|
+
crl = cdir.genCaCrl(opts.revokeas)
|
|
66
|
+
try:
|
|
67
|
+
crl.revoke(cert)
|
|
68
|
+
except s_exc.SynErr as e:
|
|
69
|
+
outp.printf(f'Failed to revoke certificate: {e.get("mesg")}')
|
|
70
|
+
return 1
|
|
71
|
+
|
|
72
|
+
outp.printf(f'Certificate revoked: {opts.name}')
|
|
73
|
+
outp.printf(f'CRL updated: {opts.revokeas}')
|
|
74
|
+
|
|
75
|
+
return 0
|
|
76
|
+
|
|
77
|
+
if opts.importfile:
|
|
78
|
+
cdir.importFile(opts.name, opts.importfile, outp=outp)
|
|
79
|
+
return 0
|
|
80
|
+
|
|
81
|
+
if opts.p12:
|
|
82
|
+
|
|
83
|
+
cdir.genClientCert(opts.name, outp=outp)
|
|
84
|
+
return 0
|
|
85
|
+
|
|
86
|
+
if opts.sign_csr:
|
|
87
|
+
|
|
88
|
+
if opts.signas is None:
|
|
89
|
+
outp.printf('--sign-csr requires --signas')
|
|
90
|
+
return 1
|
|
91
|
+
|
|
92
|
+
xcsr = cdir._loadCsrPath(opts.name)
|
|
93
|
+
if xcsr is None:
|
|
94
|
+
outp.printf('csr not found: %s' % (opts.name,))
|
|
95
|
+
return 1
|
|
96
|
+
|
|
97
|
+
if opts.server:
|
|
98
|
+
cdir.signHostCsr(xcsr, opts.signas, outp=outp)
|
|
99
|
+
return 0
|
|
100
|
+
|
|
101
|
+
cdir.signUserCsr(xcsr, opts.signas, outp=outp)
|
|
102
|
+
return 0
|
|
103
|
+
|
|
104
|
+
if opts.csr:
|
|
105
|
+
|
|
106
|
+
if opts.ca:
|
|
107
|
+
raise NotImplementedError('CSR for CA cert not supported (yet)')
|
|
108
|
+
|
|
109
|
+
if opts.server:
|
|
110
|
+
cdir.genHostCsr(opts.name, outp=outp)
|
|
111
|
+
return 0
|
|
112
|
+
|
|
113
|
+
cdir.genUserCsr(opts.name, outp=outp)
|
|
114
|
+
return 0
|
|
115
|
+
|
|
116
|
+
if opts.ca:
|
|
117
|
+
cdir.genCaCert(opts.name, signas=opts.signas, outp=outp)
|
|
118
|
+
return 0
|
|
119
|
+
|
|
120
|
+
if opts.server:
|
|
121
|
+
cdir.genHostCert(opts.name, signas=opts.signas, outp=outp, sans=opts.server_sans)
|
|
122
|
+
return 0
|
|
123
|
+
|
|
124
|
+
if opts.code:
|
|
125
|
+
cdir.genCodeCert(opts.name, signas=opts.signas, outp=outp)
|
|
126
|
+
return 0
|
|
127
|
+
|
|
128
|
+
cdir.genUserCert(opts.name, signas=opts.signas, outp=outp)
|
|
129
|
+
return 0
|
|
130
|
+
|
|
131
|
+
except s_exc.DupFileName as e:
|
|
132
|
+
outp.printf('file exists: %s' % (e.errinfo.get('path'),))
|
|
133
|
+
return 1
|
|
134
|
+
|
|
135
|
+
if __name__ == '__main__': # pragma: no cover
|
|
136
|
+
s_cmd.exitmain(main)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import synapse.common as s_common
|
|
2
|
+
|
|
3
|
+
import synapse.lib.cmd as s_cmd
|
|
4
|
+
import synapse.lib.output as s_output
|
|
5
|
+
|
|
6
|
+
async def main(argv, outp=s_output.stdout):
|
|
7
|
+
outp.printf(s_common.guid())
|
|
8
|
+
return 0
|
|
9
|
+
|
|
10
|
+
if __name__ == '__main__': # pragma: no cover
|
|
11
|
+
s_cmd.exitmain(main)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import argparse
|
|
3
|
+
|
|
4
|
+
import synapse.lib.cmd as s_cmd
|
|
5
|
+
import synapse.lib.json as s_json
|
|
6
|
+
import synapse.lib.output as s_output
|
|
7
|
+
import synapse.lib.msgpack as s_msgpack
|
|
8
|
+
|
|
9
|
+
def getArgParser():
|
|
10
|
+
pars = argparse.ArgumentParser(prog='synapse.tools.utils.json2mpk',
|
|
11
|
+
description='Convert files from json lines to msgpack')
|
|
12
|
+
pars.add_argument('--rm', action='store_true', help='Remove json files once the conversion is complete')
|
|
13
|
+
pars.add_argument('paths', nargs='+', help='json files or directories full of json files')
|
|
14
|
+
return pars
|
|
15
|
+
|
|
16
|
+
async def main(argv, outp=s_output.stdout):
|
|
17
|
+
pars = getArgParser()
|
|
18
|
+
opts = pars.parse_args(argv)
|
|
19
|
+
|
|
20
|
+
for path in opts.paths:
|
|
21
|
+
|
|
22
|
+
if not path.endswith('.json'):
|
|
23
|
+
outp.printf('skip: %s (not .json extension)' % (path,))
|
|
24
|
+
continue
|
|
25
|
+
|
|
26
|
+
if not os.path.isfile(path):
|
|
27
|
+
outp.printf('skip: %s (not a file)' % (path,))
|
|
28
|
+
continue
|
|
29
|
+
|
|
30
|
+
base = path[:-5]
|
|
31
|
+
newp = base + '.mpk'
|
|
32
|
+
|
|
33
|
+
outp.printf('converting: %s -> .mpk' % (path,))
|
|
34
|
+
with open(path, 'r', encoding='utf8') as fd:
|
|
35
|
+
with open(newp, 'wb') as pk:
|
|
36
|
+
for line in fd:
|
|
37
|
+
item = s_json.loads(line)
|
|
38
|
+
pk.write(s_msgpack.en(item))
|
|
39
|
+
|
|
40
|
+
if opts.rm:
|
|
41
|
+
os.unlink(path)
|
|
42
|
+
|
|
43
|
+
return 0
|
|
44
|
+
|
|
45
|
+
if __name__ == '__main__': # pragma: no cover
|
|
46
|
+
s_cmd.exitmain(main)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
import synapse.common as s_common
|
|
4
|
+
|
|
5
|
+
import synapse.lib.cmd as s_cmd
|
|
6
|
+
import synapse.lib.output as s_output
|
|
7
|
+
import synapse.lib.rstorm as s_rstorm
|
|
8
|
+
|
|
9
|
+
logger = logging.getLogger(__name__)
|
|
10
|
+
|
|
11
|
+
prog = 'synapse.tools.utils.rstorm'
|
|
12
|
+
descr = 'An RST pre-processor that allows you to embed storm directives.'
|
|
13
|
+
|
|
14
|
+
async def main(argv, outp=s_output.stdout):
|
|
15
|
+
|
|
16
|
+
pars = s_cmd.Parser(prog=prog, outp=outp, description=descr)
|
|
17
|
+
pars.add_argument('rstfile', help='Input RST file with storm directives.')
|
|
18
|
+
pars.add_argument('--save', help='Output file to save (default: stdout)')
|
|
19
|
+
|
|
20
|
+
opts = pars.parse_args(argv)
|
|
21
|
+
|
|
22
|
+
async with await s_rstorm.StormRst.anit(opts.rstfile) as rstorm:
|
|
23
|
+
lines = await rstorm.run()
|
|
24
|
+
|
|
25
|
+
if opts.save:
|
|
26
|
+
with open(s_common.genpath(opts.save), 'w') as fd:
|
|
27
|
+
fd.truncate(0)
|
|
28
|
+
[fd.write(line) for line in lines]
|
|
29
|
+
else:
|
|
30
|
+
for line in lines:
|
|
31
|
+
outp.printf(line, addnl=False)
|
|
32
|
+
|
|
33
|
+
if __name__ == '__main__': # pragma: no cover
|
|
34
|
+
s_common.setlogging(logger)
|
|
35
|
+
s_cmd.exitmain(main)
|