Fix domain lock to be case-insensitive by normalizing domain values to lowercase (#1400)

This commit is contained in:
Timofey Kachalov
2026-03-22 16:43:41 +04:00
committed by GitHub
parent fb74744555
commit 459fb31c12
4 changed files with 46 additions and 1 deletions
+1
View File
@@ -3,6 +3,7 @@ Change Log
v5.4.1
---
* Fixed missing space between keywords (`return`, `throw`, `typeof`) and Unicode surrogate pair identifiers in compact mode. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1112
* Fixed `domainLock` being case-sensitive — domain values are now normalized to lowercase. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1182
* Removed `source-map-support` runtime dependency. Use `node --enable-source-maps` instead. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1149
v5.4.0
@@ -13,7 +13,7 @@ export const DomainLockRule: TOptionsNormalizerRule = (options: IOptions): IOpti
const normalizedDomains: string[] = [];
for (const domain of options.domainLock) {
normalizedDomains.push(Utils.extractDomainFrom(domain));
normalizedDomains.push(Utils.extractDomainFrom(domain).toLowerCase());
}
options = {
@@ -0,0 +1 @@
var result = 42;
@@ -0,0 +1,43 @@
import { assert } from 'chai';
import { DomainLockRule } from '../../../src/options/normalizer-rules/DomainLockRule';
import { IOptions } from '../../../src/interfaces/options/IOptions';
//
// https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1182
//
describe('Issue #1182', () => {
describe('domainLock should be case-insensitive', () => {
it('should normalize mixed-case domain to lowercase', () => {
const options = DomainLockRule({
domainLock: ['Example.COM']
} as IOptions);
assert.deepEqual(options.domainLock, ['example.com']);
});
it('should normalize domain with subdomain to lowercase', () => {
const options = DomainLockRule({
domainLock: ['.Example.COM']
} as IOptions);
assert.deepEqual(options.domainLock, ['.example.com']);
});
it('should normalize multiple mixed-case domains', () => {
const options = DomainLockRule({
domainLock: ['Foo.Bar.COM', 'EXAMPLE.ORG']
} as IOptions);
assert.deepEqual(options.domainLock, ['foo.bar.com', 'example.org']);
});
it('should not change already-lowercase domains', () => {
const options = DomainLockRule({
domainLock: ['example.com']
} as IOptions);
assert.deepEqual(options.domainLock, ['example.com']);
});
});
});