Add Gitea remote info to CLAUDE.md; implement vendor integrations and remove FortiGate modules

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Klein
2026-06-07 08:37:10 -04:00
parent 51eb3bf7c8
commit 09404db559
19 changed files with 95 additions and 521 deletions
+4 -2
View File
@@ -10,8 +10,10 @@ export async function checkStatus() {
return {
name,
status: "operational",
message: `App portal responding (HTTP ${res.status}).`,
status: res.ok ? "operational" : "degraded",
message: res.ok
? `App portal responding (HTTP ${res.status}).`
: `Unexpected response from app portal (HTTP ${res.status}).`,
lastUpdated: new Date().toISOString(),
};
}
+4 -2
View File
@@ -10,8 +10,10 @@ export async function checkStatus() {
return {
name,
status: "operational",
message: `App portal responding (HTTP ${res.status}).`,
status: res.ok ? "operational" : "degraded",
message: res.ok
? `App portal responding (HTTP ${res.status}).`
: `Unexpected response from app portal (HTTP ${res.status}).`,
lastUpdated: new Date().toISOString(),
};
}
+7 -4
View File
@@ -1,17 +1,20 @@
export const name = "DRC";
export const url = "https://wbte.drcedirect.com/PA/portals/pa";
export const url = "https://status.drcedirect.com/PA";
// status.drcedirect.com is a JS-rendered Angular app with no accessible API.
// Synthetic check against the PA INSIGHT portal instead.
const PROBE_URL = "https://wbte.drcedirect.com/PA/portals/pa";
// Note: /PA/portals/pa returns 500 — /PA/ is the correct probe path.
const PROBE_URL = "https://wbte.drcedirect.com/PA/";
export async function checkStatus() {
const res = await fetch(PROBE_URL, { method: "HEAD" });
return {
name,
status: "operational",
message: `PA INSIGHT portal responding (HTTP ${res.status}).`,
status: res.ok ? "operational" : "degraded",
message: res.ok
? `PA INSIGHT portal responding (HTTP ${res.status}).`
: `Unexpected response from PA INSIGHT portal (HTTP ${res.status}).`,
lastUpdated: new Date().toISOString(),
};
}
+4 -2
View File
@@ -11,8 +11,10 @@ export async function checkStatus() {
return {
name,
status: "operational",
message: `Portal responding (HTTP ${res.status}).`,
status: res.ok ? "operational" : "degraded",
message: res.ok
? `Portal responding (HTTP ${res.status}).`
: `Unexpected response from portal (HTTP ${res.status}).`,
lastUpdated: new Date().toISOString(),
};
}
+4 -2
View File
@@ -10,8 +10,10 @@ export async function checkStatus() {
return {
name,
status: "operational",
message: `Destiny portal responding (HTTP ${res.status}).`,
status: res.ok ? "operational" : "degraded",
message: res.ok
? `Destiny portal responding (HTTP ${res.status}).`
: `Unexpected response from Destiny portal (HTTP ${res.status}).`,
lastUpdated: new Date().toISOString(),
};
}
+4 -2
View File
@@ -10,8 +10,10 @@ export async function checkStatus() {
return {
name,
status: "operational",
message: `ConnectED portal responding (HTTP ${res.status}).`,
status: res.ok ? "operational" : "degraded",
message: res.ok
? `ConnectED portal responding (HTTP ${res.status}).`
: `Unexpected response from ConnectED portal (HTTP ${res.status}).`,
lastUpdated: new Date().toISOString(),
};
}
+1 -1
View File
@@ -1,5 +1,5 @@
export const name = "Microsoft 365";
export const url = "https://admin.microsoft.com/Adminportal/Home#/servicehealth";
export const url = "https://status.cloud.microsoft/m365/referrer=serviceStatusRedirect";
const GRAPH_HEALTH_URL =
"https://graph.microsoft.com/v1.0/admin/serviceAnnouncement/healthOverviews";
+4 -2
View File
@@ -10,8 +10,10 @@ export async function checkStatus() {
return {
name,
status: "operational",
message: `Site responding (HTTP ${res.status}).`,
status: res.ok ? "operational" : "degraded",
message: res.ok
? `Site responding (HTTP ${res.status}).`
: `Unexpected response from site (HTTP ${res.status}).`,
lastUpdated: new Date().toISOString(),
};
}
+12 -3
View File
@@ -26,10 +26,19 @@ export async function checkStatus() {
const status = mapStatusCode(overall.status_code);
const incidents = result.incidents ?? [];
let message;
if (incidents.length > 0) {
message = incidents
// Only surface incidents still being actively investigated or identified.
// State 300 = Monitoring (fix deployed), 400 = Resolved — exclude both.
const activeIncidents = incidents.filter((i) => {
const messages = i.messages ?? [];
if (messages.length === 0) return true;
const latestState = messages[messages.length - 1].state;
return latestState < 300;
});
let message;
if (activeIncidents.length > 0) {
message = activeIncidents
.map((i) => {
const components = (i.containers_affected ?? [])
.map((c) => c.name)
+10
View File
@@ -15,6 +15,16 @@ const HEADERS = {
export async function checkStatus() {
const res = await fetch(PROBE_URL, { method: "GET", headers: HEADERS });
// Cloudflare managed challenge — JS required, not a real error
if (res.headers.get("cf-mitigated") === "challenge") {
return {
name,
status: "unknown",
message: "Cloudflare challenge blocked synthetic check — status cannot be determined.",
lastUpdated: new Date().toISOString(),
};
}
return {
name,
status: res.ok ? "operational" : "degraded",
@@ -10,8 +10,10 @@ export async function checkStatus() {
return {
name,
status: "operational",
message: `Admin portal responding (HTTP ${res.status}).`,
status: res.ok ? "operational" : "degraded",
message: res.ok
? `Admin portal responding (HTTP ${res.status}).`
: `Unexpected response from admin portal (HTTP ${res.status}).`,
lastUpdated: new Date().toISOString(),
};
}
+9 -7
View File
@@ -1,17 +1,19 @@
export const name = "SherpaDesk";
export const url = "https://app.sherpadesk.com/new/login/";
export const url = "https://nhsd.sherpadesk.com/";
// No usable public status API — status.sherpadesk.com is a Pingdom uptime
// report page with an invalid cert. Synthetic check against the app portal.
const PROBE_URL = "https://app.sherpadesk.com/new/login/";
// No usable public status API. Synthetic check against the district portal.
// HEAD returns 404 on this host — use GET.
const PROBE_URL = "https://nhsd.sherpadesk.com/";
export async function checkStatus() {
const res = await fetch(PROBE_URL, { method: "HEAD" });
const res = await fetch(PROBE_URL, { method: "GET" });
return {
name,
status: "operational",
message: `App portal responding (HTTP ${res.status}).`,
status: res.ok ? "operational" : "degraded",
message: res.ok
? `App portal responding (HTTP ${res.status}).`
: `Unexpected response from app portal (HTTP ${res.status}).`,
lastUpdated: new Date().toISOString(),
};
}
+5 -2
View File
@@ -37,11 +37,14 @@ function probe(host) {
export async function checkStatus() {
const statusCode = await probe(HOST);
const ok = statusCode >= 200 && statusCode < 400;
return {
name,
status: "operational",
message: `Mail portal responding (HTTP ${statusCode}).`,
status: ok ? "operational" : "degraded",
message: ok
? `Mail portal responding (HTTP ${statusCode}).`
: `Unexpected response from mail portal (HTTP ${statusCode}).`,
lastUpdated: new Date().toISOString(),
};
}