diff --git a/config-default.json b/config-default.json index 6fdf68a..8cddc46 100644 --- a/config-default.json +++ b/config-default.json @@ -1,5 +1,5 @@ { - "instance": "node-MicMac-DroneMapper", + "instance": "node-MicMac", "odm_path": "/code", "logger": { @@ -9,7 +9,7 @@ "logDirectory": "" }, - "port": 3000, + "port": "auto", "deamon": false, "parallelQueueProcessing": 2, "cleanupTasksAfter": 2880, @@ -17,5 +17,6 @@ "testSkipOrthophotos": false, "testSkipDems": false, "token": "", + "authorizedIps": [], "maxImages": "" -} \ No newline at end of file +} diff --git a/config.js b/config.js index 95b6beb..eb8e33e 100644 --- a/config.js +++ b/config.js @@ -90,7 +90,7 @@ config.logger.maxFileSize = fromConfigFile("logger.maxFileSize", 1024 * 1024 * 1 config.logger.maxFiles = fromConfigFile("logger.maxFiles", 10); // Max number of log files kept config.logger.logDirectory = fromConfigFile("logger.logDirectory", ''); // Set this to a full path to a directory - if not set logs will be written to the application directory. -config.port = parseInt(argv.port || argv.p || fromConfigFile("port", process.env.PORT || 3000)); +config.port = (argv.port || argv.p || fromConfigFile("port", process.env.PORT || "auto")); config.deamon = argv.deamonize || argv.d || fromConfigFile("daemon", false); config.parallelQueueProcessing = parseInt(argv.parallel_queue_processing || argv.q || fromConfigFile("parallelQueueProcessing", 2)); config.cleanupTasksAfter = parseInt(argv.cleanup_tasks_after || fromConfigFile("cleanupTasksAfter", 2880)); diff --git a/dm/odm_options.json b/dm/odm_options.json index dd52d0e..13d9d83 100644 --- a/dm/odm_options.json +++ b/dm/odm_options.json @@ -71,7 +71,7 @@ }, "--version": { "action": "version", - "version": "DroneMapper MicMac", + "version": "Node MicMac", "help": "Displays version number and exits. " } } diff --git a/index.js b/index.js index 86bdb81..4460d0e 100644 --- a/index.js +++ b/index.js @@ -882,10 +882,29 @@ let commands = [ taskManager = TaskManager.singleton(); }, cb => { - server = app.listen(config.port, err => { - if (!err) logger.info('Server has started on port ' + String(config.port)); - cb(err); - }); + const startServer = (port, cb) => { + server = app.listen(parseInt(port), (err) => { + if (!err) logger.info('Server has started on port ' + String(port)); + cb(err); + }); + server.on("error", cb); + }; + + const tryStartServer = (port, cb) => { + startServer(port, (err) => { + if (err && err.code === 'EADDRINUSE' && port < 5000){ + tryStartServer(port + 1, cb); + }else cb(err); + }); + }; + + if (Number.isInteger(parseInt(config.port))){ + startServer(config.port, cb); + }else if (config.port === "auto"){ + tryStartServer(3000, cb); + }else{ + cb(new Error(`Invalid port: ${config.port}`)); + } } ]; diff --git a/package.json b/package.json index 0ae1c77..c8d815e 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "opendronemap" ], "author": "Piero Toffanin", - "license": "GPL-3.0", + "license": "AGPL-3.0", "bugs": { "url": "https://github.com/OpenDroneMap/NodeODM/issues" }, @@ -36,10 +36,10 @@ "request": "^2.88.0", "rimraf": "^2.6.2", "swagger-jsdoc": "^3.2.6", - "systeminformation": "5.6.4", + "systeminformation": "3.42.0", "tree-kill": "^1.2.1", "uuid": "^3.3.2", - "winston": "^2.2.0" + "winston": "^3.3.3" }, "devDependencies": { "grunt": "^1.0.3",