Skip to content

Commit 3b911bb

Browse files
committed
Force unique service description
1 parent a009fd5 commit 3b911bb

File tree

2 files changed

+44
-24
lines changed

2 files changed

+44
-24
lines changed

intune/agent_based/ms_intune_apple_vpp_tokens.py

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,26 +40,22 @@
4040

4141
@dataclass(frozen=True)
4242
class TokenInfo:
43-
token_id: str
4443
token_appleid: str
45-
token_state: str
4644
token_expiration: str
45+
token_id: str
46+
token_name: str
47+
token_state: str
4748

4849

4950
# Example data from special agent:
5051
# <<<ms_intune_apple_vpp_tokens:sep(0)>>>
5152
# [
5253
# {
53-
# "token_id": "00000000-0000-0000-0000-000000000000",
54-
# "token_appleid": "vpp@domain.td",
55-
# "token_state": "valid",
56-
# "token_expiration": "2025-03-02T06:54:05Z"
57-
# },
58-
# {
59-
# "token_id": "00000000-0000-0000-0000-000000000001",
6054
# "token_appleid": "vpp@domain.td",
61-
# "token_state": "valid",
6255
# "token_expiration": "2025-03-02T06:54:05Z"
56+
# "token_id": "00000000-0000-0000-0000-000000000000",
57+
# "token_name": "valid",
58+
# "token_state": "Token 1",
6359
# },
6460
# ...
6561
# ]
@@ -69,8 +65,18 @@ class TokenInfo:
6965

7066
def parse_ms_intune_apple_vpp_tokens(string_table: StringTable) -> Section:
7167
parsed = {}
68+
token_names = set()
7269
for item in json.loads("".join(string_table[0])):
73-
parsed[item["token_id"]] = item
70+
token_name = item["token_name"]
71+
# generate unique names, because token name is not unique
72+
if token_name in token_names:
73+
token_name_unique = f"{token_name}_{item["token_id"][-4:]}"
74+
else:
75+
token_name_unique = token_name
76+
token_names.add(token_name)
77+
78+
parsed[token_name_unique] = item
79+
7480
return parsed
7581

7682

@@ -87,8 +93,10 @@ def check_ms_intune_apple_vpp_tokens(item: str, params: Mapping[str, Any], secti
8793
params_levels_token_expiration = params.get("token_expiration")
8894

8995
token_appleid = token["token_appleid"]
90-
token_state = token["token_state"]
9196
token_expiration = token["token_expiration"]
97+
token_id = token["token_id"]
98+
token_name = token["token_name"]
99+
token_state = token["token_state"]
92100

93101
token_expiration_datetime = datetime.fromisoformat(token_expiration)
94102
token_expiration_timestamp = token_expiration_datetime.timestamp()
@@ -98,8 +106,10 @@ def check_ms_intune_apple_vpp_tokens(item: str, params: Mapping[str, Any], secti
98106

99107
result_details = (
100108
f"Expiration time: {token_expiration_timestamp_render}"
101-
f"\\nState: {token_state}"
109+
f"\\nToken name: {token_name}"
110+
f"\\nToken ID: {token_id}"
102111
f"\\nApple ID: {token_appleid}"
112+
f"\\nState: {token_state}"
103113
)
104114
result_summary = f"Expiration time: {token_expiration_timestamp_render}, State: {token_state}"
105115

@@ -140,7 +150,7 @@ def check_ms_intune_apple_vpp_tokens(item: str, params: Mapping[str, Any], secti
140150

141151
check_plugin_ms_intune_apple_vpp_tokens = CheckPlugin(
142152
name="ms_intune_apple_vpp_tokens",
143-
service_name="Intune VPP token %s",
153+
service_name="Intune Apple VPP token %s",
144154
discovery_function=discover_ms_intune_apple_vpp_tokens,
145155
check_function=check_ms_intune_apple_vpp_tokens,
146156
check_ruleset_name="ms_intune_apple_vpp_tokens",

intune/agent_based/ms_intune_cert_connectors.py

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@
3939
@dataclass(frozen=True)
4040
class ConnectorInfo:
4141
connector_connection_last: str
42-
connector_state: str
42+
connector_id: str
4343
connector_name: str
44+
connector_state: str
4445
connector_version: str
4546

4647

@@ -51,14 +52,9 @@ class ConnectorInfo:
5152
# [
5253
# {
5354
# "connector_connection_last": "2024-05-18T21:33:26.1092739Z",
54-
# "connector_state": "active",
55+
# "connector_id": "00000000-0000-0000-0000-000000000000",
5556
# "connector_name": "Connector1",
56-
# "connector_version": "6.2301.1.0"
57-
# },
58-
# {
59-
# "connector_connection_last": "2024-05-18T21:29:30.5308288Z",
6057
# "connector_state": "active",
61-
# "connector_name": "Connector2",
6258
# "connector_version": "6.2301.1.0"
6359
# },
6460
# ...
@@ -67,8 +63,18 @@ class ConnectorInfo:
6763

6864
def parse_ms_intune_cert_connectors(string_table: StringTable) -> Section:
6965
parsed = {}
66+
connector_names = set()
7067
for item in json.loads("".join(string_table[0])):
71-
parsed[item["connector_name"]] = item
68+
connector_name = item["connector_name"]
69+
# generate unique names, because connector name is not unique
70+
if connector_name in connector_names:
71+
connector_name_unique = f"{connector_name}_{item["connector_id"][-4:]}"
72+
else:
73+
connector_name_unique = connector_name
74+
connector_names.add(connector_name)
75+
76+
parsed[connector_name_unique] = item
77+
7278
return parsed
7379

7480

@@ -83,6 +89,8 @@ def check_ms_intune_cert_connectors(item: str, section: Section) -> CheckResult:
8389
return
8490

8591
connector_connection_last = connector["connector_connection_last"]
92+
connector_id = connector["connector_id"]
93+
connector_name = connector["connector_name"]
8694
connector_state = connector["connector_state"]
8795
connector_version = connector["connector_version"]
8896

@@ -93,9 +101,11 @@ def check_ms_intune_cert_connectors(item: str, section: Section) -> CheckResult:
93101
result_summary = f"State: {connector_state}"
94102

95103
result_details = (
96-
f"State: {connector_state}"
97-
f"\\nLast connected: {connector_connection_last_timestamp_render}"
104+
f"Connector name: {connector_name}"
105+
f"\\nConnector ID: {connector_id}"
98106
f"\\nConnector version: {connector_version}"
107+
f"\\nLast connected: {connector_connection_last_timestamp_render}"
108+
f"\\nState: {connector_state}"
99109
)
100110

101111
if connector_state != "active":

0 commit comments

Comments
 (0)