Skip to content

Commit 64e93a0

Browse files
authored
Merge pull request #52 from KelvinTegelaar/dev
[pull] dev from KelvinTegelaar:dev
2 parents 7f732ff + 7449552 commit 64e93a0

File tree

10 files changed

+432
-123
lines changed

10 files changed

+432
-123
lines changed

README.md

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,13 @@
11
![CyberDrain Light](github_assets/img/CIPP.png#gh-dark-mode-only)
22
![CyberDrain Dark](github_assets/img/CIPP-Light.png#gh-light-mode-only)
33

4-
<center><h1>Sponsored by</h1></center>
5-
<p align="center">
6-
7-
![OIT](github_assets/img/oitpsonsor_light.png)&nbsp;&nbsp;&nbsp;&nbsp;
8-
![Immybot](github_assets/img/Immybot.png)&nbsp;&nbsp;&nbsp;&nbsp;
9-
![NinjaOne](github_assets/img/NinjaOne-Light.png#gh-dark-mode-only)
10-
![NinjaOne](github_assets/img/NinjaOne-Dark.png#gh-light-mode-only)&nbsp;&nbsp;&nbsp;&nbsp;
11-
![Huntress](github_assets/img/Huntress.png)
12-
![HaloPSA](github_assets/img/halopsa-red-grey.svg)
13-
14-
</p>
15-
164
# What is this?
175

18-
The CyberDrain Improved Partner Portal is a portal to help manage administration for Microsoft Partners. The current Microsoft partner landscape makes it fairly hard to manage multi tenant situations, with loads of manual work. Microsoft Lighthouse might resolve this in the future but development of this is lagging far behind development of the current market for Microsoft Partners.
6+
The CyberDrain Improved Partner Portal is a portal to help manage administration for Microsoft Partners. The current Microsoft partner landscape makes it fairly hard to manage multi tenant situations, with loads of manual work. Microsoft Lighthouse might resolve this in the future but development of this is lagging far behind development of the current market for Microsoft Partners.
7+
This project is a way to help you with administration, with user management, and deploying your own preferred standards. It's not a replacement for security tools, or a way to cut costs on specific subscriptions. The tool should assist you in removing the gripes with standard partner management and save you several hours per engineer per month.
8+
For more information, we recommend checking out our website [here](https://cipp.app)
9+
For detailed documentation about features of CIPP, please check out our [documentation.](https://docs.cipp.app)
1910

20-
This project is a way to help you with administration, with user management, and deploying your own preferred standards. It's not a replacement for security tools, or a way to cut costs on specific subscriptions. The tool should assist you in removing the gripes with standard partner management and save you several hours per engineer per month.
11+
# Our sponsors
2112

22-
for more information, we recommend checking out our website [here](https://cipp.app)
13+
You can find our sponsors [here.](https://docs.cipp.app/#our-sponsors)

src/_nav.jsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -608,6 +608,11 @@ const _nav = [
608608
name: 'Mailboxes',
609609
to: '/email/administration/mailboxes',
610610
},
611+
{
612+
component: CNavItem,
613+
name: 'Deleted Mailboxes',
614+
to: '/email/administration/deleted-mailboxes',
615+
},
611616
{
612617
component: CNavItem,
613618
name: 'Mailbox Rules',

src/data/Extensions.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"type": "CIPP-API",
55
"cat": "API",
66
"forceSyncButton": false,
7+
"disableWhenhosted": true,
78
"helpText": "This integration allows you to enable CIPP-API access outside of CIPP. Requires Global Administrator permissions inside your tenant for activation of the API. The API credentials will only be shown once.",
89
"SettingOptions": [
910
{

src/data/standards.json

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -698,6 +698,16 @@
698698
"impact": "Low Impact",
699699
"impactColour": "info"
700700
},
701+
{
702+
"name": "standards.EnableLitigationHold",
703+
"cat": "Exchange Standards",
704+
"tag": ["lowimpact"],
705+
"helpText": "Enables litigation hold for all UserMailboxes with a valid license.",
706+
"addedComponent": [],
707+
"label": "Enable Litigation Hold for all users",
708+
"impact": "Low Impact",
709+
"impactColour": "info"
710+
},
701711
{
702712
"name": "standards.SpoofWarn",
703713
"cat": "Exchange Standards",
@@ -1057,6 +1067,22 @@
10571067
"impact": "Medium Impact",
10581068
"impactColour": "warning"
10591069
},
1070+
{
1071+
"name": "standards.UserReportDestinationEmail",
1072+
"cat": "Exchange Standards",
1073+
"tag": ["mediumimpact"],
1074+
"helpText": "Sets the destination for email when users report them as spam or phishing. Works well together with the 'Set the state of the built-in Report button in Outlook standard'.",
1075+
"addedComponent": [
1076+
{
1077+
"type": "input",
1078+
"name": "standards.UserReportDestinationEmail.Email",
1079+
"label": "Destination email address"
1080+
}
1081+
],
1082+
"label": "Set the destination email for user reported emails",
1083+
"impact": "Medium Impact",
1084+
"impactColour": "warning"
1085+
},
10601086
{
10611087
"name": "standards.DisableSharedMailbox",
10621088
"cat": "Exchange Standards",
@@ -1138,6 +1164,40 @@
11381164
"name": "standards.AntiPhishPolicy.EnableUnusualCharactersSafetyTips",
11391165
"default": true
11401166
},
1167+
{
1168+
"type": "Select",
1169+
"label": "If the message is detected as spoof by spoof intelligence",
1170+
"name": "standards.AntiPhishPolicy.AuthenticationFailAction",
1171+
"values": [
1172+
{
1173+
"label": "Quarantine the message",
1174+
"value": "Quarantine"
1175+
},
1176+
{
1177+
"label": "Move to Junk Folder",
1178+
"value": "MoveToJmf"
1179+
}
1180+
]
1181+
},
1182+
{
1183+
"type": "Select",
1184+
"label": "Quarantine policy for Spoof",
1185+
"name": "standards.AntiPhishPolicy.SpoofQuarantineTag",
1186+
"values": [
1187+
{
1188+
"label": "AdminOnlyAccessPolicy",
1189+
"value": "AdminOnlyAccessPolicy"
1190+
},
1191+
{
1192+
"label": "DefaultFullAccessPolicy",
1193+
"value": "DefaultFullAccessPolicy"
1194+
},
1195+
{
1196+
"label": "DefaultFullAccessWithNotificationPolicy",
1197+
"value": "DefaultFullAccessWithNotificationPolicy"
1198+
}
1199+
]
1200+
},
11411201
{
11421202
"type": "Select",
11431203
"label": "If a message is detected as user impersonation",
@@ -1157,6 +1217,25 @@
11571217
}
11581218
]
11591219
},
1220+
{
1221+
"type": "Select",
1222+
"label": "Quarantine policy for user impersonation",
1223+
"name": "standards.AntiPhishPolicy.TargetedUserQuarantineTag",
1224+
"values": [
1225+
{
1226+
"label": "AdminOnlyAccessPolicy",
1227+
"value": "AdminOnlyAccessPolicy"
1228+
},
1229+
{
1230+
"label": "DefaultFullAccessPolicy",
1231+
"value": "DefaultFullAccessPolicy"
1232+
},
1233+
{
1234+
"label": "DefaultFullAccessWithNotificationPolicy",
1235+
"value": "DefaultFullAccessWithNotificationPolicy"
1236+
}
1237+
]
1238+
},
11601239
{
11611240
"type": "Select",
11621241
"label": "If a message is detected as domain impersonation",
@@ -1176,6 +1255,25 @@
11761255
}
11771256
]
11781257
},
1258+
{
1259+
"type": "Select",
1260+
"label": "Quarantine policy for domain impersonation",
1261+
"name": "standards.AntiPhishPolicy.TargetedDomainQuarantineTag",
1262+
"values": [
1263+
{
1264+
"label": "DefaultFullAccessWithNotificationPolicy",
1265+
"value": "DefaultFullAccessWithNotificationPolicy"
1266+
},
1267+
{
1268+
"label": "AdminOnlyAccessPolicy",
1269+
"value": "AdminOnlyAccessPolicy"
1270+
},
1271+
{
1272+
"label": "DefaultFullAccessPolicy",
1273+
"value": "DefaultFullAccessPolicy"
1274+
}
1275+
]
1276+
},
11791277
{
11801278
"type": "Select",
11811279
"label": "If Mailbox Intelligence detects an impersonated user",

src/importsMap.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ import React from 'react'
116116
"/email/administration/edit-calendar-permissions": React.lazy(() => import('./views/email-exchange/administration/EditCalendarPermissions')),
117117
"/email/administration/view-mobile-devices": React.lazy(() => import('./views/email-exchange/administration/ViewMobileDevices')),
118118
"/email/administration/edit-contact": React.lazy(() => import('./views/email-exchange/administration/EditContact')),
119-
"/email/administration/mailboxes": React.lazy(() => import('./views/email-exchange/administration/MailboxesList')),
119+
"/email/administration/mailboxes": React.lazy(() => import('./views/email-exchange/administration/MailboxesList')),
120+
"/email/administration/deleted-mailboxes": React.lazy(() => import('./views/email-exchange/administration/DeletedMailboxes')),
120121
"/email/administration/mailbox-rules": React.lazy(() => import('./views/email-exchange/administration/MailboxRuleList')),
121122
"/email/administration/Quarantine": React.lazy(() => import('./views/email-exchange/administration/QuarantineList')),
122123
"/email/administration/tenant-allow-block-lists": React.lazy(() => import('./views/email-exchange/administration/ListTenantAllowBlockList')),

src/routes.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -786,6 +786,12 @@
786786
"component": "views/email-exchange/administration/MailboxesList",
787787
"allowedRoles": ["admin", "editor", "readonly"]
788788
},
789+
{
790+
"name": "Deleted Mailboxes",
791+
"path": "/email/administration/deleted-mailboxes",
792+
"component": "views/email-exchange/administration/DeletedMailboxes",
793+
"allowedRoles": ["admin", "editor", "readonly"]
794+
},
789795
{
790796
"name": "List Mailbox Rules",
791797
"path": "/email/administration/mailbox-rules",

src/views/cipp/Extensions.jsx

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,15 @@ export default function CIPPExtensions() {
4242
})
4343
}
4444

45-
const ButtonGenerate = (integrationType, forceSync) => (
45+
const ButtonGenerate = (integrationType, forceSync, disabled) => (
4646
<>
47-
<CButton className="me-2" form={integrationType} type="submit">
47+
<CButton disabled={disabled} className="me-2" form={integrationType} type="submit">
4848
{extensionConfigResult.isFetching && (
4949
<FontAwesomeIcon icon={faCircleNotch} spin className="me-2" size="1x" />
5050
)}
5151
Set Extension Settings
5252
</CButton>
53-
<CButton onClick={() => onSubmitTest(integrationType)} className="me-2">
53+
<CButton disabled={disabled} onClick={() => onSubmitTest(integrationType)} className="me-2">
5454
{listExtensionTestResult.isFetching && (
5555
<FontAwesomeIcon icon={faCircleNotch} spin className="me-2" size="1x" />
5656
)}
@@ -83,6 +83,7 @@ export default function CIPPExtensions() {
8383
queryString.set('tab', tab.toString())
8484
navigate(`${location.pathname}?${queryString}`)
8585
}
86+
const hostedMetaContent = document.querySelector('meta[name="hosted"]')?.getAttribute('content')
8687

8788
return (
8889
<CippPage title="Settings" tenantSelector={false}>
@@ -105,11 +106,21 @@ export default function CIPPExtensions() {
105106
<CippLazy visible={active === idx}>
106107
<CRow className="mb-3">
107108
<CCol sm={12} md={integration.mappingRequired ? 4 : 12} className="mb-3">
109+
{hostedMetaContent === 'true' && integration.disableWhenhosted && (
110+
<CippCallout color="warning">
111+
This extension requires activation in the management portal for hosted
112+
clients.
113+
</CippCallout>
114+
)}
108115
<CippButtonCard
109116
title={integration.name}
110117
titleType="big"
111118
isFetching={listBackendResult.isFetching}
112-
CardButton={ButtonGenerate(integration.type, integration.forceSync)}
119+
CardButton={ButtonGenerate(
120+
integration.type,
121+
integration.forceSync,
122+
(hostedMetaContent === 'true' && integration.disableWhenhosted) || false,
123+
)}
113124
key={idx}
114125
>
115126
<p>{integration.helpText}</p>

0 commit comments

Comments
 (0)