fix: log all webhook host requests

This commit is contained in:
2026-07-18 14:10:08 +02:00
parent 3388049ecc
commit 5808355b46
3 changed files with 58 additions and 2 deletions
+5 -1
View File
@@ -12,7 +12,7 @@ import {
import { formatError, requireEnv } from "../../core/contracts.js";
import { type PublicationContext, safeFailure } from "../publication/status.js";
import { log, pumpDeliveries, pumpOutbox } from "./handlers/workers.js";
import { handleHttp } from "./server.js";
import { handleHttp, observeHttpRequest } from "./server.js";
async function main(): Promise<void> {
const serverUrl = validateServerUrl(requireEnv("GITEA_SERVER_URL"));
@@ -97,6 +97,10 @@ async function main(): Promise<void> {
retentionTimer.unref();
const server = createServer((request, response) => {
observeHttpRequest(request, response, (entry) => {
const level = entry.statusCode >= 500 ? "error" : "info";
console.log(log(level, "HTTP request", { ...entry }));
});
handleHttp(request, response, {
store,
webhookSecret,
+30
View File
@@ -10,6 +10,36 @@ import {
const bodyLimit = 1024 * 1024;
class BodyTooLarge extends Error {}
export interface HttpRequestLog {
method: string;
path: string;
statusCode: number;
durationMs: number;
completed: boolean;
}
export function observeHttpRequest(
request: IncomingMessage,
response: ServerResponse,
write: (entry: HttpRequestLog) => void,
): void {
const startedAt = Date.now();
let observed = false;
const observe = () => {
if (observed) return;
observed = true;
write({
method: request.method || "UNKNOWN",
path: request.url || "",
statusCode: response.statusCode,
durationMs: Date.now() - startedAt,
completed: response.writableFinished,
});
};
response.once("finish", observe);
response.once("close", observe);
}
export async function handleHttp(
request: IncomingMessage,
response: ServerResponse,