update apn server

This commit is contained in:
Ryan Vogel
2026-03-29 16:26:16 -04:00
parent eadb0e25da
commit 9a8b2ae0b1
4 changed files with 27 additions and 6 deletions
+3
View File
@@ -76,6 +76,9 @@ export const ServeCommand = cmd({
const relaySecret = input || randomBytes(18).toString("base64url")
if (!input) {
console.log("experimental push relay secret generated")
console.log(
"set --relay-secret or OPENCODE_EXPERIMENTAL_PUSH_RELAY_SECRET to keep push registrations stable across server restarts",
)
}
if (relayURL && relaySecret) {
const host = server.hostname ?? opts.hostname
@@ -1,4 +1,5 @@
import os from "node:os"
import { createHash } from "node:crypto"
import { SessionID } from "@/session/schema"
import { GlobalBus } from "@/bus/global"
import { Log } from "@/util/log"
@@ -56,6 +57,11 @@ function norm(input: string) {
return input.replace(/\/+$/, "")
}
function secretHash(input: string) {
if (!input) return "none"
return `${createHash("sha256").update(input).digest("hex").slice(0, 12)}...`
}
/**
* Classify an IPv4 address into a reachability tier.
* Lower number = more likely reachable from an external/overlay network device.
@@ -256,6 +262,7 @@ async function post(input: { type: Type; sessionID: string }) {
console.log("[ APN RELAY ] posting event", {
relayURL: next.relayURL,
secretHash: secretHash(next.relaySecret),
type: input.type,
sessionID: input.sessionID,
title: content.title,
@@ -263,6 +270,7 @@ async function post(input: { type: Type; sessionID: string }) {
log.info("[ APN RELAY ] posting event", {
relayURL: next.relayURL,
secretHash: secretHash(next.relaySecret),
type: input.type,
sessionID: input.sessionID,
title: content.title,
@@ -285,6 +293,7 @@ async function post(input: { type: Type; sessionID: string }) {
if (res.ok) {
console.log("[ APN RELAY ] relay accepted event", {
status: res.status,
secretHash: secretHash(next.relaySecret),
type: input.type,
sessionID: input.sessionID,
title: content.title,
@@ -292,6 +301,7 @@ async function post(input: { type: Type; sessionID: string }) {
log.info("[ APN RELAY ] relay accepted event", {
status: res.status,
secretHash: secretHash(next.relaySecret),
type: input.type,
sessionID: input.sessionID,
title: content.title,