Added support for Caddy healthchecks
This commit is contained in:
parent
a1a23e20b9
commit
1bf9a7d153
3 changed files with 76 additions and 0 deletions
28
.vscode/launch.json
vendored
Normal file
28
.vscode/launch.json
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Next.js: debug server-side",
|
||||||
|
"type": "node-terminal",
|
||||||
|
"request": "launch",
|
||||||
|
"command": "npm run dev"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Next.js: debug client-side",
|
||||||
|
"type": "chrome",
|
||||||
|
"request": "launch",
|
||||||
|
"url": "http://localhost:3000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Next.js: debug full stack",
|
||||||
|
"type": "node-terminal",
|
||||||
|
"request": "launch",
|
||||||
|
"command": "npm run dev",
|
||||||
|
"serverReadyAction": {
|
||||||
|
"pattern": "- Local:.+(https?://.+)",
|
||||||
|
"uriFormat": "%s",
|
||||||
|
"action": "debugWithChrome"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
15
app/api/caddy/config/route.ts
Normal file
15
app/api/caddy/config/route.ts
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
// Import the NextJS API route handler
|
||||||
|
import { getConfig } from '@/lib/utils';
|
||||||
|
import { NextResponse } from 'next/server';
|
||||||
|
|
||||||
|
// Define the route handler function
|
||||||
|
export async function GET() {
|
||||||
|
let caddyConfig = await getConfig();
|
||||||
|
|
||||||
|
return new NextResponse(JSON.stringify(caddyConfig), {
|
||||||
|
status: 200,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
33
app/api/caddy/routes/requests/route.ts
Normal file
33
app/api/caddy/routes/requests/route.ts
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
import { getConfig, getRouteUpstreams, getUpstreamRequests } from '@/lib/utils';
|
||||||
|
import { NextApiRequest } from 'next';
|
||||||
|
import { NextResponse } from 'next/server';
|
||||||
|
|
||||||
|
export async function POST(req: Request) {
|
||||||
|
|
||||||
|
//TODO, Christ, maybe I'm not a dev
|
||||||
|
if (!true) {
|
||||||
|
return new NextResponse(JSON.stringify({"error": "An error has occurred. Please check for a valid body and retry."}), {
|
||||||
|
status: 400,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'appliation/json',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
let route: Route = await req.json();
|
||||||
|
let upstreams: UpstreamRequest[] = await getUpstreamRequests(route);
|
||||||
|
let routeUpstreams: Upstream[] = getRouteUpstreams(route);
|
||||||
|
|
||||||
|
let upstreamsRequested: UpstreamRequest[] = upstreams.filter(upstream => {
|
||||||
|
return routeUpstreams.find(routeUpstream => {
|
||||||
|
return routeUpstream.dial === upstream.address;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return new NextResponse(JSON.stringify(upstreamsRequested), {
|
||||||
|
status: 200,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue