synapse 2.214.0__py311-none-any.whl → 2.216.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/cortex.py +17 -2
- synapse/lib/cell.py +12 -0
- synapse/lib/cmd.py +6 -2
- synapse/lib/jsonstor.py +4 -1
- synapse/lib/layer.py +13 -6
- synapse/lib/schemas.py +9 -2
- synapse/lib/snap.py +15 -5
- synapse/lib/storm.py +1 -1
- synapse/lib/types.py +3 -0
- synapse/lib/version.py +2 -2
- synapse/lib/view.py +16 -7
- synapse/models/inet.py +7 -1
- synapse/models/infotech.py +45 -0
- synapse/models/risk.py +2 -0
- synapse/tests/test_cortex.py +262 -0
- synapse/tests/test_lib_auth.py +2 -0
- synapse/tests/test_lib_jsonstor.py +45 -0
- synapse/tests/test_lib_layer.py +10 -0
- synapse/tests/test_lib_storm.py +52 -1
- synapse/tests/test_lib_stormlib_iters.py +1 -1
- synapse/tests/test_lib_stormsvc.py +2 -2
- synapse/tests/test_lib_stormtypes.py +15 -0
- synapse/tests/test_lib_types.py +11 -1
- synapse/tests/test_model_inet.py +2 -0
- synapse/tests/test_model_infotech.py +31 -0
- synapse/tests/test_tools_cryo_cat.py +3 -8
- synapse/tests/test_tools_storm.py +3 -2
- synapse/tests/utils.py +2 -0
- synapse/tools/aha/clone.py +3 -13
- synapse/tools/aha/easycert.py +5 -18
- synapse/tools/aha/enroll.py +3 -12
- synapse/tools/aha/list.py +2 -15
- synapse/tools/aha/mirror.py +3 -14
- synapse/tools/aha/provision/service.py +3 -13
- synapse/tools/aha/provision/user.py +3 -12
- synapse/tools/apikey.py +3 -13
- synapse/tools/autodoc.py +7 -19
- synapse/tools/axon2axon.py +1 -9
- synapse/tools/cellauth.py +5 -14
- synapse/tools/changelog.py +12 -16
- synapse/tools/cmdr.py +2 -6
- synapse/tools/cryo/cat.py +5 -15
- synapse/tools/cryo/list.py +3 -10
- synapse/tools/csvtool.py +40 -49
- synapse/tools/demote.py +1 -6
- synapse/tools/docker/validate.py +0 -1
- synapse/tools/easycert.py +3 -8
- synapse/tools/feed.py +7 -18
- synapse/tools/genpkg.py +3 -12
- synapse/tools/guid.py +4 -6
- synapse/tools/healthcheck.py +4 -11
- synapse/tools/json2mpk.py +1 -5
- synapse/tools/livebackup.py +3 -13
- synapse/tools/modrole.py +3 -12
- synapse/tools/moduser.py +3 -12
- synapse/tools/pkgs/gendocs.py +1 -1
- synapse/tools/promote.py +3 -13
- synapse/tools/pullfile.py +6 -18
- synapse/tools/pushfile.py +6 -18
- synapse/tools/reload.py +5 -14
- synapse/tools/rstorm.py +4 -12
- synapse/tools/shutdown.py +1 -2
- synapse/tools/snapshot.py +3 -14
- synapse/tools/storm.py +4 -12
- {synapse-2.214.0.dist-info → synapse-2.216.0.dist-info}/METADATA +1 -1
- {synapse-2.214.0.dist-info → synapse-2.216.0.dist-info}/RECORD +69 -69
- {synapse-2.214.0.dist-info → synapse-2.216.0.dist-info}/WHEEL +0 -0
- {synapse-2.214.0.dist-info → synapse-2.216.0.dist-info}/licenses/LICENSE +0 -0
- {synapse-2.214.0.dist-info → synapse-2.216.0.dist-info}/top_level.txt +0 -0
synapse/tools/csvtool.py
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import csv
|
|
2
|
-
import sys
|
|
3
|
-
import asyncio
|
|
4
|
-
import contextlib
|
|
5
2
|
|
|
6
3
|
import synapse.exc as s_exc
|
|
7
4
|
import synapse.cortex as s_cortex
|
|
@@ -16,6 +13,44 @@ import synapse.lib.output as s_output
|
|
|
16
13
|
import synapse.lib.version as s_version
|
|
17
14
|
|
|
18
15
|
reqver = '>=0.2.0,<3.0.0'
|
|
16
|
+
desc = '''Command line tool for ingesting csv files into a cortex
|
|
17
|
+
|
|
18
|
+
The storm file is run with the CSV rows specified in the variable "rows" so most
|
|
19
|
+
storm files will use a variable based for loop to create edit nodes. For example:
|
|
20
|
+
|
|
21
|
+
for ($fqdn, $ipv4, $tag) in $rows {
|
|
22
|
+
|
|
23
|
+
[ inet:dns:a=($fqdn, $ipv4) +#$tag ]
|
|
24
|
+
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
More advanced uses may include switch cases to provide different logic based on
|
|
28
|
+
a column value.
|
|
29
|
+
|
|
30
|
+
for ($type, $valu, $info) in $rows {
|
|
31
|
+
|
|
32
|
+
switch $type {
|
|
33
|
+
|
|
34
|
+
fqdn: {
|
|
35
|
+
[ inet:fqdn=$valu ]
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
"person name": {
|
|
39
|
+
[ ps:name=$valu ]
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
*: {
|
|
43
|
+
// default case...
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
switch $info {
|
|
49
|
+
"known malware": { [+#cno.mal] }
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
}
|
|
53
|
+
'''
|
|
19
54
|
|
|
20
55
|
async def runCsvExport(opts, outp, text, stormopts):
|
|
21
56
|
if not opts.cortex:
|
|
@@ -174,46 +209,7 @@ async def main(argv, outp=s_output.stdout):
|
|
|
174
209
|
return await runCsvImport(opts, outp, text, stormopts)
|
|
175
210
|
|
|
176
211
|
def makeargparser(outp):
|
|
177
|
-
|
|
178
|
-
Command line tool for ingesting csv files into a cortex
|
|
179
|
-
|
|
180
|
-
The storm file is run with the CSV rows specified in the variable "rows" so most
|
|
181
|
-
storm files will use a variable based for loop to create edit nodes. For example:
|
|
182
|
-
|
|
183
|
-
for ($fqdn, $ipv4, $tag) in $rows {
|
|
184
|
-
|
|
185
|
-
[ inet:dns:a=($fqdn, $ipv4) +#$tag ]
|
|
186
|
-
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
More advanced uses may include switch cases to provide different logic based on
|
|
190
|
-
a column value.
|
|
191
|
-
|
|
192
|
-
for ($type, $valu, $info) in $rows {
|
|
193
|
-
|
|
194
|
-
switch $type {
|
|
195
|
-
|
|
196
|
-
fqdn: {
|
|
197
|
-
[ inet:fqdn=$valu ]
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
"person name": {
|
|
201
|
-
[ ps:name=$valu ]
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
*: {
|
|
205
|
-
// default case...
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
switch $info {
|
|
211
|
-
"known malware": { [+#cno.mal] }
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
}
|
|
215
|
-
'''
|
|
216
|
-
pars = s_cmd.Parser('synapse.tools.csvtool', description=desc, outp=outp)
|
|
212
|
+
pars = s_cmd.Parser(prog='synapse.tools.csvtool', description=desc, outp=outp)
|
|
217
213
|
pars.add_argument('--logfile', help='Set a log file to get JSON lines from the server events.')
|
|
218
214
|
pars.add_argument('--csv-header', default=False, action='store_true',
|
|
219
215
|
help='Skip the first line from each CSV file.')
|
|
@@ -235,10 +231,5 @@ def makeargparser(outp):
|
|
|
235
231
|
pars.add_argument('csvfiles', nargs='+', help='CSV files to load.')
|
|
236
232
|
return pars
|
|
237
233
|
|
|
238
|
-
async def _main(argv, outp=s_output.stdout): # pragma: no cover
|
|
239
|
-
ret = await main(argv, outp=outp)
|
|
240
|
-
await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
|
|
241
|
-
return ret
|
|
242
|
-
|
|
243
234
|
if __name__ == '__main__': # pragma: no cover
|
|
244
|
-
|
|
235
|
+
s_cmd.exitmain(main)
|
synapse/tools/demote.py
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
import asyncio
|
|
3
|
-
import argparse
|
|
4
|
-
|
|
5
1
|
import synapse.exc as s_exc
|
|
6
2
|
|
|
7
3
|
import synapse.telepath as s_telepath
|
|
@@ -19,8 +15,7 @@ Example:
|
|
|
19
15
|
|
|
20
16
|
async def main(argv, outp=s_output.stdout):
|
|
21
17
|
|
|
22
|
-
pars =
|
|
23
|
-
formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
18
|
+
pars = s_cmd.Parser(prog='synapse.tools.demote', outp=outp, description=descr)
|
|
24
19
|
|
|
25
20
|
pars.add_argument('--url', default='cell:///vertex/storage',
|
|
26
21
|
help='The telepath URL of the Synapse service.')
|
synapse/tools/docker/validate.py
CHANGED
synapse/tools/easycert.py
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import sys
|
|
3
1
|
import argparse
|
|
4
2
|
|
|
5
|
-
|
|
6
3
|
import synapse.exc as s_exc
|
|
4
|
+
import synapse.lib.cmd as s_cmd
|
|
7
5
|
import synapse.lib.output as s_output
|
|
8
6
|
import synapse.lib.certdir as s_certdir
|
|
9
7
|
|
|
@@ -11,10 +9,7 @@ descr = '''
|
|
|
11
9
|
Command line tool to generate simple x509 certs
|
|
12
10
|
'''
|
|
13
11
|
|
|
14
|
-
def main(argv, outp=
|
|
15
|
-
|
|
16
|
-
if outp is None: # pragma: no cover
|
|
17
|
-
outp = s_output.OutPut()
|
|
12
|
+
def main(argv, outp=s_output.stdout):
|
|
18
13
|
|
|
19
14
|
pars = argparse.ArgumentParser(prog='easycert', description=descr)
|
|
20
15
|
pars.add_argument('--certdir', default='~/.syn/certs', help='Directory for certs/keys')
|
|
@@ -138,4 +133,4 @@ def main(argv, outp=None):
|
|
|
138
133
|
return 1
|
|
139
134
|
|
|
140
135
|
if __name__ == '__main__': # pragma: no cover
|
|
141
|
-
|
|
136
|
+
s_cmd.exitmain(main)
|
synapse/tools/feed.py
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import os
|
|
2
|
-
import sys
|
|
3
2
|
import time
|
|
4
|
-
import asyncio
|
|
5
3
|
import logging
|
|
6
|
-
import argparse
|
|
7
4
|
|
|
8
5
|
import synapse.exc as s_exc
|
|
9
6
|
import synapse.common as s_common
|
|
10
7
|
import synapse.cortex as s_cortex
|
|
11
8
|
import synapse.telepath as s_telepath
|
|
12
9
|
|
|
10
|
+
import synapse.lib.cmd as s_cmd
|
|
13
11
|
import synapse.lib.cmdr as s_cmdr
|
|
14
|
-
import synapse.lib.coro as s_coro
|
|
15
12
|
import synapse.lib.json as s_json
|
|
16
13
|
import synapse.lib.output as s_output
|
|
17
14
|
import synapse.lib.msgpack as s_msgpack
|
|
@@ -79,12 +76,9 @@ async def addFeedData(core, outp, feedformat, debug=False, *paths, chunksize=100
|
|
|
79
76
|
if debug:
|
|
80
77
|
await s_cmdr.runItemCmdr(core, outp, True)
|
|
81
78
|
|
|
82
|
-
async def main(argv, outp=
|
|
79
|
+
async def main(argv, outp=s_output.stdout):
|
|
83
80
|
|
|
84
|
-
|
|
85
|
-
outp = s_output.OutPut()
|
|
86
|
-
|
|
87
|
-
pars = makeargparser()
|
|
81
|
+
pars = getArgParser(outp)
|
|
88
82
|
opts = pars.parse_args(argv)
|
|
89
83
|
|
|
90
84
|
if opts.offset:
|
|
@@ -124,9 +118,9 @@ async def main(argv, outp=None):
|
|
|
124
118
|
|
|
125
119
|
return 0
|
|
126
120
|
|
|
127
|
-
def
|
|
121
|
+
def getArgParser(outp):
|
|
128
122
|
desc = 'Command line tool for ingesting data into a cortex'
|
|
129
|
-
pars =
|
|
123
|
+
pars = s_cmd.Parser(prog='synapse.tools.feed', outp=outp, description=desc)
|
|
130
124
|
|
|
131
125
|
muxp = pars.add_mutually_exclusive_group(required=True)
|
|
132
126
|
muxp.add_argument('--cortex', '-c', type=str,
|
|
@@ -150,11 +144,6 @@ def makeargparser():
|
|
|
150
144
|
|
|
151
145
|
return pars
|
|
152
146
|
|
|
153
|
-
async def _main(argv, outp=s_output.stdout): # pragma: no cover
|
|
154
|
-
s_common.setlogging(logger, 'DEBUG')
|
|
155
|
-
ret = await main(argv, outp=outp)
|
|
156
|
-
await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
|
|
157
|
-
return ret
|
|
158
|
-
|
|
159
147
|
if __name__ == '__main__': # pragma: no cover
|
|
160
|
-
|
|
148
|
+
s_common.setlogging(logger, 'DEBUG')
|
|
149
|
+
s_cmd.exitmain(main)
|
synapse/tools/genpkg.py
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import io
|
|
2
2
|
import os
|
|
3
|
-
import sys
|
|
4
3
|
import base64
|
|
5
|
-
import asyncio
|
|
6
4
|
import logging
|
|
7
|
-
import argparse
|
|
8
5
|
|
|
9
6
|
import regex
|
|
10
7
|
|
|
@@ -12,7 +9,7 @@ import synapse.exc as s_exc
|
|
|
12
9
|
import synapse.common as s_common
|
|
13
10
|
import synapse.telepath as s_telepath
|
|
14
11
|
|
|
15
|
-
import synapse.lib.
|
|
12
|
+
import synapse.lib.cmd as s_cmd
|
|
16
13
|
import synapse.lib.json as s_json
|
|
17
14
|
import synapse.lib.output as s_output
|
|
18
15
|
import synapse.lib.certdir as s_certdir
|
|
@@ -238,12 +235,11 @@ def loadPkgProto(path, opticdir=None, no_docs=False, readonly=False):
|
|
|
238
235
|
return pkgdef
|
|
239
236
|
|
|
240
237
|
|
|
241
|
-
prog = 'synapse.tools.genpkg'
|
|
242
238
|
desc = 'A tool for generating/pushing storm packages from YAML prototypes.'
|
|
243
239
|
|
|
244
240
|
async def main(argv, outp=s_output.stdout):
|
|
245
241
|
|
|
246
|
-
pars =
|
|
242
|
+
pars = s_cmd.Parser(prog='synapse.tools.genpkg', outp=outp, description=desc)
|
|
247
243
|
pars.add_argument('--push', metavar='<url>', help='A telepath URL of a Cortex or PkgRepo.')
|
|
248
244
|
pars.add_argument('--push-verify', default=False, action='store_true',
|
|
249
245
|
help='Tell the Cortex to verify the package signature.')
|
|
@@ -306,10 +302,5 @@ async def main(argv, outp=s_output.stdout):
|
|
|
306
302
|
|
|
307
303
|
return 0
|
|
308
304
|
|
|
309
|
-
async def _main(argv, outp=s_output.stdout): # pragma: no cover
|
|
310
|
-
ret = await main(argv, outp=outp)
|
|
311
|
-
await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
|
|
312
|
-
return ret
|
|
313
|
-
|
|
314
305
|
if __name__ == '__main__': # pragma: no cover
|
|
315
|
-
|
|
306
|
+
s_cmd.exitmain(main)
|
synapse/tools/guid.py
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
|
|
1
3
|
import synapse.common as s_common
|
|
2
4
|
import synapse.lib.output as s_output
|
|
3
5
|
|
|
4
|
-
def main(argv, outp=
|
|
5
|
-
if outp is None: # pragma: no cover
|
|
6
|
-
outp = s_output.OutPut()
|
|
7
|
-
|
|
6
|
+
def main(argv, outp=s_output.stdout):
|
|
8
7
|
outp.printf(s_common.guid())
|
|
9
8
|
|
|
10
9
|
if __name__ == '__main__': # pragma: no cover
|
|
11
|
-
|
|
12
|
-
sys.exit(main(sys.argv))
|
|
10
|
+
sys.exit(main(sys.argv[1:]))
|
synapse/tools/healthcheck.py
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import sys
|
|
2
1
|
import socket
|
|
3
2
|
import asyncio
|
|
4
3
|
|
|
@@ -7,7 +6,6 @@ import synapse.common as s_common
|
|
|
7
6
|
import synapse.telepath as s_telepath
|
|
8
7
|
|
|
9
8
|
import synapse.lib.cmd as s_cmd
|
|
10
|
-
import synapse.lib.coro as s_coro
|
|
11
9
|
import synapse.lib.json as s_json
|
|
12
10
|
import synapse.lib.output as s_output
|
|
13
11
|
import synapse.lib.health as s_health
|
|
@@ -30,7 +28,7 @@ def format_component(e, mesg: str) -> dict:
|
|
|
30
28
|
return d
|
|
31
29
|
|
|
32
30
|
async def main(argv, outp=s_output.stdout):
|
|
33
|
-
pars =
|
|
31
|
+
pars = getArgParser(outp)
|
|
34
32
|
try:
|
|
35
33
|
opts = pars.parse_args(argv)
|
|
36
34
|
except s_exc.ParserExit as e: # pragma: no cover
|
|
@@ -96,21 +94,16 @@ async def main(argv, outp=s_output.stdout):
|
|
|
96
94
|
outp.printf(serialize(ret))
|
|
97
95
|
return retval
|
|
98
96
|
|
|
99
|
-
def
|
|
97
|
+
def getArgParser(outp):
|
|
100
98
|
desc = '''
|
|
101
99
|
synapse healthcheck tool
|
|
102
100
|
'''
|
|
103
|
-
pars = s_cmd.Parser('healthcheck', description=desc)
|
|
101
|
+
pars = s_cmd.Parser(prog='synapse.tools.healthcheck', outp=outp, description=desc)
|
|
104
102
|
pars.add_argument('--cell', '-c', required=True, type=str,
|
|
105
103
|
help='Telepath path to the cell to check.')
|
|
106
104
|
pars.add_argument('--timeout', '-t', default=10, type=float,
|
|
107
105
|
help='Connection and call timeout')
|
|
108
106
|
return pars
|
|
109
107
|
|
|
110
|
-
async def _main(argv, outp=s_output.stdout): # pragma: no cover
|
|
111
|
-
ret = await main(argv, outp=outp)
|
|
112
|
-
await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
|
|
113
|
-
return ret
|
|
114
|
-
|
|
115
108
|
if __name__ == '__main__': # pragma: no cover
|
|
116
|
-
|
|
109
|
+
s_cmd.exitmain(main)
|
synapse/tools/json2mpk.py
CHANGED
|
@@ -12,11 +12,7 @@ def getArgParser():
|
|
|
12
12
|
pars.add_argument('paths', nargs='+', help='json files or directories full of json files')
|
|
13
13
|
return pars
|
|
14
14
|
|
|
15
|
-
def main(argv, outp=
|
|
16
|
-
|
|
17
|
-
if outp is None: # pragma: no cover
|
|
18
|
-
outp = s_output.OutPut()
|
|
19
|
-
|
|
15
|
+
def main(argv, outp=s_output.stdout):
|
|
20
16
|
pars = getArgParser()
|
|
21
17
|
opts = pars.parse_args(argv)
|
|
22
18
|
|
synapse/tools/livebackup.py
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
import asyncio
|
|
3
|
-
import argparse
|
|
4
|
-
|
|
5
1
|
import synapse.telepath as s_telepath
|
|
6
2
|
|
|
7
|
-
import synapse.lib.
|
|
3
|
+
import synapse.lib.cmd as s_cmd
|
|
8
4
|
import synapse.lib.output as s_output
|
|
9
5
|
|
|
10
6
|
descr = '''
|
|
@@ -19,8 +15,7 @@ Examples:
|
|
|
19
15
|
|
|
20
16
|
async def main(argv, outp=s_output.stdout):
|
|
21
17
|
|
|
22
|
-
pars =
|
|
23
|
-
formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
18
|
+
pars = s_cmd.Parser(prog='synapse.tools.livebackup', outp=outp, description=descr)
|
|
24
19
|
|
|
25
20
|
pars.add_argument('--url', default='cell:///vertex/storage', help='The telepath URL of the Synapse service.')
|
|
26
21
|
pars.add_argument('--name', default=None, help='Specify a name for the backup. Defaults to an automatically generated timestamp.')
|
|
@@ -35,10 +30,5 @@ async def main(argv, outp=s_output.stdout):
|
|
|
35
30
|
outp.printf(f'...backup created: {name}')
|
|
36
31
|
return 0
|
|
37
32
|
|
|
38
|
-
async def _main(argv, outp=s_output.stdout): # pragma: no cover
|
|
39
|
-
ret = await main(argv, outp=outp)
|
|
40
|
-
await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
|
|
41
|
-
return ret
|
|
42
|
-
|
|
43
33
|
if __name__ == '__main__': # pragma: no cover
|
|
44
|
-
|
|
34
|
+
s_cmd.exitmain(main)
|
synapse/tools/modrole.py
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
import asyncio
|
|
3
|
-
import argparse
|
|
4
|
-
|
|
5
1
|
import synapse.common as s_common
|
|
6
2
|
import synapse.telepath as s_telepath
|
|
7
3
|
|
|
8
|
-
import synapse.lib.
|
|
4
|
+
import synapse.lib.cmd as s_cmd
|
|
9
5
|
import synapse.lib.output as s_output
|
|
10
6
|
|
|
11
7
|
descr = '''
|
|
@@ -30,7 +26,7 @@ def printrole(role, outp):
|
|
|
30
26
|
|
|
31
27
|
async def main(argv, outp=s_output.stdout):
|
|
32
28
|
|
|
33
|
-
pars =
|
|
29
|
+
pars = s_cmd.Parser(prog='synapse.tools.modrole', outp=outp, description=descr)
|
|
34
30
|
pars.add_argument('--svcurl', default='cell:///vertex/storage', help='The telepath URL of the Synapse service.')
|
|
35
31
|
pars.add_argument('--add', default=False, action='store_true', help='Add the role if they do not already exist.')
|
|
36
32
|
pars.add_argument('--del', dest='delete', default=False, action='store_true', help='Delete the role if it exists.')
|
|
@@ -116,10 +112,5 @@ async def main(argv, outp=s_output.stdout):
|
|
|
116
112
|
await cell.addRoleRule(roleiden, (False, perm), indx=0, gateiden=opts.gate)
|
|
117
113
|
return 0
|
|
118
114
|
|
|
119
|
-
async def _main(argv, outp=s_output.stdout): # pragma: no cover
|
|
120
|
-
ret = await main(argv, outp=outp)
|
|
121
|
-
await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
|
|
122
|
-
return ret
|
|
123
|
-
|
|
124
115
|
if __name__ == '__main__': # pragma: no cover
|
|
125
|
-
|
|
116
|
+
s_cmd.exitmain(main)
|
synapse/tools/moduser.py
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
import asyncio
|
|
3
|
-
import argparse
|
|
4
|
-
|
|
5
1
|
import synapse.common as s_common
|
|
6
2
|
import synapse.telepath as s_telepath
|
|
7
3
|
|
|
8
|
-
import synapse.lib.
|
|
4
|
+
import synapse.lib.cmd as s_cmd
|
|
9
5
|
import synapse.lib.output as s_output
|
|
10
6
|
|
|
11
7
|
descr = '''
|
|
@@ -41,7 +37,7 @@ def printuser(user, outp):
|
|
|
41
37
|
|
|
42
38
|
async def main(argv, outp=s_output.stdout):
|
|
43
39
|
|
|
44
|
-
pars =
|
|
40
|
+
pars = s_cmd.Parser(prog='synapse.tools.moduser', outp=outp, description=descr)
|
|
45
41
|
pars.add_argument('--svcurl', default='cell:///vertex/storage', help='The telepath URL of the Synapse service.')
|
|
46
42
|
pars.add_argument('--add', default=False, action='store_true', help='Add the user if they do not already exist.')
|
|
47
43
|
pars.add_argument('--del', dest='delete', default=False, action='store_true', help='Delete the user if they exist.')
|
|
@@ -187,10 +183,5 @@ async def main(argv, outp=s_output.stdout):
|
|
|
187
183
|
await cell.addUserRule(useriden, (False, perm), indx=0, gateiden=opts.gate)
|
|
188
184
|
return 0
|
|
189
185
|
|
|
190
|
-
async def _main(argv, outp=s_output.stdout): # pragma: no cover
|
|
191
|
-
ret = await main(argv, outp=outp)
|
|
192
|
-
await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
|
|
193
|
-
return ret
|
|
194
|
-
|
|
195
186
|
if __name__ == '__main__': # pragma: no cover
|
|
196
|
-
|
|
187
|
+
s_cmd.exitmain(main)
|
synapse/tools/pkgs/gendocs.py
CHANGED
|
@@ -28,7 +28,7 @@ def hasPandoc():
|
|
|
28
28
|
return True
|
|
29
29
|
return False
|
|
30
30
|
|
|
31
|
-
async def buildPkgDocs(outp
|
|
31
|
+
async def buildPkgDocs(outp, pkgpath: str, rst_only: bool =False):
|
|
32
32
|
|
|
33
33
|
logger.info(f'Building pkg for {pkgpath}')
|
|
34
34
|
pkgdef = s_common.yamlload(pkgpath)
|
synapse/tools/promote.py
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
import asyncio
|
|
3
|
-
import argparse
|
|
4
|
-
|
|
5
1
|
import synapse.exc as s_exc
|
|
6
2
|
|
|
7
3
|
import synapse.telepath as s_telepath
|
|
8
4
|
|
|
9
|
-
import synapse.lib.
|
|
5
|
+
import synapse.lib.cmd as s_cmd
|
|
10
6
|
import synapse.lib.output as s_output
|
|
11
7
|
import synapse.lib.urlhelp as s_urlhelp
|
|
12
8
|
|
|
@@ -19,8 +15,7 @@ Example (being run from a Cortex mirror docker container):
|
|
|
19
15
|
|
|
20
16
|
async def main(argv, outp=s_output.stdout):
|
|
21
17
|
|
|
22
|
-
pars =
|
|
23
|
-
formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
18
|
+
pars = s_cmd.Parser(prog='synapse.tools.promote', outp=outp, description=descr)
|
|
24
19
|
|
|
25
20
|
pars.add_argument('--svcurl', default='cell:///vertex/storage',
|
|
26
21
|
help='The telepath URL of the Synapse service.')
|
|
@@ -49,10 +44,5 @@ async def main(argv, outp=s_output.stdout):
|
|
|
49
44
|
|
|
50
45
|
return 0
|
|
51
46
|
|
|
52
|
-
async def _main(argv, outp=s_output.stdout): # pragma: no cover
|
|
53
|
-
ret = await main(argv, outp=outp)
|
|
54
|
-
await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
|
|
55
|
-
return ret
|
|
56
|
-
|
|
57
47
|
if __name__ == '__main__': # pragma: no cover
|
|
58
|
-
|
|
48
|
+
s_cmd.exitmain(main)
|
synapse/tools/pullfile.py
CHANGED
|
@@ -1,23 +1,16 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
import asyncio
|
|
3
1
|
import pathlib
|
|
4
|
-
import argparse
|
|
5
2
|
|
|
6
3
|
import synapse.common as s_common
|
|
7
4
|
import synapse.telepath as s_telepath
|
|
8
5
|
|
|
9
|
-
import synapse.lib.
|
|
6
|
+
import synapse.lib.cmd as s_cmd
|
|
10
7
|
import synapse.lib.output as s_output
|
|
11
8
|
|
|
12
9
|
|
|
13
|
-
async def main(argv, outp=
|
|
14
|
-
|
|
15
|
-
pars = setup()
|
|
10
|
+
async def main(argv, outp=s_output.stdout):
|
|
11
|
+
pars = getArgParser(outp)
|
|
16
12
|
opts = pars.parse_args(argv)
|
|
17
13
|
|
|
18
|
-
if outp is None: # pragma: no cover
|
|
19
|
-
outp = s_output.OutPut()
|
|
20
|
-
|
|
21
14
|
if opts.output is None:
|
|
22
15
|
opts.output = '.'
|
|
23
16
|
|
|
@@ -55,9 +48,9 @@ async def main(argv, outp=None):
|
|
|
55
48
|
return 0
|
|
56
49
|
|
|
57
50
|
|
|
58
|
-
def
|
|
51
|
+
def getArgParser(outp):
|
|
59
52
|
desc = 'Fetches file from the given axon'
|
|
60
|
-
pars =
|
|
53
|
+
pars = s_cmd.Parser(prog='synapse.tools.pullfile', outp=outp, description=desc)
|
|
61
54
|
pars.add_argument('-a', '--axon', type=str, dest='axon', required=True,
|
|
62
55
|
help='URL to the axon blob store')
|
|
63
56
|
pars.add_argument('-o', '--output', type=str, dest='output',
|
|
@@ -67,10 +60,5 @@ def setup():
|
|
|
67
60
|
|
|
68
61
|
return pars
|
|
69
62
|
|
|
70
|
-
async def _main(argv, outp=s_output.stdout): # pragma: no cover
|
|
71
|
-
ret = await main(argv, outp=outp)
|
|
72
|
-
await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
|
|
73
|
-
return ret
|
|
74
|
-
|
|
75
63
|
if __name__ == '__main__': # pragma: no cover
|
|
76
|
-
|
|
64
|
+
s_cmd.exitmain(main)
|
synapse/tools/pushfile.py
CHANGED
|
@@ -1,27 +1,20 @@
|
|
|
1
1
|
import os
|
|
2
|
-
import sys
|
|
3
2
|
import glob
|
|
4
|
-
import asyncio
|
|
5
3
|
import logging
|
|
6
|
-
import argparse
|
|
7
4
|
|
|
8
5
|
import synapse.exc as s_exc
|
|
9
6
|
import synapse.common as s_common
|
|
10
7
|
import synapse.telepath as s_telepath
|
|
11
8
|
|
|
12
|
-
import synapse.lib.
|
|
9
|
+
import synapse.lib.cmd as s_cmd
|
|
13
10
|
import synapse.lib.output as s_output
|
|
14
11
|
import synapse.lib.hashset as s_hashset
|
|
15
12
|
|
|
16
13
|
logger = logging.getLogger(__name__)
|
|
17
14
|
|
|
18
15
|
|
|
19
|
-
async def main(argv, outp=
|
|
20
|
-
|
|
21
|
-
if outp is None: # pragma: no cover
|
|
22
|
-
outp = s_output.OutPut()
|
|
23
|
-
|
|
24
|
-
pars = makeargparser()
|
|
16
|
+
async def main(argv, outp=s_output.stdout):
|
|
17
|
+
pars = getArgParser(outp)
|
|
25
18
|
opts = pars.parse_args(argv)
|
|
26
19
|
|
|
27
20
|
async with s_telepath.withTeleEnv():
|
|
@@ -111,10 +104,10 @@ async def main(argv, outp=None):
|
|
|
111
104
|
|
|
112
105
|
return 0
|
|
113
106
|
|
|
114
|
-
def
|
|
107
|
+
def getArgParser(outp):
|
|
115
108
|
desc = 'Command line tool for uploading files to an Axon and making ' \
|
|
116
109
|
'file:bytes in a Cortex.'
|
|
117
|
-
pars =
|
|
110
|
+
pars = s_cmd.Parser(prog='synapse.tools.pushfile', outp=outp, description=desc)
|
|
118
111
|
pars.add_argument('-a', '--axon', required=True, type=str, dest='axon',
|
|
119
112
|
help='URL for a target Axon to store files at.')
|
|
120
113
|
pars.add_argument('-c', '--cortex', default=None, type=str, dest='cortex',
|
|
@@ -125,10 +118,5 @@ def makeargparser():
|
|
|
125
118
|
pars.add_argument('-t', '--tags', help='comma separated list of tags to add to the nodes')
|
|
126
119
|
return pars
|
|
127
120
|
|
|
128
|
-
async def _main(argv, outp=s_output.stdout): # pragma: no cover
|
|
129
|
-
ret = await main(argv, outp=outp)
|
|
130
|
-
await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
|
|
131
|
-
return ret
|
|
132
|
-
|
|
133
121
|
if __name__ == '__main__': # pragma: no cover
|
|
134
|
-
|
|
122
|
+
s_cmd.exitmain(main)
|
synapse/tools/reload.py
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
import asyncio
|
|
3
|
-
import argparse
|
|
4
|
-
|
|
5
1
|
import synapse.telepath as s_telepath
|
|
6
2
|
|
|
7
|
-
import synapse.lib.
|
|
3
|
+
import synapse.lib.cmd as s_cmd
|
|
8
4
|
import synapse.lib.output as s_output
|
|
9
5
|
import synapse.lib.urlhelp as s_urlhelp
|
|
10
6
|
|
|
@@ -14,7 +10,7 @@ List or execute reload subsystems on a Synapse service.
|
|
|
14
10
|
|
|
15
11
|
async def main(argv, outp=s_output.stdout):
|
|
16
12
|
|
|
17
|
-
pars = getArgParser()
|
|
13
|
+
pars = getArgParser(outp)
|
|
18
14
|
opts = pars.parse_args(argv)
|
|
19
15
|
|
|
20
16
|
async with s_telepath.withTeleEnv():
|
|
@@ -55,8 +51,8 @@ async def main(argv, outp=s_output.stdout):
|
|
|
55
51
|
outp.printf(f'{name.ljust(40)}{result.ljust(10)}{mesg}')
|
|
56
52
|
return 0
|
|
57
53
|
|
|
58
|
-
def getArgParser():
|
|
59
|
-
pars =
|
|
54
|
+
def getArgParser(outp):
|
|
55
|
+
pars = s_cmd.Parser(prog='synapse.tools.reload', outp=outp, description=descr)
|
|
60
56
|
pars.add_argument('--svcurl', default='cell:///vertex/storage', help='The telepath URL of the Synapse service.')
|
|
61
57
|
|
|
62
58
|
subpars = pars.add_subparsers(required=True,
|
|
@@ -68,10 +64,5 @@ def getArgParser():
|
|
|
68
64
|
|
|
69
65
|
return pars
|
|
70
66
|
|
|
71
|
-
async def _main(argv, outp=s_output.stdout): # pragma: no cover
|
|
72
|
-
ret = await main(argv, outp=outp)
|
|
73
|
-
await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
|
|
74
|
-
return ret
|
|
75
|
-
|
|
76
67
|
if __name__ == '__main__': # pragma: no cover
|
|
77
|
-
|
|
68
|
+
s_cmd.exitmain(main)
|
synapse/tools/rstorm.py
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
import asyncio
|
|
3
1
|
import logging
|
|
4
|
-
import argparse
|
|
5
2
|
|
|
6
3
|
import synapse.common as s_common
|
|
7
4
|
|
|
8
|
-
import synapse.lib.
|
|
5
|
+
import synapse.lib.cmd as s_cmd
|
|
9
6
|
import synapse.lib.output as s_output
|
|
10
7
|
import synapse.lib.rstorm as s_rstorm
|
|
11
8
|
|
|
@@ -16,7 +13,7 @@ descr = 'An RST pre-processor that allows you to embed storm directives.'
|
|
|
16
13
|
|
|
17
14
|
async def main(argv, outp=s_output.stdout):
|
|
18
15
|
|
|
19
|
-
pars =
|
|
16
|
+
pars = s_cmd.Parser(prog=prog, outp=outp, description=descr)
|
|
20
17
|
pars.add_argument('rstfile', help='Input RST file with storm directives.')
|
|
21
18
|
pars.add_argument('--save', help='Output file to save (default: stdout)')
|
|
22
19
|
|
|
@@ -33,11 +30,6 @@ async def main(argv, outp=s_output.stdout):
|
|
|
33
30
|
for line in lines:
|
|
34
31
|
outp.printf(line, addnl=False)
|
|
35
32
|
|
|
36
|
-
|
|
33
|
+
if __name__ == '__main__': # pragma: no cover
|
|
37
34
|
s_common.setlogging(logger)
|
|
38
|
-
|
|
39
|
-
await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
|
|
40
|
-
return ret
|
|
41
|
-
|
|
42
|
-
if __name__ == '__main__':
|
|
43
|
-
sys.exit(asyncio.run(_main(sys.argv[1:])))
|
|
35
|
+
s_cmd.exitmain(main)
|