diff --git a/src/components/CippIntegrations/CippIntegrationSettings.jsx b/src/components/CippIntegrations/CippIntegrationSettings.jsx
index f093df9f3e0d..07731168d0be 100644
--- a/src/components/CippIntegrations/CippIntegrationSettings.jsx
+++ b/src/components/CippIntegrations/CippIntegrationSettings.jsx
@@ -1,4 +1,5 @@
-import { Box, Grid } from "@mui/material";
+import { Box } from "@mui/material";
+import { Grid } from "@mui/system";
import CippFormSection from "/src/components/CippFormPages/CippFormSection";
import CippFormComponent from "/src/components/CippComponents/CippFormComponent";
import { useForm } from "react-hook-form";
@@ -6,7 +7,7 @@ import { useSettings } from "/src/hooks/use-settings";
import { ApiGetCall } from "/src/api/ApiCall";
import { useRouter } from "next/router";
import extensions from "/src/data/Extensions.json";
-import { useEffect } from "react";
+import React, { useEffect } from "react";
import { CippFormCondition } from "../CippComponents/CippFormCondition";
const CippIntegrationSettings = ({ children }) => {
@@ -44,7 +45,7 @@ const CippIntegrationSettings = ({ children }) => {
<>
{integrations.isSuccess && extension ? (
{
{extension.SettingOptions.map((setting, index) => (
-
-
- {setting?.condition ? (
-
+
+ {setting?.condition ? (
+
+
+
+
+
+
+
+ ) : (
+
+
{
fullWidth
{...setting}
/>
-
- ) : (
-
- )}
-
-
+
+
+ )}
+
))}
diff --git a/src/data/Extensions.json b/src/data/Extensions.json
index 9fe08b00eb57..15ef6a02de3a 100644
--- a/src/data/Extensions.json
+++ b/src/data/Extensions.json
@@ -322,6 +322,17 @@
"type": "switch",
"name": "Hudu.MonitorDomains",
"label": "Monitor domains in Hudu"
+ },
+ {
+ "_comment": "I have added this switch as a logic check for the Hudu integration script to check against when CIPP first connects to the Hudu Instance via Connect-HuduAPI.ps1",
+ "type": "switch",
+ "name": "Hudu.CFEnabled",
+ "label": "Connect to HUDU through CloudFlare Tunnel with the Service Account credentials.",
+ "condition": {
+ "field": "CFZTNA.Enabled",
+ "compareType": "is",
+ "compareValue": true
+ }
}
],
"mappingRequired": true,
@@ -337,7 +348,7 @@
"logoDark": "/assets/integrations/pwpush_dark.png",
"forceSyncButton": false,
"description": "Enable the PasswordPusher integration to generate password links instead of plain text passwords.",
- "helpText": "This integration allows you to generate password links instead of plain text passwords. Configure authentication and expiration settings that will apply to all generated passwords. If you are a PWPush Pro customer and utilizing custom domains, please do not enter your custom domain in the Base URL field.",
+ "helpText": "This integration allows you to generate password links instead of plain text passwords. Configure authentication and expiration settings that will apply to all generated passwords. If you are a Hosted PWPush Pro customer you can also select an account for branding if you enable Bearer Authentication. Self-Hosted must use the Email Address and API Key method for authenticated pushes.",
"links": [
{
"name": "PWPush Documentation",
@@ -352,12 +363,12 @@
{
"type": "switch",
"name": "PWPush.Enabled",
- "label": "Enable Integration - Replace passwords with PWPush links"
+ "label": "Enable Integration"
},
{
"type": "switch",
- "name": "PWPush.PWPushPro",
- "label": "PWPush Pro/Premium account"
+ "name": "PWPush.UseBearerAuth",
+ "label": "Use Bearer Authentication (Hosted only)"
},
{
"type": "textField",
@@ -365,23 +376,29 @@
"label": "PWPush URL",
"placeholder": "Enter your PWPush URL. (default: https://pwpush.com)"
},
- {
- "type": "textField",
- "name": "PWPush.EmailAddress",
- "label": "PWPush email address",
- "placeholder": "Enter your email address for PWPush. (Free/Self-Hosted only)"
- },
{
"type": "password",
"name": "PWPush.APIKey",
"label": "PWPush API Key",
"placeholder": "Enter your PWPush API Key. (optional)"
},
+ {
+ "type": "textField",
+ "name": "PWPush.EmailAddress",
+ "label": "PWPush email address",
+ "placeholder": "Enter your email address for PWPush. (Email & API Key auth)",
+ "condition": {
+ "field": "PWPush.UseBearerAuth",
+ "compareType": "is",
+ "compareValue": false
+ }
+ },
{
"type": "autoComplete",
"name": "PWPush.AccountId",
- "label": "Select your PWPush Account for branding (Pro/Premium only)",
+ "label": "Select your PWPush Account for branding (Pro/Premium only, optional with Custom Domain)",
"multiple": false,
+ "creatable": false,
"api": {
"url": "/api/ExecExtensionMapping?List=PWPushFields",
"queryKey": "PWPushAccounts",
@@ -391,12 +408,11 @@
"showRefresh": true
},
"condition": {
- "field": "PWPush.PWPushPro",
+ "field": "PWPush.UseBearerAuth",
"compareType": "is",
"compareValue": true
}
},
-
{
"type": "number",
"name": "PWPush.ExpireAfterDays",
@@ -454,7 +470,7 @@
},
{
"name": "CloudFlare ZTNA Tunnel",
- "id": "CTZTNA",
+ "id": "CFZTNA",
"type": "ztna",
"cat": "Zero Trust Network Tunnel",
"logo": "/assets/integrations/cloudflare.png",
@@ -473,21 +489,20 @@
}
],
"SettingOptions": [
+ {
+ "type": "switch",
+ "name": "CFZTNA.Enabled",
+ "label": "Enable Integration"
+ },
{
"type": "password",
- "name": "CloudFlareClientID.APIKey",
+ "name": "CFZTNA.ClientID",
"label": "CloudFlare Tunnel Service Account Client ID"
},
{
"type": "password",
- "name": "CloudFlareAPIKey.APIKey",
+ "name": "CFZTNA.APIKey",
"label": "CloudFlare Tunnel Service Account Client Secret"
- },
- {
- "_comment": "I have added this switch as a logic check for the Hudu integration script to check against when CIPP first connects to the Hudu Instance via Connect-HuduAPI.ps1",
- "type": "switch",
- "name": "Hudu.CFEnabled",
- "label": " Connect to HUDU through CloudFlare Tunnel with the above Service Account credentials."
}
],
"mappingRequired": false
diff --git a/src/pages/cipp/logs/index.js b/src/pages/cipp/logs/index.js
index fdee0356920d..cb6b39500aa4 100644
--- a/src/pages/cipp/logs/index.js
+++ b/src/pages/cipp/logs/index.js
@@ -21,6 +21,8 @@ const simpleColumns = [
"Message",
"API",
"Severity",
+ "AppId",
+ "IP",
"LogData",
];
diff --git a/src/pages/cipp/settings/notifications.js b/src/pages/cipp/settings/notifications.js
index 2dd5a990d5e0..b9fc1cd25aa6 100644
--- a/src/pages/cipp/settings/notifications.js
+++ b/src/pages/cipp/settings/notifications.js
@@ -81,6 +81,7 @@ const Page = () => {
resetForm={false}
postUrl="/api/ExecNotificationConfig"
relatedQueryKeys={["ListNotificationConfig"]}
+ isFetching={listNotificationConfig.isFetching}
addedButtons={