ninja-reverse-proxy 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"master.d.ts","sourceRoot":"","sources":["../../../src/core/cluster/master.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAE5E,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;CACxB;AAwID,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,cAAc,iBA4FjE;AACD,wBAAsB,YAAY,CAAC,MAAM,EAAE,kBAAkB,iBAsuB5D"}
1
+ {"version":3,"file":"master.d.ts","sourceRoot":"","sources":["../../../src/core/cluster/master.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAE5E,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;CACxB;AAwID,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,cAAc,iBA4FjE;AACD,wBAAsB,YAAY,CAAC,MAAM,EAAE,kBAAkB,iBA2wB5D"}
@@ -1,8 +1,10 @@
1
1
  import http from "http";
2
2
  import https from "https";
3
+ import tls from "tls";
3
4
  import { readFileSync } from "fs";
4
5
  import fs from "node:fs";
5
6
  import net from "net";
7
+ import { tunnelWebSocket } from "../proxy/websocket.handler.js";
6
8
  import cluster, {} from "node:cluster";
7
9
  import { createClient } from "redis";
8
10
  import { workerMessageReplySchema, } from "./ipc.protocol.js";
@@ -297,18 +299,26 @@ export async function createServer(config) {
297
299
  ACTIVE_CONFIG.server.upstreams.forEach((u) => {
298
300
  registry.register({ id: u.id, url: u.url });
299
301
  });
300
- let sslOptions;
302
+ let sslOptions = { key: Buffer.alloc(0), cert: Buffer.alloc(0) };
303
+ const tlsExplicitlyEnabled = Boolean(ACTIVE_CONFIG.tls?.enabled || ACTIVE_CONFIG.server.sslKeyPath);
301
304
  try {
302
- const keyPath = ACTIVE_CONFIG.server.sslKeyPath || (fs.existsSync("/etc/ninja-proxy/certs/key.pem") ? "/etc/ninja-proxy/certs/key.pem" : "./key.pem");
303
- const certPath = ACTIVE_CONFIG.server.sslCertPath || (fs.existsSync("/etc/ninja-proxy/certs/cert.pem") ? "/etc/ninja-proxy/certs/cert.pem" : "./cert.pem");
304
- sslOptions = {
305
- key: readFileSync(keyPath),
306
- cert: readFileSync(certPath),
307
- };
305
+ const keyPath = ACTIVE_CONFIG.server.sslKeyPath || ACTIVE_CONFIG.tls?.key || (fs.existsSync("/etc/ninja-proxy/certs/key.pem") ? "/etc/ninja-proxy/certs/key.pem" : "./key.pem");
306
+ const certPath = ACTIVE_CONFIG.server.sslCertPath || ACTIVE_CONFIG.tls?.cert || (fs.existsSync("/etc/ninja-proxy/certs/cert.pem") ? "/etc/ninja-proxy/certs/cert.pem" : "./cert.pem");
307
+ if (fs.existsSync(keyPath) && fs.existsSync(certPath)) {
308
+ sslOptions = {
309
+ key: readFileSync(keyPath),
310
+ cert: readFileSync(certPath),
311
+ };
312
+ }
313
+ else if (tlsExplicitlyEnabled) {
314
+ throw new Error(`Certificate files not found: ${keyPath} or ${certPath}`);
315
+ }
308
316
  }
309
317
  catch (err) {
310
- logger.error("Master", `Failed to load TLS certificates: ${err.message}`);
311
- throw err;
318
+ if (tlsExplicitlyEnabled) {
319
+ logger.error("Master", `Failed to load TLS certificates: ${err.message}`);
320
+ throw err;
321
+ }
312
322
  }
313
323
  cluster.on("exit", (worker) => {
314
324
  const idx = WORKER_POOL.indexOf(worker);
@@ -556,7 +566,7 @@ export async function createServer(config) {
556
566
  }
557
567
  const httpServer = http.createServer((req, res) => {
558
568
  if (req.url?.startsWith("/__registry")) {
559
- httpsServer.emit("request", req, res);
569
+ httpsServer?.emit("request", req, res);
560
570
  return;
561
571
  }
562
572
  const httpsUrl = `https://${req.headers.host?.replace(String(port), String(ACTIVE_CONFIG.server.httpsPort ?? 8443))}${req.url}`;
@@ -610,225 +620,247 @@ export async function createServer(config) {
610
620
  };
611
621
  lb.incrementConnection(upstreamId);
612
622
  metricsRegistry.recordActiveConnection(upstreamId, 1);
613
- worker.send(JSON.stringify(payload), socket);
614
- socket.pause();
615
- socket.removeAllListeners();
616
- };
617
- httpServer.on("upgrade", wsUpgradeHandler);
618
- const httpsServer = https.createServer(sslOptions, async (req, res) => {
619
- const clientIP = req.headers["x-forwarded-for"] ??
620
- req.socket.remoteAddress ??
621
- "unknown";
622
- if (req.method === "OPTIONS") {
623
- res.writeHead(204, {
624
- "Access-Control-Allow-Origin": "*",
625
- "Access-Control-Allow-Methods": "GET,POST,PUT,DELETE,OPTIONS",
626
- "Access-Control-Allow-Headers": "*",
627
- "Access-Control-Allow-Credentials": "true",
623
+ if (socket instanceof tls.TLSSocket) {
624
+ const upstreamStaticConfig = ACTIVE_CONFIG.server.upstreams.find((u) => u.id === upstreamId);
625
+ const tlsConfig = upstreamStaticConfig?.tls;
626
+ tunnelWebSocket(socket, serviceInstance.url, reqFields, head, tlsConfig, () => {
627
+ lb.releaseConnection(upstreamId);
628
+ metricsRegistry.recordActiveConnection(upstreamId, -1);
628
629
  });
629
- res.end();
630
630
  return;
631
631
  }
632
- if (req.url === "/__lb-stats") {
633
- res.writeHead(200, { "Content-Type": "application/json" });
634
- res.end(JSON.stringify({
635
- strategy: ACTIVE_CONFIG.server.loadBalancing.strategy,
636
- upstreams: lb.getStats(),
637
- healthyUpstreams: [...HEALTHY_UPSTREAMS],
638
- }, null, 2));
639
- return;
632
+ try {
633
+ worker.send(JSON.stringify(payload), socket);
634
+ socket.pause();
635
+ socket.removeAllListeners();
640
636
  }
641
- if (req.url?.startsWith("/metrics") || req.url?.startsWith("/__metrics")) {
642
- const parsedUrl = new URL(req.url, `http://${req.headers.host || "localhost"}`);
643
- const tenantFilter = parsedUrl.searchParams.get("tenant") || undefined;
644
- res.writeHead(200, {
645
- "Content-Type": "text/plain; version=0.0.4; charset=utf-8",
637
+ catch (err) {
638
+ logger.error("Master", `Failed to send socket to worker: ${err.message}, tunneling directly in master`);
639
+ tunnelWebSocket(socket, serviceInstance.url, reqFields, head, undefined, () => {
640
+ lb.releaseConnection(upstreamId);
641
+ metricsRegistry.recordActiveConnection(upstreamId, -1);
646
642
  });
647
- const snapshots = await collectWorkerMetricSnapshots();
648
- const allUpstreams = [
649
- ...new Set([
650
- ...ACTIVE_CONFIG.server.upstreams.map((u) => u.id),
651
- ...registry.getAll().map((s) => s.id),
652
- ]),
653
- ];
654
- const aggregatedRegistry = new MetricsRegistry(HEALTHY_UPSTREAMS);
655
- aggregatedRegistry.mergeSnapshot(metricsRegistry.getSnapshot());
656
- for (const snap of snapshots) {
657
- aggregatedRegistry.mergeSnapshot(snap);
658
- }
659
- res.end(aggregatedRegistry.getExpositionFormat(allUpstreams, tenantFilter));
660
- return;
661
- }
662
- if (req.url === "/__registry") {
663
- res.writeHead(200, { "Content-Type": "application/json" });
664
- res.end(JSON.stringify(registry.getStats(), null, 2));
665
- return;
666
- }
667
- if (req.url === "/__ready") {
668
- const result = await readinessProbe.isReady();
669
- res.writeHead(result.ready ? 200 : 503, { "Content-Type": "application/json" });
670
- res.end(JSON.stringify(result));
671
- return;
672
- }
673
- if (req.url === "/__cache-stats") {
674
- res.writeHead(200, { "Content-Type": "application/json" });
675
- res.end(JSON.stringify(cache.getStats(), null, 2));
676
- return;
677
643
  }
678
- if (req.url === "/__registry/register" && req.method === "POST") {
679
- let body = "";
680
- req.on("data", (chunk) => {
681
- body += chunk;
682
- });
683
- req.on("end", () => {
684
- try {
685
- const { id, url, metadata } = JSON.parse(body);
686
- if (!id || !url) {
644
+ };
645
+ let httpsServer;
646
+ if (sslOptions.key.length > 0) {
647
+ httpsServer = https.createServer(sslOptions, async (req, res) => {
648
+ const clientIP = req.headers["x-forwarded-for"] ??
649
+ req.socket.remoteAddress ??
650
+ "unknown";
651
+ if (req.method === "OPTIONS") {
652
+ res.writeHead(204, {
653
+ "Access-Control-Allow-Origin": "*",
654
+ "Access-Control-Allow-Methods": "GET,POST,PUT,DELETE,OPTIONS",
655
+ "Access-Control-Allow-Headers": "*",
656
+ "Access-Control-Allow-Credentials": "true",
657
+ });
658
+ res.end();
659
+ return;
660
+ }
661
+ if (req.url === "/__lb-stats") {
662
+ res.writeHead(200, { "Content-Type": "application/json" });
663
+ res.end(JSON.stringify({
664
+ strategy: ACTIVE_CONFIG.server.loadBalancing.strategy,
665
+ upstreams: lb.getStats(),
666
+ healthyUpstreams: [...HEALTHY_UPSTREAMS],
667
+ }, null, 2));
668
+ return;
669
+ }
670
+ if (req.url?.startsWith("/metrics") || req.url?.startsWith("/__metrics")) {
671
+ const parsedUrl = new URL(req.url, `http://${req.headers.host || "localhost"}`);
672
+ const tenantFilter = parsedUrl.searchParams.get("tenant") || undefined;
673
+ res.writeHead(200, {
674
+ "Content-Type": "text/plain; version=0.0.4; charset=utf-8",
675
+ });
676
+ const snapshots = await collectWorkerMetricSnapshots();
677
+ const allUpstreams = [
678
+ ...new Set([
679
+ ...ACTIVE_CONFIG.server.upstreams.map((u) => u.id),
680
+ ...registry.getAll().map((s) => s.id),
681
+ ]),
682
+ ];
683
+ const aggregatedRegistry = new MetricsRegistry(HEALTHY_UPSTREAMS);
684
+ aggregatedRegistry.mergeSnapshot(metricsRegistry.getSnapshot());
685
+ for (const snap of snapshots) {
686
+ aggregatedRegistry.mergeSnapshot(snap);
687
+ }
688
+ res.end(aggregatedRegistry.getExpositionFormat(allUpstreams, tenantFilter));
689
+ return;
690
+ }
691
+ if (req.url === "/__registry") {
692
+ res.writeHead(200, { "Content-Type": "application/json" });
693
+ res.end(JSON.stringify(registry.getStats(), null, 2));
694
+ return;
695
+ }
696
+ if (req.url === "/__ready") {
697
+ const result = await readinessProbe.isReady();
698
+ res.writeHead(result.ready ? 200 : 503, { "Content-Type": "application/json" });
699
+ res.end(JSON.stringify(result));
700
+ return;
701
+ }
702
+ if (req.url === "/__cache-stats") {
703
+ res.writeHead(200, { "Content-Type": "application/json" });
704
+ res.end(JSON.stringify(cache.getStats(), null, 2));
705
+ return;
706
+ }
707
+ if (req.url === "/__registry/register" && req.method === "POST") {
708
+ let body = "";
709
+ req.on("data", (chunk) => {
710
+ body += chunk;
711
+ });
712
+ req.on("end", () => {
713
+ try {
714
+ const { id, url, metadata } = JSON.parse(body);
715
+ if (!id || !url) {
716
+ res.writeHead(400);
717
+ res.end(JSON.stringify({ error: "id and url are required" }));
718
+ return;
719
+ }
720
+ const service = registry.register({ id, url, metadata });
721
+ res.writeHead(201, { "Content-Type": "application/json" });
722
+ res.end(JSON.stringify({
723
+ message: `Service ${id} registered!`,
724
+ service,
725
+ }));
726
+ }
727
+ catch {
687
728
  res.writeHead(400);
688
- res.end(JSON.stringify({ error: "id and url are required" }));
689
- return;
729
+ res.end(JSON.stringify({ error: "Invalid JSON body" }));
730
+ }
731
+ });
732
+ return;
733
+ }
734
+ if (req.url?.startsWith("/__registry/heartbeat/") && req.method === "PUT") {
735
+ const id = req.url.substring("/__registry/heartbeat/".length);
736
+ if (id) {
737
+ const success = registry.heartbeat(id);
738
+ if (success) {
739
+ res.writeHead(200, { "Content-Type": "application/json" });
740
+ res.end(JSON.stringify({ status: "OK", message: `Heartbeat for ${id} recorded` }));
741
+ }
742
+ else {
743
+ res.writeHead(404, { "Content-Type": "application/json" });
744
+ res.end(JSON.stringify({ error: `Service ${id} not found` }));
690
745
  }
691
- const service = registry.register({ id, url, metadata });
692
- res.writeHead(201, { "Content-Type": "application/json" });
693
- res.end(JSON.stringify({
694
- message: `Service ${id} registered!`,
695
- service,
696
- }));
697
- }
698
- catch {
699
- res.writeHead(400);
700
- res.end(JSON.stringify({ error: "Invalid JSON body" }));
701
- }
702
- });
703
- return;
704
- }
705
- if (req.url?.startsWith("/__registry/heartbeat/") && req.method === "PUT") {
706
- const id = req.url.substring("/__registry/heartbeat/".length);
707
- if (id) {
708
- const success = registry.heartbeat(id);
709
- if (success) {
710
- res.writeHead(200, { "Content-Type": "application/json" });
711
- res.end(JSON.stringify({ status: "OK", message: `Heartbeat for ${id} recorded` }));
712
746
  }
713
747
  else {
714
- res.writeHead(404, { "Content-Type": "application/json" });
715
- res.end(JSON.stringify({ error: `Service ${id} not found` }));
748
+ res.writeHead(400, { "Content-Type": "application/json" });
749
+ res.end(JSON.stringify({ error: "Service id is required" }));
716
750
  }
751
+ return;
717
752
  }
718
- else {
719
- res.writeHead(400, { "Content-Type": "application/json" });
720
- res.end(JSON.stringify({ error: "Service id is required" }));
721
- }
722
- return;
723
- }
724
- if (req.url?.startsWith("/__registry/deregister/") && req.method === "DELETE") {
725
- const id = req.url.substring("/__registry/deregister/".length);
726
- if (id) {
727
- const success = registry.deregister(id);
728
- if (success) {
729
- res.writeHead(200, { "Content-Type": "application/json" });
730
- res.end(JSON.stringify({ message: `Service ${id} deregistered` }));
753
+ if (req.url?.startsWith("/__registry/deregister/") && req.method === "DELETE") {
754
+ const id = req.url.substring("/__registry/deregister/".length);
755
+ if (id) {
756
+ const success = registry.deregister(id);
757
+ if (success) {
758
+ res.writeHead(200, { "Content-Type": "application/json" });
759
+ res.end(JSON.stringify({ message: `Service ${id} deregistered` }));
760
+ }
761
+ else {
762
+ res.writeHead(404, { "Content-Type": "application/json" });
763
+ res.end(JSON.stringify({ error: `Service ${id} not found` }));
764
+ }
731
765
  }
732
766
  else {
733
- res.writeHead(404, { "Content-Type": "application/json" });
734
- res.end(JSON.stringify({ error: `Service ${id} not found` }));
767
+ res.writeHead(400, { "Content-Type": "application/json" });
768
+ res.end(JSON.stringify({ error: "Service id is required" }));
735
769
  }
736
- }
737
- else {
738
- res.writeHead(400, { "Content-Type": "application/json" });
739
- res.end(JSON.stringify({ error: "Service id is required" }));
740
- }
741
- return;
742
- }
743
- const url = new URL(req.url, `https://${req.headers.host}`);
744
- const pathRule = ACTIVE_CONFIG.server.paths.find((p) => url.pathname.startsWith(p.path));
745
- const activeLimitConfig = pathRule?.rateLimit ?? ACTIVE_CONFIG.server.rateLimit;
746
- if (activeLimitConfig && pathRule) {
747
- const routeLimiter = rateLimiters.get(pathRule.path);
748
- if (routeLimiter && !(await routeLimiter.isAllowed(clientIP))) {
749
- const retryAfter = Math.ceil((routeLimiter.getResetTime(clientIP) - Date.now()) / 1000);
750
- res.writeHead(429, {
751
- "Content-Type": "application/json",
752
- "Retry-After": retryAfter.toString(),
753
- "X-RateLimit-Limit": activeLimitConfig.maxRequests.toString(),
754
- "X-RateLimit-Remaining": "0",
755
- "X-RateLimit-Reset": routeLimiter.getResetTime(clientIP).toString(),
756
- "X-RateLimit-Algorithm": routeLimiter.getAlgorithm(),
757
- });
758
- res.end(JSON.stringify({
759
- error: "Too Many Requests",
760
- retryAfter: `${retryAfter}s`,
761
- algorithm: routeLimiter.getAlgorithm(),
762
- }));
763
770
  return;
764
771
  }
765
- }
766
- if (req.method === "GET") {
767
- const skipCache = url.pathname.startsWith("/api/upload/") || (pathRule?.cache?.enabled === false);
768
- if (!skipCache) {
769
- const cacheKey = cache.buildKey("GET", url.pathname + url.search);
770
- const cachedJson = await cache.get(cacheKey);
771
- if (cachedJson) {
772
- try {
773
- const cached = JSON.parse(cachedJson);
774
- res.writeHead(cached.statusCode ?? 200, {
775
- ...(cached.headers || {}),
776
- "X-Cache": "HIT",
777
- });
778
- const bodyBuf = cached.isCompressed && cached.encoding === "gzip"
779
- ? Buffer.from(cached.body, "base64")
780
- : cached.body;
781
- res.end(bodyBuf);
782
- const tenantId = req.headers["x-tenant-id"] ?? "none";
783
- metricsRegistry.recordCacheOp("hit");
784
- metricsRegistry.recordRequest("GET", req.url ?? "", cached.statusCode ?? 200, "cache", 0, tenantId);
785
- writeAccessLog(ACTIVE_CONFIG.server.accessLog, clientIP, req.method, req.url ?? "", cached.statusCode ?? 200, Buffer.byteLength(bodyBuf), 0, req.headers["user-agent"] ?? "-");
786
- if (ACTIVE_CONFIG.observability?.tenantDelivery?.mode === "webhook") {
787
- tenantLogStreamer.queueLog(tenantId, {
788
- timestamp: new Date().toISOString(),
789
- clientIp: clientIP,
790
- method: "GET",
791
- url: req.url ?? "",
792
- statusCode: cached.statusCode ?? 200,
793
- bytesSent: Buffer.byteLength(bodyBuf),
794
- latencyMs: 0,
795
- userAgent: req.headers["user-agent"] ?? "-",
772
+ const url = new URL(req.url, `https://${req.headers.host}`);
773
+ const pathRule = ACTIVE_CONFIG.server.paths.find((p) => url.pathname.startsWith(p.path));
774
+ const activeLimitConfig = pathRule?.rateLimit ?? ACTIVE_CONFIG.server.rateLimit;
775
+ if (activeLimitConfig && pathRule) {
776
+ const routeLimiter = rateLimiters.get(pathRule.path);
777
+ if (routeLimiter && !(await routeLimiter.isAllowed(clientIP))) {
778
+ const retryAfter = Math.ceil((routeLimiter.getResetTime(clientIP) - Date.now()) / 1000);
779
+ res.writeHead(429, {
780
+ "Content-Type": "application/json",
781
+ "Retry-After": retryAfter.toString(),
782
+ "X-RateLimit-Limit": activeLimitConfig.maxRequests.toString(),
783
+ "X-RateLimit-Remaining": "0",
784
+ "X-RateLimit-Reset": routeLimiter.getResetTime(clientIP).toString(),
785
+ "X-RateLimit-Algorithm": routeLimiter.getAlgorithm(),
786
+ });
787
+ res.end(JSON.stringify({
788
+ error: "Too Many Requests",
789
+ retryAfter: `${retryAfter}s`,
790
+ algorithm: routeLimiter.getAlgorithm(),
791
+ }));
792
+ return;
793
+ }
794
+ }
795
+ if (req.method === "GET") {
796
+ const skipCache = url.pathname.startsWith("/api/upload/") || (pathRule?.cache?.enabled === false);
797
+ if (!skipCache) {
798
+ const cacheKey = cache.buildKey("GET", url.pathname + url.search);
799
+ const cachedJson = await cache.get(cacheKey);
800
+ if (cachedJson) {
801
+ try {
802
+ const cached = JSON.parse(cachedJson);
803
+ res.writeHead(cached.statusCode ?? 200, {
804
+ ...(cached.headers || {}),
805
+ "X-Cache": "HIT",
796
806
  });
807
+ const bodyBuf = cached.isCompressed && cached.encoding === "gzip"
808
+ ? Buffer.from(cached.body, "base64")
809
+ : cached.body;
810
+ res.end(bodyBuf);
811
+ const tenantId = req.headers["x-tenant-id"] ?? "none";
812
+ metricsRegistry.recordCacheOp("hit");
813
+ metricsRegistry.recordRequest("GET", req.url ?? "", cached.statusCode ?? 200, "cache", 0, tenantId);
814
+ writeAccessLog(ACTIVE_CONFIG.server.accessLog, clientIP, req.method, req.url ?? "", cached.statusCode ?? 200, Buffer.byteLength(bodyBuf), 0, req.headers["user-agent"] ?? "-");
815
+ if (ACTIVE_CONFIG.observability?.tenantDelivery?.mode === "webhook") {
816
+ tenantLogStreamer.queueLog(tenantId, {
817
+ timestamp: new Date().toISOString(),
818
+ clientIp: clientIP,
819
+ method: "GET",
820
+ url: req.url ?? "",
821
+ statusCode: cached.statusCode ?? 200,
822
+ bytesSent: Buffer.byteLength(bodyBuf),
823
+ latencyMs: 0,
824
+ userAgent: req.headers["user-agent"] ?? "-",
825
+ });
826
+ }
827
+ return;
828
+ }
829
+ catch {
830
+ // fallback if cache corrup
797
831
  }
798
- return;
799
- }
800
- catch {
801
- // fallback if cache corrup
802
832
  }
803
833
  }
804
834
  }
805
- }
806
- if (["POST", "PUT", "PATCH", "DELETE"].includes(req.method ?? "")) {
807
- await cache.invalidate(url.pathname);
808
- }
809
- const contentLength = parseInt(req.headers["content-length"] ?? "0", 10);
810
- if (contentLength > 10 * 1024 * 1024) {
811
- res.writeHead(413, { "Content-Type": "application/json" });
812
- res.end(JSON.stringify({ error: "Payload Too Large" }));
813
- return;
814
- }
815
- const chunks = [];
816
- req.on("data", (chunk) => {
817
- chunks.push(chunk);
818
- });
819
- req.on("end", () => {
820
- const bodyBuffer = Buffer.concat(chunks);
821
- const body = bodyBuffer.length > 0 ? bodyBuffer.toString("binary") : null;
822
- const payload = {
823
- requestType: req.method ?? "GET",
824
- headers: req.headers,
825
- body: body,
826
- url: `${req.url}`,
827
- };
828
- dispatchToWorker(payload, clientIP, res);
835
+ if (["POST", "PUT", "PATCH", "DELETE"].includes(req.method ?? "")) {
836
+ await cache.invalidate(url.pathname);
837
+ }
838
+ const contentLength = parseInt(req.headers["content-length"] ?? "0", 10);
839
+ if (contentLength > 10 * 1024 * 1024) {
840
+ res.writeHead(413, { "Content-Type": "application/json" });
841
+ res.end(JSON.stringify({ error: "Payload Too Large" }));
842
+ return;
843
+ }
844
+ const chunks = [];
845
+ req.on("data", (chunk) => {
846
+ chunks.push(chunk);
847
+ });
848
+ req.on("end", () => {
849
+ const bodyBuffer = Buffer.concat(chunks);
850
+ const body = bodyBuffer.length > 0 ? bodyBuffer.toString("binary") : null;
851
+ const payload = {
852
+ requestType: req.method ?? "GET",
853
+ headers: req.headers,
854
+ body: body,
855
+ url: `${req.url}`,
856
+ };
857
+ dispatchToWorker(payload, clientIP, res);
858
+ });
829
859
  });
830
- });
831
- httpsServer.on("upgrade", wsUpgradeHandler);
860
+ }
861
+ if (httpsServer) {
862
+ httpsServer.on("upgrade", wsUpgradeHandler);
863
+ }
832
864
  let isShuttingDown = false;
833
865
  async function gracefulShutdown(signal) {
834
866
  if (isShuttingDown)
@@ -837,38 +869,44 @@ export async function createServer(config) {
837
869
  logger.info("Master", `Received ${signal} — draining and shutting down`);
838
870
  await cache.disconnect();
839
871
  httpServer.close();
840
- httpsServer.close(() => {
872
+ if (httpsServer) {
873
+ httpsServer.close(() => {
874
+ process.exit(0);
875
+ });
876
+ }
877
+ else {
841
878
  process.exit(0);
842
- });
879
+ }
843
880
  }
844
881
  process.on("SIGTERM", () => void gracefulShutdown("SIGTERM"));
845
882
  process.on("SIGINT", () => void gracefulShutdown("SIGINT"));
846
883
  await new Promise((r) => setTimeout(r, 3000));
847
884
  await initialHealthCheck(ACTIVE_CONFIG.server.upstreams, HEALTHY_UPSTREAMS, lb);
848
885
  httpServer.listen(port);
849
- httpsServer.listen(ACTIVE_CONFIG.server.httpsPort ?? 8443, () => {
850
- if (healthCheckInterval)
851
- clearInterval(healthCheckInterval);
852
- healthCheckInterval = startHealthChecks(ACTIVE_CONFIG.server.upstreams, HEALTHY_UPSTREAMS, lb);
853
- if (!passiveProbeRegistered) {
854
- registerPassiveProbeListener(HEALTHY_UPSTREAMS, lb);
855
- passiveProbeRegistered = true;
856
- }
857
- readinessProbe.register({
858
- name: "upstream-available",
859
- check: async () => HEALTHY_UPSTREAMS.size > 0,
860
- });
861
- readinessProbe.register({
862
- name: "cache-connected",
863
- check: async () => {
864
- try {
865
- return cache.isConnected?.() ?? true;
866
- }
867
- catch {
868
- return false;
869
- }
870
- },
871
- });
886
+ if (httpsServer) {
887
+ httpsServer.listen(ACTIVE_CONFIG.tls?.httpsPort ?? ACTIVE_CONFIG.server.httpsPort ?? 8443);
888
+ }
889
+ if (healthCheckInterval)
890
+ clearInterval(healthCheckInterval);
891
+ healthCheckInterval = startHealthChecks(ACTIVE_CONFIG.server.upstreams, HEALTHY_UPSTREAMS, lb);
892
+ if (!passiveProbeRegistered) {
893
+ registerPassiveProbeListener(HEALTHY_UPSTREAMS, lb);
894
+ passiveProbeRegistered = true;
895
+ }
896
+ readinessProbe.register({
897
+ name: "upstream-available",
898
+ check: async () => HEALTHY_UPSTREAMS.size > 0,
899
+ });
900
+ readinessProbe.register({
901
+ name: "cache-connected",
902
+ check: async () => {
903
+ try {
904
+ return cache.isConnected?.() ?? true;
905
+ }
906
+ catch {
907
+ return false;
908
+ }
909
+ },
872
910
  });
873
911
  }
874
912
  }
@@ -1 +1 @@
1
- {"version":3,"file":"master.js","sourceRoot":"","sources":["../../../src/core/cluster/master.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"master.js","sourceRoot":"","sources":["../../../src/core/cluster/master.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ninja-reverse-proxy",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "description": "A production-grade reverse proxy with load balancing, circuit breaker, sticky sessions, and dynamic service registry.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",