From a217ef29c8e63f43047606b770ff7cde15564c16 Mon Sep 17 00:00:00 2001 From: Marco von Rosenberg Date: Mon, 17 Apr 2023 00:12:35 +0200 Subject: [PATCH] Add support for NTLM authentication --- Dockerfile | 2 +- package.json | 4 ++-- src/index.js | 8 ++++++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index a6f6c6b..0ee5576 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,4 +18,4 @@ RUN npm ci --production EXPOSE 4000 # Serve the app -CMD ["node", "index.js"] +CMD ["node", "--openssl-legacy-provider", "index.js"] diff --git a/package.json b/package.json index 71c26db..b898768 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ "docker:build": "docker build . -t awaragi/prometheus-mssql-exporter", "docker:run": "export DOCKERID=$(docker build -q .) && docker run --name prometheus-mssql-exporter --rm -it -p 4000:4000 -e SERVER=$(docker inspect mssql | jq -r '.[].NetworkSettings.Networks.bridge.IPAddress') -e USERNAME=SA -e PASSWORD=qkD4x3yy -e DEBUG=app,db,metrics $DOCKERID ; docker image rm $DOCKERID", "docker:run:published": "export DOCKERID=awaragi/prometheus-mssql-exporter && docker run --name prometheus-mssql-exporter --rm -it -p 4000:4000 -e SERVER=$(docker inspect mssql | jq -r '.[].NetworkSettings.Networks.bridge.IPAddress') -e USERNAME=SA -e PASSWORD=qkD4x3yy -e DEBUG=app,db,metrics $DOCKERID ; docker image rm $DOCKERID", - "start": "DEBUG=app,db,metrics SERVER=localhost USERNAME=SA PASSWORD=qkD4x3yy node src/index.js", - "start:verbose": "DEBUG=app,db,metrics,queries SERVER=localhost USERNAME=SA PASSWORD=qkD4x3yy node src/index.js", + "start": "DEBUG=app,db,metrics SERVER=localhost USERNAME=SA PASSWORD=qkD4x3yy node --openssl-legacy-provider src/index.js", + "start:verbose": "DEBUG=app,db,metrics,queries SERVER=localhost USERNAME=SA PASSWORD=qkD4x3yy node --openssl-legacy-provider src/index.js", "test:mssql:2019": "docker run --name mssql --rm -e ACCEPT_EULA=Y -e SA_PASSWORD=qkD4x3yy -p 1433:1433 --name mssql mcr.microsoft.com/mssql/server:2019-latest", "test:mssql:2017": "docker run --name mssql --rm -e ACCEPT_EULA=Y -e SA_PASSWORD=qkD4x3yy -p 1433:1433 --name mssql mcr.microsoft.com/mssql/server:2017-latest", "test:fetch": "curl http://localhost:4000/metrics", diff --git a/src/index.js b/src/index.js index 029568c..a54f1d8 100644 --- a/src/index.js +++ b/src/index.js @@ -39,6 +39,14 @@ if (!config.connect.authentication.options.password) { throw new Error("Missing PASSWORD information"); } +let regexDomainUser = /^([^\\]+)\\([^\\]+)$/; +let match = regexDomainUser.exec(config.connect.authentication.options.userName); +if (match) { + config.connect.authentication.type = "ntlm"; + config.connect.authentication.options.domain = match[1]; + config.connect.authentication.options.userName = match[2]; +} + /** * Connects to a database server. *