@@ -59,13 +59,14 @@ var serDeletes = {};
5959var servers_logs = [ ] ;
6060var servers_instances = [ ] ;
6161var updatesByIntArray = { } ;
62+ var forgesIns = [ ] ;
6263
6364const {
6465 response
6566} = require ( 'express' ) ;
6667
6768// Kubek version
68- const version = "v1.2.12 " ;
69+ const version = "v1.2.13 " ;
6970
7071const rateLimit = require ( 'express-rate-limit' ) ;
7172const authLimiter = rateLimit ( {
@@ -668,7 +669,8 @@ app.get("/server/log", function (request, response) {
668669 response . redirect ( "/login.html" ) ;
669670 } else {
670671 if ( typeof ( configjson [ request . query . server ] ) !== 'undefined' ) {
671- response . send ( servers_logs [ request . query . server ] ) ;
672+ spl = servers_logs [ request . query . server ] . split ( / \r ? \n / ) . slice ( - 100 ) ;
673+ response . send ( spl . join ( "\r\n" ) ) ;
672674 } else {
673675 response . send ( "false" ) ;
674676 }
@@ -779,11 +781,12 @@ function startServer(server) {
779781 }
780782 fsock = io . sockets . sockets ;
781783 for ( const socket of fsock ) {
784+ spl = servers_logs [ server ] . split ( / \r ? \n / ) . slice ( - 100 ) ;
782785 socket [ 1 ] . emit ( "handleUpdate" , {
783786 type : "console" ,
784787 data : {
785788 server : server ,
786- data : servers_logs [ server ]
789+ data : spl . join ( "\r\n" )
787790 }
788791 } ) ;
789792 }
@@ -796,11 +799,12 @@ function startServer(server) {
796799 servers_logs [ server ] = servers_logs [ server ] + data . toString ( ) ;
797800 fsock = io . sockets . sockets ;
798801 for ( const socket of fsock ) {
802+ spl = servers_logs [ server ] . split ( / \r ? \n / ) . slice ( - 100 ) ;
799803 socket [ 1 ] . emit ( "handleUpdate" , {
800804 type : "console" ,
801805 data : {
802806 server : server ,
803- data : servers_logs [ server ]
807+ data : spl . join ( "\r\n" )
804808 }
805809 } ) ;
806810 }
@@ -830,11 +834,12 @@ function startServer(server) {
830834 servers_logs [ server ] = servers_logs [ server ] + "ERROR: " + data . toString ( ) ;
831835 fsock = io . sockets . sockets ;
832836 for ( const socket of fsock ) {
837+ spl = servers_logs [ server ] . split ( / \r ? \n / ) . slice ( - 100 ) ;
833838 socket [ 1 ] . emit ( "handleUpdate" , {
834839 type : "console" ,
835840 data : {
836841 server : server ,
837- data : servers_logs [ server ]
842+ data : spl . join ( "\r\n" )
838843 }
839844 } ) ;
840845 }
@@ -949,10 +954,9 @@ app.get("/core/list", (request, response) => {
949954 } else {
950955 showRequestInLogs ( request ) ;
951956 response . set ( 'Content-Type' , 'application/json' ) ;
952- possbileCores = [ 'Spigot' , 'Paper' , 'Forge' ] ;
957+ possbileCores = [ 'Spigot' , 'Paper' ] ;
953958 paperVers = [ ] ;
954959 spigotVers = [ ] ;
955- forgeVers = [ ] ;
956960 cores . getPaperCores ( function ( cores_p ) {
957961 cores_p = cores_p . reverse ( ) ;
958962 cores_p . forEach ( function ( core ) {
@@ -965,8 +969,7 @@ app.get("/core/list", (request, response) => {
965969 let jsn = {
966970 possible : possbileCores ,
967971 paper : paperVers ,
968- spigot : spigotVers ,
969- forge : forgeVers
972+ spigot : spigotVers
970973 }
971974 response . send ( jsn ) ;
972975 } ) ;
@@ -1434,4 +1437,68 @@ app.get("/fmapi/newdirFM", (request, response) => {
14341437 showRequestInLogs ( request ) ;
14351438 }
14361439 }
1437- } ) ;
1440+ } ) ;
1441+
1442+ app . get ( "/forgeInstaller" , ( request , response ) => {
1443+ ip = request . headers [ 'x-forwarded-for' ] || request . socket . remoteAddress ;
1444+ ip = ip . replace ( "::ffff:" , "" ) . replace ( "::1" , "127.0.0.1" ) ;
1445+ if ( cfg [ 'internet-access' ] == false && ip != "127.0.0.1" ) {
1446+ response . send ( "Cannot be accessed from the internet" ) ;
1447+ } else {
1448+ if ( typeof request . cookies !== "undefined" && typeof request . cookies [ "__auth__" ] !== "undefined" && ! isAuth ( request . cookies [ "__auth__" ] ) ) {
1449+ response . redirect ( "/login.html" ) ;
1450+ } else {
1451+ showRequestInLogs ( request ) ;
1452+ startForgeInstaller ( request . query . server , request . query . filename ) ;
1453+ response . send ( "true" ) ;
1454+ }
1455+ }
1456+ } ) ;
1457+
1458+ app . get ( "/forge/installProgress" , ( request , response ) => {
1459+ ip = request . headers [ 'x-forwarded-for' ] || request . socket . remoteAddress ;
1460+ ip = ip . replace ( "::ffff:" , "" ) . replace ( "::1" , "127.0.0.1" ) ;
1461+ if ( cfg [ 'internet-access' ] == false && ip != "127.0.0.1" ) {
1462+ response . send ( "Cannot be accessed from the internet" ) ;
1463+ } else {
1464+ if ( typeof request . cookies !== "undefined" && typeof request . cookies [ "__auth__" ] !== "undefined" && ! isAuth ( request . cookies [ "__auth__" ] ) ) {
1465+ response . redirect ( "/login.html" ) ;
1466+ } else {
1467+ response . send ( forgesIns [ request . query . server ] ) ;
1468+ }
1469+ }
1470+ } ) ;
1471+
1472+ function startForgeInstaller ( server , file ) {
1473+ fp = "./servers/" + server + "/" + file ;
1474+
1475+ if ( process . platform == "win32" ) {
1476+ fs . writeFileSync ( "./servers/" + server + "/finstall.bat" , "@echo off\nchcp 65001>nul\ncd servers\ncd " + server + "\njava -jar " + file + " -i ." ) ;
1477+ startFile = path . resolve ( "./servers/" + server + "/finstall.bat" ) ;
1478+ fi = spawn ( startFile ) ;
1479+ } else if ( process . platform == "linux" ) {
1480+ fs . writeFileSync ( "./servers/" + server + "/finstall.sh" , "cd servers\ncd " + server + "\njava -jar " + file + " -i ." ) ;
1481+ startFile = path . resolve ( "./servers/" + server + "/finstall.sh" ) ;
1482+ fi = spawn ( 'sh' , [ startFile ] ) ;
1483+ } else {
1484+ console . log ( colors . red ( getTimeFormatted ( ) + " " + process . platform + " not supported" ) ) ;
1485+ }
1486+
1487+ fi . on ( 'close' , ( code ) => {
1488+ if ( code == 0 ) {
1489+ console . log ( colors . green ( "Forge installed successfully on " + server ) ) ;
1490+ forgesIns [ server ] = "ok,installed" ;
1491+ fs . unlinkSync ( fp ) ;
1492+ } else {
1493+ console . log ( colors . red ( "Forge failed on " + server + " with code " + code ) ) ;
1494+ }
1495+ } ) ;
1496+ fi . stdout . on ( 'data' , ( data ) => {
1497+ data = iconvlite . decode ( data , "win1251" ) ;
1498+ forgesIns [ server ] = forgesIns [ server ] + "\n" + data . toString ( ) ;
1499+ } ) ;
1500+ fi . stderr . on ( 'data' , ( data ) => {
1501+ data = iconvlite . decode ( data , "win1251" ) ;
1502+ forgesIns [ server ] = forgesIns [ server ] + "\n" + data . toString ( ) ;
1503+ } ) ;
1504+ }
0 commit comments