2021-12-30 00:08:41 +01:00
import http from 'http' ;
import { Logger } from './backend/utils/logger.js' ;
import { Common } from './backend/utils/common.js' ;
2023-02-18 02:33:33 +01:00
import { Config } from './backend/utils/config.js' ; // Follow sequence to set server configuration in time
2021-12-30 00:08:41 +01:00
import { WSServer } from './backend/utils/webSocketServer.js' ;
2023-02-18 02:33:33 +01:00
import App from './backend/utils/app.js' ;
2020-05-03 21:59:55 +02:00
2021-12-30 00:08:41 +01:00
const logger = Logger ;
const common = Common ;
const wsServer = WSServer ;
const app = new App ( ) ;
2018-09-15 03:31:01 +02:00
2021-12-30 00:08:41 +01:00
const onError = ( error ) => {
if ( error . syscall !== 'listen' ) { throw error ; }
2018-09-15 03:31:01 +02:00
switch ( error . code ) {
2021-12-30 00:08:41 +01:00
case 'EACCES' :
2023-02-18 02:33:33 +01:00
logger . log ( { level : 'ERROR' , fileName : 'RTL' , msg : 'http://' + ( ( common . host && common . host !== '' ) ? common . host : 'localhost' ) + ':' + common . port + ' requires elevated privileges' } ) ;
2018-09-15 03:31:01 +02:00
process . exit ( 1 ) ;
2021-12-30 00:08:41 +01:00
break ;
case 'EADDRINUSE' :
2023-02-18 02:33:33 +01:00
logger . log ( { level : 'ERROR' , fileName : 'RTL' , msg : 'http://' + ( ( common . host && common . host !== '' ) ? common . host : 'localhost' ) + ':' + common . port + ' is already in use' } ) ;
2018-09-15 03:31:01 +02:00
process . exit ( 1 ) ;
2021-12-30 00:08:41 +01:00
break ;
case 'ECONNREFUSED' :
logger . log ( { level : 'ERROR' , fileName : 'RTL' , msg : 'Server is down/locked' } ) ;
2021-06-20 22:27:08 +02:00
process . exit ( 1 ) ;
2021-12-30 00:08:41 +01:00
break ;
case 'EBADCSRFTOKEN' :
logger . log ( { level : 'ERROR' , fileName : 'RTL' , msg : 'Form tempered' } ) ;
2021-06-20 22:27:08 +02:00
process . exit ( 1 ) ;
2021-12-30 00:08:41 +01:00
break ;
2018-09-15 03:31:01 +02:00
default :
2021-12-30 00:08:41 +01:00
logger . log ( { level : 'ERROR' , fileName : 'RTL' , msg : 'DEFUALT ERROR' , error : error . code } ) ;
2018-09-15 03:31:01 +02:00
throw error ;
}
} ;
const onListening = ( ) => {
2023-02-18 02:33:33 +01:00
logger . log ( { level : 'INFO' , fileName : 'RTL' , msg : 'Server is up and running, please open the UI at http://' + ( ( common . host && common . host !== '' ) ? common . host : 'localhost' ) + ':' + common . port + ' or your proxy configured url' } ) ;
2018-09-15 03:31:01 +02:00
} ;
2021-12-30 00:08:41 +01:00
let server = http . createServer ( app . getApp ( ) ) ;
server . on ( 'error' , onError ) ;
server . on ( 'listening' , onListening ) ;
wsServer . mount ( server ) ;
2020-03-10 18:25:52 +01:00
2023-02-18 02:33:33 +01:00
if ( common . host && common . host !== '' ) {
2020-05-09 19:15:10 +02:00
server . listen ( common . port , common . host ) ;
} else {
server . listen ( common . port ) ;
}