From 51b2739af41aa2ef7dc58e8ed519d38d1b5861d6 Mon Sep 17 00:00:00 2001 From: Christian Koop Date: Tue, 19 Nov 2024 18:27:58 +0100 Subject: [PATCH] fix: allow underscores in FQDNs/subdomains --- src/minecraft/server/blocklist/FqdnValidator.ts | 2 +- tests/unit/minecraft/server/FqdnValidator.test.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/minecraft/server/blocklist/FqdnValidator.ts b/src/minecraft/server/blocklist/FqdnValidator.ts index b2d9dd5..c461db0 100644 --- a/src/minecraft/server/blocklist/FqdnValidator.ts +++ b/src/minecraft/server/blocklist/FqdnValidator.ts @@ -3,7 +3,7 @@ import { singleton } from 'tsyringe'; @singleton() export default class FqdnValidator { // A very simple pattern to not risk false-positives (based on RFC 1034) - private readonly FQDN_PATTERN = /^(?:[a-z0-9-]{1,63}\.)+[a-z][a-z0-9-]{0,63}\.?$/i; + private readonly FQDN_PATTERN = /^(?:[a-z0-9_-]{1,63}\.)+[a-z][a-z0-9-]{0,63}\.?$/i; validateFqdn(input: string): boolean { return input.length <= 255 && this.FQDN_PATTERN.test(input); diff --git a/tests/unit/minecraft/server/FqdnValidator.test.ts b/tests/unit/minecraft/server/FqdnValidator.test.ts index f3df883..dab9e9c 100644 --- a/tests/unit/minecraft/server/FqdnValidator.test.ts +++ b/tests/unit/minecraft/server/FqdnValidator.test.ts @@ -7,7 +7,8 @@ describe('valid FQDNs', () => { ['foobar.example.com'], ['foobar.example.com.'], ['foo.bar'], - ['a.b'] + ['a.b'], + ['foo_bar.example.com'] ])('%s', (input) => { expect(new FqdnValidator().validateFqdn(input)).toBe(true); });