mirror of
https://github.com/AikidoSec/safe-chain.git
synced 2026-05-26 12:10:49 +00:00
Add interceptors for MITM
This commit is contained in:
parent
0b056e92de
commit
e251908cb3
4 changed files with 123 additions and 11 deletions
|
|
@ -0,0 +1,50 @@
|
|||
/**
|
||||
* @typedef {import('./requestInterceptorBuilder.js').RequestInterceptorBuilder} RequestInterceptorBuilder
|
||||
* @typedef {import('./requestInterceptorBuilder.js').RequestInterceptor} RequestInterceptor
|
||||
*
|
||||
* @typedef {Object} InterceptorBuilder
|
||||
* @property {(requestFunc: (requestHandlerBuilder: RequestInterceptorBuilder) => Promise<void>) => void} onRequest
|
||||
* @property {() => Interceptor} build
|
||||
*
|
||||
* @typedef {Object} Interceptor
|
||||
* @property {(targetUrl: string) => Promise<RequestInterceptor>} handleRequest
|
||||
*/
|
||||
|
||||
import { createRequestInterceptorBuilder } from "./requestInterceptorBuilder.js";
|
||||
|
||||
/**
|
||||
* @returns {InterceptorBuilder}
|
||||
*/
|
||||
export function createInterceptorBuilder() {
|
||||
/**
|
||||
* @type {Array<(requestHandlerBuilder: RequestInterceptorBuilder) => Promise<void>>}
|
||||
*/
|
||||
const requestHandlers = [];
|
||||
|
||||
return {
|
||||
onRequest(requestFunc) {
|
||||
requestHandlers.push(requestFunc);
|
||||
},
|
||||
build() {
|
||||
return buildInterceptor(requestHandlers);
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Array<(requestHandlerBuilder: RequestInterceptorBuilder) => Promise<void>>} requestHandlers
|
||||
* @returns {Interceptor}
|
||||
*/
|
||||
function buildInterceptor(requestHandlers) {
|
||||
return {
|
||||
async handleRequest(targetUrl) {
|
||||
const reqInterceptorBuilder = createRequestInterceptorBuilder(targetUrl);
|
||||
|
||||
for (const handler of requestHandlers) {
|
||||
await handler(reqInterceptorBuilder);
|
||||
}
|
||||
|
||||
return reqInterceptorBuilder.build();
|
||||
},
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue