mirror of
https://github.com/AikidoSec/safe-chain.git
synced 2026-05-26 12:10:49 +00:00
Merge branch 'main' into verbose-logging
This commit is contained in:
commit
be6a6dccd9
62 changed files with 1243 additions and 41 deletions
|
|
@ -1,9 +1,16 @@
|
|||
/**
|
||||
* @type {{loggingLevel: string | undefined}}
|
||||
*/
|
||||
const state = {
|
||||
loggingLevel: undefined,
|
||||
};
|
||||
|
||||
const SAFE_CHAIN_ARG_PREFIX = "--safe-chain-";
|
||||
|
||||
/**
|
||||
* @param {string[]} args
|
||||
* @returns {string[]}
|
||||
*/
|
||||
export function initializeCliArguments(args) {
|
||||
// Reset state on each call
|
||||
state.loggingLevel = undefined;
|
||||
|
|
@ -24,6 +31,11 @@ export function initializeCliArguments(args) {
|
|||
return remainingArgs;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string[]} args
|
||||
* @param {string} prefix
|
||||
* @returns {string | undefined}
|
||||
*/
|
||||
function getLastArgEqualsValue(args, prefix) {
|
||||
for (var i = args.length - 1; i >= 0; i--) {
|
||||
const arg = args[i];
|
||||
|
|
@ -35,6 +47,10 @@ function getLastArgEqualsValue(args, prefix) {
|
|||
return undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string[]} args
|
||||
* @returns {void}
|
||||
*/
|
||||
function setLoggingLevel(args) {
|
||||
const safeChainLoggingArg = SAFE_CHAIN_ARG_PREFIX + "logging=";
|
||||
|
||||
|
|
|
|||
|
|
@ -3,13 +3,22 @@ import path from "path";
|
|||
import os from "os";
|
||||
import { ui } from "../environment/userInteraction.js";
|
||||
|
||||
/**
|
||||
* @returns {number}
|
||||
*/
|
||||
export function getScanTimeout() {
|
||||
const config = readConfigFile();
|
||||
return (
|
||||
parseInt(process.env.AIKIDO_SCAN_TIMEOUT_MS) || config.scanTimeout || 10000 // Default to 10 seconds
|
||||
);
|
||||
const config = /** @type {{scanTimeout?: number}} */ (readConfigFile());
|
||||
|
||||
// @ts-expect-error values of process.env can be string | undefined
|
||||
return parseInt(process.env.AIKIDO_SCAN_TIMEOUT_MS) || config.scanTimeout || 10000 // Default to 10 seconds
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {import("../api/aikido.js").MalwarePackage[]} data
|
||||
* @param {string | number} version
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
export function writeDatabaseToLocalCache(data, version) {
|
||||
try {
|
||||
const databasePath = getDatabasePath();
|
||||
|
|
@ -24,6 +33,9 @@ export function writeDatabaseToLocalCache(data, version) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {{malwareDatabase: import("../api/aikido.js").MalwarePackage[] | null, version: string | null}}
|
||||
*/
|
||||
export function readDatabaseFromLocalCache() {
|
||||
try {
|
||||
const databasePath = getDatabasePath();
|
||||
|
|
@ -55,6 +67,9 @@ export function readDatabaseFromLocalCache() {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {unknown}
|
||||
*/
|
||||
function readConfigFile() {
|
||||
const configFilePath = getConfigFilePath();
|
||||
|
||||
|
|
@ -66,6 +81,9 @@ function readConfigFile() {
|
|||
return JSON.parse(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {string}
|
||||
*/
|
||||
function getDatabasePath() {
|
||||
const aikidoDir = getAikidoDirectory();
|
||||
return path.join(aikidoDir, "malwareDatabase.json");
|
||||
|
|
@ -76,10 +94,16 @@ function getDatabaseVersionPath() {
|
|||
return path.join(aikidoDir, "version.txt");
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {string}
|
||||
*/
|
||||
function getConfigFilePath() {
|
||||
return path.join(getAikidoDirectory(), "config.json");
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {string}
|
||||
*/
|
||||
function getAikidoDirectory() {
|
||||
const homeDir = os.homedir();
|
||||
const aikidoDir = path.join(homeDir, ".aikido");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue