@j3r3mcdev/oast-server 1.1.1 → 1.1.3

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.
Files changed (191) hide show
  1. package/.github/workflows/ci.yml +29 -29
  2. package/.github/workflows/publish.yml +31 -31
  3. package/README.md +192 -192
  4. package/dist/api/controllers/__tests__/tasks.controller.test.d.ts +1 -0
  5. package/dist/api/controllers/events.controller.d.ts +6 -0
  6. package/dist/api/controllers/health.controller.d.ts +4 -0
  7. package/dist/api/controllers/index.d.ts +0 -0
  8. package/dist/api/controllers/tasks.controller.d.ts +40 -0
  9. package/dist/api/dto/__tests__/create-task.dto.test.d.ts +1 -0
  10. package/dist/api/dto/__tests__/filter-tasks.dto.test.d.ts +1 -0
  11. package/dist/api/dto/create-task.dto.d.ts +9 -0
  12. package/dist/api/dto/filter-tasks.dto.d.ts +8 -0
  13. package/dist/api/services/__tests__/events.service.test.d.ts +1 -0
  14. package/dist/api/services/__tests__/tasks.service.test.d.ts +1 -0
  15. package/dist/api/services/events.service.d.ts +8 -0
  16. package/dist/api/services/tasks.service.d.ts +22 -0
  17. package/dist/api/sse/events.stream.d.ts +25 -0
  18. package/dist/bootstrap.d.ts +1 -0
  19. package/dist/bootstrap.js +76 -0
  20. package/dist/config/constants.d.ts +0 -0
  21. package/dist/config/env.d.ts +0 -0
  22. package/dist/core/__tests__/core-router.test.d.ts +1 -0
  23. package/dist/core/__tests__/core-server.test.d.ts +1 -0
  24. package/dist/core/__tests__/event.normalizer.test.d.ts +1 -0
  25. package/dist/core/__tests__/event.router.test.d.ts +1 -0
  26. package/dist/core/__tests__/logger.test.d.ts +1 -0
  27. package/dist/core/__tests__/storage-manager.test.d.ts +1 -0
  28. package/dist/core/event.normalizer.d.ts +10 -0
  29. package/dist/core/event.router.d.ts +7 -0
  30. package/dist/core/http/__tests__/adapter-node.test.d.ts +1 -0
  31. package/dist/core/http/__tests__/body-parser-multipart.test.d.ts +1 -0
  32. package/dist/core/http/__tests__/body-parser-raw.test.d.ts +1 -0
  33. package/dist/core/http/__tests__/body-parser-text.test.d.ts +1 -0
  34. package/dist/core/http/__tests__/compile-path.test.d.ts +1 -0
  35. package/dist/core/http/__tests__/middleware-pipeline.test.d.ts +1 -0
  36. package/dist/core/http/__tests__/request.test.d.ts +1 -0
  37. package/dist/core/http/__tests__/response.test.d.ts +1 -0
  38. package/dist/core/http/__tests__/router-match.test.d.ts +1 -0
  39. package/dist/core/http/adapter-node.d.ts +8 -0
  40. package/dist/core/http/buildRequest.d.ts +2 -0
  41. package/dist/core/http/compile-path.d.ts +13 -0
  42. package/dist/core/http/errors.d.ts +9 -0
  43. package/dist/core/http/http-server.d.ts +7 -0
  44. package/dist/core/http/index.d.ts +0 -0
  45. package/dist/core/http/main.d.ts +0 -0
  46. package/dist/core/http/middleware.d.ts +12 -0
  47. package/dist/core/http/request.d.ts +35 -0
  48. package/dist/core/http/response.d.ts +17 -0
  49. package/dist/core/http/router.d.ts +28 -0
  50. package/dist/core/http/utils.d.ts +0 -0
  51. package/dist/core/id-generator.d.ts +3 -0
  52. package/dist/core/logger.d.ts +29 -0
  53. package/dist/core/router.d.ts +16 -0
  54. package/dist/core/server.d.ts +25 -0
  55. package/dist/core/storage.d.ts +24 -0
  56. package/dist/index.d.ts +9 -0
  57. package/dist/index.js +19 -74
  58. package/dist/listeners/api/__tests__/api.controller.test.d.ts +1 -0
  59. package/dist/listeners/api/__tests__/api.extractor.test.d.ts +1 -0
  60. package/dist/listeners/api/__tests__/api.listener.test.d.ts +1 -0
  61. package/dist/listeners/api/__tests__/api.routes.test.d.ts +1 -0
  62. package/dist/listeners/api/__tests__/api.sse.test.d.ts +1 -0
  63. package/dist/listeners/api/api.controllers.d.ts +9 -0
  64. package/dist/listeners/api/api.extractor.d.ts +5 -0
  65. package/dist/listeners/api/api.listener.d.ts +17 -0
  66. package/dist/listeners/api/api.routes.d.ts +5 -0
  67. package/dist/listeners/api/api.sse.d.ts +10 -0
  68. package/dist/listeners/dns/__tests__/dns.test.d.ts +1 -0
  69. package/dist/listeners/dns/dns.extractor.d.ts +8 -0
  70. package/dist/listeners/dns/dns.listener.d.ts +15 -0
  71. package/dist/listeners/http/__tests__/http.extractor.test.d.ts +1 -0
  72. package/dist/listeners/http/__tests__/http.listener.test.d.ts +1 -0
  73. package/dist/listeners/http/http.extractor.d.ts +11 -0
  74. package/dist/listeners/http/http.listener.d.ts +17 -0
  75. package/dist/listeners/listener.interface.d.ts +4 -0
  76. package/dist/listeners/smtp/__tests__/smtp.extractor.test.d.ts +1 -0
  77. package/dist/listeners/smtp/__tests__/smtp.listener.test.d.ts +1 -0
  78. package/dist/listeners/smtp/smtp.extractor.d.ts +12 -0
  79. package/dist/listeners/smtp/smtp.listener.d.ts +13 -0
  80. package/dist/listeners/ssrf/__tests__/ssrf.extractor.test.d.ts +1 -0
  81. package/dist/listeners/ssrf/__tests__/ssrf.listener.test.d.ts +1 -0
  82. package/dist/listeners/ssrf/__tests__/ssrf.listener.test.js +4 -16
  83. package/dist/listeners/ssrf/ssrf.extractor.d.ts +10 -0
  84. package/dist/listeners/ssrf/ssrf.listener.d.ts +8 -0
  85. package/dist/listeners/tcp/tcp.extractor.d.ts +4 -0
  86. package/dist/listeners/tcp/tcp.listener.d.ts +18 -0
  87. package/dist/listeners/webhook/__tests__/webhook.extractor.test.d.ts +1 -0
  88. package/dist/listeners/webhook/__tests__/webhook.listener.test.d.ts +1 -0
  89. package/dist/listeners/webhook/webhook.extractor.d.ts +8 -0
  90. package/dist/listeners/webhook/webhook.listener.d.ts +8 -0
  91. package/dist/listeners/websocket/__tests__/websocket.extractor.test.d.ts +1 -0
  92. package/dist/listeners/websocket/__tests__/websocket.listener.test.d.ts +1 -0
  93. package/dist/listeners/websocket/websocket.extractor.d.ts +10 -0
  94. package/dist/listeners/websocket/websocket.listener.d.ts +8 -0
  95. package/dist/storage-adapters/adapters/__tests__/memory.storage.test.d.ts +1 -0
  96. package/dist/storage-adapters/adapters/memory.storage.d.ts +21 -0
  97. package/dist/storage-adapters/adapters/redis.storage.d.ts +0 -0
  98. package/dist/storage-adapters/adapters/sqlite.storage.d.ts +0 -0
  99. package/dist/storage-adapters/storage.interface.d.ts +18 -0
  100. package/dist/types/event.types.d.ts +118 -0
  101. package/dist/utils/token.d.ts +0 -0
  102. package/jest.config.js +14 -14
  103. package/package.json +45 -45
  104. package/sadmin list shadows +9 -9
  105. package/src/api/controllers/__tests__/tasks.controller.test.ts +74 -74
  106. package/src/api/controllers/events.controller.ts +10 -10
  107. package/src/api/controllers/health.controller.ts +7 -7
  108. package/src/api/controllers/tasks.controller.ts +41 -41
  109. package/src/api/dto/__tests__/create-task.dto.test.ts +41 -41
  110. package/src/api/dto/__tests__/filter-tasks.dto.test.ts +35 -35
  111. package/src/api/dto/create-task.dto.ts +33 -33
  112. package/src/api/dto/filter-tasks.dto.ts +33 -33
  113. package/src/api/services/__tests__/events.service.test.ts +41 -41
  114. package/src/api/services/__tests__/tasks.service.test.ts +41 -41
  115. package/src/api/services/events.service.ts +17 -17
  116. package/src/api/services/tasks.service.ts +79 -79
  117. package/src/api/sse/events.stream.ts +90 -90
  118. package/src/bootstrap.ts +89 -0
  119. package/src/core/__tests__/core-router.test.ts +30 -30
  120. package/src/core/__tests__/core-server.test.ts +44 -44
  121. package/src/core/__tests__/event.normalizer.test.ts +56 -56
  122. package/src/core/__tests__/event.router.test.ts +89 -89
  123. package/src/core/__tests__/logger.test.ts +32 -32
  124. package/src/core/__tests__/storage-manager.test.ts +74 -74
  125. package/src/core/event.normalizer.ts +147 -147
  126. package/src/core/event.router.ts +13 -13
  127. package/src/core/http/__tests__/adapter-node.test.ts +52 -52
  128. package/src/core/http/__tests__/body-parser-multipart.test.ts +41 -41
  129. package/src/core/http/__tests__/body-parser-raw.test.ts +28 -28
  130. package/src/core/http/__tests__/body-parser-text.test.ts +28 -28
  131. package/src/core/http/__tests__/compile-path.test.ts +39 -39
  132. package/src/core/http/__tests__/middleware-pipeline.test.ts +51 -51
  133. package/src/core/http/__tests__/request.test.ts +34 -34
  134. package/src/core/http/__tests__/response.test.ts +35 -35
  135. package/src/core/http/__tests__/router-match.test.ts +171 -171
  136. package/src/core/http/adapter-node.ts +51 -51
  137. package/src/core/http/buildRequest.ts +18 -18
  138. package/src/core/http/compile-path.ts +32 -32
  139. package/src/core/http/errors.ts +37 -37
  140. package/src/core/http/http-server.ts +52 -52
  141. package/src/core/http/middleware.ts +160 -160
  142. package/src/core/http/request.ts +55 -55
  143. package/src/core/http/response.ts +93 -93
  144. package/src/core/http/router.ts +138 -138
  145. package/src/core/id-generator.ts +8 -8
  146. package/src/core/logger.ts +113 -113
  147. package/src/core/router.ts +44 -44
  148. package/src/core/server.ts +85 -85
  149. package/src/core/storage.ts +64 -64
  150. package/src/index.ts +10 -89
  151. package/src/listeners/api/__tests__/api.controller.test.ts +116 -116
  152. package/src/listeners/api/__tests__/api.extractor.test.ts +46 -46
  153. package/src/listeners/api/__tests__/api.listener.test.ts +82 -82
  154. package/src/listeners/api/__tests__/api.routes.test.ts +155 -155
  155. package/src/listeners/api/__tests__/api.sse.test.ts +105 -105
  156. package/src/listeners/api/api.controllers.ts +67 -67
  157. package/src/listeners/api/api.extractor.ts +43 -43
  158. package/src/listeners/api/api.listener.ts +50 -50
  159. package/src/listeners/api/api.routes.ts +76 -76
  160. package/src/listeners/api/api.sse.ts +38 -38
  161. package/src/listeners/dns/__tests__/dns.test.ts +118 -118
  162. package/src/listeners/dns/dns.extractor.ts +14 -14
  163. package/src/listeners/dns/dns.listener.ts +61 -61
  164. package/src/listeners/http/__tests__/http.extractor.test.ts +59 -59
  165. package/src/listeners/http/__tests__/http.listener.test.ts +133 -133
  166. package/src/listeners/http/http.extractor.ts +15 -15
  167. package/src/listeners/http/http.listener.ts +110 -110
  168. package/src/listeners/listener.interface.ts +4 -4
  169. package/src/listeners/smtp/__tests__/smtp.extractor.test.ts +69 -69
  170. package/src/listeners/smtp/__tests__/smtp.listener.test.ts +150 -150
  171. package/src/listeners/smtp/smtp.extractor.ts +18 -18
  172. package/src/listeners/smtp/smtp.listener.ts +60 -60
  173. package/src/listeners/ssrf/__tests__/ssrf.extractor.test.ts +41 -41
  174. package/src/listeners/ssrf/__tests__/ssrf.listener.test.ts +87 -87
  175. package/src/listeners/ssrf/ssrf.extractor.ts +14 -14
  176. package/src/listeners/ssrf/ssrf.listener.ts +37 -37
  177. package/src/listeners/tcp/tcp.extractor.ts +16 -16
  178. package/src/listeners/tcp/tcp.listener.ts +61 -61
  179. package/src/listeners/webhook/__tests__/webhook.extractor.test.ts +35 -35
  180. package/src/listeners/webhook/__tests__/webhook.listener.test.ts +122 -122
  181. package/src/listeners/webhook/webhook.extractor.ts +12 -12
  182. package/src/listeners/webhook/webhook.listener.ts +58 -58
  183. package/src/listeners/websocket/__tests__/websocket.extractor.test.ts +33 -33
  184. package/src/listeners/websocket/__tests__/websocket.listener.test.ts +90 -90
  185. package/src/listeners/websocket/websocket.extractor.ts +11 -11
  186. package/src/listeners/websocket/websocket.listener.ts +40 -40
  187. package/src/storage-adapters/adapters/__tests__/memory.storage.test.ts +75 -75
  188. package/src/storage-adapters/adapters/memory.storage.ts +64 -64
  189. package/src/storage-adapters/storage.interface.ts +26 -26
  190. package/src/types/event.types.ts +147 -147
  191. package/tsconfig.json +21 -21
@@ -0,0 +1,17 @@
1
+ import { Logger } from "../../core/logger";
2
+ import { CoreRouter } from "../../core/router";
3
+ export interface HttpListenerOptions {
4
+ port: number;
5
+ logger?: Logger;
6
+ }
7
+ export declare class HttpListener {
8
+ private router;
9
+ private options;
10
+ private server?;
11
+ private logger;
12
+ constructor(router: CoreRouter, options: HttpListenerOptions);
13
+ start(): Promise<void>;
14
+ stop(): Promise<void>;
15
+ private handleRequest;
16
+ private readBody;
17
+ }
@@ -0,0 +1,4 @@
1
+ export interface Listener {
2
+ start(): Promise<void>;
3
+ stop(): Promise<void>;
4
+ }
@@ -0,0 +1,12 @@
1
+ export declare class SmtpExtractor {
2
+ static extract(session: any, body: string): {
3
+ ip: any;
4
+ from: any;
5
+ to: any;
6
+ subject: any;
7
+ raw: {
8
+ session: any;
9
+ body: string;
10
+ };
11
+ };
12
+ }
@@ -0,0 +1,13 @@
1
+ import { CoreRouter } from "../../core/router";
2
+ import { Logger } from "../../core/logger";
3
+ export declare class SmtpListener {
4
+ private router;
5
+ private server;
6
+ private logger;
7
+ constructor(router: CoreRouter, options: {
8
+ server: any;
9
+ logger?: Logger;
10
+ });
11
+ start(): Promise<void>;
12
+ stop(): Promise<void>;
13
+ }
@@ -14,10 +14,8 @@ globals_1.jest.mock("../../../core/event.normalizer");
14
14
  let router;
15
15
  let port;
16
16
  let listener;
17
- (0, globals_1.beforeEach)(() => {
18
- router = {
19
- dispatch: globals_1.jest.fn(),
20
- };
17
+ (0, globals_1.beforeEach)((done) => {
18
+ router = { dispatch: globals_1.jest.fn() };
21
19
  port = 12000 + Math.floor(Math.random() * 2000);
22
20
  ssrf_extractor_1.SsrfExtractor.extract.mockReturnValue({
23
21
  ip: "1.2.3.4",
@@ -40,6 +38,8 @@ globals_1.jest.mock("../../../core/event.normalizer");
40
38
  },
41
39
  });
42
40
  listener = new ssrf_listener_1.SsrfListener(router, port);
41
+ // 🔥 On attend que le serveur soit prêt
42
+ listener["server"].on("listening", done);
43
43
  });
44
44
  (0, globals_1.afterEach)(() => {
45
45
  listener.stop();
@@ -49,18 +49,6 @@ globals_1.jest.mock("../../../core/event.normalizer");
49
49
  const req = http_1.default.request({ hostname: "localhost", port, path: "/ssrf", method: "GET" }, (res) => {
50
50
  (0, globals_1.expect)(res.statusCode).toBe(200);
51
51
  (0, globals_1.expect)(router.dispatch).toHaveBeenCalledTimes(1);
52
- (0, globals_1.expect)(router.dispatch).toHaveBeenCalledWith({
53
- id: "123",
54
- type: "ssrf",
55
- timestamp: 111,
56
- sourceIp: "1.2.3.4",
57
- request: {
58
- method: "GET",
59
- path: "/ssrf",
60
- headers: {},
61
- query: {},
62
- },
63
- });
64
52
  resolve();
65
53
  });
66
54
  req.end();
@@ -0,0 +1,10 @@
1
+ export declare class SsrfExtractor {
2
+ static extract(req: any): {
3
+ ip: any;
4
+ method: any;
5
+ path: any;
6
+ headers: any;
7
+ query: any;
8
+ raw: any;
9
+ };
10
+ }
@@ -0,0 +1,8 @@
1
+ import { CoreRouter } from "../../core/router";
2
+ export declare class SsrfListener {
3
+ private router;
4
+ private server;
5
+ private logger;
6
+ constructor(router: CoreRouter, port: number);
7
+ stop(): void;
8
+ }
@@ -0,0 +1,4 @@
1
+ import { RawTcpEvent, NormalizedTcpEvent } from "../../types/event.types";
2
+ export declare class TcpExtractor {
3
+ static normalize(raw: RawTcpEvent): NormalizedTcpEvent;
4
+ }
@@ -0,0 +1,18 @@
1
+ import { Listener } from "../listener.interface";
2
+ import { CoreRouter } from "../../core/router";
3
+ import { StorageManager } from "../../core/storage";
4
+ import { Logger } from "../../core/logger";
5
+ export interface TcpListenerOptions {
6
+ port: number;
7
+ logger?: Logger;
8
+ }
9
+ export declare class TcpListener implements Listener {
10
+ private router;
11
+ private storage;
12
+ private options;
13
+ private server;
14
+ private logger;
15
+ constructor(router: CoreRouter, storage: StorageManager, options: TcpListenerOptions);
16
+ start(): Promise<void>;
17
+ stop(): Promise<void>;
18
+ }
@@ -0,0 +1,8 @@
1
+ export declare class WebhookExtractor {
2
+ static extract(req: any, body: any): {
3
+ ip: any;
4
+ headers: any;
5
+ body: any;
6
+ raw: any;
7
+ };
8
+ }
@@ -0,0 +1,8 @@
1
+ import { CoreRouter } from "../../core/router";
2
+ export declare class WebhookListener {
3
+ private router;
4
+ private server;
5
+ private logger;
6
+ constructor(router: CoreRouter, port: number);
7
+ stop(): void;
8
+ }
@@ -0,0 +1,10 @@
1
+ export declare class WebSocketExtractor {
2
+ static extract(ws: any, req: any, message: string): {
3
+ ip: any;
4
+ message: string;
5
+ raw: {
6
+ ws: any;
7
+ req: any;
8
+ };
9
+ };
10
+ }
@@ -0,0 +1,8 @@
1
+ import { CoreRouter } from "../../core/router";
2
+ export declare class WebSocketListener {
3
+ private router;
4
+ private server;
5
+ private logger;
6
+ constructor(router: CoreRouter, port: number);
7
+ stop(): void;
8
+ }
@@ -0,0 +1,21 @@
1
+ import { Storage } from "../storage.interface";
2
+ import { AnyNormalizedEvent } from "../../types/event.types";
3
+ export declare class MemoryStorage implements Storage {
4
+ private events;
5
+ save(event: AnyNormalizedEvent): Promise<void>;
6
+ getEvent(id: string): Promise<AnyNormalizedEvent | null>;
7
+ listEvents(params: {
8
+ type?: string;
9
+ page?: number;
10
+ limit?: number;
11
+ }): Promise<AnyNormalizedEvent[]>;
12
+ getAll(): Promise<AnyNormalizedEvent[]>;
13
+ deleteEvent(id: string): Promise<boolean>;
14
+ clearEvents(): Promise<void>;
15
+ getStats(): Promise<{
16
+ total: number;
17
+ byType: Record<string, number>;
18
+ }>;
19
+ getById(id: string): Promise<AnyNormalizedEvent | null>;
20
+ delete(id: string): Promise<boolean>;
21
+ }
@@ -0,0 +1,18 @@
1
+ import { AnyNormalizedEvent } from "../types/event.types";
2
+ export interface StorageListParams {
3
+ type?: string;
4
+ page?: number;
5
+ limit?: number;
6
+ }
7
+ export interface Storage {
8
+ save(event: AnyNormalizedEvent): Promise<void>;
9
+ getEvent(id: string): Promise<AnyNormalizedEvent | null>;
10
+ listEvents(params: StorageListParams): Promise<AnyNormalizedEvent[]>;
11
+ deleteEvent(id: string): Promise<boolean>;
12
+ clearEvents(): Promise<void>;
13
+ getAll(): Promise<AnyNormalizedEvent[]>;
14
+ getStats(): Promise<{
15
+ total: number;
16
+ byType: Record<string, number>;
17
+ }>;
18
+ }
@@ -0,0 +1,118 @@
1
+ export interface RawEvent {
2
+ ip: string;
3
+ method: string;
4
+ path: string;
5
+ headers: Record<string, string | string[] | undefined>;
6
+ query: Record<string, any>;
7
+ body: any;
8
+ raw: any;
9
+ }
10
+ export interface RawDnsEvent {
11
+ ip: string;
12
+ query: string;
13
+ recordType: string;
14
+ raw: any;
15
+ }
16
+ export interface RawSmtpEvent {
17
+ ip: string;
18
+ from: string;
19
+ to: string[];
20
+ subject: string;
21
+ body: string;
22
+ raw: any;
23
+ }
24
+ export interface RawTcpEvent {
25
+ ip: string;
26
+ port: number;
27
+ data: string;
28
+ raw: any;
29
+ }
30
+ export interface RawSsrfEvent {
31
+ ip: string;
32
+ method: string | undefined;
33
+ path: string | undefined;
34
+ headers: Record<string, string | string[] | undefined>;
35
+ query: Record<string, any>;
36
+ raw: any;
37
+ }
38
+ export interface RawWebhookEvent {
39
+ ip: string;
40
+ headers: Record<string, string | string[] | undefined>;
41
+ body: any;
42
+ raw: any;
43
+ }
44
+ export interface RawWebSocketEvent {
45
+ ip: string;
46
+ message: string;
47
+ raw: any;
48
+ }
49
+ export interface NormalizedHttpEvent {
50
+ id: string;
51
+ type: "http";
52
+ timestamp: number;
53
+ sourceIp: string;
54
+ request: {
55
+ method: string;
56
+ path: string;
57
+ headers: Record<string, string | string[] | undefined>;
58
+ query: Record<string, any>;
59
+ body: any;
60
+ };
61
+ }
62
+ export interface NormalizedDnsEvent {
63
+ id: string;
64
+ type: "dns";
65
+ timestamp: number;
66
+ ip: string;
67
+ query: string;
68
+ recordType: string;
69
+ raw: any;
70
+ }
71
+ export interface NormalizedSmtpEvent {
72
+ id: string;
73
+ type: "smtp";
74
+ timestamp: number;
75
+ ip: string;
76
+ from: string;
77
+ to: string[];
78
+ subject: string;
79
+ body: string;
80
+ raw: any;
81
+ }
82
+ export interface NormalizedTcpEvent {
83
+ id: string;
84
+ type: "tcp";
85
+ timestamp: number;
86
+ ip: string;
87
+ port: number;
88
+ data: string;
89
+ raw: any;
90
+ }
91
+ export interface NormalizedSsrfEvent {
92
+ id: string;
93
+ type: "ssrf";
94
+ timestamp: number;
95
+ sourceIp: string;
96
+ request: {
97
+ method: string | undefined;
98
+ path: string | undefined;
99
+ headers: Record<string, string | string[] | undefined>;
100
+ query: Record<string, any>;
101
+ };
102
+ }
103
+ export interface NormalizedWebhookEvent {
104
+ id: string;
105
+ type: "webhook";
106
+ timestamp: number;
107
+ sourceIp: string;
108
+ headers: Record<string, string | string[] | undefined>;
109
+ body: any;
110
+ }
111
+ export interface NormalizedWebSocketEvent {
112
+ id: string;
113
+ type: "websocket";
114
+ timestamp: number;
115
+ sourceIp: string;
116
+ message: string;
117
+ }
118
+ export type AnyNormalizedEvent = NormalizedHttpEvent | NormalizedDnsEvent | NormalizedSmtpEvent | NormalizedTcpEvent | NormalizedSsrfEvent | NormalizedWebhookEvent | NormalizedWebSocketEvent;
File without changes
package/jest.config.js CHANGED
@@ -1,14 +1,14 @@
1
- const { createDefaultPreset } = require("ts-jest");
2
-
3
- const tsJestTransformCfg = createDefaultPreset().transform;
4
-
5
- /** @type {import("jest").Config} **/
6
- module.exports = {
7
- testEnvironment: "node",
8
- transform: {
9
- ...tsJestTransformCfg,
10
- },
11
-
12
- // 🔥 Empêche Jest d'exécuter les tests compilés dans dist/
13
- testPathIgnorePatterns: ["/dist/"],
14
- };
1
+ const { createDefaultPreset } = require("ts-jest");
2
+
3
+ const tsJestTransformCfg = createDefaultPreset().transform;
4
+
5
+ /** @type {import("jest").Config} **/
6
+ module.exports = {
7
+ testEnvironment: "node",
8
+ transform: {
9
+ ...tsJestTransformCfg,
10
+ },
11
+
12
+ // 🔥 Empêche Jest d'exécuter les tests compilés dans dist/
13
+ testPathIgnorePatterns: ["/dist/"],
14
+ };
package/package.json CHANGED
@@ -1,45 +1,45 @@
1
- {
2
- "name": "@j3r3mcdev/oast-server",
3
- "version": "1.1.1",
4
- "description": "Modular OAST callback server for security auditing",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "scripts": {
8
- "dev": "ts-node-dev --respawn --transpile-only src/core/server.ts",
9
- "build": "tsc -p tsconfig.json",
10
- "start": "node dist/core/server.js",
11
- "clean": "rimraf dist",
12
- "test": "jest --passWithNoTests"
13
- },
14
- "keywords": [
15
- "oast",
16
- "security",
17
- "ssrf",
18
- "callback",
19
- "audit",
20
- "pentest"
21
- ],
22
- "author": "Jérémy",
23
- "license": "MIT",
24
- "dependencies": {
25
- "body-parser": "^1.20.2",
26
- "cors": "^2.8.5",
27
- "dotenv": "^16.4.5",
28
- "express": "^4.19.2",
29
- "ioredis": "^5.4.1",
30
- "ws": "^8.21.0"
31
- },
32
- "devDependencies": {
33
- "@types/body-parser": "^1.19.5",
34
- "@types/cors": "^2.8.17",
35
- "@types/express": "^4.17.21",
36
- "@types/jest": "^29.5.14",
37
- "@types/node": "^20.12.7",
38
- "@types/ws": "^8.18.1",
39
- "jest": "^29.7.0",
40
- "rimraf": "^5.0.5",
41
- "ts-jest": "^29.4.11",
42
- "ts-node-dev": "^2.0.0",
43
- "typescript": "^5.4.5"
44
- }
45
- }
1
+ {
2
+ "name": "@j3r3mcdev/oast-server",
3
+ "version": "1.1.3",
4
+ "description": "Modular OAST callback server for security auditing",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "dev": "ts-node-dev --respawn --transpile-only src/core/server.ts",
9
+ "build": "tsc -p tsconfig.json",
10
+ "start": "node dist/core/server.js",
11
+ "clean": "rimraf dist",
12
+ "test": "jest --passWithNoTests"
13
+ },
14
+ "keywords": [
15
+ "oast",
16
+ "security",
17
+ "ssrf",
18
+ "callback",
19
+ "audit",
20
+ "pentest"
21
+ ],
22
+ "author": "Jérémy",
23
+ "license": "MIT",
24
+ "dependencies": {
25
+ "body-parser": "^1.20.2",
26
+ "cors": "^2.8.5",
27
+ "dotenv": "^16.4.5",
28
+ "express": "^4.19.2",
29
+ "ioredis": "^5.4.1",
30
+ "ws": "^8.21.0"
31
+ },
32
+ "devDependencies": {
33
+ "@types/body-parser": "^1.19.5",
34
+ "@types/cors": "^2.8.17",
35
+ "@types/express": "^4.17.21",
36
+ "@types/jest": "^29.5.14",
37
+ "@types/node": "^20.12.7",
38
+ "@types/ws": "^8.18.1",
39
+ "jest": "^29.7.0",
40
+ "rimraf": "^5.0.5",
41
+ "ts-jest": "^29.4.11",
42
+ "ts-node-dev": "^2.0.0",
43
+ "typescript": "^5.4.5"
44
+ }
45
+ }
@@ -1,9 +1,9 @@
1
- 8faa343 (HEAD -> feat/core-event, origin/main, main) HEAD@{0}: checkout: moving from main to feat/core-event
2
- 8faa343 (HEAD -> feat/core-event, origin/main, main) HEAD@{1}: commit: ADD FULL architecture
3
- 8f8f441 HEAD@{2}: commit: ADD CI/CD
4
- 0c987a0 HEAD@{3}: commit: ADD CI/CD
5
- 8aad148 HEAD@{4}: commit: ADD CI/CD
6
- e1f2959 HEAD@{5}: commit: ADD CI/CD
7
- 271e3b1 HEAD@{6}: commit: ADD Architecture & package.json & tsconfig.json
8
- b840cd3 HEAD@{7}: Branch: renamed refs/heads/master to refs/heads/main
9
- b840cd3 HEAD@{9}: commit (initial): Initial project structure
1
+ 8faa343 (HEAD -> feat/core-event, origin/main, main) HEAD@{0}: checkout: moving from main to feat/core-event
2
+ 8faa343 (HEAD -> feat/core-event, origin/main, main) HEAD@{1}: commit: ADD FULL architecture
3
+ 8f8f441 HEAD@{2}: commit: ADD CI/CD
4
+ 0c987a0 HEAD@{3}: commit: ADD CI/CD
5
+ 8aad148 HEAD@{4}: commit: ADD CI/CD
6
+ e1f2959 HEAD@{5}: commit: ADD CI/CD
7
+ 271e3b1 HEAD@{6}: commit: ADD Architecture & package.json & tsconfig.json
8
+ b840cd3 HEAD@{7}: Branch: renamed refs/heads/master to refs/heads/main
9
+ b840cd3 HEAD@{9}: commit (initial): Initial project structure