51 lines
1.8 KiB
JavaScript
51 lines
1.8 KiB
JavaScript
|
|
"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;
|