From 8db7c4741cb49211ee4d253508fc8ca910e9be60 Mon Sep 17 00:00:00 2001 From: Tim Vallancourt Date: Tue, 29 Oct 2024 12:27:57 -0700 Subject: [PATCH 1/2] fix packet --- src/connection.ts | 3 ++- src/login7-payload.ts | 16 ++++++++++------ src/token/handler.ts | 4 ++-- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/connection.ts b/src/connection.ts index d810acb16..4beb650c2 100644 --- a/src/connection.ts +++ b/src/connection.ts @@ -873,6 +873,7 @@ export interface ConnectionOptions { interface RoutingData { server: string; port: number; + login7server: string; } /** @@ -2484,7 +2485,7 @@ class Connection extends EventEmitter { } payload.hostname = this.config.options.workstationId || os.hostname(); - payload.serverName = this.routingData ? this.routingData.server : this.config.server; + payload.serverName = this.routingData ? this.routingData.login7server : this.config.server; payload.appName = this.config.options.appName || 'Tedious'; payload.libraryName = libraryName; payload.language = this.config.options.language; diff --git a/src/login7-payload.ts b/src/login7-payload.ts index 01b85f94c..899d0b583 100644 --- a/src/login7-payload.ts +++ b/src/login7-payload.ts @@ -251,15 +251,12 @@ class Login7Payload { } // (ibUnused / ibExtension): 2-byte - offset = fixedData.writeUInt16LE(dataOffset, offset); + const extensionOffsetHeaderOffset = offset; + offset = fixedData.writeUInt16LE(0, offset); + // (cchUnused / cbExtension): 2-byte - const extensions = this.buildFeatureExt(); offset = fixedData.writeUInt16LE(4, offset); - const extensionOffset = Buffer.alloc(4); - extensionOffset.writeUInt32LE(dataOffset += 4, 0); - dataOffset += extensions.length; - buffers.push(extensionOffset, extensions); // ibCltIntName: 2-byte offset = fixedData.writeUInt16LE(dataOffset, offset); @@ -365,6 +362,13 @@ class Login7Payload { fixedData.writeUInt32LE(0, offset); } + fixedData.writeUInt16LE(dataOffset, extensionOffsetHeaderOffset); + + const extensions = this.buildFeatureExt(); + const extensionOffset = Buffer.alloc(4); + extensionOffset.writeUInt32LE(dataOffset + 4, 0); + buffers.push(extensionOffset, extensions); + const data = Buffer.concat(buffers); data.writeUInt32LE(data.length, 0); return data; diff --git a/src/token/handler.ts b/src/token/handler.ts index 0c259a723..5eb97f8b4 100644 --- a/src/token/handler.ts +++ b/src/token/handler.ts @@ -246,7 +246,7 @@ export class Login7TokenHandler extends TokenHandler { declare connection: Connection; declare fedAuthInfoToken: FedAuthInfoToken | undefined; - declare routingData: { server: string, port: number } | undefined; + declare routingData: { server: string, port: number, login7server: string } | undefined; declare loginAckReceived: boolean; @@ -340,7 +340,7 @@ export class Login7TokenHandler extends TokenHandler { const [ server ] = token.newValue.server.split('\\'); this.routingData = { - server, port: token.newValue.port + server, port: token.newValue.port, login7server: token.newValue.server }; } From 08f8110f4045f8f80272ff9c7b38ac2a142d81e5 Mon Sep 17 00:00:00 2001 From: Tim Vallancourt Date: Tue, 29 Oct 2024 17:12:01 -0700 Subject: [PATCH 2/2] instance --- src/connection.ts | 4 ++-- src/token/handler.ts | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/connection.ts b/src/connection.ts index 4beb650c2..75e32252b 100644 --- a/src/connection.ts +++ b/src/connection.ts @@ -873,7 +873,7 @@ export interface ConnectionOptions { interface RoutingData { server: string; port: number; - login7server: string; + instance: string; } /** @@ -2485,7 +2485,7 @@ class Connection extends EventEmitter { } payload.hostname = this.config.options.workstationId || os.hostname(); - payload.serverName = this.routingData ? this.routingData.login7server : this.config.server; + payload.serverName = this.routingData ? `${this.routingData.server}\\${this.routingData.instance}` : this.config.server; payload.appName = this.config.options.appName || 'Tedious'; payload.libraryName = libraryName; payload.language = this.config.options.language; diff --git a/src/token/handler.ts b/src/token/handler.ts index 5eb97f8b4..832e5bd4c 100644 --- a/src/token/handler.ts +++ b/src/token/handler.ts @@ -246,7 +246,7 @@ export class Login7TokenHandler extends TokenHandler { declare connection: Connection; declare fedAuthInfoToken: FedAuthInfoToken | undefined; - declare routingData: { server: string, port: number, login7server: string } | undefined; + declare routingData: { server: string, port: number, instance: string } | undefined; declare loginAckReceived: boolean; @@ -337,10 +337,10 @@ export class Login7TokenHandler extends TokenHandler { onRoutingChange(token: RoutingEnvChangeToken) { // Removes instance name attached to the redirect url. E.g., redirect.db.net\instance1 --> redirect.db.net - const [ server ] = token.newValue.server.split('\\'); + const [ server, instance ] = token.newValue.server.split('\\'); this.routingData = { - server, port: token.newValue.port, login7server: token.newValue.server + server, port: token.newValue.port, instance }; }