check-msdefender 1.1.14__tar.gz → 1.1.16__tar.gz

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.
Files changed (52) hide show
  1. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/PKG-INFO +5 -4
  2. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/README.md +1 -1
  3. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/__init__.py +1 -1
  4. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/core/nagios.py +2 -1
  5. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/services/products_service.py +5 -3
  6. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/pyproject.toml +5 -4
  7. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/LICENSE +0 -0
  8. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/__main__.py +0 -0
  9. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/check_msdefender.py +0 -0
  10. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/cli/__init__.py +0 -0
  11. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/cli/__main__.py +0 -0
  12. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/cli/commands/__init__.py +0 -0
  13. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/cli/commands/alerts.py +0 -0
  14. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/cli/commands/detail.py +0 -0
  15. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/cli/commands/lastseen.py +0 -0
  16. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/cli/commands/machines.py +0 -0
  17. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/cli/commands/onboarding.py +0 -0
  18. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/cli/commands/products.py +0 -0
  19. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/cli/commands/vulnerabilities.py +0 -0
  20. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/cli/decorators.py +0 -0
  21. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/cli/handlers.py +0 -0
  22. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/core/__init__.py +0 -0
  23. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/core/auth.py +0 -0
  24. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/core/config.py +0 -0
  25. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/core/defender.py +0 -0
  26. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/core/exceptions.py +0 -0
  27. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/core/logging_config.py +0 -0
  28. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/services/__init__.py +0 -0
  29. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/services/alerts_service.py +0 -0
  30. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/services/detail_service.py +0 -0
  31. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/services/lastseen_service.py +0 -0
  32. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/services/machines_service.py +0 -0
  33. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/services/models.py +0 -0
  34. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/services/onboarding_service.py +0 -0
  35. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/check_msdefender/services/vulnerabilities_service.py +0 -0
  36. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/__init__.py +0 -0
  37. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/fixtures/__init__.py +0 -0
  38. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/fixtures/alerts_data.json +0 -0
  39. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/fixtures/machine_data.json +0 -0
  40. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/fixtures/mock_defender_client.py +0 -0
  41. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/fixtures/test_alerts_service.py +0 -0
  42. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/fixtures/test_detail_service.py +0 -0
  43. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/fixtures/test_lastseen_service.py +0 -0
  44. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/fixtures/test_onboarding_service.py +0 -0
  45. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/fixtures/test_vulnerabilities_service.py +0 -0
  46. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/fixtures/vulnerability_data.json +0 -0
  47. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/integration/__init__.py +0 -0
  48. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/integration/test_cli_integration.py +0 -0
  49. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/integration/test_lastseen_integration.py +0 -0
  50. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/unit/__init__.py +0 -0
  51. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/unit/test_alerts_service.py +0 -0
  52. {check_msdefender-1.1.14 → check_msdefender-1.1.16}/tests/unit/test_detail_service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: check-msdefender
3
- Version: 1.1.14
3
+ Version: 1.1.16
4
4
  Summary: A Nagios plugin for monitoring Microsoft Defender API endpoints
5
5
  Keywords: nagios,monitoring,microsoft,graph,api,azure
6
6
  Author-Email: ldvchosal <ldvchosal@github.com>
@@ -10,16 +10,17 @@ Classifier: Intended Audience :: System Administrators
10
10
  Classifier: License :: OSI Approved :: MIT License
11
11
  Classifier: Operating System :: OS Independent
12
12
  Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.9
14
13
  Classifier: Programming Language :: Python :: 3.10
15
14
  Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
16
17
  Classifier: Topic :: System :: Monitoring
17
18
  Classifier: Topic :: System :: Systems Administration
18
19
  Project-URL: Homepage, https://github.com/lduchosal/check_msdefender
19
20
  Project-URL: Bug Reports, https://github.com/lduchosal/check_msdefender/issues
20
21
  Project-URL: Source, https://github.com/lduchosal/check_msdefender
21
22
  Project-URL: Documentation, https://github.com/lduchosal/check_msdefender/blob/main/README.md
22
- Requires-Python: >=3.9
23
+ Requires-Python: >=3.10
23
24
  Requires-Dist: nagiosplugin>=1.4.0
24
25
  Requires-Dist: azure-identity>=1.12.0
25
26
  Requires-Dist: click<9.0,>=8.0
@@ -27,7 +28,7 @@ Description-Content-Type: text/markdown
27
28
 
28
29
  # 🛡️ Check MS Defender
29
30
 
30
- [![Python Version](https://img.shields.io/badge/python-3.9+-blue.svg)](https://python.org)
31
+ [![Python Version](https://img.shields.io/badge/python-3.10+-blue.svg)](https://python.org)
31
32
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
32
33
  [![Build Status](https://img.shields.io/badge/build-passing-brightgreen.svg)](https://github.com/lduchosal/check_msdefender)
33
34
 
@@ -1,6 +1,6 @@
1
1
  # 🛡️ Check MS Defender
2
2
 
3
- [![Python Version](https://img.shields.io/badge/python-3.9+-blue.svg)](https://python.org)
3
+ [![Python Version](https://img.shields.io/badge/python-3.10+-blue.svg)](https://python.org)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
5
  [![Build Status](https://img.shields.io/badge/build-passing-brightgreen.svg)](https://github.com/lduchosal/check_msdefender)
6
6
 
@@ -1,4 +1,4 @@
1
1
  """Check Microsoft Defender API endpoints and check values - Nagios plugin."""
2
- __version__ = "1.1.14"
2
+ __version__ = "1.1.16"
3
3
  __author__ = "ldvchosal"
4
4
  __email__ = "ldvchosa@github.com"
@@ -1,4 +1,5 @@
1
1
  """Nagios plugin implementation."""
2
+ import traceback
2
3
 
3
4
  import nagiosplugin
4
5
  from typing import List, Optional, Union, Any
@@ -137,7 +138,7 @@ class NagiosPlugin:
137
138
  return int(e.code) if e.code is not None else 0
138
139
 
139
140
  except Exception as e:
140
- print(f"UNKNOWN: {str(e)}")
141
+ print(f"UNKNOWN: {str(e)}\n{traceback.format_exc()}")
141
142
  return 3
142
143
 
143
144
 
@@ -101,7 +101,8 @@ class ProductsService:
101
101
  low_count = 0
102
102
 
103
103
  for vulnerability in products:
104
- severity = vulnerability.get("vulnerabilitySeverityLevel", "Unknown").lower()
104
+ severityLevel = vulnerability.get("vulnerabilitySeverityLevel", "Unknown")
105
+ severity = (severityLevel or "Unknown").lower()
105
106
  if severity == "critical":
106
107
  critical_count += 1
107
108
  elif severity == "high":
@@ -133,15 +134,16 @@ class ProductsService:
133
134
  cve_list = ", ".join(unique_cves[:5]) # Show first 5 CVEs
134
135
  severities = ""
135
136
  # Count severities
136
- severity_counts = {"Critical": 0, "High": 0, "Medium": 0, "Low": 0}
137
+ severity_counts = {"Critical": 0, "High": 0, "Medium": 0, "Low": 0, "Unknown": 0}
137
138
  for sev in software["severities"]:
139
+ sev = (sev or "Unknown")
138
140
  severity_counts[sev] += 1
139
141
  severities = ", ".join(
140
142
  f"{key}: {value}" for key, value in severity_counts.items() if value > 0
141
143
  )
142
144
 
143
145
  for cve in software["cves"]:
144
- severity = cve["severity"].lower()
146
+ severity = (cve["severity"] or "Unknown").lower()
145
147
  if severity == "critical":
146
148
  score += 100
147
149
  elif severity == "high":
@@ -12,16 +12,17 @@ authors = [
12
12
  ]
13
13
  description = "A Nagios plugin for monitoring Microsoft Defender API endpoints"
14
14
  readme = "README.md"
15
- requires-python = ">=3.9"
15
+ requires-python = ">=3.10"
16
16
  classifiers = [
17
17
  "Development Status :: 5 - Production/Stable",
18
18
  "Intended Audience :: System Administrators",
19
19
  "License :: OSI Approved :: MIT License",
20
20
  "Operating System :: OS Independent",
21
21
  "Programming Language :: Python :: 3",
22
- "Programming Language :: Python :: 3.9",
23
22
  "Programming Language :: Python :: 3.10",
24
23
  "Programming Language :: Python :: 3.11",
24
+ "Programming Language :: Python :: 3.12",
25
+ "Programming Language :: Python :: 3.13",
25
26
  "Topic :: System :: Monitoring",
26
27
  "Topic :: System :: Systems Administration",
27
28
  ]
@@ -38,7 +39,7 @@ dependencies = [
38
39
  "azure-identity>=1.12.0",
39
40
  "click>=8.0,<9.0",
40
41
  ]
41
- version = "1.1.14"
42
+ version = "1.1.16"
42
43
 
43
44
  [project.license]
44
45
  text = "MIT"
@@ -128,7 +129,7 @@ composite = [
128
129
  [tool.black]
129
130
  line-length = 100
130
131
  target-version = [
131
- "py39",
132
+ "py310",
132
133
  ]
133
134
 
134
135
  [tool.mypy]