mirror of
https://github.com/AikidoSec/safe-chain.git
synced 2026-05-26 12:10:49 +00:00
Create config file and pass minimum package age to l7 proxy
This commit is contained in:
parent
9f0e1aeab0
commit
023deff926
2 changed files with 97 additions and 1 deletions
|
|
@ -0,0 +1,93 @@
|
|||
import { writeFile } from "fs";
|
||||
import { join } from "path/posix";
|
||||
import { promisify } from "util";
|
||||
import {
|
||||
getMinimumPackageAgeHours,
|
||||
skipMinimumPackageAge,
|
||||
} from "../../config/settings.js";
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} dataFolder
|
||||
* @returns string
|
||||
*/
|
||||
export async function createAikidoEndpointConfigFile(dataFolder) {
|
||||
const configPath = join(dataFolder, "safe-chain-config.json");
|
||||
|
||||
const config = getConfigContent();
|
||||
const configJson = JSON.stringify(config);
|
||||
|
||||
await promisify(writeFile)(configPath, configJson);
|
||||
|
||||
return configPath;
|
||||
}
|
||||
|
||||
function getConfigContent() {
|
||||
let cutoff = Math.floor(Date.now() / 1000);
|
||||
|
||||
if (!skipMinimumPackageAge()) {
|
||||
cutoff = cutoff - (getMinimumPackageAgeHours() * 3600);
|
||||
}
|
||||
|
||||
return {
|
||||
permission_group: {
|
||||
id: 1,
|
||||
name: "Default",
|
||||
},
|
||||
ecosystems: {
|
||||
npm: {
|
||||
block_all_installs: false,
|
||||
request_installs: false,
|
||||
minimum_allowed_age_timestamp: cutoff,
|
||||
exceptions: {
|
||||
allowed_packages: [],
|
||||
rejected_packages: [],
|
||||
},
|
||||
},
|
||||
pypi: {
|
||||
block_all_installs: false,
|
||||
request_installs: false,
|
||||
minimum_allowed_age_timestamp: cutoff,
|
||||
exceptions: {
|
||||
allowed_packages: [],
|
||||
rejected_packages: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
# Reference: config file format.
|
||||
|
||||
```json
|
||||
{
|
||||
"permission_group": {
|
||||
"id": 18,
|
||||
"name": "Default"
|
||||
},
|
||||
"ecosystems": {
|
||||
"npm": {
|
||||
"block_all_installs": false,
|
||||
"request_installs": false,
|
||||
"minimum_allowed_age_timestamp": 1778143932,
|
||||
"exceptions": {
|
||||
"allowed_packages": [],
|
||||
"rejected_packages": []
|
||||
}
|
||||
},
|
||||
"pypi": {
|
||||
"block_all_installs": false,
|
||||
"request_installs": false,
|
||||
"minimum_allowed_age_timestamp": 1778057532,
|
||||
"exceptions": {
|
||||
"allowed_packages": [],
|
||||
"rejected_packages": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
*/
|
||||
|
|
@ -8,6 +8,7 @@ import { ui } from "../../environment/userInteraction.js";
|
|||
import { getLoggingLevel, LOGGING_VERBOSE } from "../../config/settings.js";
|
||||
import { getReportingServer } from "./reportingServer.js";
|
||||
import EventEmitter from "node:events";
|
||||
import { createAikidoEndpointConfigFile } from "./createAikidoEndpointConfigFile.js";
|
||||
|
||||
const readFilePromise = promisify(readFile);
|
||||
|
||||
|
|
@ -90,7 +91,7 @@ export function createRamaProxy(ramaPath) {
|
|||
* @returns {Promise<RamaProxyInstance>}
|
||||
*/
|
||||
async function startRama(ramaPath, dataFolder, reportingUrl) {
|
||||
const startTime = Date.now();
|
||||
const startTime = Date.now();
|
||||
const args = [
|
||||
"--secrets",
|
||||
"memory",
|
||||
|
|
@ -98,6 +99,8 @@ async function startRama(ramaPath, dataFolder, reportingUrl) {
|
|||
dataFolder,
|
||||
"--reporting-endpoint",
|
||||
reportingUrl,
|
||||
"--config-file",
|
||||
await createAikidoEndpointConfigFile(dataFolder),
|
||||
];
|
||||
const stdio = getLoggingLevel() === LOGGING_VERBOSE ? "inherit" : "pipe";
|
||||
const process = spawn(ramaPath, args, { stdio: stdio });
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue