synapse 2.202.0__py311-none-any.whl → 2.204.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 +4 -4
- synapse/cmds/cortex.py +4 -6
- synapse/cmds/hive.py +10 -10
- synapse/common.py +17 -58
- synapse/cortex.py +6 -6
- synapse/data/__init__.py +3 -2
- synapse/data/iana.uris.mpk +1 -0
- synapse/lib/auth.py +3 -0
- synapse/lib/autodoc.py +3 -3
- synapse/lib/cell.py +21 -1
- synapse/lib/cli.py +2 -2
- synapse/lib/config.py +2 -2
- synapse/lib/encoding.py +4 -3
- synapse/lib/httpapi.py +7 -11
- synapse/lib/json.py +224 -0
- synapse/lib/lmdbslab.py +1 -1
- synapse/lib/oauth.py +176 -54
- synapse/lib/rstorm.py +18 -14
- synapse/lib/schemas.py +87 -1
- synapse/lib/scrape.py +35 -13
- synapse/lib/snap.py +2 -1
- synapse/lib/storm.lark +2 -2
- synapse/lib/storm.py +11 -6
- synapse/lib/stormhttp.py +11 -13
- synapse/lib/stormlib/aha.py +4 -4
- synapse/lib/stormlib/auth.py +1 -1
- synapse/lib/stormlib/cache.py +2 -2
- synapse/lib/stormlib/cortex.py +5 -5
- synapse/lib/stormlib/graph.py +1 -1
- synapse/lib/stormlib/imap.py +1 -1
- synapse/lib/stormlib/json.py +8 -11
- synapse/lib/stormlib/model.py +1 -1
- synapse/lib/stormlib/notifications.py +2 -2
- synapse/lib/stormlib/oauth.py +105 -2
- synapse/lib/stormlib/stats.py +4 -0
- synapse/lib/stormlib/stix.py +3 -4
- synapse/lib/stormlib/vault.py +6 -6
- synapse/lib/stormlib/xml.py +2 -2
- synapse/lib/stormtypes.py +19 -28
- synapse/lib/structlog.py +3 -3
- synapse/lib/types.py +2 -1
- synapse/lib/urlhelp.py +28 -4
- synapse/lib/version.py +2 -2
- synapse/lib/view.py +7 -3
- synapse/models/base.py +51 -2
- synapse/models/person.py +5 -2
- synapse/telepath.py +5 -3
- synapse/tests/files/__init__.py +0 -1
- synapse/tests/test_axon.py +1 -1
- synapse/tests/test_cmds_cortex.py +3 -2
- synapse/tests/test_cmds_hive.py +4 -4
- synapse/tests/test_common.py +29 -19
- synapse/tests/test_cortex.py +5 -5
- synapse/tests/test_lib_ast.py +3 -3
- synapse/tests/test_lib_autodoc.py +5 -5
- synapse/tests/test_lib_base.py +1 -1
- synapse/tests/test_lib_cell.py +16 -10
- synapse/tests/test_lib_config.py +2 -2
- synapse/tests/test_lib_encoding.py +2 -2
- synapse/tests/test_lib_grammar.py +86 -64
- synapse/tests/test_lib_httpapi.py +56 -13
- synapse/tests/test_lib_json.py +219 -0
- synapse/tests/test_lib_multislabseqn.py +2 -1
- synapse/tests/test_lib_node.py +2 -2
- synapse/tests/test_lib_scrape.py +50 -0
- synapse/tests/test_lib_storm.py +36 -8
- synapse/tests/test_lib_stormhttp.py +4 -4
- synapse/tests/test_lib_stormlib_auth.py +3 -2
- synapse/tests/test_lib_stormlib_cortex.py +10 -12
- synapse/tests/test_lib_stormlib_infosec.py +2 -3
- synapse/tests/test_lib_stormlib_json.py +18 -21
- synapse/tests/test_lib_stormlib_log.py +1 -1
- synapse/tests/test_lib_stormlib_oauth.py +603 -1
- synapse/tests/test_lib_stormlib_stats.py +13 -3
- synapse/tests/test_lib_stormlib_stix.py +5 -5
- synapse/tests/test_lib_stormtypes.py +4 -4
- synapse/tests/test_lib_structlog.py +5 -6
- synapse/tests/test_lib_urlhelp.py +7 -0
- synapse/tests/test_lib_view.py +8 -0
- synapse/tests/test_model_base.py +32 -0
- synapse/tests/test_model_infotech.py +2 -2
- synapse/tests/test_model_person.py +2 -0
- synapse/tests/test_telepath.py +0 -1
- synapse/tests/test_tools_cryo_cat.py +4 -3
- synapse/tests/test_tools_docker_validate.py +4 -2
- synapse/tests/test_tools_feed.py +30 -2
- synapse/tests/test_tools_genpkg.py +1 -1
- synapse/tests/test_tools_healthcheck.py +8 -7
- synapse/tests/test_utils.py +2 -2
- synapse/tests/utils.py +3 -3
- synapse/tools/autodoc.py +3 -3
- synapse/tools/changelog.py +2 -2
- synapse/tools/cryo/cat.py +3 -3
- synapse/tools/csvtool.py +2 -3
- synapse/tools/docker/validate.py +5 -5
- synapse/tools/feed.py +2 -1
- synapse/tools/genpkg.py +3 -2
- synapse/tools/healthcheck.py +2 -3
- synapse/tools/json2mpk.py +2 -2
- synapse/utils/getrefs.py +6 -6
- synapse/vendor/cpython/lib/json.py +35 -0
- synapse/vendor/cpython/lib/test/test_json.py +22 -0
- {synapse-2.202.0.dist-info → synapse-2.204.0.dist-info}/METADATA +4 -2
- {synapse-2.202.0.dist-info → synapse-2.204.0.dist-info}/RECORD +107 -102
- {synapse-2.202.0.dist-info → synapse-2.204.0.dist-info}/WHEEL +1 -1
- {synapse-2.202.0.dist-info → synapse-2.204.0.dist-info/licenses}/LICENSE +0 -0
- {synapse-2.202.0.dist-info → synapse-2.204.0.dist-info}/top_level.txt +0 -0
|
@@ -192,17 +192,17 @@ Queries = [
|
|
|
192
192
|
'[ test:str=woot .seen=(2014,2015) ]',
|
|
193
193
|
'[ test:str=woot .seen=20 ]',
|
|
194
194
|
'[-#foo]',
|
|
195
|
-
'[meta:
|
|
196
|
-
'[meta:
|
|
197
|
-
'[meta:
|
|
198
|
-
'[meta:
|
|
199
|
-
'[meta:
|
|
195
|
+
'[meta:source=((test:str, foobar), (test:str, foo))]',
|
|
196
|
+
'[meta:source=((test:comp, (2048, horton)), (test:comp, (4096, whoville)))]',
|
|
197
|
+
'[meta:source=((test:comp, (9001, "A mean one")), (test:comp, (40000, greeneggs)))]',
|
|
198
|
+
'[meta:source=((test:int, 16), (test:comp, (9999, greenham)))]',
|
|
199
|
+
'[meta:source=((test:str, 123), (test:int, 123))]',
|
|
200
200
|
'[inet:dns:query=(tcp://1.2.3.4, "", 1)]',
|
|
201
201
|
'[inet:dns:query=(tcp://1.2.3.4, "foo*.haha.com", 1)]',
|
|
202
202
|
'[inet:ipv4=1.2.3.1-1.2.3.3]',
|
|
203
|
-
'[inet:ipv4=1.2.3.4 :asn=10] [meta:
|
|
204
|
-
'[meta:
|
|
205
|
-
'[meta:source=abcd +#omit.nopiv] [meta:
|
|
203
|
+
'[inet:ipv4=1.2.3.4 :asn=10] [meta:source=(abcd, (inet:asn, 10))]',
|
|
204
|
+
'[meta:source=(abcd, (test:str, pennywise))]',
|
|
205
|
+
'[meta:source=abcd +#omit.nopiv] [meta:source=(abcd, (test:pivtarg, foo))]',
|
|
206
206
|
'[test:comp=(1234, 5678)]',
|
|
207
207
|
'[test:comp=(3, foob) +#meep.gorp +#bleep.zlorp +#cond]',
|
|
208
208
|
'[test:guid="*" :tick=2001]',
|
|
@@ -220,8 +220,8 @@ Queries = [
|
|
|
220
220
|
'[test:str=foo :tick=201808021201]',
|
|
221
221
|
'[test:str=hehe] | iden abcd | count',
|
|
222
222
|
'[test:str=hello]',
|
|
223
|
-
'meta:
|
|
224
|
-
'meta:
|
|
223
|
+
'meta:source +:node*range=((test:comp, (1000, green)), (test:comp, (3000, ham)))',
|
|
224
|
+
'meta:source',
|
|
225
225
|
'file:bytes:size=4',
|
|
226
226
|
'for $fqdn in $fqdns { [ inet:fqdn=$fqdn ] }',
|
|
227
227
|
'for ($fqdn, $ipv4) in $dnsa { [ inet:dns:a=($fqdn,$ipv4) ] }',
|
|
@@ -232,8 +232,8 @@ Queries = [
|
|
|
232
232
|
'geo:place:latlong*near=(("34.118560", "-118.300370"), 50m)',
|
|
233
233
|
'geo:place:latlong*near=((0, 0), 50m)',
|
|
234
234
|
'geo:place:latlong*near=((34.1, -118.3), 10km)',
|
|
235
|
-
'geo:place=$place <- meta:
|
|
236
|
-
'geo:place=$place <- meta:
|
|
235
|
+
'geo:place=$place <- meta:source <- *',
|
|
236
|
+
'geo:place=$place <- meta:source <- ps:person',
|
|
237
237
|
'geo:place=abcd $latlong=:latlong $radius=:radius | spin | tel:mob:telem:latlong*near=($latlong, 3km)',
|
|
238
238
|
'meta:note=abcd | noderefs -d 2 --join',
|
|
239
239
|
'help',
|
|
@@ -285,16 +285,16 @@ Queries = [
|
|
|
285
285
|
'inet:user | limit 10 | +inet:user=visi',
|
|
286
286
|
'inet:user | limit 10 | [ +#foo.bar ]',
|
|
287
287
|
'media:news = 00a1f0d928e25729b9e86e2d08c127ce [ :summary = \"\" ]',
|
|
288
|
-
'meta:
|
|
289
|
-
'meta:
|
|
288
|
+
'meta:source:meta:source=$sorc -> *',
|
|
289
|
+
'meta:source:meta:source=$sorc :node -> *',
|
|
290
290
|
'meta:source=8f1401de15918358d5247e21ca29a814',
|
|
291
291
|
'movetag a.b a.m',
|
|
292
292
|
'movetag hehe woot',
|
|
293
|
-
'ps:person=$pers -> meta:
|
|
294
|
-
'ps:person=$pers -> meta:
|
|
295
|
-
'ps:person=$pers -> meta:
|
|
296
|
-
'ps:person=$pers -> meta:
|
|
297
|
-
'ps:person=$pers -> meta:
|
|
293
|
+
'ps:person=$pers -> meta:source -> *',
|
|
294
|
+
'ps:person=$pers -> meta:source -> geo:place',
|
|
295
|
+
'ps:person=$pers -> meta:source +:time@=(2014,2017) -> geo:place',
|
|
296
|
+
'ps:person=$pers -> meta:source -> *',
|
|
297
|
+
'ps:person=$pers -> meta:source :node -> *',
|
|
298
298
|
'reindex --form-counts',
|
|
299
299
|
'sudo | [ inet:ipv4=1.2.3.4 ]',
|
|
300
300
|
'sudo | [ test:cycle0=foo :test:cycle1=bar ]',
|
|
@@ -444,12 +444,12 @@ Queries = [
|
|
|
444
444
|
'test:str=bar <- *',
|
|
445
445
|
'test:str=bar test:pivcomp=(foo,bar) [+#test.bar]',
|
|
446
446
|
'test:str=foo +#lol@=2016',
|
|
447
|
-
'test:str=foo <+- meta:
|
|
448
|
-
'test:str=foo <- meta:
|
|
447
|
+
'test:str=foo <+- meta:source',
|
|
448
|
+
'test:str=foo <- meta:source',
|
|
449
449
|
'test:str=foo | delnode',
|
|
450
|
-
'test:str=foobar -+> meta:
|
|
451
|
-
'test:str=foobar -> meta:
|
|
452
|
-
'test:str=foobar -> meta:
|
|
450
|
+
'test:str=foobar -+> meta:source',
|
|
451
|
+
'test:str=foobar -> meta:source <+- test:str',
|
|
452
|
+
'test:str=foobar -> meta:source <- test:str',
|
|
453
453
|
'test:str=hello [:tick="2001"]',
|
|
454
454
|
'test:str=hello [:tick="2002"]',
|
|
455
455
|
'test:str=pennywise | noderefs --join -d 9 --traverse-edge',
|
|
@@ -476,7 +476,7 @@ Queries = [
|
|
|
476
476
|
inet:fqdn | graph
|
|
477
477
|
--degrees 2
|
|
478
478
|
--filter { -#nope }
|
|
479
|
-
--pivot { <- meta:
|
|
479
|
+
--pivot { <- meta:source <- meta:source }
|
|
480
480
|
--form-pivot inet:fqdn {<- * | limit 20}
|
|
481
481
|
--form-pivot inet:fqdn {-> * | limit 20}
|
|
482
482
|
--form-filter inet:fqdn {-inet:fqdn:issuffix=1}
|
|
@@ -514,7 +514,7 @@ Queries = [
|
|
|
514
514
|
|
|
515
515
|
{[ inet:email:message:attachment=($node, "*") ] -inet:email:message [ :name=sploit.exe ]}
|
|
516
516
|
|
|
517
|
-
{[ meta:
|
|
517
|
+
{[ meta:source=($node, ('inet:email:header', ('to', 'Visi Kensho <visi@vertex.link>'))) ]}
|
|
518
518
|
''',
|
|
519
519
|
'$x = $(1 / 3)',
|
|
520
520
|
'$x = $(1 * 3)',
|
|
@@ -690,18 +690,18 @@ Queries = [
|
|
|
690
690
|
'reverse(*$form=$valu)',
|
|
691
691
|
'test:str=foobar -> inet:dns*',
|
|
692
692
|
'test:str=foobar -> inet:dns:*',
|
|
693
|
-
'test:str=foobar -> (meta:
|
|
694
|
-
'test:str=foobar -> (meta:
|
|
693
|
+
'test:str=foobar -> (meta:source, inet:dns:a)',
|
|
694
|
+
'test:str=foobar -> (meta:source, inet:dns*)',
|
|
695
695
|
'test:str=foobar -> $foo',
|
|
696
696
|
'test:str=foobar -+> inet:dns*',
|
|
697
697
|
'test:str=foobar -+> inet:dns:*',
|
|
698
|
-
'test:str=foobar -+> (meta:
|
|
699
|
-
'test:str=foobar -+> (meta:
|
|
698
|
+
'test:str=foobar -+> (meta:source, inet:dns:a)',
|
|
699
|
+
'test:str=foobar -+> (meta:source, inet:dns*)',
|
|
700
700
|
'test:str=foobar -+> $foo',
|
|
701
701
|
'test:str=foobar -(refs)> inet:dns:*',
|
|
702
|
-
'inet:fqdn=foo.com :zone -> (meta:
|
|
702
|
+
'inet:fqdn=foo.com :zone -> (meta:source, inet:dns:a)',
|
|
703
703
|
'inet:fqdn=foo.com :zone -> $foo',
|
|
704
|
-
'inet:fqdn=foo.com :zone -+> (meta:
|
|
704
|
+
'inet:fqdn=foo.com :zone -+> (meta:source, inet:dns:a)',
|
|
705
705
|
'inet:fqdn=foo.com :zone -+> $foo',
|
|
706
706
|
'test:*#foo',
|
|
707
707
|
'test:*#foo@=2016',
|
|
@@ -748,6 +748,10 @@ Queries = [
|
|
|
748
748
|
'[test:str=foo :bar?--={[it:dev:str=foo]}]',
|
|
749
749
|
'$foo=(notime,)',
|
|
750
750
|
'$foo=(nulltime,)',
|
|
751
|
+
'$foo=(not$x)',
|
|
752
|
+
'$foo=(not $x)',
|
|
753
|
+
'$foo=(not($x))',
|
|
754
|
+
'$foo=(not ($x))',
|
|
751
755
|
]
|
|
752
756
|
|
|
753
757
|
# Generated with print_parse_list below
|
|
@@ -933,17 +937,17 @@ _ParseResults = [
|
|
|
933
937
|
'Query: [EditNodeAdd: [FormName: [Const: test:str], Const: =, Const: woot], EditPropSet: [UnivProp: [Const: .seen], Const: =, List: [Const: 2014, Const: 2015]]]',
|
|
934
938
|
'Query: [EditNodeAdd: [FormName: [Const: test:str], Const: =, Const: woot], EditPropSet: [UnivProp: [Const: .seen], Const: =, Const: 20]]',
|
|
935
939
|
'Query: [EditTagDel: [TagName: [Const: foo]]]',
|
|
936
|
-
'Query: [EditNodeAdd: [FormName: [Const: meta:
|
|
937
|
-
'Query: [EditNodeAdd: [FormName: [Const: meta:
|
|
938
|
-
'Query: [EditNodeAdd: [FormName: [Const: meta:
|
|
939
|
-
'Query: [EditNodeAdd: [FormName: [Const: meta:
|
|
940
|
-
'Query: [EditNodeAdd: [FormName: [Const: meta:
|
|
940
|
+
'Query: [EditNodeAdd: [FormName: [Const: meta:source], Const: =, List: [List: [Const: test:str, Const: foobar], List: [Const: test:str, Const: foo]]]]',
|
|
941
|
+
'Query: [EditNodeAdd: [FormName: [Const: meta:source], Const: =, List: [List: [Const: test:comp, List: [Const: 2048, Const: horton]], List: [Const: test:comp, List: [Const: 4096, Const: whoville]]]]]',
|
|
942
|
+
'Query: [EditNodeAdd: [FormName: [Const: meta:source], Const: =, List: [List: [Const: test:comp, List: [Const: 9001, Const: A mean one]], List: [Const: test:comp, List: [Const: 40000, Const: greeneggs]]]]]',
|
|
943
|
+
'Query: [EditNodeAdd: [FormName: [Const: meta:source], Const: =, List: [List: [Const: test:int, Const: 16], List: [Const: test:comp, List: [Const: 9999, Const: greenham]]]]]',
|
|
944
|
+
'Query: [EditNodeAdd: [FormName: [Const: meta:source], Const: =, List: [List: [Const: test:str, Const: 123], List: [Const: test:int, Const: 123]]]]',
|
|
941
945
|
'Query: [EditNodeAdd: [FormName: [Const: inet:dns:query], Const: =, List: [Const: tcp://1.2.3.4, Const: , Const: 1]]]',
|
|
942
946
|
'Query: [EditNodeAdd: [FormName: [Const: inet:dns:query], Const: =, List: [Const: tcp://1.2.3.4, Const: foo*.haha.com, Const: 1]]]',
|
|
943
947
|
'Query: [EditNodeAdd: [FormName: [Const: inet:ipv4], Const: =, Const: 1.2.3.1-1.2.3.3]]',
|
|
944
|
-
'Query: [EditNodeAdd: [FormName: [Const: inet:ipv4], Const: =, Const: 1.2.3.4], EditPropSet: [RelProp: [Const: asn], Const: =, Const: 10], EditNodeAdd: [FormName: [Const: meta:
|
|
945
|
-
'Query: [EditNodeAdd: [FormName: [Const: meta:
|
|
946
|
-
'Query: [EditNodeAdd: [FormName: [Const: meta:source], Const: =, Const: abcd], EditTagAdd: [TagName: [Const: omit, Const: nopiv]], EditNodeAdd: [FormName: [Const: meta:
|
|
948
|
+
'Query: [EditNodeAdd: [FormName: [Const: inet:ipv4], Const: =, Const: 1.2.3.4], EditPropSet: [RelProp: [Const: asn], Const: =, Const: 10], EditNodeAdd: [FormName: [Const: meta:source], Const: =, List: [Const: abcd, List: [Const: inet:asn, Const: 10]]]]',
|
|
949
|
+
'Query: [EditNodeAdd: [FormName: [Const: meta:source], Const: =, List: [Const: abcd, List: [Const: test:str, Const: pennywise]]]]',
|
|
950
|
+
'Query: [EditNodeAdd: [FormName: [Const: meta:source], Const: =, Const: abcd], EditTagAdd: [TagName: [Const: omit, Const: nopiv]], EditNodeAdd: [FormName: [Const: meta:source], Const: =, List: [Const: abcd, List: [Const: test:pivtarg, Const: foo]]]]',
|
|
947
951
|
'Query: [EditNodeAdd: [FormName: [Const: test:comp], Const: =, List: [Const: 1234, Const: 5678]]]',
|
|
948
952
|
'Query: [EditNodeAdd: [FormName: [Const: test:comp], Const: =, List: [Const: 3, Const: foob]], EditTagAdd: [TagName: [Const: meep, Const: gorp]], EditTagAdd: [TagName: [Const: bleep, Const: zlorp]], EditTagAdd: [TagName: [Const: cond]]]',
|
|
949
953
|
'Query: [EditNodeAdd: [FormName: [Const: test:guid], Const: =, Const: *], EditPropSet: [RelProp: [Const: tick], Const: =, Const: 2001]]',
|
|
@@ -961,8 +965,8 @@ _ParseResults = [
|
|
|
961
965
|
'Query: [EditNodeAdd: [FormName: [Const: test:str], Const: =, Const: foo], EditPropSet: [RelProp: [Const: tick], Const: =, Const: 201808021201]]',
|
|
962
966
|
'Query: [EditNodeAdd: [FormName: [Const: test:str], Const: =, Const: hehe], CmdOper: [Const: iden, List: [Const: abcd]], CmdOper: [Const: count, Const: ()]]',
|
|
963
967
|
'Query: [EditNodeAdd: [FormName: [Const: test:str], Const: =, Const: hello]]',
|
|
964
|
-
'Query: [LiftProp: [Const: meta:
|
|
965
|
-
'Query: [LiftProp: [Const: meta:
|
|
968
|
+
'Query: [LiftProp: [Const: meta:source], FiltOper: [Const: +, RelPropCond: [RelPropValue: [RelProp: [Const: node]], Const: range=, List: [List: [Const: test:comp, List: [Const: 1000, Const: green]], List: [Const: test:comp, List: [Const: 3000, Const: ham]]]]]]',
|
|
969
|
+
'Query: [LiftProp: [Const: meta:source]]',
|
|
966
970
|
'Query: [LiftPropBy: [Const: file:bytes:size, Const: =, Const: 4]]',
|
|
967
971
|
'Query: [ForLoop: [Const: fqdn, VarValue: [Const: fqdns], SubQuery: [Query: [EditNodeAdd: [FormName: [Const: inet:fqdn], Const: =, VarValue: [Const: fqdn]]]]]]',
|
|
968
972
|
"Query: [ForLoop: [VarList: ['fqdn', 'ipv4'], VarValue: [Const: dnsa], SubQuery: [Query: [EditNodeAdd: [FormName: [Const: inet:dns:a], Const: =, List: [VarValue: [Const: fqdn], VarValue: [Const: ipv4]]]]]]]",
|
|
@@ -973,8 +977,8 @@ _ParseResults = [
|
|
|
973
977
|
'Query: [LiftPropBy: [Const: geo:place:latlong, Const: near=, List: [List: [Const: 34.118560, Const: -118.300370], Const: 50m]]]',
|
|
974
978
|
'Query: [LiftPropBy: [Const: geo:place:latlong, Const: near=, List: [List: [Const: 0, Const: 0], Const: 50m]]]',
|
|
975
979
|
'Query: [LiftPropBy: [Const: geo:place:latlong, Const: near=, List: [List: [Const: 34.1, Const: -118.3], Const: 10km]]]',
|
|
976
|
-
'Query: [LiftPropBy: [Const: geo:place, Const: =, VarValue: [Const: place]], PivotInFrom: [Const: meta:
|
|
977
|
-
'Query: [LiftPropBy: [Const: geo:place, Const: =, VarValue: [Const: place]], PivotInFrom: [Const: meta:
|
|
980
|
+
'Query: [LiftPropBy: [Const: geo:place, Const: =, VarValue: [Const: place]], PivotInFrom: [Const: meta:source], isjoin=False, PivotIn: [], isjoin=False]',
|
|
981
|
+
'Query: [LiftPropBy: [Const: geo:place, Const: =, VarValue: [Const: place]], PivotInFrom: [Const: meta:source], isjoin=False, PivotInFrom: [Const: ps:person], isjoin=False]',
|
|
978
982
|
'Query: [LiftPropBy: [Const: geo:place, Const: =, Const: abcd], SetVarOper: [Const: latlong, RelPropValue: [Const: latlong]], SetVarOper: [Const: radius, RelPropValue: [Const: radius]], CmdOper: [Const: spin, Const: ()], LiftPropBy: [Const: tel:mob:telem:latlong, Const: near=, List: [VarValue: [Const: latlong], Const: 3km]]]',
|
|
979
983
|
'Query: [LiftPropBy: [Const: meta:note, Const: =, Const: abcd], CmdOper: [Const: noderefs, List: [Const: -d, Const: 2, Const: --join]]]',
|
|
980
984
|
'Query: [CmdOper: [Const: help, Const: ()]]',
|
|
@@ -1026,16 +1030,16 @@ _ParseResults = [
|
|
|
1026
1030
|
'Query: [LiftProp: [Const: inet:user], CmdOper: [Const: limit, List: [Const: 10]], FiltOper: [Const: +, AbsPropCond: [Const: inet:user, Const: =, Const: visi]]]',
|
|
1027
1031
|
'Query: [LiftProp: [Const: inet:user], CmdOper: [Const: limit, List: [Const: 10]], EditTagAdd: [TagName: [Const: foo, Const: bar]]]',
|
|
1028
1032
|
'Query: [LiftPropBy: [Const: media:news, Const: =, Const: 00a1f0d928e25729b9e86e2d08c127ce], EditPropSet: [RelProp: [Const: summary], Const: =, Const: ]]',
|
|
1029
|
-
'Query: [LiftPropBy: [Const: meta:
|
|
1030
|
-
'Query: [LiftPropBy: [Const: meta:
|
|
1033
|
+
'Query: [LiftPropBy: [Const: meta:source:meta:source, Const: =, VarValue: [Const: sorc]], PivotOut: [], isjoin=False]',
|
|
1034
|
+
'Query: [LiftPropBy: [Const: meta:source:meta:source, Const: =, VarValue: [Const: sorc]], PropPivotOut: [RelProp: [Const: node]], isjoin=False]',
|
|
1031
1035
|
'Query: [LiftPropBy: [Const: meta:source, Const: =, Const: 8f1401de15918358d5247e21ca29a814]]',
|
|
1032
1036
|
'Query: [CmdOper: [Const: movetag, List: [Const: a.b, Const: a.m]]]',
|
|
1033
1037
|
'Query: [CmdOper: [Const: movetag, List: [Const: hehe, Const: woot]]]',
|
|
1034
|
-
'Query: [LiftPropBy: [Const: ps:person, Const: =, VarValue: [Const: pers]], FormPivot: [Const: meta:
|
|
1035
|
-
'Query: [LiftPropBy: [Const: ps:person, Const: =, VarValue: [Const: pers]], FormPivot: [Const: meta:
|
|
1036
|
-
'Query: [LiftPropBy: [Const: ps:person, Const: =, VarValue: [Const: pers]], FormPivot: [Const: meta:
|
|
1037
|
-
'Query: [LiftPropBy: [Const: ps:person, Const: =, VarValue: [Const: pers]], FormPivot: [Const: meta:
|
|
1038
|
-
'Query: [LiftPropBy: [Const: ps:person, Const: =, VarValue: [Const: pers]], FormPivot: [Const: meta:
|
|
1038
|
+
'Query: [LiftPropBy: [Const: ps:person, Const: =, VarValue: [Const: pers]], FormPivot: [Const: meta:source], isjoin=False, PivotOut: [], isjoin=False]',
|
|
1039
|
+
'Query: [LiftPropBy: [Const: ps:person, Const: =, VarValue: [Const: pers]], FormPivot: [Const: meta:source], isjoin=False, FormPivot: [Const: geo:place], isjoin=False]',
|
|
1040
|
+
'Query: [LiftPropBy: [Const: ps:person, Const: =, VarValue: [Const: pers]], FormPivot: [Const: meta:source], isjoin=False, FiltOper: [Const: +, RelPropCond: [RelPropValue: [RelProp: [Const: time]], Const: @=, List: [Const: 2014, Const: 2017]]], FormPivot: [Const: geo:place], isjoin=False]',
|
|
1041
|
+
'Query: [LiftPropBy: [Const: ps:person, Const: =, VarValue: [Const: pers]], FormPivot: [Const: meta:source], isjoin=False, PivotOut: [], isjoin=False]',
|
|
1042
|
+
'Query: [LiftPropBy: [Const: ps:person, Const: =, VarValue: [Const: pers]], FormPivot: [Const: meta:source], isjoin=False, PropPivotOut: [RelProp: [Const: node]], isjoin=False]',
|
|
1039
1043
|
'Query: [CmdOper: [Const: reindex, List: [Const: --form-counts]]]',
|
|
1040
1044
|
'Query: [CmdOper: [Const: sudo, Const: ()], EditNodeAdd: [FormName: [Const: inet:ipv4], Const: =, Const: 1.2.3.4]]',
|
|
1041
1045
|
'Query: [CmdOper: [Const: sudo, Const: ()], EditNodeAdd: [FormName: [Const: test:cycle0], Const: =, Const: foo], EditPropSet: [RelProp: [Const: test:cycle1], Const: =, Const: bar]]',
|
|
@@ -1185,12 +1189,12 @@ _ParseResults = [
|
|
|
1185
1189
|
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: bar], PivotIn: [], isjoin=False]',
|
|
1186
1190
|
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: bar], LiftPropBy: [Const: test:pivcomp, Const: =, List: [Const: foo, Const: bar]], EditTagAdd: [TagName: [Const: test, Const: bar]]]',
|
|
1187
1191
|
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foo], FiltOper: [Const: +, TagValuCond: [TagMatch: [Const: lol], Const: @=, Const: 2016]]]',
|
|
1188
|
-
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foo], PivotInFrom: [Const: meta:
|
|
1189
|
-
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foo], PivotInFrom: [Const: meta:
|
|
1192
|
+
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foo], PivotInFrom: [Const: meta:source], isjoin=True]',
|
|
1193
|
+
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foo], PivotInFrom: [Const: meta:source], isjoin=False]',
|
|
1190
1194
|
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foo], CmdOper: [Const: delnode, Const: ()]]',
|
|
1191
|
-
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [Const: meta:
|
|
1192
|
-
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [Const: meta:
|
|
1193
|
-
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [Const: meta:
|
|
1195
|
+
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [Const: meta:source], isjoin=True]',
|
|
1196
|
+
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [Const: meta:source], isjoin=False, PivotInFrom: [Const: test:str], isjoin=True]',
|
|
1197
|
+
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [Const: meta:source], isjoin=False, PivotInFrom: [Const: test:str], isjoin=False]',
|
|
1194
1198
|
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: hello], EditPropSet: [RelProp: [Const: tick], Const: =, Const: 2001]]',
|
|
1195
1199
|
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: hello], EditPropSet: [RelProp: [Const: tick], Const: =, Const: 2002]]',
|
|
1196
1200
|
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: pennywise], CmdOper: [Const: noderefs, List: [Const: --join, Const: -d, Const: 9, Const: --traverse-edge]]]',
|
|
@@ -1206,11 +1210,11 @@ _ParseResults = [
|
|
|
1206
1210
|
'Query: [LiftProp: [Const: test:int]]',
|
|
1207
1211
|
'Query: [LiftProp: [Const: test:int]]',
|
|
1208
1212
|
'Query: [LiftProp: [Const: test:int]]',
|
|
1209
|
-
'Query: [LiftProp: [Const: inet:fqdn], CmdOper: [Const: graph, List: [Const: --degrees, Const: 2, Const: --filter, ArgvQuery: [Query: [FiltOper: [Const: -, TagCond: [TagMatch: [Const: nope]]]]], Const: --pivot, ArgvQuery: [Query: [PivotInFrom: [Const: meta:
|
|
1213
|
+
'Query: [LiftProp: [Const: inet:fqdn], CmdOper: [Const: graph, List: [Const: --degrees, Const: 2, Const: --filter, ArgvQuery: [Query: [FiltOper: [Const: -, TagCond: [TagMatch: [Const: nope]]]]], Const: --pivot, ArgvQuery: [Query: [PivotInFrom: [Const: meta:source], isjoin=False, PivotInFrom: [Const: meta:source], isjoin=False]], Const: --form-pivot, Const: inet:fqdn, ArgvQuery: [Query: [PivotIn: [], isjoin=False, CmdOper: [Const: limit, List: [Const: 20]]]], Const: --form-pivot, Const: inet:fqdn, ArgvQuery: [Query: [PivotOut: [], isjoin=False, CmdOper: [Const: limit, List: [Const: 20]]]], Const: --form-filter, Const: inet:fqdn, ArgvQuery: [Query: [FiltOper: [Const: -, AbsPropCond: [Const: inet:fqdn:issuffix, Const: =, Const: 1]]]], Const: --form-pivot, Const: syn:tag, ArgvQuery: [Query: [PivotOut: [], isjoin=False]], Const: --form-pivot, Const: *, ArgvQuery: [Query: [PivotToTags: [TagMatch: []], isjoin=False]]]]]',
|
|
1210
1214
|
"Query: [ForLoop: [Const: foo, VarValue: [Const: foos], SubQuery: [Query: [VarListSetOper: [VarList: ['fqdn', 'ipv4'], FuncCall: [VarDeref: [VarValue: [Const: foo], Const: split], CallArgs: [Const: |], CallKwargs: []]], EditNodeAdd: [FormName: [Const: inet:dns:a], Const: =, List: [VarValue: [Const: fqdn], VarValue: [Const: ipv4]]]]]]]",
|
|
1211
1215
|
'Query: [ForLoop: [Const: tag, FuncCall: [VarDeref: [VarValue: [Const: node], Const: tags], CallArgs: [], CallKwargs: []], SubQuery: [Query: [FormPivot: [Const: test:int], isjoin=False, EditTagAdd: [TagName: [VarValue: [Const: tag]]]]]]]',
|
|
1212
1216
|
'Query: [ForLoop: [Const: tag, FuncCall: [VarDeref: [VarValue: [Const: node], Const: tags], CallArgs: [Const: fo*], CallKwargs: []], SubQuery: [Query: [FormPivot: [Const: test:int], isjoin=False, EditTagDel: [TagName: [VarValue: [Const: tag]]]]]]]',
|
|
1213
|
-
'Query: [EditNodeAdd: [FormName: [Const: inet:email:message], Const: =, Const: *], EditPropSet: [RelProp: [Const: to], Const: =, Const: woot@woot.com], EditPropSet: [RelProp: [Const: from], Const: =, Const: visi@vertex.link], EditPropSet: [RelProp: [Const: replyto], Const: =, Const: root@root.com], EditPropSet: [RelProp: [Const: subject], Const: =, Const: hi there], EditPropSet: [RelProp: [Const: date], Const: =, Const: 2015], EditPropSet: [RelProp: [Const: body], Const: =, Const: there are mad sploitz here!], EditPropSet: [RelProp: [Const: bytes], Const: =, Const: *], SubQuery: [Query: [EditNodeAdd: [FormName: [Const: inet:email:message:link], Const: =, List: [VarValue: [Const: node], Const: https://www.vertex.link]]]], SubQuery: [Query: [EditNodeAdd: [FormName: [Const: inet:email:message:attachment], Const: =, List: [VarValue: [Const: node], Const: *]], FiltOper: [Const: -, HasAbsPropCond: [Const: inet:email:message]], EditPropSet: [RelProp: [Const: name], Const: =, Const: sploit.exe]]], SubQuery: [Query: [EditNodeAdd: [FormName: [Const: meta:
|
|
1217
|
+
'Query: [EditNodeAdd: [FormName: [Const: inet:email:message], Const: =, Const: *], EditPropSet: [RelProp: [Const: to], Const: =, Const: woot@woot.com], EditPropSet: [RelProp: [Const: from], Const: =, Const: visi@vertex.link], EditPropSet: [RelProp: [Const: replyto], Const: =, Const: root@root.com], EditPropSet: [RelProp: [Const: subject], Const: =, Const: hi there], EditPropSet: [RelProp: [Const: date], Const: =, Const: 2015], EditPropSet: [RelProp: [Const: body], Const: =, Const: there are mad sploitz here!], EditPropSet: [RelProp: [Const: bytes], Const: =, Const: *], SubQuery: [Query: [EditNodeAdd: [FormName: [Const: inet:email:message:link], Const: =, List: [VarValue: [Const: node], Const: https://www.vertex.link]]]], SubQuery: [Query: [EditNodeAdd: [FormName: [Const: inet:email:message:attachment], Const: =, List: [VarValue: [Const: node], Const: *]], FiltOper: [Const: -, HasAbsPropCond: [Const: inet:email:message]], EditPropSet: [RelProp: [Const: name], Const: =, Const: sploit.exe]]], SubQuery: [Query: [EditNodeAdd: [FormName: [Const: meta:source], Const: =, List: [VarValue: [Const: node], List: [Const: inet:email:header, List: [Const: to, Const: Visi Kensho <visi@vertex.link>]]]]]]]',
|
|
1214
1218
|
'Query: [SetVarOper: [Const: x, DollarExpr: [ExprNode: [Const: 1, Const: /, Const: 3]]]]',
|
|
1215
1219
|
'Query: [SetVarOper: [Const: x, DollarExpr: [ExprNode: [Const: 1, Const: *, Const: 3]]]]',
|
|
1216
1220
|
'Query: [SetVarOper: [Const: x, DollarExpr: [ExprNode: [ExprNode: [Const: 1, Const: *, Const: 3], Const: +, Const: 2]]]]',
|
|
@@ -1340,18 +1344,18 @@ _ParseResults = [
|
|
|
1340
1344
|
'Query: [LiftPropBy: [VarValue: [Const: form], Const: =, VarValue: [Const: valu]]]',
|
|
1341
1345
|
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [Const: inet:dns*], isjoin=False]',
|
|
1342
1346
|
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [Const: inet:dns:*], isjoin=False]',
|
|
1343
|
-
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [List: [Const: meta:
|
|
1344
|
-
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [List: [Const: meta:
|
|
1347
|
+
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [List: [Const: meta:source, Const: inet:dns:a]], isjoin=False]',
|
|
1348
|
+
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [List: [Const: meta:source, Const: inet:dns*]], isjoin=False]',
|
|
1345
1349
|
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [VarValue: [Const: foo]], isjoin=False]',
|
|
1346
1350
|
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [Const: inet:dns*], isjoin=True]',
|
|
1347
1351
|
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [Const: inet:dns:*], isjoin=True]',
|
|
1348
|
-
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [List: [Const: meta:
|
|
1349
|
-
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [List: [Const: meta:
|
|
1352
|
+
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [List: [Const: meta:source, Const: inet:dns:a]], isjoin=True]',
|
|
1353
|
+
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [List: [Const: meta:source, Const: inet:dns*]], isjoin=True]',
|
|
1350
1354
|
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], FormPivot: [VarValue: [Const: foo]], isjoin=True]',
|
|
1351
1355
|
'Query: [LiftPropBy: [Const: test:str, Const: =, Const: foobar], N1Walk: [Const: refs, Const: inet:dns:*], isjoin=False]',
|
|
1352
|
-
'Query: [LiftPropBy: [Const: inet:fqdn, Const: =, Const: foo.com], PropPivot: [RelPropValue: [RelProp: [Const: zone]], List: [Const: meta:
|
|
1356
|
+
'Query: [LiftPropBy: [Const: inet:fqdn, Const: =, Const: foo.com], PropPivot: [RelPropValue: [RelProp: [Const: zone]], List: [Const: meta:source, Const: inet:dns:a]], isjoin=False]',
|
|
1353
1357
|
'Query: [LiftPropBy: [Const: inet:fqdn, Const: =, Const: foo.com], PropPivot: [RelPropValue: [RelProp: [Const: zone]], VarValue: [Const: foo]], isjoin=False]',
|
|
1354
|
-
'Query: [LiftPropBy: [Const: inet:fqdn, Const: =, Const: foo.com], PropPivot: [RelPropValue: [RelProp: [Const: zone]], List: [Const: meta:
|
|
1358
|
+
'Query: [LiftPropBy: [Const: inet:fqdn, Const: =, Const: foo.com], PropPivot: [RelPropValue: [RelProp: [Const: zone]], List: [Const: meta:source, Const: inet:dns:a]], isjoin=True]',
|
|
1355
1359
|
'Query: [LiftPropBy: [Const: inet:fqdn, Const: =, Const: foo.com], PropPivot: [RelPropValue: [RelProp: [Const: zone]], VarValue: [Const: foo]], isjoin=True]',
|
|
1356
1360
|
'Query: [LiftFormTag: [Const: test:*, TagName: [Const: foo]]]',
|
|
1357
1361
|
'Query: [LiftFormTag: [Const: test:*, TagName: [Const: foo], Const: @=, Const: 2016]]',
|
|
@@ -1398,6 +1402,10 @@ _ParseResults = [
|
|
|
1398
1402
|
'Query: [EditNodeAdd: [FormName: [Const: test:str], Const: =, Const: foo], EditPropSetMulti: [RelProp: [Const: bar], Const: ?--=, SubQuery: [Query: [EditNodeAdd: [FormName: [Const: it:dev:str], Const: =, Const: foo]]]]]',
|
|
1399
1403
|
'Query: [SetVarOper: [Const: foo, List: [Const: notime]]]',
|
|
1400
1404
|
'Query: [SetVarOper: [Const: foo, List: [Const: nulltime]]]',
|
|
1405
|
+
'Query: [SetVarOper: [Const: foo, DollarExpr: [UnaryExprNode: [Const: not, VarValue: [Const: x]]]]]',
|
|
1406
|
+
'Query: [SetVarOper: [Const: foo, DollarExpr: [UnaryExprNode: [Const: not, VarValue: [Const: x]]]]]',
|
|
1407
|
+
'Query: [SetVarOper: [Const: foo, DollarExpr: [UnaryExprNode: [Const: not, DollarExpr: [VarValue: [Const: x]]]]]]',
|
|
1408
|
+
'Query: [SetVarOper: [Const: foo, DollarExpr: [UnaryExprNode: [Const: not, DollarExpr: [VarValue: [Const: x]]]]]]',
|
|
1401
1409
|
]
|
|
1402
1410
|
|
|
1403
1411
|
class GrammarTest(s_t_utils.SynTest):
|
|
@@ -1710,6 +1718,20 @@ class GrammarTest(s_t_utils.SynTest):
|
|
|
1710
1718
|
self.eq((2, 3), info['lines'])
|
|
1711
1719
|
self.eq((22, 31), info['columns'])
|
|
1712
1720
|
|
|
1721
|
+
query = '$x=$lib.guid(foo$bar)'
|
|
1722
|
+
parser = s_parser.Parser(query)
|
|
1723
|
+
with self.raises(s_exc.BadSyntax) as cm:
|
|
1724
|
+
_ = parser.query()
|
|
1725
|
+
errinfo = cm.exception.errinfo
|
|
1726
|
+
self.true(errinfo.get('mesg').startswith("Unexpected token '$' at line 1, column 17"))
|
|
1727
|
+
|
|
1728
|
+
query = '$x=$lib.guid(foo(bar)'
|
|
1729
|
+
parser = s_parser.Parser(query)
|
|
1730
|
+
with self.raises(s_exc.BadSyntax) as cm:
|
|
1731
|
+
_ = parser.query()
|
|
1732
|
+
errinfo = cm.exception.errinfo
|
|
1733
|
+
self.true(errinfo.get('mesg').startswith("Unexpected token '(' at line 1, column 17"))
|
|
1734
|
+
|
|
1713
1735
|
async def test_quotes(self):
|
|
1714
1736
|
|
|
1715
1737
|
# Test vectors
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import ssl
|
|
2
|
-
import json
|
|
3
2
|
|
|
4
3
|
import aiohttp
|
|
5
4
|
import aiohttp.client_exceptions as a_exc
|
|
@@ -8,6 +7,7 @@ import synapse.common as s_common
|
|
|
8
7
|
import synapse.tools.backup as s_backup
|
|
9
8
|
|
|
10
9
|
import synapse.lib.coro as s_coro
|
|
10
|
+
import synapse.lib.json as s_json
|
|
11
11
|
import synapse.lib.link as s_link
|
|
12
12
|
import synapse.lib.httpapi as s_httpapi
|
|
13
13
|
import synapse.lib.version as s_version
|
|
@@ -671,7 +671,7 @@ class HttpApiTest(s_tests.SynTest):
|
|
|
671
671
|
if not byts:
|
|
672
672
|
break
|
|
673
673
|
|
|
674
|
-
podes.append(
|
|
674
|
+
podes.append(s_json.loads(byts))
|
|
675
675
|
|
|
676
676
|
self.eq(podes[0][0], ('inet:ipv4', 0x01020304))
|
|
677
677
|
|
|
@@ -685,7 +685,7 @@ class HttpApiTest(s_tests.SynTest):
|
|
|
685
685
|
if not byts:
|
|
686
686
|
break
|
|
687
687
|
|
|
688
|
-
msgs.append(
|
|
688
|
+
msgs.append(s_json.loads(byts))
|
|
689
689
|
podes = [m[1] for m in msgs if m[0] == 'node']
|
|
690
690
|
self.eq(podes[0][0], ('inet:ipv4', 0x05050505))
|
|
691
691
|
|
|
@@ -1322,7 +1322,7 @@ class HttpApiTest(s_tests.SynTest):
|
|
|
1322
1322
|
if not byts:
|
|
1323
1323
|
break
|
|
1324
1324
|
|
|
1325
|
-
mesg =
|
|
1325
|
+
mesg = s_json.loads(byts)
|
|
1326
1326
|
|
|
1327
1327
|
if mesg[0] == 'node':
|
|
1328
1328
|
node = mesg[1]
|
|
@@ -1337,7 +1337,7 @@ class HttpApiTest(s_tests.SynTest):
|
|
|
1337
1337
|
if not byts:
|
|
1338
1338
|
break
|
|
1339
1339
|
|
|
1340
|
-
mesg =
|
|
1340
|
+
mesg = s_json.loads(byts)
|
|
1341
1341
|
|
|
1342
1342
|
if mesg[0] == 'node':
|
|
1343
1343
|
node = mesg[1]
|
|
@@ -1354,7 +1354,7 @@ class HttpApiTest(s_tests.SynTest):
|
|
|
1354
1354
|
if not byts:
|
|
1355
1355
|
break
|
|
1356
1356
|
|
|
1357
|
-
node =
|
|
1357
|
+
node = s_json.loads(byts)
|
|
1358
1358
|
|
|
1359
1359
|
self.eq(0x01020304, node[0][1])
|
|
1360
1360
|
|
|
@@ -1365,7 +1365,7 @@ class HttpApiTest(s_tests.SynTest):
|
|
|
1365
1365
|
if not byts:
|
|
1366
1366
|
break
|
|
1367
1367
|
|
|
1368
|
-
node =
|
|
1368
|
+
node = s_json.loads(byts)
|
|
1369
1369
|
|
|
1370
1370
|
self.eq(0x01020304, node[0][1])
|
|
1371
1371
|
|
|
@@ -1385,8 +1385,8 @@ class HttpApiTest(s_tests.SynTest):
|
|
|
1385
1385
|
break
|
|
1386
1386
|
|
|
1387
1387
|
try:
|
|
1388
|
-
node =
|
|
1389
|
-
except
|
|
1388
|
+
node = s_json.loads(byts)
|
|
1389
|
+
except s_exc.BadJsonText:
|
|
1390
1390
|
bufr = jstr
|
|
1391
1391
|
break
|
|
1392
1392
|
|
|
@@ -1407,8 +1407,8 @@ class HttpApiTest(s_tests.SynTest):
|
|
|
1407
1407
|
break
|
|
1408
1408
|
|
|
1409
1409
|
try:
|
|
1410
|
-
mesg =
|
|
1411
|
-
except
|
|
1410
|
+
mesg = s_json.loads(byts)
|
|
1411
|
+
except s_exc.BadJsonText:
|
|
1412
1412
|
bufr = jstr
|
|
1413
1413
|
break
|
|
1414
1414
|
|
|
@@ -1427,7 +1427,7 @@ class HttpApiTest(s_tests.SynTest):
|
|
|
1427
1427
|
if not byts:
|
|
1428
1428
|
break
|
|
1429
1429
|
|
|
1430
|
-
mesg =
|
|
1430
|
+
mesg = s_json.loads(byts)
|
|
1431
1431
|
if mesg[0] == 'node':
|
|
1432
1432
|
task = core.boss.tasks.get(list(core.boss.tasks.keys())[0])
|
|
1433
1433
|
self.eq(core.view.iden, task.info.get('view'))
|
|
@@ -1445,7 +1445,7 @@ class HttpApiTest(s_tests.SynTest):
|
|
|
1445
1445
|
if not byts:
|
|
1446
1446
|
break
|
|
1447
1447
|
|
|
1448
|
-
mesg =
|
|
1448
|
+
mesg = s_json.loads(byts)
|
|
1449
1449
|
self.len(2, mesg) # Is if roughly shaped like a node?
|
|
1450
1450
|
task = core.boss.tasks.get(list(core.boss.tasks.keys())[0])
|
|
1451
1451
|
break
|
|
@@ -1976,3 +1976,46 @@ class HttpApiTest(s_tests.SynTest):
|
|
|
1976
1976
|
|
|
1977
1977
|
# No change with the bad data
|
|
1978
1978
|
self.eq(cell_sess.info, result.get('info'))
|
|
1979
|
+
|
|
1980
|
+
async def test_http_locked_admin(self):
|
|
1981
|
+
async with self.getTestCore() as core:
|
|
1982
|
+
|
|
1983
|
+
visi = await core.auth.addUser('visi')
|
|
1984
|
+
await visi.setAdmin(True)
|
|
1985
|
+
await visi.setPasswd('secret123')
|
|
1986
|
+
|
|
1987
|
+
host, port = await core.addHttpsPort(0, host='127.0.0.1')
|
|
1988
|
+
root = f'https://localhost:{port}'
|
|
1989
|
+
|
|
1990
|
+
async with self.getHttpSess() as sess:
|
|
1991
|
+
resp = await sess.post(f'{root}/api/v1/login', json={'user': 'visi', 'passwd': 'secret123'})
|
|
1992
|
+
self.eq(resp.status, 200)
|
|
1993
|
+
|
|
1994
|
+
resp = await sess.get(f'{root}/api/v1/auth/users')
|
|
1995
|
+
self.eq(resp.status, 200)
|
|
1996
|
+
|
|
1997
|
+
data = {'query': '[ inet:ipv4=1.2.3.4 ]', 'opts': {'user': visi.iden}}
|
|
1998
|
+
async with sess.get(f'{root}/api/v1/storm/call', json=data) as resp:
|
|
1999
|
+
item = await resp.json()
|
|
2000
|
+
self.eq('ok', item.get('status'))
|
|
2001
|
+
|
|
2002
|
+
with self.getAsyncLoggerStream('synapse.lib.cell',
|
|
2003
|
+
'Invalidated HTTP session for locked user visi') as stream:
|
|
2004
|
+
await core.setUserLocked(visi.iden, True)
|
|
2005
|
+
self.true(await stream.wait(timeout=2))
|
|
2006
|
+
|
|
2007
|
+
resp = await sess.get(f'{root}/api/v1/auth/users')
|
|
2008
|
+
self.eq(resp.status, 401)
|
|
2009
|
+
|
|
2010
|
+
data = {'query': '[ inet:ipv4=5.6.7.8 ]', 'opts': {'user': visi.iden}}
|
|
2011
|
+
async with sess.get(f'{root}/api/v1/storm/call', json=data) as resp:
|
|
2012
|
+
item = await resp.json()
|
|
2013
|
+
self.eq('err', item.get('status'))
|
|
2014
|
+
self.eq('NotAuthenticated', item.get('code'))
|
|
2015
|
+
|
|
2016
|
+
resp = await sess.post(f'{root}/api/v1/login', json={'user': 'visi', 'passwd': 'secret123'})
|
|
2017
|
+
self.eq(resp.status, 200)
|
|
2018
|
+
retn = await resp.json()
|
|
2019
|
+
self.eq(retn.get('status'), 'err')
|
|
2020
|
+
self.eq(retn.get('code'), 'AuthDeny')
|
|
2021
|
+
self.isin('User is locked.', retn.get('mesg'))
|