mirror of
https://github.com/AikidoSec/safe-chain.git
synced 2026-05-26 20:20:49 +00:00
Merge branch 'main' into rama-integration-beta
This commit is contained in:
commit
64a825f43a
130 changed files with 6144 additions and 2494 deletions
|
|
@ -10,6 +10,7 @@ import { EventEmitter } from "events";
|
|||
* @typedef {Object} RequestInterceptionContext
|
||||
* @property {string} targetUrl
|
||||
* @property {(packageName: string | undefined, version: string | undefined) => void} blockMalware
|
||||
* @property {(packageName: string, version: string, message: string) => void} blockMinimumAgeRequest
|
||||
* @property {(modificationFunc: (headers: NodeJS.Dict<string | string[]>) => NodeJS.Dict<string | string[]>) => void} modifyRequestHeaders
|
||||
* @property {(modificationFunc: (body: Buffer, headers: NodeJS.Dict<string | string[]> | undefined) => Buffer) => void} modifyBody
|
||||
* @property {() => RequestInterceptionHandler} build
|
||||
|
|
@ -26,6 +27,12 @@ import { EventEmitter } from "events";
|
|||
* @property {string} version
|
||||
* @property {string} targetUrl
|
||||
* @property {number} timestamp
|
||||
*
|
||||
* @typedef {Object} MinimumAgeRequestBlockedEvent
|
||||
* @property {string} packageName
|
||||
* @property {string} version
|
||||
* @property {string} targetUrl
|
||||
* @property {number} timestamp
|
||||
*/
|
||||
|
||||
/**
|
||||
|
|
@ -81,10 +88,7 @@ function createRequestContext(targetUrl, eventEmitter) {
|
|||
* @param {string | undefined} version
|
||||
*/
|
||||
function blockMalwareSetup(packageName, version) {
|
||||
blockResponse = {
|
||||
statusCode: 403,
|
||||
message: "Forbidden - blocked by safe-chain",
|
||||
};
|
||||
blockResponse = createBlockResponse("Forbidden - blocked by safe-chain");
|
||||
|
||||
// Emit the malwareBlocked event
|
||||
eventEmitter.emit("malwareBlocked", {
|
||||
|
|
@ -95,6 +99,34 @@ function createRequestContext(targetUrl, eventEmitter) {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} message
|
||||
*/
|
||||
function blockMinimumAgeRequestSetup(
|
||||
/** @type {string} */ packageName,
|
||||
/** @type {string} */ version,
|
||||
/** @type {string} */ message
|
||||
) {
|
||||
blockResponse = createBlockResponse(message);
|
||||
eventEmitter.emit("minimumAgeRequestBlocked", {
|
||||
packageName,
|
||||
version,
|
||||
targetUrl,
|
||||
timestamp: Date.now(),
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} message
|
||||
* @returns {{statusCode: number, message: string}}
|
||||
*/
|
||||
function createBlockResponse(message) {
|
||||
return {
|
||||
statusCode: 403,
|
||||
message,
|
||||
};
|
||||
}
|
||||
|
||||
/** @returns {RequestInterceptionHandler} */
|
||||
function build() {
|
||||
/**
|
||||
|
|
@ -139,6 +171,7 @@ function createRequestContext(targetUrl, eventEmitter) {
|
|||
return {
|
||||
targetUrl,
|
||||
blockMalware: blockMalwareSetup,
|
||||
blockMinimumAgeRequest: blockMinimumAgeRequestSetup,
|
||||
modifyRequestHeaders: (func) => reqheaderModificationFuncs.push(func),
|
||||
modifyBody: (func) => modifyBodyFuncs.push(func),
|
||||
build,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue