Files
NetMesh/lib/commandBlocklist.cjs

51 lines
1.8 KiB
JavaScript
Raw Permalink Normal View History

"use strict";
const TABLE = require("./commandBlocklist.json");
const COMMON_PATTERNS = [...TABLE.common];
const POSIX_NATIVE_PATTERNS = [...TABLE.posixNative];
const POSIX_PATTERNS = [...TABLE.posix];
const POWERSHELL_PATTERNS = [...TABLE.powershell];
const PATTERN_GROUPS = {
common: COMMON_PATTERNS,
posixNative: POSIX_NATIVE_PATTERNS,
posix: POSIX_PATTERNS,
powershell: POWERSHELL_PATTERNS,
};
/** Flat union of every default pattern: the strictest selection. */
const DEFAULT_COMMAND_BLOCKLIST = [
...COMMON_PATTERNS,
...POSIX_NATIVE_PATTERNS,
...POSIX_PATTERNS,
...POWERSHELL_PATTERNS,
];
const DEFAULT_PATTERN_SET = new Set(DEFAULT_COMMAND_BLOCKLIST);
/**
* Shell kinds as produced by lib/localShell.cjs / session shell detection.
* Unknown / empty kinds intentionally fall back to the full list so callers
* that cannot classify a session keep today's strict behavior.
*/
function selectDefaultBlocklistPatterns(shellKind) {
const groupNames = TABLE.shellGroups[String(shellKind || "").toLowerCase()];
return Array.isArray(groupNames)
? groupNames.flatMap((name) => PATTERN_GROUPS[name] || [])
: [...DEFAULT_COMMAND_BLOCKLIST];
}
function isDefaultBlocklistPattern(pattern) {
return DEFAULT_PATTERN_SET.has(pattern);
}
module.exports = DEFAULT_COMMAND_BLOCKLIST;
module.exports.DEFAULT_COMMAND_BLOCKLIST = DEFAULT_COMMAND_BLOCKLIST;
module.exports.COMMON_PATTERNS = COMMON_PATTERNS;
module.exports.POSIX_NATIVE_PATTERNS = POSIX_NATIVE_PATTERNS;
module.exports.POSIX_PATTERNS = POSIX_PATTERNS;
module.exports.POWERSHELL_PATTERNS = POWERSHELL_PATTERNS;
module.exports.DEFAULT_PATTERN_SET = DEFAULT_PATTERN_SET;
module.exports.selectDefaultBlocklistPatterns = selectDefaultBlocklistPatterns;
module.exports.isDefaultBlocklistPattern = isDefaultBlocklistPattern;