diff --git a/src/models/StratumV1Client.ts b/src/models/StratumV1Client.ts index adcb2a5..290fecc 100644 --- a/src/models/StratumV1Client.ts +++ b/src/models/StratumV1Client.ts @@ -353,6 +353,12 @@ export class StratumV1Client { private async initStratum() { this.stratumInitialized = true; + if (this.validateHeaderCompliance(this.clientSubscription.userAgent)) { + console.log(`Non compliant connection from userAgent: ${this.clientSubscription.userAgent}`); + await this.socket.end(); + return; + } + switch (this.clientSubscription.userAgent) { case 'cpuminer': { this.sessionDifficulty = 0.1; @@ -653,6 +659,18 @@ export class StratumV1Client { return number; } + private validateHeaderCompliance(userAgent: string): boolean { + const headerCompliance = this.configService.get('COMPLIANT_HEADERS'); + if (!headerCompliance || headerCompliance.trim() === '') { + return false; + } + + const complianceList = headerCompliance.split(',').map(ua => ua.trim().toLowerCase()); + const userAgentLower = userAgent.toLowerCase(); + + return complianceList.some(compliant => compliant.length > 0 && userAgentLower.includes(compliant)); + } + private async write(message: string): Promise { try { if (!this.socket.destroyed && !this.socket.writableEnded) {