kopia lustrzana https://github.com/OpenDroneMap/NodeODM
Auto port selection
rodzic
2fb254e378
commit
df28ecf5fd
|
@ -9,7 +9,7 @@
|
||||||
"logDirectory": ""
|
"logDirectory": ""
|
||||||
},
|
},
|
||||||
|
|
||||||
"port": 3000,
|
"port": "auto",
|
||||||
"deamon": false,
|
"deamon": false,
|
||||||
"parallelQueueProcessing": 1,
|
"parallelQueueProcessing": 1,
|
||||||
"cleanupTasksAfter": 2880,
|
"cleanupTasksAfter": 2880,
|
||||||
|
|
|
@ -29,7 +29,7 @@ Usage: node index.js [options]
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
--config <path> Path to the configuration file (default: config-default.json)
|
--config <path> Path to the configuration file (default: config-default.json)
|
||||||
-p, --port <number> Port to bind the server to (default: 3000)
|
-p, --port <number> Port to bind the server to, or "auto" to automatically find an available port (default: 3000)
|
||||||
--odm_path <path> Path to OpenDroneMap's code (default: /code)
|
--odm_path <path> Path to OpenDroneMap's code (default: /code)
|
||||||
--log_level <logLevel> Set log level verbosity (default: info)
|
--log_level <logLevel> Set log level verbosity (default: info)
|
||||||
-d, --daemon Set process to run as a deamon
|
-d, --daemon Set process to run as a deamon
|
||||||
|
@ -114,7 +114,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.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.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.daemon || argv.d || fromConfigFile("daemon", false);
|
config.deamon = argv.deamonize || argv.daemon || argv.d || fromConfigFile("daemon", false);
|
||||||
config.parallelQueueProcessing = parseInt(argv.parallel_queue_processing || argv.q || fromConfigFile("parallelQueueProcessing", 1));
|
config.parallelQueueProcessing = parseInt(argv.parallel_queue_processing || argv.q || fromConfigFile("parallelQueueProcessing", 1));
|
||||||
config.cleanupTasksAfter = parseInt(argv.cleanup_tasks_after || fromConfigFile("cleanupTasksAfter", 2880));
|
config.cleanupTasksAfter = parseInt(argv.cleanup_tasks_after || fromConfigFile("cleanupTasksAfter", 2880));
|
||||||
|
|
29
index.js
29
index.js
|
@ -918,10 +918,29 @@ let commands = [
|
||||||
taskManager = TaskManager.singleton();
|
taskManager = TaskManager.singleton();
|
||||||
},
|
},
|
||||||
cb => {
|
cb => {
|
||||||
server = app.listen(config.port, err => {
|
const startServer = (port, cb) => {
|
||||||
if (!err) logger.info('Server has started on port ' + String(config.port));
|
server = app.listen(parseInt(port), (err) => {
|
||||||
cb(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}`));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -934,7 +953,7 @@ if (config.powercycle) {
|
||||||
|
|
||||||
async.series(commands, err => {
|
async.series(commands, err => {
|
||||||
if (err) {
|
if (err) {
|
||||||
logger.error("Error during startup: " + err.message);
|
logger.error(err.message);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -21,7 +21,7 @@ const dgram = require('dgram');
|
||||||
|
|
||||||
module.exports = class ProgressReceiver{
|
module.exports = class ProgressReceiver{
|
||||||
constructor(){
|
constructor(){
|
||||||
const server = dgram.createSocket('udp4');
|
const server = dgram.createSocket({type: 'udp4', reuseAddr: true});
|
||||||
this.callbacks = [];
|
this.callbacks = [];
|
||||||
|
|
||||||
server.on('error', (err) => {
|
server.on('error', (err) => {
|
||||||
|
|
Ładowanie…
Reference in New Issue