choose port dynamically from range based on environment

This commit is contained in:
zadam 2019-07-07 10:49:34 +02:00
parent 36b581489c
commit a912b2f23d
4 changed files with 59 additions and 6 deletions

30
package-lock.json generated
View File

@ -1033,6 +1033,14 @@
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
"integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg=="
}, },
"async": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz",
"integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==",
"requires": {
"lodash": "^4.17.11"
}
},
"async-each-series": { "async-each-series": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-1.1.0.tgz", "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-1.1.0.tgz",
@ -7177,6 +7185,14 @@
} }
} }
}, },
"is-number-like": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz",
"integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==",
"requires": {
"lodash.isfinite": "^3.3.2"
}
},
"is-obj": { "is-obj": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
@ -7758,6 +7774,11 @@
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
"integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
}, },
"lodash.isfinite": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz",
"integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M="
},
"lodash.kebabcase": { "lodash.kebabcase": {
"version": "4.1.1", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
@ -10429,6 +10450,15 @@
} }
} }
}, },
"portscanner": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz",
"integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==",
"requires": {
"async": "^2.6.0",
"is-number-like": "^1.0.3"
}
},
"posix-character-classes": { "posix-character-classes": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",

View File

@ -13,8 +13,8 @@
"url": "https://github.com/zadam/trilium.git" "url": "https://github.com/zadam/trilium.git"
}, },
"scripts": { "scripts": {
"start": "node ./src/www", "start-server": "TRILIUM_ENV=dev node ./src/www",
"start-electron": "electron . --disable-gpu", "start-electron": "TRILIUM_ENV=dev electron . --disable-gpu",
"build-backend-docs": "jsdoc -c jsdoc-conf.json -d ./docs/backend_api src/entities/*.js src/services/backend_script_api.js", "build-backend-docs": "jsdoc -c jsdoc-conf.json -d ./docs/backend_api src/entities/*.js src/services/backend_script_api.js",
"build-frontend-docs": "jsdoc -c jsdoc-conf.json -d ./docs/frontend_api src/public/javascripts/entities/*.js src/public/javascripts/services/frontend_script_api.js", "build-frontend-docs": "jsdoc -c jsdoc-conf.json -d ./docs/frontend_api src/public/javascripts/entities/*.js src/public/javascripts/services/frontend_script_api.js",
"build-docs": "npm run build-backend-docs && npm run build-frontend-docs", "build-docs": "npm run build-backend-docs && npm run build-frontend-docs",
@ -40,7 +40,6 @@
"express-session": "1.16.2", "express-session": "1.16.2",
"file-type": "12.0.1", "file-type": "12.0.1",
"fs-extra": "8.1.0", "fs-extra": "8.1.0",
"get-port": "5.0.0",
"helmet": "3.18.0", "helmet": "3.18.0",
"html": "1.0.0", "html": "1.0.0",
"html2plaintext": "2.1.2", "html2plaintext": "2.1.2",
@ -57,6 +56,7 @@
"node-abi": "2.9.0", "node-abi": "2.9.0",
"open": "6.4.0", "open": "6.4.0",
"pngjs": "3.4.0", "pngjs": "3.4.0",
"portscanner": "^2.2.0",
"rand-token": "0.4.0", "rand-token": "0.4.0",
"rcedit": "2.0.0", "rcedit": "2.0.0",
"rimraf": "2.6.3", "rimraf": "2.6.3",

5
src/services/env.js Normal file
View File

@ -0,0 +1,5 @@
module.exports = {
isDev: function () {
return process.env.TRILIUM_ENV && process.env.TRILIUM_ENV === 'dev';
}
};

View File

@ -1,10 +1,28 @@
const getPort = require('get-port');
const config = require('./config'); const config = require('./config');
const utils = require('./utils'); const utils = require('./utils');
const env = require('./env');
const portscanner = require('portscanner');
let environmentPort;
if (process.env.TRILIUM_PORT) {
environmentPort = parseInt(process.env.TRILIUM_PORT);
}
if (utils.isElectron()) { if (utils.isElectron()) {
module.exports = 53010;//getPort(); module.exports = new Promise((resolve, reject) => {
const startingPort = environmentPort || (env.isDev() ? 37740 : 37840);
portscanner.findAPortNotInUse(startingPort, startingPort + 10, '127.0.0.1', function(error, port) {
if (error) {
reject(error);
}
else {
resolve(port);
}
})
});
} }
else { else {
module.exports = Promise.resolve(config['Network']['port'] || '3000'); module.exports = Promise.resolve(environmentPort || config['Network']['port'] || '3000');
} }