synapse 2.215.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 +16 -1
- synapse/lib/cell.py +12 -0
- synapse/lib/cmd.py +6 -2
- synapse/lib/layer.py +10 -5
- 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/risk.py +2 -0
- synapse/tests/test_cortex.py +262 -0
- synapse/tests/test_lib_auth.py +2 -0
- synapse/tests/test_lib_storm.py +52 -1
- synapse/tests/test_lib_stormsvc.py +2 -2
- synapse/tests/test_lib_types.py +6 -0
- synapse/tests/test_model_inet.py +2 -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.215.0.dist-info → synapse-2.216.0.dist-info}/METADATA +1 -1
- {synapse-2.215.0.dist-info → synapse-2.216.0.dist-info}/RECORD +62 -62
- {synapse-2.215.0.dist-info → synapse-2.216.0.dist-info}/WHEEL +0 -0
- {synapse-2.215.0.dist-info → synapse-2.216.0.dist-info}/licenses/LICENSE +0 -0
- {synapse-2.215.0.dist-info → synapse-2.216.0.dist-info}/top_level.txt +0 -0
synapse/tools/changelog.py
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import re
|
|
3
|
-
import sys
|
|
4
3
|
import copy
|
|
5
4
|
import gzip
|
|
6
5
|
import pprint
|
|
7
|
-
import asyncio
|
|
8
|
-
import argparse
|
|
9
6
|
import datetime
|
|
10
7
|
import tempfile
|
|
11
8
|
import textwrap
|
|
@@ -19,6 +16,7 @@ import synapse.exc as s_exc
|
|
|
19
16
|
import synapse.common as s_common
|
|
20
17
|
import synapse.cortex as s_cortex
|
|
21
18
|
|
|
19
|
+
import synapse.lib.cmd as s_cmd
|
|
22
20
|
import synapse.lib.output as s_output
|
|
23
21
|
import synapse.lib.autodoc as s_autodoc
|
|
24
22
|
import synapse.lib.schemas as s_schemas
|
|
@@ -458,7 +456,7 @@ def _getModelFile(fp: str) -> dict | None:
|
|
|
458
456
|
ref_modl = s_common.yamlloads(large_bytz)
|
|
459
457
|
return ref_modl
|
|
460
458
|
|
|
461
|
-
async def gen(opts: argparse.Namespace,
|
|
459
|
+
async def gen(opts: s_cmd.argparse.Namespace,
|
|
462
460
|
outp: s_output.OutPut):
|
|
463
461
|
|
|
464
462
|
name = opts.name
|
|
@@ -806,7 +804,7 @@ def _gen_model_rst(version, model_ref, changes, current_model, outp: s_output.Ou
|
|
|
806
804
|
return rst
|
|
807
805
|
|
|
808
806
|
|
|
809
|
-
async def format(opts: argparse.Namespace,
|
|
807
|
+
async def format(opts: s_cmd.argparse.Namespace,
|
|
810
808
|
outp: s_output.OutPut):
|
|
811
809
|
|
|
812
810
|
if not regex.match(version_regex, opts.version):
|
|
@@ -976,7 +974,7 @@ async def format(opts: argparse.Namespace,
|
|
|
976
974
|
|
|
977
975
|
return 0
|
|
978
976
|
|
|
979
|
-
async def model(opts: argparse.Namespace,
|
|
977
|
+
async def model(opts: s_cmd.argparse.Namespace,
|
|
980
978
|
outp: s_output.OutPut):
|
|
981
979
|
|
|
982
980
|
if opts.save:
|
|
@@ -1017,11 +1015,8 @@ async def model(opts: argparse.Namespace,
|
|
|
1017
1015
|
outp.printf(line)
|
|
1018
1016
|
return 0
|
|
1019
1017
|
|
|
1020
|
-
async def main(argv, outp=
|
|
1021
|
-
|
|
1022
|
-
outp = s_output.OutPut()
|
|
1023
|
-
|
|
1024
|
-
pars = makeargparser()
|
|
1018
|
+
async def main(argv, outp=s_output.stdout):
|
|
1019
|
+
pars = getArgParser(outp)
|
|
1025
1020
|
|
|
1026
1021
|
opts = pars.parse_args(argv)
|
|
1027
1022
|
if opts.git_dir_check:
|
|
@@ -1038,11 +1033,11 @@ async def main(argv, outp=None):
|
|
|
1038
1033
|
outp.printf(f'Error running {opts.func}: {traceback.format_exc()}')
|
|
1039
1034
|
return 1
|
|
1040
1035
|
|
|
1041
|
-
def
|
|
1036
|
+
def getArgParser(outp: s_output.OutPut):
|
|
1042
1037
|
desc = '''Command line tool to manage changelog entries.
|
|
1043
1038
|
This tool and any data formats associated with it may change at any time.
|
|
1044
1039
|
'''
|
|
1045
|
-
pars =
|
|
1040
|
+
pars = s_cmd.Parser(prog='synapse.tools.changelog', outp=outp, description=desc)
|
|
1046
1041
|
|
|
1047
1042
|
subpars = pars.add_subparsers(required=True,
|
|
1048
1043
|
title='subcommands',
|
|
@@ -1059,7 +1054,7 @@ def makeargparser():
|
|
|
1059
1054
|
help='Add the newly created file to the current git staging area.')
|
|
1060
1055
|
# Hidden name override. Mainly for testing.
|
|
1061
1056
|
gen_pars.add_argument('-n', '--name', default=None, type=str,
|
|
1062
|
-
help=argparse.SUPPRESS)
|
|
1057
|
+
help=s_cmd.argparse.SUPPRESS)
|
|
1063
1058
|
|
|
1064
1059
|
format_pars = subpars.add_parser('format', help='Format existing files into a RST block.')
|
|
1065
1060
|
format_pars.set_defaults(func=format)
|
|
@@ -1101,10 +1096,11 @@ def makeargparser():
|
|
|
1101
1096
|
help='Enable verbose output')
|
|
1102
1097
|
p.add_argument('--cdir', default='./changes', action='store',
|
|
1103
1098
|
help='Directory of changelog files.')
|
|
1099
|
+
# Hidden name override. Mainly for testing.
|
|
1104
1100
|
p.add_argument('--disable-git-dir-check', dest='git_dir_check', default=True, action='store_false',
|
|
1105
|
-
help=argparse.SUPPRESS)
|
|
1101
|
+
help=s_cmd.argparse.SUPPRESS)
|
|
1106
1102
|
|
|
1107
1103
|
return pars
|
|
1108
1104
|
|
|
1109
1105
|
if __name__ == '__main__': # pragma: no cover
|
|
1110
|
-
|
|
1106
|
+
s_cmd.exitmain(main)
|
synapse/tools/cmdr.py
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
import asyncio
|
|
3
1
|
import logging
|
|
4
2
|
import warnings
|
|
5
|
-
import contextlib
|
|
6
3
|
|
|
7
4
|
import synapse.exc as s_exc
|
|
8
5
|
import synapse.common as s_common
|
|
9
6
|
import synapse.telepath as s_telepath
|
|
10
7
|
|
|
8
|
+
import synapse.lib.cmd as s_cmd
|
|
11
9
|
import synapse.lib.cmdr as s_cmdr
|
|
12
|
-
import synapse.lib.coro as s_coro
|
|
13
10
|
import synapse.lib.version as s_version
|
|
14
11
|
|
|
15
12
|
logger = logging.getLogger(__name__)
|
|
@@ -52,9 +49,8 @@ async def main(argv): # pragma: no cover
|
|
|
52
49
|
|
|
53
50
|
async with s_telepath.withTeleEnv():
|
|
54
51
|
await _main(argv)
|
|
55
|
-
await asyncio.wait_for(s_coro.await_bg_tasks(), timeout=60)
|
|
56
52
|
return 0
|
|
57
53
|
|
|
58
54
|
if __name__ == '__main__': # pragma: no cover
|
|
59
55
|
warnings.filterwarnings("default", category=PendingDeprecationWarning)
|
|
60
|
-
|
|
56
|
+
s_cmd.exitmain(main)
|
synapse/tools/cryo/cat.py
CHANGED
|
@@ -1,44 +1,35 @@
|
|
|
1
1
|
import sys
|
|
2
2
|
import pprint
|
|
3
|
-
import asyncio
|
|
4
3
|
import argparse
|
|
5
|
-
import logging
|
|
6
4
|
|
|
7
5
|
import synapse.telepath as s_telepath
|
|
8
6
|
|
|
7
|
+
import synapse.lib.cmd as s_cmd
|
|
9
8
|
import synapse.lib.json as s_json
|
|
10
9
|
import synapse.lib.output as s_output
|
|
11
10
|
import synapse.lib.msgpack as s_msgpack
|
|
12
11
|
|
|
13
|
-
logger = logging.getLogger(__name__)
|
|
14
|
-
|
|
15
12
|
async def main(argv, outp=s_output.stdout):
|
|
16
13
|
|
|
17
|
-
pars =
|
|
14
|
+
pars = s_cmd.Parser(prog='synapse.tools.cryo.cat', outp=outp, description='display data items from a cryo cell')
|
|
18
15
|
pars.add_argument('cryotank', help='The telepath URL for the remote cryotank.')
|
|
19
16
|
pars.add_argument('--offset', default=0, type=int, help='Begin at offset index')
|
|
20
17
|
pars.add_argument('--size', default=10, type=int, help='How many items to display')
|
|
21
18
|
pars.add_argument('--omit-offset', default=False, action='store_true', help='Output raw items with no offsets.')
|
|
22
|
-
# TODO: synapse.tools.cryo.list <cryocell>
|
|
23
|
-
# pars.add_argument('--list', default=False, action='store_true', help='List tanks in the remote cell and return')
|
|
24
19
|
group = pars.add_mutually_exclusive_group()
|
|
25
20
|
group.add_argument('--jsonl', action='store_true', help='Input/Output items in jsonl format')
|
|
26
21
|
group.add_argument('--msgpack', action='store_true', help='Input/Output items in msgpack format')
|
|
27
|
-
pars.add_argument('--verbose', '-v', default=False, action='store_true',
|
|
22
|
+
pars.add_argument('--verbose', '-v', default=False, action='store_true',
|
|
23
|
+
help='Verbose output. This argument is deprecated and no longer has any effect.')
|
|
28
24
|
pars.add_argument('--ingest', '-i', default=False, action='store_true',
|
|
29
25
|
help='Reverses direction: feeds cryotank from stdin in msgpack or jsonl format')
|
|
30
26
|
|
|
31
27
|
opts = pars.parse_args(argv)
|
|
32
28
|
|
|
33
|
-
if opts.verbose:
|
|
34
|
-
logger.setLevel(logging.INFO)
|
|
35
|
-
|
|
36
29
|
if opts.ingest and not opts.jsonl and not opts.msgpack:
|
|
37
30
|
outp.printf('Must specify exactly one of --jsonl or --msgpack if --ingest is specified')
|
|
38
31
|
return 1
|
|
39
32
|
|
|
40
|
-
logger.info(f'connecting to: {opts.cryotank}')
|
|
41
|
-
|
|
42
33
|
async with s_telepath.withTeleEnv():
|
|
43
34
|
|
|
44
35
|
async with await s_telepath.openurl(opts.cryotank) as tank:
|
|
@@ -67,5 +58,4 @@ async def main(argv, outp=s_output.stdout):
|
|
|
67
58
|
return 0
|
|
68
59
|
|
|
69
60
|
if __name__ == '__main__': # pragma: no cover
|
|
70
|
-
|
|
71
|
-
sys.exit(asyncio.run(main(sys.argv[1:])))
|
|
61
|
+
s_cmd.exitmain(main)
|
synapse/tools/cryo/list.py
CHANGED
|
@@ -1,17 +1,11 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
import logging
|
|
3
|
-
import asyncio
|
|
4
|
-
import argparse
|
|
5
|
-
|
|
6
1
|
import synapse.telepath as s_telepath
|
|
7
2
|
|
|
3
|
+
import synapse.lib.cmd as s_cmd
|
|
8
4
|
import synapse.lib.output as s_output
|
|
9
5
|
|
|
10
|
-
logger = logging.getLogger(__name__)
|
|
11
|
-
|
|
12
6
|
async def main(argv, outp=s_output.stdout):
|
|
13
7
|
|
|
14
|
-
pars =
|
|
8
|
+
pars = s_cmd.Parser(prog='synapse.tools.cryo.list', outp=outp, description='List tanks within a cryo cell.')
|
|
15
9
|
pars.add_argument('cryocell', nargs='+', help='Telepath URLs to cryo cells.')
|
|
16
10
|
|
|
17
11
|
opts = pars.parse_args(argv)
|
|
@@ -30,5 +24,4 @@ async def main(argv, outp=s_output.stdout):
|
|
|
30
24
|
return 0
|
|
31
25
|
|
|
32
26
|
if __name__ == '__main__': # pragma: no cover
|
|
33
|
-
|
|
34
|
-
sys.exit(asyncio.run(main(sys.argv[1:])))
|
|
27
|
+
s_cmd.exitmain(main)
|
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)
|