feat(federation): Log signatures generated when serving entites via HTTP

This commit is contained in:
Jesse Wierzbinski 2024-07-26 17:32:03 +02:00
parent 1216e278e8
commit aca837cb16
No known key found for this signature in database
2 changed files with 24 additions and 2 deletions

View file

@ -2,6 +2,7 @@ import { applyConfig, handleZodError } from "@/api";
import { errorResponse, response } from "@/response";
import type { Hono } from "@hono/hono";
import { zValidator } from "@hono/zod-validator";
import { getLogger } from "@logtape/logtape";
import { SignatureConstructor } from "@lysand-org/federation";
import type { Entity } from "@lysand-org/federation/types";
import { and, eq, inArray, sql } from "drizzle-orm";
@ -99,13 +100,23 @@ export default (app: Hono) =>
const author = foundAuthor ?? User.getServerActor();
const { headers } = await (
const { headers, signedString } = await (
await SignatureConstructor.fromStringKey(
author.data.privateKey ?? "",
author.getUri(),
)
).sign("POST", reqUrl, objectString);
if (config.debug.federation) {
const logger = getLogger("federation");
// Log public key
logger.debug`Sender public key: ${author.data.publicKey}`;
// Log signed string
logger.debug`Signed string:\n${signedString}`;
}
return response(objectString, 200, {
"Content-Type": "application/json",
...headers.toJSON(),

View file

@ -2,6 +2,7 @@ import { applyConfig, handleZodError } from "@/api";
import { errorResponse, redirect, response } from "@/response";
import type { Hono } from "@hono/hono";
import { zValidator } from "@hono/zod-validator";
import { getLogger } from "@logtape/logtape";
import { SignatureConstructor } from "@lysand-org/federation";
import { z } from "zod";
import { config } from "~/packages/config-manager";
@ -83,13 +84,23 @@ export default (app: Hono) =>
reqUrl.protocol = "https:";
}
const { headers } = await (
const { headers, signedString } = await (
await SignatureConstructor.fromStringKey(
user.data.privateKey ?? "",
user.getUri(),
)
).sign("POST", reqUrl, userString);
if (config.debug.federation) {
const logger = getLogger("federation");
// Log public key
logger.debug`Sender public key: ${user.data.publicKey}`;
// Log signed string
logger.debug`Signed string:\n${signedString}`;
}
return response(userString, 200, {
"Content-Type": "application/json",
...headers.toJSON(),