@@ -24,7 +24,10 @@ var crypto = require('crypto');
2424var spParser = require ( "minecraft-server-properties" ) ;
2525const fs = require ( 'fs' ) ;
2626var colors = require ( 'colors' ) ;
27- const spawn = require ( "cross-spawn" ) ;
27+ //const spawn = require("cross-spawn");
28+ const {
29+ spawn
30+ } = require ( 'node:child_process' ) ;
2831var iconvlite = require ( 'iconv-lite' ) ;
2932var ip_local = require ( "ip" ) ;
3033const os = require ( "os" ) ;
@@ -62,7 +65,7 @@ const {
6265} = require ( 'express' ) ;
6366
6467// Kubek version
65- const version = "v1.2.10 " ;
68+ const version = "v1.2.11 " ;
6669
6770const rateLimit = require ( 'express-rate-limit' ) ;
6871const authLimiter = rateLimit ( {
@@ -262,6 +265,7 @@ function showRequestInLogs(req) {
262265
263266app . get ( "/auth/login" , ( request , response ) => {
264267 cfg = config . readConfig ( ) ;
268+ showRequestInLogs ( request ) ;
265269 if ( request . query . password == cfg [ "owner-password" ] && request . query . login == cfg [ "owner-user" ] ) {
266270 let options = {
267271 maxAge : 120 * 24 * 60 * 60 * 1000 ,
@@ -368,7 +372,8 @@ app.get('/server/completion', (req, res) => {
368372 servers_logs [ req . query . server ] = "" ;
369373 servers_instances [ req . query . server ] = "" ;
370374 sss = {
371- status : "stopped"
375+ status : "stopped" ,
376+ restartOnError : true
372377 } ;
373378 cge [ req . query . server ] = sss ;
374379 res . send ( "Success" ) ;
@@ -408,6 +413,7 @@ app.get("/kubek/javaVersions", (request, response) => {
408413 javas = [ "java" ] ;
409414 }
410415 response . send ( javas ) ;
416+ showRequestInLogs ( request ) ;
411417 }
412418 }
413419} ) ;
@@ -465,6 +471,7 @@ app.get("/server/delete", (request, response) => {
465471 if ( typeof request . cookies !== "undefined" && typeof request . cookies [ "__auth__" ] !== "undefined" && ! isAuth ( request . cookies [ "__auth__" ] ) ) {
466472 response . redirect ( "/login.html" ) ;
467473 } else {
474+ showRequestInLogs ( request ) ;
468475 if ( typeof ( configjson [ request . query . server ] ) !== 'undefined' ) {
469476 delete configjson [ request . query . server ] ;
470477 fs . writeFileSync ( "./servers/servers.json" , JSON . stringify ( configjson ) ) ;
@@ -584,7 +591,7 @@ app.get('/server/startScript/save', (request, response) => {
584591 } else {
585592 showRequestInLogs ( request ) ;
586593 if ( typeof ( configjson [ request . query . server ] ) !== 'undefined' ) {
587- response . send ( serverController . saveStartScript ( request . query . server , request . query . script ) ) ;
594+ response . send ( serverController . saveStartScript ( request . query . server , request . query . script , request . query . resonerr ) ) ;
588595 } else {
589596 response . send ( "false" ) ;
590597 }
@@ -717,7 +724,11 @@ function startServer(server) {
717724 if ( process . platform == "win32" ) {
718725 startFile = path . resolve ( "./servers/" + server + "/start.bat" ) ;
719726 if ( fs . existsSync ( startFile ) ) {
720- servers_instances [ server ] = spawn ( '"servers/' + server + '/start.bat"' ) ;
727+ try {
728+ servers_instances [ server ] = spawn ( startFile ) ;
729+ } catch ( error ) {
730+ console . error ( error ) ;
731+ }
721732 start = true ;
722733 } else {
723734 console . log ( colors . red ( additional . getTimeFormatted ( ) + " " + '"servers/' + server + '/start.bat"' + " not found! Try to delete, and create new server!" ) ) ;
@@ -726,7 +737,11 @@ function startServer(server) {
726737 } else if ( process . platform == "linux" ) {
727738 startFile = path . resolve ( "./servers/" + server + "/start.sh" ) ;
728739 if ( fs . existsSync ( startFile ) ) {
729- servers_instances [ server ] = spawn ( 'sh' , [ "./servers/" + server + "/start.sh" ] ) ;
740+ try {
741+ servers_instances [ server ] = spawn ( 'sh' , [ startFile ] ) ;
742+ } catch ( error ) {
743+ console . error ( error ) ;
744+ }
730745 start = true ;
731746 } else {
732747 console . log ( colors . red ( additional . getTimeFormatted ( ) + " " + '"servers/' + server + '/start.sh"' + " not found! Try to delete, and create new server!" ) ) ;
@@ -755,6 +770,23 @@ function startServer(server) {
755770 if ( code != 0 ) {
756771 servers_logs [ server ] = servers_logs [ server ] + "ERROR: Process finished with exit code " + code ;
757772 console . log ( additional . getTimeFormatted ( ) , "STOPPED SERVER WITH CODE " + code + ":" , server . red ) ;
773+ if ( configjson [ server ] [ 'restartOnError' ] == true ) {
774+ console . log ( additional . getTimeFormatted ( ) , "RESTARTING SERVER IN 3 SECONDS:" , server . red ) ;
775+ servers_logs [ server ] = servers_logs [ server ] + "Restarting server in 3 seconds" ;
776+ setTimeout ( function ( ) {
777+ startServer ( server ) ;
778+ } , 3000 ) ;
779+ }
780+ fsock = io . sockets . sockets ;
781+ for ( const socket of fsock ) {
782+ socket [ 1 ] . emit ( "handleUpdate" , {
783+ type : "console" ,
784+ data : {
785+ server : server ,
786+ data : servers_logs [ server ]
787+ }
788+ } ) ;
789+ }
758790 } else {
759791 console . log ( additional . getTimeFormatted ( ) , "STOPPED SERVER:" , server . green ) ;
760792 }
@@ -1321,7 +1353,7 @@ app.get("/fmapi/scanDirectory", (request, response) => {
13211353 if ( typeof request . cookies !== "undefined" && typeof request . cookies [ "__auth__" ] !== "undefined" && ! isAuth ( request . cookies [ "__auth__" ] ) ) {
13221354 response . redirect ( "/login.html" ) ;
13231355 } else {
1324- fmapi . scanDirectory ( request . query . server , request . query . directory , function ( res ) {
1356+ fmapi . scanDirectory ( request . query . server , request . query . directory , function ( res ) {
13251357 response . send ( res ) ;
13261358 } ) ;
13271359 showRequestInLogs ( request ) ;
0 commit comments