INNER CODE UNIT · TypeScript
buildApp
im4codes/imcodes · server/src/index.ts:95
export function buildApp(env: Env) {
const app = new Hono<{ Bindings: Env }>();
// Inject env into every request context
app.use('*', async (c, next) => {
if (!c.env) (c as unknown as { env: Env }).env = {} as Env;
Object.assign(c.env, env);
await next();
});
// Extract real client IP.
// Priority: REAL_IP_HEADER (CDN-injected, default cf-connecting-ip) → XFF via trusted proxies → socket IP.
// Runs once per request; routes read c.get('clientIp') — never raw headers.
const realIpHeader = env.REAL_IP_HEADER ?? 'cf-connecting-ip';
const originalHostHeader = env.ORIGINAL_HOST_HEADER ?? 'x-original-host';
const trust = proxyAddr.compile(
env.TRUSTED_PROXIES
? env.TRUSTED_PROXIES.split(',').map((s) => s.trim()).filter(Boolean)