Skip to content

Commit 1cfc1da

Browse files
committed
feat(hub): add configuration to disable connectivity email notifications
1 parent babcb3e commit 1cfc1da

File tree

3 files changed

+25
-3
lines changed

3 files changed

+25
-3
lines changed

opencti-platform/opencti-graphql/config/default.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,8 @@
233233
"opengrc_url": "",
234234
"opengrc_token": "",
235235
"xtmhub_url": "https://hub.filigran.io",
236-
"xtmhub_to_email": "[email protected]"
236+
"xtmhub_to_email": "[email protected]",
237+
"xtmhub_connectivity_email_enabled": true
237238
},
238239
"data_sharing": {
239240
"max_csv_feed_result": 5000

opencti-platform/opencti-graphql/src/domain/xtm-hub.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { ENTITY_TYPE_SETTINGS } from '../schema/internalObject';
55
import { xtmHubClient } from '../modules/xtm/hub/xtm-hub-client';
66
import { XtmHubRegistrationStatus } from '../generated/graphql';
77
import { updateAttribute } from '../database/middleware';
8-
import { BUS_TOPICS, PLATFORM_VERSION } from '../config/conf';
8+
import { booleanConf, BUS_TOPICS, PLATFORM_VERSION } from '../config/conf';
99
import { HUB_REGISTRATION_MANAGER_USER } from '../utils/access';
1010
import { getSettings } from './settings';
1111
import { notify } from '../database/redis';
@@ -32,9 +32,11 @@ export const checkXTMHubConnectivity = async (context: AuthContext, user: AuthUs
3232

3333
const lastCheckDate = utcDate(settings.xtm_hub_last_connectivity_check);
3434
const are24HoursPassed = utcDate().diff(lastCheckDate, 'hours') >= 24;
35+
const isEmailEnabled = booleanConf('xtm:xtmhub_connectivity_email_enabled', true);
3536
const shouldSendLostConnectivityEmail = !isConnectivityActive
3637
&& are24HoursPassed
37-
&& settings.xtm_hub_should_send_connectivity_email;
38+
&& settings.xtm_hub_should_send_connectivity_email
39+
&& isEmailEnabled;
3840
if (shouldSendLostConnectivityEmail) {
3941
await sendAdministratorsLostConnectivityEmail(context, settings);
4042
attributeUpdates.push({ key: 'xtm_hub_should_send_connectivity_email', value: [false] });

opencti-platform/opencti-graphql/tests/01-unit/domain/xtm-hub-test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { ENTITY_TYPE_SETTINGS } from '../../../src/schema/internalObject';
1111
import * as settingsModule from '../../../src/domain/settings';
1212
import * as redisModule from '../../../src/database/redis';
1313
import * as xtmHubEmail from '../../../src/modules/xtm/hub/xtm-hub-email';
14+
import * as conf from '../../../src/config/conf';
1415

1516
describe('XTM hub', () => {
1617
describe('checkXTMHubConnectivity', () => {
@@ -195,6 +196,24 @@ describe('XTM hub', () => {
195196

196197
expect(sendAdministratorsLostConnectivityEmailSpy).not.toBeCalled();
197198
});
199+
200+
it('should not send connectivity email when email sending is disabled via configuration', async () => {
201+
const settings: Partial<BasicStoreSettings> = {
202+
id: 'id',
203+
xtm_hub_token,
204+
xtm_hub_registration_status: XtmHubRegistrationStatus.LostConnectivity,
205+
xtm_hub_last_connectivity_check: new Date(new Date().getTime() - 1000 * 60 * 60 * 24),
206+
xtm_hub_should_send_connectivity_email: true,
207+
};
208+
getEntityFromCacheSpy.mockResolvedValue(settings);
209+
xtmHubClientSpy.mockResolvedValue('inactive');
210+
vi.spyOn(conf, 'booleanConf').mockReturnValue(false);
211+
212+
await checkXTMHubConnectivity(testContext, HUB_REGISTRATION_MANAGER_USER);
213+
214+
expect(sendAdministratorsLostConnectivityEmailSpy).not.toBeCalled();
215+
expect(updateAttributeSpy).not.toBeCalled();
216+
});
198217
});
199218
});
200219
});

0 commit comments

Comments
 (0)