insightconnect-plugin-runtime 5.6.0__py3-none-any.whl → 6.0.0__py3-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.
- insightconnect_plugin_runtime/api/endpoints.py +5 -3
- insightconnect_plugin_runtime/plugin.py +36 -11
- {insightconnect_plugin_runtime-5.6.0.dist-info → insightconnect_plugin_runtime-6.0.0.dist-info}/METADATA +4 -2
- {insightconnect_plugin_runtime-5.6.0.dist-info → insightconnect_plugin_runtime-6.0.0.dist-info}/RECORD +6 -6
- {insightconnect_plugin_runtime-5.6.0.dist-info → insightconnect_plugin_runtime-6.0.0.dist-info}/WHEEL +1 -1
- {insightconnect_plugin_runtime-5.6.0.dist-info → insightconnect_plugin_runtime-6.0.0.dist-info}/top_level.txt +0 -0
|
@@ -283,7 +283,7 @@ class Endpoints:
|
|
|
283
283
|
self.logger.debug("Request input: %s", input_message)
|
|
284
284
|
Endpoints.validate_action_trigger_task_empty_input(input_message)
|
|
285
285
|
Endpoints.validate_action_trigger_task_name(input_message, name, "task")
|
|
286
|
-
output = self.run_action_trigger_task(input_message, True)
|
|
286
|
+
output = self.run_action_trigger_task(input_message, True, connection_test_type="test_task")
|
|
287
287
|
return output
|
|
288
288
|
|
|
289
289
|
@v1.route("/api")
|
|
@@ -821,13 +821,13 @@ class Endpoints:
|
|
|
821
821
|
|
|
822
822
|
return input_data
|
|
823
823
|
|
|
824
|
-
def run_action_trigger_task(self, input_message, test=False):
|
|
824
|
+
def run_action_trigger_task(self, input_message, test=False, connection_test_type="test"):
|
|
825
825
|
connection = input_message.get("body", {}).get("connection", {})
|
|
826
826
|
status_code = 200
|
|
827
827
|
output = None
|
|
828
828
|
try:
|
|
829
829
|
output = self.plugin.handle_step(
|
|
830
|
-
input_message, is_debug=self.debug, is_test=test
|
|
830
|
+
input_message, is_debug=self.debug, is_test=test, connection_test_type=connection_test_type
|
|
831
831
|
)
|
|
832
832
|
except LoggedException as error:
|
|
833
833
|
wrapped_exception = error.ex
|
|
@@ -841,6 +841,8 @@ class Endpoints:
|
|
|
841
841
|
and wrapped_exception.preset is PluginException.Preset.BAD_REQUEST
|
|
842
842
|
):
|
|
843
843
|
status_code = 400
|
|
844
|
+
elif isinstance(wrapped_exception, (ConnectionTestException, ClientException)):
|
|
845
|
+
status_code = 400
|
|
844
846
|
elif isinstance(wrapped_exception, ServerException):
|
|
845
847
|
# I'm unsure about this
|
|
846
848
|
status_code = 500
|
|
@@ -402,6 +402,9 @@ class Plugin(object):
|
|
|
402
402
|
status_code = None
|
|
403
403
|
error_object = None
|
|
404
404
|
|
|
405
|
+
# Properties specific to tasks tests
|
|
406
|
+
task_test_log = None
|
|
407
|
+
|
|
405
408
|
try:
|
|
406
409
|
# Attempt to grab message type first
|
|
407
410
|
message_type = input_message.get("type")
|
|
@@ -444,7 +447,7 @@ class Plugin(object):
|
|
|
444
447
|
out_type = "task_event"
|
|
445
448
|
if is_test:
|
|
446
449
|
# state will not be returned by task's test method
|
|
447
|
-
output = self.start_step(
|
|
450
|
+
output, task_test_log = self.start_step(
|
|
448
451
|
input_message["body"],
|
|
449
452
|
"task",
|
|
450
453
|
struct_logger,
|
|
@@ -471,7 +474,7 @@ class Plugin(object):
|
|
|
471
474
|
)
|
|
472
475
|
elif message_type == "connection_test":
|
|
473
476
|
out_type = "connection_test"
|
|
474
|
-
output = self.start_step(
|
|
477
|
+
output, task_test_log = self.start_step(
|
|
475
478
|
input_message["body"],
|
|
476
479
|
"connection_test",
|
|
477
480
|
struct_logger,
|
|
@@ -481,15 +484,28 @@ class Plugin(object):
|
|
|
481
484
|
is_connection_test=True,
|
|
482
485
|
connection_test_type=connection_test_type
|
|
483
486
|
)
|
|
484
|
-
except (
|
|
487
|
+
except (
|
|
488
|
+
ClientException,
|
|
489
|
+
ServerException,
|
|
490
|
+
PluginException,
|
|
491
|
+
ConnectionTestException,
|
|
492
|
+
Exception,
|
|
493
|
+
) as error_message:
|
|
485
494
|
success = False
|
|
486
|
-
caught_exception =
|
|
487
|
-
struct_logger.exception(
|
|
495
|
+
caught_exception = error_message
|
|
496
|
+
struct_logger.exception(error_message)
|
|
497
|
+
|
|
498
|
+
# now returning the value of data instead of the log buffer for connection task tests - SOAR-16566
|
|
499
|
+
if isinstance(error_message, ConnectionTestException) and connection_test_type == "test_task":
|
|
500
|
+
task_test_log = f"{error_message.data}" if error_message.data else "Connection test failed"
|
|
488
501
|
finally:
|
|
502
|
+
# if we are running a task connection test we want to return the pre-defined message
|
|
503
|
+
# rather than a stack trace of logs - SOAR-16566
|
|
504
|
+
log_message = task_test_log if task_test_log else log_stream.getvalue()
|
|
489
505
|
output = self.envelope(
|
|
490
506
|
out_type,
|
|
491
507
|
input_message,
|
|
492
|
-
|
|
508
|
+
log_message,
|
|
493
509
|
success,
|
|
494
510
|
output,
|
|
495
511
|
str(caught_exception),
|
|
@@ -541,18 +557,25 @@ class Plugin(object):
|
|
|
541
557
|
plugin_version=connection.meta.version,
|
|
542
558
|
)
|
|
543
559
|
)
|
|
560
|
+
|
|
561
|
+
# As the message type for both api/v1/connection/test and api/v1/connection/test_task calls are
|
|
562
|
+
# message_type == "connection_test", this means that both the task and normal connection test code
|
|
563
|
+
# hits this path and needs to have the same return structure, as a result we return None when
|
|
564
|
+
# connection.test is called, as there is no message returned along side it,
|
|
565
|
+
# and the code above then sees this and reads the "message" from the io buffer as normal
|
|
544
566
|
if hasattr(connection, "test_task") and connection_test_type == "test_task":
|
|
545
567
|
func = connection.test_task
|
|
568
|
+
output, log = func()
|
|
569
|
+
return output, log
|
|
546
570
|
elif hasattr(connection, "test"):
|
|
547
571
|
func = connection.test
|
|
572
|
+
output = func()
|
|
573
|
+
return output, None
|
|
548
574
|
else:
|
|
549
575
|
raise NotImplementedError(
|
|
550
576
|
"The server successfully processed the request and is not "
|
|
551
577
|
"returning any content (no connection test function)"
|
|
552
578
|
)
|
|
553
|
-
output = func()
|
|
554
|
-
|
|
555
|
-
return output
|
|
556
579
|
|
|
557
580
|
else:
|
|
558
581
|
action_name = message_body[step_key]
|
|
@@ -626,8 +649,10 @@ class Plugin(object):
|
|
|
626
649
|
if is_test:
|
|
627
650
|
# Check if connection test func available. If so - use it (preferred). Else fallback to action/trigger test
|
|
628
651
|
if hasattr(step.connection, "test"):
|
|
629
|
-
if hasattr(step.connection, "
|
|
630
|
-
func = step.connection.
|
|
652
|
+
if hasattr(step.connection, "test_task") and connection_test_type == "test_task":
|
|
653
|
+
func = step.connection.test_task
|
|
654
|
+
output, log = func()
|
|
655
|
+
return output, log
|
|
631
656
|
else:
|
|
632
657
|
func = step.connection.test
|
|
633
658
|
else:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: insightconnect-plugin-runtime
|
|
3
|
-
Version:
|
|
3
|
+
Version: 6.0.0
|
|
4
4
|
Summary: InsightConnect Plugin Runtime
|
|
5
5
|
Home-page: https://github.com/rapid7/komand-plugin-sdk-python
|
|
6
6
|
Author: Rapid7 Integrations Alliance
|
|
@@ -15,7 +15,7 @@ Description-Content-Type: text/markdown
|
|
|
15
15
|
Requires-Dist: requests ==2.32.0
|
|
16
16
|
Requires-Dist: python-jsonschema-objects ==0.5.2
|
|
17
17
|
Requires-Dist: jsonschema ==4.21.1
|
|
18
|
-
Requires-Dist: certifi ==2024.
|
|
18
|
+
Requires-Dist: certifi ==2024.07.04
|
|
19
19
|
Requires-Dist: Flask ==3.0.2
|
|
20
20
|
Requires-Dist: gunicorn ==22.0.0
|
|
21
21
|
Requires-Dist: greenlet ==3.0.3
|
|
@@ -211,6 +211,8 @@ contributed. Black is installed as a test dependency and the hook can be initial
|
|
|
211
211
|
after cloning this repository.
|
|
212
212
|
|
|
213
213
|
## Changelog
|
|
214
|
+
* 6.0.0 - Address vulnerabilities within `certifi` python package | Bump the version of OpenSSL used | If running a task connection test, return a custom message from the task test and not the full log.
|
|
215
|
+
* 5.6.1 - Making sure all paths that can call the task connection test endpoints return a 400 error if the test fails
|
|
214
216
|
* 5.6.0 - Add APIException class for error handling | Fix error in response_handler where data of type Response was not correctly being returned
|
|
215
217
|
* 5.5.5 - Address bug with typing for type `Dict` in Python 3.8
|
|
216
218
|
* 5.5.4 - Support pagination parameters within AWS client.
|
|
@@ -6,7 +6,7 @@ insightconnect_plugin_runtime/dispatcher.py,sha256=ru7njnyyWE1-oD-VbZJ-Z8tELwvDf
|
|
|
6
6
|
insightconnect_plugin_runtime/exceptions.py,sha256=Pvcdkx81o6qC2qU661x-DzNjuIMP82x52nPMSEqEo4s,8491
|
|
7
7
|
insightconnect_plugin_runtime/helper.py,sha256=kXUt_yq6-9_wMdCIkS1fC3dddE8uwH9tcRITXvrJHIM,31178
|
|
8
8
|
insightconnect_plugin_runtime/metrics.py,sha256=hf_Aoufip_s4k4o8Gtzz90ymZthkaT2e5sXh5B4LcF0,3186
|
|
9
|
-
insightconnect_plugin_runtime/plugin.py,sha256=
|
|
9
|
+
insightconnect_plugin_runtime/plugin.py,sha256=Yf4LNczykDVc31F9G8uuJ9gxEsgmxmAr0n4pcZzichM,26393
|
|
10
10
|
insightconnect_plugin_runtime/schema.py,sha256=jTNc6KAMqFpaDVWrAYhkVC6e8I63P3X7uVlJkAr1hiY,583
|
|
11
11
|
insightconnect_plugin_runtime/server.py,sha256=09fxsbKf2ZZvSqRP2Bv9e9-fspDyEFR8_YgIFeMnXqQ,12578
|
|
12
12
|
insightconnect_plugin_runtime/step.py,sha256=KdERg-789-s99IEKN61DR08naz-YPxyinPT0C_T81C4,855
|
|
@@ -15,7 +15,7 @@ insightconnect_plugin_runtime/trigger.py,sha256=Zq3cy68N3QxAGbNZKCID6CZF05Zi7YD2
|
|
|
15
15
|
insightconnect_plugin_runtime/util.py,sha256=qPkZ3LA55nYuNYdansEbnCnBccQkpzIpp9NA1B64Kvw,8444
|
|
16
16
|
insightconnect_plugin_runtime/variables.py,sha256=7FjJGnU7KUR7m9o-_tRq7Q3KiaB1Pp0Apj1NGgOwrJk,3056
|
|
17
17
|
insightconnect_plugin_runtime/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
-
insightconnect_plugin_runtime/api/endpoints.py,sha256=
|
|
18
|
+
insightconnect_plugin_runtime/api/endpoints.py,sha256=xprYehTnO6TSpWcNXZ5iYOAgYk5-5UnxtgM9BDIYuRw,32792
|
|
19
19
|
insightconnect_plugin_runtime/api/schemas.py,sha256=jRmDrwLJTBl-iQOnyZkSwyJlCWg4eNjAnKfD9Eko4z0,2754
|
|
20
20
|
insightconnect_plugin_runtime/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
21
|
insightconnect_plugin_runtime/clients/aws_client.py,sha256=qKldWkyETmVhfoXbMZY58FFaDas6B5Uqc0D1LJROf6M,21658
|
|
@@ -78,7 +78,7 @@ tests/unit/test_server_spec.py,sha256=je97BaktgK0Fiz3AwFPkcmHzYtOJJNqJV_Fw5hrvqX
|
|
|
78
78
|
tests/unit/test_trigger.py,sha256=E53mAUoVyponWu_4IQZ0IC1gQ9lakBnTn_9vKN2IZfg,1692
|
|
79
79
|
tests/unit/test_variables.py,sha256=OUEOqGYZA3Nd5oKk5GVY3hcrWKHpZpxysBJcO_v5gzs,291
|
|
80
80
|
tests/unit/utils.py,sha256=VooVmfpIgxmglNdtmT32AkEDFxHxyRHLK8RsCWjjYRY,2153
|
|
81
|
-
insightconnect_plugin_runtime-
|
|
82
|
-
insightconnect_plugin_runtime-
|
|
83
|
-
insightconnect_plugin_runtime-
|
|
84
|
-
insightconnect_plugin_runtime-
|
|
81
|
+
insightconnect_plugin_runtime-6.0.0.dist-info/METADATA,sha256=3J-ljqWInkzVD1XZ_ZO0ru_LnsqPMSmodrLr3FVg4_8,14311
|
|
82
|
+
insightconnect_plugin_runtime-6.0.0.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
|
|
83
|
+
insightconnect_plugin_runtime-6.0.0.dist-info/top_level.txt,sha256=AJtyJOpiFzHxsbHUICTcUKXyrGQ3tZxhrEHsPjJBvEA,36
|
|
84
|
+
insightconnect_plugin_runtime-6.0.0.dist-info/RECORD,,
|
|
File without changes
|