From 7c36a08852dc5dad9cd0786b7e83115d266645d4 Mon Sep 17 00:00:00 2001 From: Dave Horton Date: Tue, 14 Nov 2023 09:06:43 -0500 Subject: [PATCH] Feat/dial via sip proxy (#532) * add support for dialing via proxy with target.proxy * update verb-specifications with support for target.proxy --- lib/utils/place-outdial.js | 3 +- package-lock.json | 190 +++++++++++-------------------------- package.json | 2 +- 3 files changed, 58 insertions(+), 137 deletions(-) diff --git a/lib/utils/place-outdial.js b/lib/utils/place-outdial.js index 65d450a6..ecdc127b 100644 --- a/lib/utils/place-outdial.js +++ b/lib/utils/place-outdial.js @@ -76,7 +76,8 @@ class SingleDialer extends Emitter { ...(this.from.host && {'X-Preferred-From-Host': this.from.host}), 'X-Jambonz-Routing': this.target.type, 'X-Call-Sid': this.callSid, - ...(this.applicationSid && {'X-Application-Sid': this.applicationSid}) + ...(this.applicationSid && {'X-Application-Sid': this.applicationSid}), + ...(this.target.proxy && {'X-SIP-Proxy': this.target.proxy}) }; if (srf.locals.fsUUID) { opts.headers = { diff --git a/package-lock.json b/package-lock.json index 92b8cab9..4d371d10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "@jambonz/speech-utils": "^0.0.26", "@jambonz/stats-collector": "^0.1.9", "@jambonz/time-series": "^0.2.8", - "@jambonz/verb-specifications": "^0.0.45", + "@jambonz/verb-specifications": "^0.0.46", "@opentelemetry/api": "^1.4.0", "@opentelemetry/exporter-jaeger": "^1.9.0", "@opentelemetry/exporter-trace-otlp-http": "^0.35.0", @@ -3182,9 +3182,9 @@ } }, "node_modules/@jambonz/verb-specifications": { - "version": "0.0.45", - "resolved": "https://registry.npmjs.org/@jambonz/verb-specifications/-/verb-specifications-0.0.45.tgz", - "integrity": "sha512-0cC7cfyXuOlqjfrtA9GC7A84efInj4z+ZSsibONqHMw3FVJE5IvcvabRojarDHooIn9Uw6AEX/zZ7BZqfgVmJw==", + "version": "0.0.46", + "resolved": "https://registry.npmjs.org/@jambonz/verb-specifications/-/verb-specifications-0.0.46.tgz", + "integrity": "sha512-wf/Pb1Iyg+waepYv9z138dwIKR4V7gB/HRlpxjl5lzogFT8VxWCciKJYfDT+xrvZXPBDfMLCZNhmjmN4dZx12g==", "dependencies": { "debug": "^4.3.4", "pino": "^8.8.0" @@ -4248,6 +4248,14 @@ "resolved": "https://registry.npmjs.org/@types/async/-/async-3.2.20.tgz", "integrity": "sha512-6jSBQQugzyX1aWto0CbvOnmxrU9tMoXfA9gc4IrLEtvr3dTwSg5GLGoWiZnGLI6UG/kqpB3JOQKQrqnhUWGKQA==" }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, "node_modules/@types/extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/extend/-/extend-3.0.1.tgz", @@ -4325,6 +4333,11 @@ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, "node_modules/@types/node": { "version": "20.2.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.5.tgz", @@ -4648,9 +4661,9 @@ } }, "node_modules/axios": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", - "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz", + "integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -6885,17 +6898,18 @@ } }, "node_modules/ibm-cloud-sdk-core": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/ibm-cloud-sdk-core/-/ibm-cloud-sdk-core-4.0.8.tgz", - "integrity": "sha512-YPnbEbu0p7jJ3ZM/lHLmzldhLjb2N6pzFg0kDbeUCfFRr0J6ep2gP9H0gUoDEl3oF8gtA8FwccK+bTSbioA1Rg==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/ibm-cloud-sdk-core/-/ibm-cloud-sdk-core-4.1.5.tgz", + "integrity": "sha512-+joRJJxGa6Afw4jjabFvoUS+K3wPkxX42Aubsdr6jZzJ8dAVAoJppzaRjWeO+9mFWf+9pLtgKMGEP6487eprZA==", "dependencies": { + "@types/debug": "^4.1.12", "@types/file-type": "~5.2.1", "@types/isstream": "^0.1.0", "@types/node": "~10.14.19", "@types/tough-cookie": "^4.0.0", - "axios": "1.4.0", + "axios": "1.6.0", "camelcase": "^5.3.1", - "debug": "^4.1.1", + "debug": "^4.3.4", "dotenv": "^6.2.0", "expect": "^26.1.0", "extend": "^3.0.2", @@ -6904,12 +6918,9 @@ "isstream": "~0.1.2", "jsonwebtoken": "^9.0.0", "lodash.isempty": "^4.4.0", - "mime-types": "~2.1.18", - "object.omit": "~3.0.0", - "object.pick": "~1.3.0", + "mime-types": "^2.1.35", "retry-axios": "^2.6.0", - "semver": "^6.2.0", - "tough-cookie": "^4.0.0" + "tough-cookie": "^4.1.3" }, "engines": { "node": ">=14" @@ -6928,14 +6939,6 @@ "node": ">=6" } }, - "node_modules/ibm-cloud-sdk-core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/ibm-watson": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/ibm-watson/-/ibm-watson-8.0.0.tgz", @@ -7216,17 +7219,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -7308,17 +7300,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", @@ -7480,14 +7461,6 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -8605,28 +8578,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.omit": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz", - "integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==", - "dependencies": { - "is-extendable": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/on-exit-leak-free": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", @@ -13446,9 +13397,9 @@ } }, "@jambonz/verb-specifications": { - "version": "0.0.45", - "resolved": "https://registry.npmjs.org/@jambonz/verb-specifications/-/verb-specifications-0.0.45.tgz", - "integrity": "sha512-0cC7cfyXuOlqjfrtA9GC7A84efInj4z+ZSsibONqHMw3FVJE5IvcvabRojarDHooIn9Uw6AEX/zZ7BZqfgVmJw==", + "version": "0.0.46", + "resolved": "https://registry.npmjs.org/@jambonz/verb-specifications/-/verb-specifications-0.0.46.tgz", + "integrity": "sha512-wf/Pb1Iyg+waepYv9z138dwIKR4V7gB/HRlpxjl5lzogFT8VxWCciKJYfDT+xrvZXPBDfMLCZNhmjmN4dZx12g==", "requires": { "debug": "^4.3.4", "pino": "^8.8.0" @@ -14255,6 +14206,14 @@ "resolved": "https://registry.npmjs.org/@types/async/-/async-3.2.20.tgz", "integrity": "sha512-6jSBQQugzyX1aWto0CbvOnmxrU9tMoXfA9gc4IrLEtvr3dTwSg5GLGoWiZnGLI6UG/kqpB3JOQKQrqnhUWGKQA==" }, + "@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "requires": { + "@types/ms": "*" + } + }, "@types/extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/extend/-/extend-3.0.1.tgz", @@ -14332,6 +14291,11 @@ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" }, + "@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, "@types/node": { "version": "20.2.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.5.tgz", @@ -14582,9 +14546,9 @@ "dev": true }, "axios": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", - "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.0.tgz", + "integrity": "sha512-EZ1DYihju9pwVB+jg67ogm+Tmqc6JmhamRN6I4Zt8DfZu5lbcQGw3ozH9lFejSJgs/ibaef3A9PMXPLeefFGJg==", "requires": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -16288,17 +16252,18 @@ } }, "ibm-cloud-sdk-core": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/ibm-cloud-sdk-core/-/ibm-cloud-sdk-core-4.0.8.tgz", - "integrity": "sha512-YPnbEbu0p7jJ3ZM/lHLmzldhLjb2N6pzFg0kDbeUCfFRr0J6ep2gP9H0gUoDEl3oF8gtA8FwccK+bTSbioA1Rg==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/ibm-cloud-sdk-core/-/ibm-cloud-sdk-core-4.1.5.tgz", + "integrity": "sha512-+joRJJxGa6Afw4jjabFvoUS+K3wPkxX42Aubsdr6jZzJ8dAVAoJppzaRjWeO+9mFWf+9pLtgKMGEP6487eprZA==", "requires": { + "@types/debug": "^4.1.12", "@types/file-type": "~5.2.1", "@types/isstream": "^0.1.0", "@types/node": "~10.14.19", "@types/tough-cookie": "^4.0.0", - "axios": "1.4.0", + "axios": "1.6.0", "camelcase": "^5.3.1", - "debug": "^4.1.1", + "debug": "^4.3.4", "dotenv": "^6.2.0", "expect": "^26.1.0", "extend": "^3.0.2", @@ -16307,12 +16272,9 @@ "isstream": "~0.1.2", "jsonwebtoken": "^9.0.0", "lodash.isempty": "^4.4.0", - "mime-types": "~2.1.18", - "object.omit": "~3.0.0", - "object.pick": "~1.3.0", + "mime-types": "^2.1.35", "retry-axios": "^2.6.0", - "semver": "^6.2.0", - "tough-cookie": "^4.0.0" + "tough-cookie": "^4.1.3" }, "dependencies": { "@types/node": { @@ -16324,11 +16286,6 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -16543,14 +16500,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -16602,14 +16551,6 @@ "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==" }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", @@ -16723,11 +16664,6 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -17613,22 +17549,6 @@ "object-keys": "^1.1.1" } }, - "object.omit": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz", - "integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==", - "requires": { - "is-extendable": "^1.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "requires": { - "isobject": "^3.0.1" - } - }, "on-exit-leak-free": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", diff --git a/package.json b/package.json index 37759f37..4723306f 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@jambonz/speech-utils": "^0.0.26", "@jambonz/stats-collector": "^0.1.9", "@jambonz/time-series": "^0.2.8", - "@jambonz/verb-specifications": "^0.0.45", + "@jambonz/verb-specifications": "^0.0.46", "@opentelemetry/api": "^1.4.0", "@opentelemetry/exporter-jaeger": "^1.9.0", "@opentelemetry/exporter-trace-otlp-http": "^0.35.0",