check-msdefender 1.2.1__tar.gz → 1.2.2__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 (53) hide show
  1. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/PKG-INFO +1 -1
  2. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/__init__.py +1 -1
  3. check_msdefender-1.2.2/check_msdefender/integration.py +81 -0
  4. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/pyproject.toml +2 -1
  5. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/LICENSE +0 -0
  6. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/README.md +0 -0
  7. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/__main__.py +0 -0
  8. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/check_msdefender.py +0 -0
  9. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/cli/__init__.py +0 -0
  10. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/cli/__main__.py +0 -0
  11. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/cli/commands/__init__.py +0 -0
  12. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/cli/commands/alerts.py +0 -0
  13. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/cli/commands/detail.py +0 -0
  14. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/cli/commands/lastseen.py +0 -0
  15. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/cli/commands/machines.py +0 -0
  16. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/cli/commands/onboarding.py +0 -0
  17. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/cli/commands/products.py +0 -0
  18. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/cli/commands/vulnerabilities.py +0 -0
  19. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/cli/decorators.py +0 -0
  20. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/cli/handlers.py +0 -0
  21. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/core/__init__.py +0 -0
  22. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/core/auth.py +0 -0
  23. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/core/config.py +0 -0
  24. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/core/defender.py +0 -0
  25. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/core/exceptions.py +0 -0
  26. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/core/logging_config.py +0 -0
  27. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/core/nagios.py +0 -0
  28. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/services/__init__.py +0 -0
  29. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/services/alerts_service.py +0 -0
  30. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/services/detail_service.py +0 -0
  31. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/services/lastseen_service.py +0 -0
  32. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/services/machines_service.py +0 -0
  33. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/services/models.py +0 -0
  34. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/services/onboarding_service.py +0 -0
  35. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/services/products_service.py +0 -0
  36. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/check_msdefender/services/vulnerabilities_service.py +0 -0
  37. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/tests/__init__.py +0 -0
  38. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/tests/fixtures/__init__.py +0 -0
  39. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/tests/fixtures/alerts_data.json +0 -0
  40. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/tests/fixtures/machine_data.json +0 -0
  41. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/tests/fixtures/mock_defender_client.py +0 -0
  42. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/tests/fixtures/test_alerts_service.py +0 -0
  43. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/tests/fixtures/test_detail_service.py +0 -0
  44. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/tests/fixtures/test_lastseen_service.py +0 -0
  45. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/tests/fixtures/test_onboarding_service.py +0 -0
  46. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/tests/fixtures/test_vulnerabilities_service.py +0 -0
  47. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/tests/fixtures/vulnerability_data.json +0 -0
  48. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/tests/integration/__init__.py +0 -0
  49. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/tests/integration/test_cli_integration.py +0 -0
  50. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/tests/integration/test_lastseen_integration.py +0 -0
  51. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/tests/unit/__init__.py +0 -0
  52. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/tests/unit/test_alerts_service.py +0 -0
  53. {check_msdefender-1.2.1 → check_msdefender-1.2.2}/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.2.1
3
+ Version: 1.2.2
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>
@@ -1,4 +1,4 @@
1
1
  """Check Microsoft Defender API endpoints and check values - Nagios plugin."""
2
- __version__ = "1.2.1"
2
+ __version__ = "1.2.2"
3
3
  __author__ = "ldvchosal"
4
4
  __email__ = "ldvchosa@github.com"
@@ -0,0 +1,81 @@
1
+ """Integration test runner for check_msdefender commands."""
2
+
3
+ import configparser
4
+ import subprocess
5
+ import sys
6
+ from pathlib import Path
7
+
8
+
9
+ def find_config() -> Path:
10
+ """Find the configuration file."""
11
+ # Check common locations
12
+ locations = [
13
+ Path("check_msdefender.ini"),
14
+ Path.home() / ".check_msdefender.ini",
15
+ Path("/etc/check_msdefender.ini"),
16
+ ]
17
+ for loc in locations:
18
+ if loc.exists():
19
+ return loc
20
+ raise FileNotFoundError("Configuration file not found")
21
+
22
+
23
+ def main() -> int:
24
+ """Run all check_msdefender commands."""
25
+ try:
26
+ config_path = find_config()
27
+ except FileNotFoundError as e:
28
+ print(f"Error: {e}")
29
+ return 1
30
+
31
+ config = configparser.ConfigParser()
32
+ config.read(config_path)
33
+
34
+ machine = config.get("integration", "machine", fallback=None)
35
+ if not machine:
36
+ print("Error: No machine configured in [integration] section")
37
+ return 1
38
+
39
+ print(f"Running integration tests with machine: {machine}")
40
+ print(f"Config: {config_path}")
41
+ print("=" * 60)
42
+
43
+ # Commands that don't need -d flag
44
+ commands_no_machine = [
45
+ ["check_msdefender", "machines"],
46
+ ]
47
+
48
+ # Commands that need -d flag
49
+ commands_with_machine = [
50
+ ["check_msdefender", "alerts", "-d", machine],
51
+ ["check_msdefender", "detail", "-d", machine],
52
+ ["check_msdefender", "lastseen", "-d", machine],
53
+ ["check_msdefender", "onboarding", "-d", machine],
54
+ ["check_msdefender", "products", "-d", machine],
55
+ ["check_msdefender", "vulnerabilities", "-d", machine],
56
+ ]
57
+
58
+ all_commands = commands_no_machine + commands_with_machine
59
+ results = []
60
+
61
+ for cmd in all_commands:
62
+ cmd_str = " ".join(cmd)
63
+ print(f"\n>>> {cmd_str}")
64
+ print("-" * 60)
65
+
66
+ result = subprocess.run(cmd, capture_output=False)
67
+ results.append((cmd_str, result.returncode))
68
+
69
+ print("\n" + "=" * 60)
70
+ print("Summary:")
71
+ print("=" * 60)
72
+
73
+ for cmd_str, returncode in results:
74
+ status = "OK" if returncode == 0 else f"EXIT {returncode}"
75
+ print(f" [{status:8}] {cmd_str}")
76
+
77
+ return 0
78
+
79
+
80
+ if __name__ == "__main__":
81
+ sys.exit(main())
@@ -39,7 +39,7 @@ dependencies = [
39
39
  "azure-identity>=1.12.0",
40
40
  "click>=8.0,<9.0",
41
41
  ]
42
- version = "1.2.1"
42
+ version = "1.2.2"
43
43
 
44
44
  [project.license]
45
45
  text = "MIT"
@@ -52,6 +52,7 @@ Documentation = "https://github.com/lduchosal/check_msdefender/blob/main/README.
52
52
 
53
53
  [project.scripts]
54
54
  check_msdefender = "check_msdefender.cli:main"
55
+ check_msdefender_integration = "check_msdefender.integration:main"
55
56
 
56
57
  [tool.pdm]
57
58
  distribution = true