fix(server): Require Rust bridge for DNS packet processing; remove synchronous TypeScript fallback; change handler API to accept IDnsQuestion and adjust query API

This commit is contained in:
2026-02-12 23:52:46 +00:00
parent 0c140403e9
commit 7fb656e8b5
18 changed files with 2268 additions and 1863 deletions

View File

@@ -1,6 +1,6 @@
import * as plugins from '../ts_server/plugins.js';
import { expect, tap } from '@git.zone/tstest/tapbundle';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_node';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_serverside';
import * as dnsPacket from 'dns-packet';
import * as dgram from 'dgram';

View File

@@ -1,6 +1,6 @@
import * as plugins from '../ts_server/plugins.js';
import { expect, tap } from '@git.zone/tstest/tapbundle';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_node';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_serverside';
import * as dnsPacket from 'dns-packet';
import * as dgram from 'dgram';

View File

@@ -1,6 +1,6 @@
import * as plugins from '../ts_server/plugins.js';
import { expect, tap } from '@git.zone/tstest/tapbundle';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_node';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_serverside';
import * as dnsPacket from 'dns-packet';
import * as dgram from 'dgram';

View File

@@ -1,6 +1,6 @@
import * as plugins from '../ts_server/plugins.js';
import { expect, tap } from '@git.zone/tstest/tapbundle';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_node';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_serverside';
import * as dnsPacket from 'dns-packet';
import * as dgram from 'dgram';

View File

@@ -1,6 +1,6 @@
import * as plugins from '../ts_server/plugins.js';
import { expect, tap } from '@git.zone/tstest/tapbundle';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_node';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_serverside';
import * as dnsPacket from 'dns-packet';
import * as dgram from 'dgram';

View File

@@ -1,6 +1,6 @@
import * as plugins from '../ts_server/plugins.js';
import { expect, tap } from '@git.zone/tstest/tapbundle';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_node';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_serverside';
import { execSync } from 'child_process';
import * as dnsPacket from 'dns-packet';
@@ -282,10 +282,8 @@ tap.test('lets add a handler', async () => {
});
// @ts-ignore - accessing private method for testing
const response = dnsServer.processDnsRequest({
type: 'query',
id: 1,
flags: 0,
const response = dnsServer.resolveQuery({
correlationId: 'test-1',
questions: [
{
name: 'dnsly_a.bleu.de',
@@ -293,8 +291,8 @@ tap.test('lets add a handler', async () => {
class: 'IN',
},
],
answers: [],
});
expect(response.answered).toEqual(true);
expect(response.answers[0]).toEqual({
name: 'dnsly_a.bleu.de',
type: 'A',
@@ -324,7 +322,7 @@ tap.test('should unregister a handler', async () => {
data: '127.0.0.1',
};
});
dnsServer.registerHandler('test.com', ['TXT'], (question) => {
return {
name: question.name,
@@ -338,13 +336,11 @@ tap.test('should unregister a handler', async () => {
// Test unregistering
const result = dnsServer.unregisterHandler('*.bleu.de', ['A']);
expect(result).toEqual(true);
// Verify handler is removed
// @ts-ignore - accessing private method for testing
const response = dnsServer.processDnsRequest({
type: 'query',
id: 1,
flags: 0,
const response = dnsServer.resolveQuery({
correlationId: 'test-2',
questions: [
{
name: 'dnsly_a.bleu.de',
@@ -352,11 +348,11 @@ tap.test('should unregister a handler', async () => {
class: 'IN',
},
],
answers: [],
});
// Should get SOA record instead of A record
expect(response.answers[0].type).toEqual('SOA');
// Should not find any handler match
expect(response.answered).toEqual(false);
expect(response.answers.length).toEqual(0);
});
tap.test('lets query over https', async () => {

View File

@@ -1,6 +1,6 @@
import * as plugins from '../ts_server/plugins.js';
import { expect, tap } from '@git.zone/tstest/tapbundle';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_node';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_serverside';
import * as dnsPacket from 'dns-packet';
import * as dgram from 'dgram';

View File

@@ -1,6 +1,6 @@
import * as plugins from '../ts_server/plugins.js';
import { expect, tap } from '@git.zone/tstest/tapbundle';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_node';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_serverside';
import * as dnsPacket from 'dns-packet';
import * as dgram from 'dgram';

View File

@@ -1,6 +1,6 @@
import * as plugins from '../ts_server/plugins.js';
import { expect, tap } from '@git.zone/tstest/tapbundle';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_node';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_serverside';
import * as dnsPacket from 'dns-packet';
import * as dgram from 'dgram';

View File

@@ -1,5 +1,5 @@
import { expect, tap } from '@git.zone/tstest/tapbundle';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_node';
import { tapNodeTools } from '@git.zone/tstest/tapbundle_serverside';
import * as dnsPacket from 'dns-packet';
import * as dgram from 'dgram';