Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
node_modules
servers
serverInfo.json
config/config.json
*.json

*.class
Expand Down
32 changes: 30 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,34 @@ This is a free Minecraft Server Hosting Control Panel. Don't want to buy Multicr
I would like to get some feedback, [so you can tell me in the Spigot thread your opinion and suggestions. I read all ;)](https://www.spigotmc.org/threads/glowstone-panel.227618/)

## HOW TO INSTALL?

### Ubuntu

1 - Glowy needs the power of NodeJS to work. So if you did not install it before, run this command to download the installer:
`curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -`
And then run this command to install NodeJS
```sudo apt-get install -y nodejs```

2 - Glowy needs a MySQL database to save all his data. So you might want to check a tutorial to learn how to create the MySQL database in case you do not have one. Once you have a MySQL database running, run this command in your database:
```CREATE TABLE IF NOT EXISTS `users` (
`id` int(255) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` varchar(20) NOT NULL,
`email` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;```

3 - Now you are ready to download and install Glowy. Go to the folder where you want to install it (using the command `cd`) and run:
```git clone https://github.com/GlowingSoftware/Glowy/```

4 - Copy `config.json.template` and rename it to `config.json`. Then edit it with your MySQL details so that Glowy can access your database. You can also edit other details

6 - Put the jar file of the server you prefer in the folder /serverVersions/. That jar has to be named server.jar and it will be used to create all the servers

7 - Open run.sh and start using your panel! Be sure that you aren't running anything more in the port number 80.

### General Instructions

1 - You need NodeJS installed and a MySQL database

2 - Download the panel
Expand All @@ -22,11 +50,11 @@ I would like to get some feedback, [so you can tell me in the Spigot thread your

4 - Import the sql.sql file in your MySQL database

5 - Open config.json and edit it as you want
5 - Copy `config.json.template` and rename it to `config.json`. Then edit it with your MySQL details so that Glowy can access your database. You can also edit other details

6 - Put the jar file of the server you prefer in the root folder. That jar has to be named server.jar and it will be used to create all the servers

7 - Open run.bat and start using your panel! Be sure that you aren't running anything more in the port number 80.

## CONTRIBUTE
Our project is in Github. You can code, improve it and create a Pull Request. After checking your Pull Request, if all is okay, we'll merge it into the project
Our project is in Github. You can code, improve it and create a Pull Request. After checking your Pull Request, if all is okay, we'll merge it into the project
File renamed without changes.
9 changes: 7 additions & 2 deletions configReader.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
var jf = require('jsonfile');
var path2 = require('path');
var fs = require('fs');

exports.readConfig = function(){
var obj = jf.readFileSync("config/config.json");
return obj;
}
exports.readServerInfo = function(name){
var path = path2.join(__dirname, '/servers/' + name + '/serverInfo.json');
var obj = jf.readFileSync(path);
return obj;
if (fs.existsSync(path)){
var obj = jf.readFileSync(path);
return obj;
} else {
return null;
}
}
exports.rootPath = function(){
var root = __dirname;
Expand Down
9 changes: 6 additions & 3 deletions main.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,6 @@ app.use('/images', express.static(__dirname + '/src/vendor/images'));
app.get('/', function(req,res){
res.render('index');
});
app.get('/loader', function(req,res){
res.render('loader');
});
app.get('/register', function(req,res){
res.render('register');
});
Expand All @@ -39,12 +36,18 @@ app.get('/login', function(req,res){
app.get('/Control', function(req,res){
res.render('Control');
});
app.get('/panel', function(req,res){
res.render('panel');
});
app.get('/server', function(req,res){
res.render('server');
});
app.get('/serverbulder', function(req,res){
res.render('serverbulder');
});
app.get('/profile', function(req,res){
res.render('profile');
});
app.get('/logout', function(req,res){
res.render('logout');
});
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"express": "^4.15.2",
"hashmap": "^2.0.6",
"jsonfile": "^2.4.0",
"mysql": "^2.13.0",
"mysql": "^2.16.0",
"nconf": "^0.8.4",
"simple-node-logger": "0.93.27",
"socket.io": "^1.7.3",
Expand Down
Empty file added src/fileBuilders/setupinfo.js
Empty file.
180 changes: 119 additions & 61 deletions src/serverControllers/serverControl.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,48 +26,61 @@ console.log("Server initialized");
var io = require('socket.io')(serv, {});
io.sockets.on('connection', function (socket) {
socket.on('status', function (name, serverId) {
var servername = name + serverId;
var servername = name + serverId;
var server = map.get(servername);
console.log("get status");
console.log("get status");
if (server != null) {
socket.emit("statusON"); //server status ON
//console.log("status on");
//console.log("status on");
} else {
socket.emit("statusOFF"); //server status OFF
//console.log("status off");
//console.log("status off");
}
});
socket.on('GetServersInfo', function (name) {
var info = getServersInfoByName(name)
socket.emit("ServersInfo", info);
})
socket.on('GetServerInfo', function (name, id) {
var info = getServerInfoByName(name, id)
socket.emit("ServerInfo", info);
})
socket.on('startServer', function (name, serverId) {
var servername = name + serverId;
console.log(servername)
var servername = name + serverId;
console.log(servername)
var server = map.get(servername);
if (serverId != null && servername == name + serverId){
if (server == null) {
var poth = configReader.rootPath + '/servers/' + name + "/" + servername;
var server_ver = configReader.readServerInfo(name + "/" + servername).server; //this is call out for server version
//nconf.argv().env({ lowerCase: true }).file({ file: 'servers/' + name + '/' + servername + '/serverInfo.json' });
//xmax = nconf.get('ram');
var serverInfoFile = configReader.rootPath() + '/servers/' + name + '/' + servername + '/serverInfo.json';
jf.readFile(serverInfoFile, function (err, currentServerInfo) {
var serverInfo = currentServerInfo;
xmax = serverInfo.ram;
});
var mc_server2 = exec('"java" -Xmx' + xmax + 'M -Xms' + xmin + 'M -Dcom.mojang.eula.agree=true -jar ' + server_ver + '.jar nogui', { cwd: path.resolve(process.cwd() + "/servers/" + name + "/" + servername) }, function(err, stdout, stderr) {
if(err){ console.log(err); socket.emit("statusOFF"); return; }
});
map.set(servername, mc_server2);
socket.emit("statusON");
console.log("Starting server of " + name + serverId + " with " + xmax + " of ram");
}else{
console.log("can not run server for " + name + serverId);
map.remove(servername);
}
}else{
console.log("server did not have a id for " + name);
map.remove(servername);
}
if (serverId != null && servername == name + serverId) {
if (server == null) {
var poth = configReader.rootPath + '/servers/' + name + "/" + servername;
var server_info = configReader.readServerInfo(name + "/" + servername)
if (server_info) {
var server_ver = server_info.server; //this is call out for server version
//nconf.argv().env({ lowerCase: true }).file({ file: 'servers/' + name + '/' + servername + '/serverInfo.json' });
//xmax = nconf.get('ram');
var serverInfoFile = configReader.rootPath() + '/servers/' + name + '/' + servername + '/serverInfo.json';
jf.readFile(serverInfoFile, function (err, currentServerInfo) {
var serverInfo = currentServerInfo;
xmax = serverInfo.ram;
});
var mc_server2 = exec('"java" -Xmx' + xmax + 'M -Xms' + xmin + 'M -Dcom.mojang.eula.agree=true -jar ' + server_ver + '.jar nogui', { cwd: path.resolve(process.cwd() + "/servers/" + name + "/" + servername) }, function (err, stdout, stderr) {
if (err) { console.log(err); socket.emit("statusOFF"); return; }
});
map.set(servername, mc_server2);
socket.emit("statusON");
console.log("Starting server of " + name + serverId + " with " + xmax + " of ram");
} else {
socket.emit("wrong");
}
} else {
console.log("can not run server for " + name + serverId);
map.remove(servername);
}
} else {
console.log("server did not have a id for " + name);
map.remove(servername);
}
});

/*
socket.on('setram', function (name, ram) {
var server = map.get(name);
Expand All @@ -88,10 +101,10 @@ io.sockets.on('connection', function (socket) {
}
});
*/

socket.on('command', function (name, serverId, cmd) {
var servername = name + serverId;
console.log(servername)
var servername = name + serverId;
console.log(servername)
var server = map.get(servername);
console.log("packet received")
if (server != null) {
Expand All @@ -109,24 +122,28 @@ io.sockets.on('connection', function (socket) {
}
}
});
socket.on('controlstartup', function(name, serverId) {
var server = map.get(servername);
var servername = name + serverId;





socket.on('controlstartup', function (name, serverId) {
var server = map.get(servername);
var servername = name + serverId;
serveroutput(servername);
});
//control socket input and output
socket.on('getIP', function(name, serverId) {
});

//control socket input and output
socket.on('getIP', function (name, serverId) {
var ip = getIP(name, serverId);
socket.emit("ip", ip);
if (ip) {
socket.emit("ip", ip);
} else {
socket.emit("wrong");
}
});
socket.on('stopServer', function (name, serverId) {
var servername = name + serverId;
var servername = name + serverId;
//Hashmap saves the variable name and the username
var server = map.get(servername);
if (server != null) {
Expand All @@ -137,10 +154,14 @@ io.sockets.on('connection', function (socket) {
socket.emit("statusOFF");
}
});

socket.on('stopAllServers', function () { //pararTodos means Stop All servers
stopAllServers();
});
socket.on('getNumberOfServersByName', function (name) { //pararTodos means Stop All servers
console.log(getNumberOfServersByName(name))
socket.emit('numberOfServersByName', getNumberOfServersByName(name));
});
socket.on('allServers', function () { //see all the servers
var todo1 = map.keys();
var count1 = 0;
Expand All @@ -157,18 +178,47 @@ io.sockets.on('connection', function (socket) {
socket.emit("todos", mandar); //sending all the servers in a list
}
});

function serveroutput(servername) {
var server = map.get(servername);
server.stdout.on('data', function(data) { //Here is where the server output
socket.emit("serveroutput", data);
});
}
});

function serveroutput(servername) {
var server = map.get(servername);
server.stdout.on('data', function (data) { //Here is where the server output
socket.emit("serveroutput", data);
});
}
});



function getNumberOfServersByName(name) {
var id = 0;
var poth = './servers/' + name + "/" + name + id;
while (fs.existsSync(poth) == true) {
id++;
poth = './servers/' + name + "/" + name + id;
}
return id;
}
function getServersInfoByName(name) {
var numberOfServers = getNumberOfServersByName(name) - 1
var serversInfo = [];
for (i = 0; i <= numberOfServers; i++) {
var serverInfo = {
id: i,
ip: getIP(name, i),
name: getServerName(name, i)
};
serversInfo.push(serverInfo)
}
return serversInfo;
}
function getServerInfoByName(name, serverId) {
var serverInfo = {
id: serverId,
ip: getIP(name, serverId),
name: getServerName(name, serverId)
};
return serverInfo;
}
//Stop the last server
function stopLastServer() {
var todo = map.keys();
Expand Down Expand Up @@ -200,9 +250,17 @@ function stopAllServers() {
}

function getIP(name, serverId) {
var servername = name + serverId;
var servername = name + serverId;
var ip = configReader.readConfig();
var port = configReader.readServerInfo(name + "/" + servername);
var ipWithPort = ip.ip + ":" + (port.port);
return ipWithPort;
if (port) {
var ipWithPort = ip.ip + ":" + (port.port);
return ipWithPort;
} else {
return null;
}
}
function getServerName(name, serverId) {
var info = configReader.readServerInfo(name + "/" + name + serverId);
return info.servername;
}
Loading