From 76d84b8c118e6618efcd87870e9bd28c9c44720e Mon Sep 17 00:00:00 2001 From: Simon Hampton Date: Fri, 22 Dec 2023 13:26:03 +0100 Subject: [PATCH 1/7] extra debugging around sftp --- package-lock.json | 27 +++++++++++++++++++++++---- package.json | 7 ++++--- src/ftp-deploy.js | 21 +++++++++++++++------ 3 files changed, 42 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index ff7f27d..5ab421f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,29 +1,30 @@ { "name": "ftp-deploy", - "version": "2.4.4", + "version": "2.4.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ftp-deploy", - "version": "2.4.4", + "version": "2.4.6", "license": "MIT", "dependencies": { "bluebird": "^3.7.2", "minimatch": "9.0.0", "promise-ftp": "^1.3.5", "read": "^2.1.0", - "ssh2-sftp-client": "^7.2.1", + "ssh2-sftp-client": "^7.2.3", "upath": "^2.0.1" }, "devDependencies": { "chai": "^4.3.7", "delete": "^1.1.0", + "dotenv": "^16.3.1", "ftp-srv": "^4.6.2", "mocha": "^9.1.3" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/@icetee/ftp": { @@ -485,6 +486,18 @@ "node": ">=0.3.1" } }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, "node_modules/dtrace-provider": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", @@ -2284,6 +2297,12 @@ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, + "dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "dev": true + }, "dtrace-provider": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", diff --git a/package.json b/package.json index 2f0f66f..06533c5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ftp-deploy", - "version": "2.4.5", + "version": "2.4.6", "author": "Simon Hampton", "description": "Ftp a folder from your local disk to an ftp destination", "main": "src/ftp-deploy", @@ -13,12 +13,13 @@ "minimatch": "9.0.0", "promise-ftp": "^1.3.5", "read": "^2.1.0", - "ssh2-sftp-client": "^7.2.1", + "ssh2-sftp-client": "^7.2.3", "upath": "^2.0.1" }, "devDependencies": { "chai": "^4.3.7", "delete": "^1.1.0", + "dotenv": "^16.3.1", "ftp-srv": "^4.6.2", "mocha": "^9.1.3" }, @@ -53,4 +54,4 @@ "prettier": { "tabWidth": 4 } -} \ No newline at end of file +} diff --git a/src/ftp-deploy.js b/src/ftp-deploy.js index 0b23da6..85dac8a 100644 --- a/src/ftp-deploy.js +++ b/src/ftp-deploy.js @@ -7,7 +7,7 @@ const Promise = require("bluebird"); const fs = require("fs"); var PromiseFtp = require("promise-ftp"); -var PromiseSftp = require("ssh2-sftp-client"); +var sftpClient = require("ssh2-sftp-client"); const lib = require("./lib"); /* interim structure @@ -53,20 +53,22 @@ const FtpDeployer = function () { // console.log("newDirectory", newDirectory); return Promise.mapSeries(fnames, (fname) => { let tmpFileName = upath.join(config.localRoot, relDir, fname); - let tmp = fs.readFileSync(tmpFileName); + let fileContents = fs.readFileSync(tmpFileName); this.eventObject["filename"] = upath.join(relDir, fname); this.emit("uploading", this.eventObject); + const putPath = upath.join(config.remoteRoot, relDir, fname); + console.log({ putPath }); return this.ftp - .put(tmp, upath.join(config.remoteRoot, relDir, fname)) + .put(fileContents, putPath) .then(() => { this.eventObject.transferredFileCount++; this.emit("uploaded", this.eventObject); return Promise.resolve("uploaded " + tmpFileName); }) .catch((err) => { - this.eventObject["error"] = err; + this.eventObject["error"] = err.message; this.emit("upload-error", this.eventObject); // if continue on error.... return Promise.reject(err); @@ -77,7 +79,7 @@ const FtpDeployer = function () { // connects to the server, Resolves the config on success this.connect = (config) => { - this.ftp = config.sftp ? new PromiseSftp() : new PromiseFtp(); + this.ftp = config.sftp ? new sftpClient() : new PromiseFtp(); // sftp client does not provide a connection status // so instead provide one ourselfs @@ -90,8 +92,15 @@ const FtpDeployer = function () { return this.ftp .connect(config) .then((serverMessage) => { + // no param for sftp! this.emit("log", "Connected to: " + config.host); - this.emit("log", "Connected: Server message: " + serverMessage); + if (!config.sftp) { + // we do have a server message for non-sftp + this.emit( + "log", + "Connected: Server message: " + serverMessage + ); + } // sftp does not provide a connection status // so instead provide one ourself From a6807fcec40bfedd27e021045cf66319ee1b89fc Mon Sep 17 00:00:00 2001 From: Simon Hampton Date: Sat, 6 Jan 2024 07:26:24 +0100 Subject: [PATCH 2/7] wip --- src/ftp-deploy.js | 4 +++- src/ftp-deploy.spec.js | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/ftp-deploy.js b/src/ftp-deploy.js index 85dac8a..043a8fb 100644 --- a/src/ftp-deploy.js +++ b/src/ftp-deploy.js @@ -57,7 +57,9 @@ const FtpDeployer = function () { this.eventObject["filename"] = upath.join(relDir, fname); this.emit("uploading", this.eventObject); - const putPath = upath.join(config.remoteRoot, relDir, fname); + const putPath = upath + .join(config.remoteRoot, relDir, fname) + .slice(1); console.log({ putPath }); return this.ftp diff --git a/src/ftp-deploy.spec.js b/src/ftp-deploy.spec.js index 022fac7..8cc669e 100644 --- a/src/ftp-deploy.spec.js +++ b/src/ftp-deploy.spec.js @@ -30,7 +30,7 @@ describe("ftp-deploy.spec: deploy tests", () => { it("should fail if badly configured", () => { const d = new FtpDeploy(); - const configError = Object.assign({}, config, { port: 212 }); + const configError = { ...config, port: 212 }; return del(remoteDir) .then(() => { return d.deploy(configError); @@ -48,7 +48,7 @@ describe("ftp-deploy.spec: deploy tests", () => { const d = new FtpDeploy(); return del(remoteDir) .then(() => { - let c2 = Object.assign({}, config, { include: [] }); + let c2 = { ...config, include: [] }; return d.deploy(c2); }) .catch((err) => { From 17cd21b3ecad1b8c9b4c7eac2696b22535b88805 Mon Sep 17 00:00:00 2001 From: Simon Hampton Date: Sat, 20 Jan 2024 09:00:16 +0100 Subject: [PATCH 3/7] cleaner --- package-lock.json | 19 ------------------- package.json | 1 - src/ftp-deploy.js | 10 +++++----- 3 files changed, 5 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 571de23..73aa7f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,6 @@ "devDependencies": { "chai": "^4.3.7", "delete": "^1.1.0", - "dotenv": "^16.3.1", "ftp-srv": "^4.6.2", "mocha": "^9.1.3" }, @@ -486,18 +485,6 @@ "node": ">=0.3.1" } }, - "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, "node_modules/dtrace-provider": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", @@ -2298,12 +2285,6 @@ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, - "dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "dev": true - }, "dtrace-provider": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", diff --git a/package.json b/package.json index 01b2f42..582e67c 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,6 @@ "devDependencies": { "chai": "^4.3.7", "delete": "^1.1.0", - "dotenv": "^16.3.1", "ftp-srv": "^4.6.2", "mocha": "^9.1.3" }, diff --git a/src/ftp-deploy.js b/src/ftp-deploy.js index 8e6eb3d..408884c 100644 --- a/src/ftp-deploy.js +++ b/src/ftp-deploy.js @@ -6,7 +6,7 @@ const events = require("events"); const fs = require("fs"); var PromiseFtp = require("promise-ftp"); -var sftpClient = require("ssh2-sftp-client"); +var PromiseSftp = require("ssh2-sftp-client"); const lib = require("./lib"); /* interim structure @@ -52,7 +52,7 @@ const FtpDeployer = function () { // console.log("newDirectory", newDirectory); return lib.mapSeries(fnames, (fname) => { let tmpFileName = upath.join(config.localRoot, relDir, fname); - let fileContents = fs.readFileSync(tmpFileName); + let tmpFileContents = fs.readFileSync(tmpFileName); this.eventObject["filename"] = upath.join(relDir, fname); this.emit("uploading", this.eventObject); @@ -62,7 +62,7 @@ const FtpDeployer = function () { console.log({ putPath }); return this.ftp - .put(fileContents, putPath) + .put(tmpFileContents, putPath) .then(() => { this.eventObject.transferredFileCount++; this.emit("uploaded", this.eventObject); @@ -80,7 +80,7 @@ const FtpDeployer = function () { // connects to the server, Resolves the config on success this.connect = (config) => { - this.ftp = config.sftp ? new sftpClient() : new PromiseFtp(); + this.ftp = config.sftp ? new PromiseSftp() : new PromiseFtp(); // sftp client does not provide a connection status // so instead provide one ourselfs @@ -93,7 +93,7 @@ const FtpDeployer = function () { return this.ftp .connect(config) .then((serverMessage) => { - // no param for sftp! + // ftp returns the servr messsage, but sftp does not! this.emit("log", "Connected to: " + config.host); if (!config.sftp) { // we do have a server message for non-sftp From 03cf26b794a75206131fd2de1b35865652b39f48 Mon Sep 17 00:00:00 2001 From: Simon Hampton Date: Sat, 20 Jan 2024 09:26:50 +0100 Subject: [PATCH 4/7] wip --- src/ftp-deploy.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ftp-deploy.js b/src/ftp-deploy.js index 408884c..48f91c6 100644 --- a/src/ftp-deploy.js +++ b/src/ftp-deploy.js @@ -56,10 +56,11 @@ const FtpDeployer = function () { this.eventObject["filename"] = upath.join(relDir, fname); this.emit("uploading", this.eventObject); + // FIXME - this only helps at the top level const putPath = upath .join(config.remoteRoot, relDir, fname) .slice(1); - console.log({ putPath }); + console.log({ putPath, relDir }); return this.ftp .put(tmpFileContents, putPath) @@ -101,6 +102,8 @@ const FtpDeployer = function () { "log", "Connected: Server message: " + serverMessage ); + } else { + this.emit("log", "Connected to SFTP server"); } // sftp does not provide a connection status From c4d0c36c04118e2269d3ac9ae546b8b5ba97cbb2 Mon Sep 17 00:00:00 2001 From: Simon Hampton Date: Sat, 2 Nov 2024 10:07:11 +0100 Subject: [PATCH 5/7] better version --- package-lock.json | 19 +++++++++++++++++++ package.json | 1 + src/ftp-deploy.js | 6 +----- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 73aa7f4..0d10b9a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "devDependencies": { "chai": "^4.3.7", "delete": "^1.1.0", + "dotenv": "^16.4.5", "ftp-srv": "^4.6.2", "mocha": "^9.1.3" }, @@ -485,6 +486,18 @@ "node": ">=0.3.1" } }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/dtrace-provider": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", @@ -2285,6 +2298,12 @@ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, + "dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true + }, "dtrace-provider": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", diff --git a/package.json b/package.json index 582e67c..9f4f079 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "devDependencies": { "chai": "^4.3.7", "delete": "^1.1.0", + "dotenv": "^16.4.5", "ftp-srv": "^4.6.2", "mocha": "^9.1.3" }, diff --git a/src/ftp-deploy.js b/src/ftp-deploy.js index 48f91c6..632ffc1 100644 --- a/src/ftp-deploy.js +++ b/src/ftp-deploy.js @@ -56,11 +56,7 @@ const FtpDeployer = function () { this.eventObject["filename"] = upath.join(relDir, fname); this.emit("uploading", this.eventObject); - // FIXME - this only helps at the top level - const putPath = upath - .join(config.remoteRoot, relDir, fname) - .slice(1); - console.log({ putPath, relDir }); + const putPath = upath.join(config.remoteRoot, relDir, fname); return this.ftp .put(tmpFileContents, putPath) From 75fbd9e8c3f07d35f7d5f1282f910aa6ca6b3227 Mon Sep 17 00:00:00 2001 From: Simon Hampton Date: Sat, 2 Nov 2024 10:15:56 +0100 Subject: [PATCH 6/7] add the fix! --- src/ftp-deploy.js | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/ftp-deploy.js b/src/ftp-deploy.js index 632ffc1..db2ae2f 100644 --- a/src/ftp-deploy.js +++ b/src/ftp-deploy.js @@ -91,16 +91,10 @@ const FtpDeployer = function () { .connect(config) .then((serverMessage) => { // ftp returns the servr messsage, but sftp does not! - this.emit("log", "Connected to: " + config.host); - if (!config.sftp) { - // we do have a server message for non-sftp - this.emit( - "log", - "Connected: Server message: " + serverMessage - ); - } else { - this.emit("log", "Connected to SFTP server"); - } + this.emit( + "log", + "Connected to: " + config.host + " " + serverMessage || "" + ); // sftp does not provide a connection status // so instead provide one ourself @@ -137,7 +131,7 @@ const FtpDeployer = function () { config.include, config.exclude, config.localRoot, - "/" + "./" ); // console.log(filemap); this.emit( From f36cac7ff5fe40f10c0a9ec1dcb3f2175ffcc5b0 Mon Sep 17 00:00:00 2001 From: Simon Hampton Date: Mon, 27 Jan 2025 17:55:28 +0000 Subject: [PATCH 7/7] wip --- package-lock.json | 136 +++++++++++++++++++++++++--------------------- package.json | 2 +- src/ftp-deploy.js | 1 + 3 files changed, 75 insertions(+), 64 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0d10b9a..b3e040d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "minimatch": "9.0.0", "promise-ftp": "^1.3.5", "read": "^2.1.0", - "ssh2-sftp-client": "^7.2.3", + "ssh2-sftp-client": "^11.0.0", "upath": "^2.0.1" }, "devDependencies": { @@ -174,12 +174,13 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -405,14 +406,14 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/cpu-features": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.7.tgz", - "integrity": "sha512-fjzFmsUKKCrC9GrM1eQTvQx18e+kjXFzjRLvJPNEDjk31+bJ6ZiV6uchv/hzbzXVIgbWdrEyyX1IFKwse65+8w==", + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.10.tgz", + "integrity": "sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==", "hasInstallScript": true, "optional": true, "dependencies": { "buildcheck": "~0.0.6", - "nan": "^2.17.0" + "nan": "^2.19.0" }, "engines": { "node": ">=10.0.0" @@ -569,10 +570,11 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -701,10 +703,11 @@ } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -890,10 +893,11 @@ "dev": true }, "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", + "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", + "dev": true, + "license": "MIT" }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -951,6 +955,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -1324,9 +1329,9 @@ } }, "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz", + "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", "optional": true }, "node_modules/nanoid": { @@ -1630,33 +1635,37 @@ "dev": true }, "node_modules/ssh2": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.12.0.tgz", - "integrity": "sha512-7mcLu8biO6/BjQQ1iCjCmuBiF0hXxo+JlHpJBPDTVsxU7evscWWiRUgYF5XIs4gLKmiPRHA0maund11QLWyDJg==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.16.0.tgz", + "integrity": "sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==", "hasInstallScript": true, "dependencies": { - "asn1": "^0.2.4", + "asn1": "^0.2.6", "bcrypt-pbkdf": "^1.0.2" }, "engines": { "node": ">=10.16.0" }, "optionalDependencies": { - "cpu-features": "~0.0.6", - "nan": "^2.17.0" + "cpu-features": "~0.0.10", + "nan": "^2.20.0" } }, "node_modules/ssh2-sftp-client": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/ssh2-sftp-client/-/ssh2-sftp-client-7.2.3.tgz", - "integrity": "sha512-Bmq4Uewu3e0XOwu5bnPbiS5KRQYv+dff5H6+85V4GZrPrt0Fkt1nUH+uXanyAkoNxUpzjnAPEEoLdOaBO9c3xw==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/ssh2-sftp-client/-/ssh2-sftp-client-11.0.0.tgz", + "integrity": "sha512-lOjgNYtioYquhtgyHwPryFNhllkuENjvCKkUXo18w/Q4UpEffCnEUBfiOTlwFdKIhG1rhrOGnA6DeKPSF2CP6w==", "dependencies": { "concat-stream": "^2.0.0", "promise-retry": "^2.0.1", - "ssh2": "^1.8.0" + "ssh2": "^1.15.0" }, "engines": { - "node": ">=10.24.1" + "node": ">=18.20.4" + }, + "funding": { + "type": "individual", + "url": "https://square.link/u/4g7sPflL" } }, "node_modules/string_decoder": { @@ -1722,6 +1731,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -2058,12 +2068,12 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "browser-stdout": { @@ -2239,13 +2249,13 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "cpu-features": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.7.tgz", - "integrity": "sha512-fjzFmsUKKCrC9GrM1eQTvQx18e+kjXFzjRLvJPNEDjk31+bJ6ZiV6uchv/hzbzXVIgbWdrEyyX1IFKwse65+8w==", + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.10.tgz", + "integrity": "sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==", "optional": true, "requires": { "buildcheck": "~0.0.6", - "nan": "^2.17.0" + "nan": "^2.19.0" } }, "debug": { @@ -2356,9 +2366,9 @@ } }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -2444,9 +2454,9 @@ "dev": true }, "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true }, "glob": { @@ -2597,9 +2607,9 @@ "dev": true }, "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", + "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", "dev": true }, "is-binary-path": { @@ -2934,9 +2944,9 @@ } }, "nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz", + "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", "optional": true }, "nanoid": { @@ -3158,24 +3168,24 @@ "dev": true }, "ssh2": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.12.0.tgz", - "integrity": "sha512-7mcLu8biO6/BjQQ1iCjCmuBiF0hXxo+JlHpJBPDTVsxU7evscWWiRUgYF5XIs4gLKmiPRHA0maund11QLWyDJg==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.16.0.tgz", + "integrity": "sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==", "requires": { - "asn1": "^0.2.4", + "asn1": "^0.2.6", "bcrypt-pbkdf": "^1.0.2", - "cpu-features": "~0.0.6", - "nan": "^2.17.0" + "cpu-features": "~0.0.10", + "nan": "^2.20.0" } }, "ssh2-sftp-client": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/ssh2-sftp-client/-/ssh2-sftp-client-7.2.3.tgz", - "integrity": "sha512-Bmq4Uewu3e0XOwu5bnPbiS5KRQYv+dff5H6+85V4GZrPrt0Fkt1nUH+uXanyAkoNxUpzjnAPEEoLdOaBO9c3xw==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/ssh2-sftp-client/-/ssh2-sftp-client-11.0.0.tgz", + "integrity": "sha512-lOjgNYtioYquhtgyHwPryFNhllkuENjvCKkUXo18w/Q4UpEffCnEUBfiOTlwFdKIhG1rhrOGnA6DeKPSF2CP6w==", "requires": { "concat-stream": "^2.0.0", "promise-retry": "^2.0.1", - "ssh2": "^1.8.0" + "ssh2": "^1.15.0" } }, "string_decoder": { diff --git a/package.json b/package.json index 9f4f079..d049dbf 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "minimatch": "9.0.0", "promise-ftp": "^1.3.5", "read": "^2.1.0", - "ssh2-sftp-client": "^7.2.3", + "ssh2-sftp-client": "^11.0.0", "upath": "^2.0.1" }, "devDependencies": { diff --git a/src/ftp-deploy.js b/src/ftp-deploy.js index db2ae2f..37fccb9 100644 --- a/src/ftp-deploy.js +++ b/src/ftp-deploy.js @@ -52,6 +52,7 @@ const FtpDeployer = function () { // console.log("newDirectory", newDirectory); return lib.mapSeries(fnames, (fname) => { let tmpFileName = upath.join(config.localRoot, relDir, fname); + // read file as Buffer let tmpFileContents = fs.readFileSync(tmpFileName); this.eventObject["filename"] = upath.join(relDir, fname);