From 0ffc7116c018af5a235a9eabec96dea710291991 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 10 Oct 2025 21:01:35 +0000
Subject: [PATCH 1/2] Initial plan
From 598619ef77b078cff26efdb247c0c002e993fab2 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 10 Oct 2025 21:09:20 +0000
Subject: [PATCH 2/2] Update PhishLabs integration to use Case Creation API
Co-authored-by: markcoleman <229046+markcoleman@users.noreply.github.com>
---
docs/PhishLabsIncidentReporter.md | 4 ++--
.../UmbracoWeb.Tests/UmbracoWeb.Tests.csproj | 4 ++--
src/UmbracoWeb/UmbracoWeb.Tests/UnitTest1.cs | 8 ++++----
.../UmbracoWeb/Models/PhishLabsModels.cs | 12 ++++++------
.../UmbracoWeb/Services/PhishLabsService.cs | 17 ++++++++++-------
src/UmbracoWeb/UmbracoWeb/appsettings.json | 4 ++--
6 files changed, 26 insertions(+), 23 deletions(-)
diff --git a/docs/PhishLabsIncidentReporter.md b/docs/PhishLabsIncidentReporter.md
index a2b040a..acc5603 100644
--- a/docs/PhishLabsIncidentReporter.md
+++ b/docs/PhishLabsIncidentReporter.md
@@ -28,9 +28,9 @@ Add the PhishLabs settings to your `appsettings.json`:
```json
{
"PhishLabs": {
- "ApiBaseUrl": "https://api.phishlabs.com",
+ "ApiBaseUrl": "https://caseapi.phishlabs.com",
"ApiKey": "your-api-key-here",
- "ServicePath": "/incidents/your-service",
+ "ServicePath": "/v1/create",
"TimeoutSeconds": 30,
"MaxRetries": 3,
"RateLimitPerMinute": 10
diff --git a/src/UmbracoWeb/UmbracoWeb.Tests/UmbracoWeb.Tests.csproj b/src/UmbracoWeb/UmbracoWeb.Tests/UmbracoWeb.Tests.csproj
index 76680cd..1367bcf 100644
--- a/src/UmbracoWeb/UmbracoWeb.Tests/UmbracoWeb.Tests.csproj
+++ b/src/UmbracoWeb/UmbracoWeb.Tests/UmbracoWeb.Tests.csproj
@@ -14,8 +14,8 @@
-
-
+
+
diff --git a/src/UmbracoWeb/UmbracoWeb.Tests/UnitTest1.cs b/src/UmbracoWeb/UmbracoWeb.Tests/UnitTest1.cs
index 5c3fbd5..cfcca0a 100644
--- a/src/UmbracoWeb/UmbracoWeb.Tests/UnitTest1.cs
+++ b/src/UmbracoWeb/UmbracoWeb.Tests/UnitTest1.cs
@@ -28,9 +28,9 @@ public void SetUp()
_settings = new PhishLabsSettings
{
- ApiBaseUrl = "https://api.phishlabs.com",
+ ApiBaseUrl = "https://caseapi.phishlabs.com",
ApiKey = "test-key",
- ServicePath = "/incidents/test",
+ ServicePath = "/v1/create",
TimeoutSeconds = 30,
MaxRetries = 3,
RateLimitPerMinute = 10
@@ -61,8 +61,8 @@ public async Task SubmitIncidentAsync_WithValidRequest_ReturnsSuccessResponse()
var apiResponse = new
{
success = true,
- incidentId = "incident-456",
- message = "Incident created successfully"
+ caseId = "case-456",
+ message = "Case created successfully"
};
var responseContent = JsonSerializer.Serialize(apiResponse, new JsonSerializerOptions
diff --git a/src/UmbracoWeb/UmbracoWeb/Models/PhishLabsModels.cs b/src/UmbracoWeb/UmbracoWeb/Models/PhishLabsModels.cs
index df1019b..313a5a6 100644
--- a/src/UmbracoWeb/UmbracoWeb/Models/PhishLabsModels.cs
+++ b/src/UmbracoWeb/UmbracoWeb/Models/PhishLabsModels.cs
@@ -49,23 +49,23 @@ public class PhishLabsIncidentResponse
}
///
-/// Internal model for PhishLabs API request
+/// Internal model for PhishLabs Case Creation API request
///
internal class PhishLabsApiRequest
{
- public string Url { get; set; } = string.Empty;
- public string? Description { get; set; }
+ public string CaseType { get; set; } = "Phishing";
+ public string Title { get; set; } = string.Empty;
+ public string Description { get; set; } = string.Empty;
public string Source { get; set; } = "umbraco-web";
- public DateTime Timestamp { get; set; } = DateTime.UtcNow;
}
///
-/// Internal model for PhishLabs API response
+/// Internal model for PhishLabs Case Creation API response
///
internal class PhishLabsApiResponse
{
public bool Success { get; set; }
- public string? IncidentId { get; set; }
+ public string? CaseId { get; set; }
public string? Message { get; set; }
public string? Error { get; set; }
}
\ No newline at end of file
diff --git a/src/UmbracoWeb/UmbracoWeb/Services/PhishLabsService.cs b/src/UmbracoWeb/UmbracoWeb/Services/PhishLabsService.cs
index 49b9149..bf267fd 100644
--- a/src/UmbracoWeb/UmbracoWeb/Services/PhishLabsService.cs
+++ b/src/UmbracoWeb/UmbracoWeb/Services/PhishLabsService.cs
@@ -6,7 +6,7 @@
namespace UmbracoWeb.Services;
///
-/// Service for integrating with PhishLabs incident reporting API
+/// Service for integrating with PhishLabs Case Creation API
///
public class PhishLabsService : IPhishLabsService
{
@@ -52,20 +52,23 @@ public async Task SubmitIncidentAsync(
try
{
+ var sanitizedUrl = SanitizeUrl(request.Url);
var apiRequest = new PhishLabsApiRequest
{
- Url = SanitizeUrl(request.Url),
- Description = SanitizeDescription(request.Details),
- Source = "umbraco-web",
- Timestamp = DateTime.UtcNow
+ CaseType = "Phishing",
+ Title = $"Suspicious URL: {sanitizedUrl}",
+ Description = string.IsNullOrWhiteSpace(request.Details)
+ ? $"Reported URL: {sanitizedUrl}"
+ : $"Reported URL: {sanitizedUrl}\n\nDetails: {SanitizeDescription(request.Details)}",
+ Source = "umbraco-web"
};
var response = await SubmitToPhishLabsAsync(apiRequest, correlationId, cancellationToken);
if (response.Success)
{
- _logger.LogInformation("PhishLabs incident submitted successfully. CorrelationId: {CorrelationId}, IncidentId: {IncidentId}",
- correlationId, response.IncidentId);
+ _logger.LogInformation("PhishLabs case created successfully. CorrelationId: {CorrelationId}, CaseId: {CaseId}",
+ correlationId, response.CaseId);
return new PhishLabsIncidentResponse
{
diff --git a/src/UmbracoWeb/UmbracoWeb/appsettings.json b/src/UmbracoWeb/UmbracoWeb/appsettings.json
index f6c6f5f..75bf1da 100644
--- a/src/UmbracoWeb/UmbracoWeb/appsettings.json
+++ b/src/UmbracoWeb/UmbracoWeb/appsettings.json
@@ -43,9 +43,9 @@
"umbracoDbDSN_ProviderName": "Microsoft.Data.SqlClient"
},
"PhishLabs": {
- "ApiBaseUrl": "#{PHISHLABS_API_BASE_URL}#",
+ "ApiBaseUrl": "https://caseapi.phishlabs.com",
"ApiKey": "#{PHISHLABS_API_KEY}#",
- "ServicePath": "#{PHISHLABS_SERVICE_PATH}#",
+ "ServicePath": "/v1/create",
"TimeoutSeconds": 30,
"MaxRetries": 3,
"RateLimitPerMinute": 10