@@ -12,7 +12,8 @@ import {
1212 stopAllServices ,
1313} from "./managers/service-manager.ts" ;
1414import { setupApiRoutes , setupDocsRoutes } from "./api.service.ts" ;
15- import { createJWT , JWTPayload , setupAdminAPIRoutes } from "./api.admin.ts" ;
15+ import { setupAdminAPIRoutes } from "./api.admin.ts" ;
16+ import { setupJWTRoutes } from "./api.jwt.ts" ;
1617import { Context } from "hono" ;
1718import openapi from "./openapi.ts" ;
1819import { setupFunctionAPIRoutes } from "./api.function.ts" ;
@@ -31,18 +32,6 @@ export async function createNanoEdgeRT(
3132 app . use ( "*" , cors ( ) ) ;
3233 app . use ( "*" , logger ( ) ) ;
3334
34- // Localhost-only middleware
35- const localhostOnly = async ( c : Context , next : ( ) => Promise < void > ) => {
36- const clientIP = c . req . header ( "x-forwarded-for" ) || c . req . header ( "x-real-ip" ) || "127.0.0.1" ;
37- const allowedIPs = [ "127.0.0.1" , "::1" , "localhost" ] ;
38-
39- if ( ! allowedIPs . includes ( clientIP ) ) {
40- return c . json ( { error : "Access denied. Only localhost is allowed." } , 403 ) ;
41- }
42-
43- await next ( ) ;
44- } ;
45-
4635 const status = ( c : Context ) => {
4736 const now = new Date ( ) ;
4837 const upTimeMs = now . getTime ( ) - new Date ( startTime ) . getTime ( ) ;
@@ -67,42 +56,12 @@ export async function createNanoEdgeRT(
6756 app . get ( "/status" , status ) ;
6857 app . get ( "/static/*" , serveStatic ( { root : "./" } ) ) ;
6958
70- // JWT creation API - localhost only
71- app . post ( "/jwt/create" , localhostOnly , async ( c : Context ) => {
72- try {
73- const body = await c . req . json ( ) ;
74- const { sub, exp, ...additionalClaims } = body ;
75-
76- if ( ! sub || ! exp ) {
77- return c . json ( {
78- error : "Missing required fields: 'sub' (subject) and 'exp' (expiration)" ,
79- } , 400 ) ;
80- }
81-
82- const payload : JWTPayload = {
83- sub,
84- exp,
85- ...additionalClaims ,
86- } ;
87-
88- const token = await createJWT ( payload ) ;
89- return c . json ( {
90- token,
91- payload,
92- } , 200 ) ;
93- } catch ( error ) {
94- console . error ( "JWT creation error:" , error ) ;
95- return c . json ( {
96- error : "Failed to create JWT" ,
97- message : error instanceof Error ? error . message : String ( error ) ,
98- } , 500 ) ;
99- }
100- } ) ;
101-
10259 app . route ( "/api/docs" , setupDocsRoutes ( serviceManagerState ) ) ;
10360 app . route ( "/api/v2" , setupApiRoutes ( serviceManagerState ) ) ;
10461 app . route ( "/functions/v2" , setupFunctionAPIRoutes ( dbContext ) ) ;
10562 app . route ( "/admin-api/v2" , setupAdminAPIRoutes ( dbContext ) ) ;
63+ app . route ( "/jwt" , setupJWTRoutes ( ) ) ;
64+
10665 const abortController = new AbortController ( ) ;
10766 return [ app , dbContext . config ?. main_port || 8000 , abortController , serviceManagerState ] ;
10867}
0 commit comments