diff --git a/.gitignore b/.gitignore
index 08c09d9..90716b3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,3 @@ node_modules
# Project stuff
config.js
-servers.js
diff --git a/main.js b/main.js
index ad60101..fa1b3c6 100644
--- a/main.js
+++ b/main.js
@@ -1,10 +1,13 @@
var express = require('express'),
- fs = require('fs');
+ fs = require('fs'),
+ slug = require('slug');
var config = require('./config'),
+ Manager = require('./manager'),
servers = require('./servers');
var app = express();
+var manager = new Manager();
app.use(express.logger('dev'));
app.use(express.cookieParser());
@@ -39,7 +42,19 @@ app.get('/api/mods', function (req, res){
});
app.get('/api/servers', function (req, res){
- res.send(servers);
+ res.send(manager.servers);
+});
+
+app.post('/api/servers', function (req, res){
+ var title = req.body.title;
+ var id = slug(title);
+ manager.addServer(id, title);
+ res.send(manager.servers);
+});
+
+app.get('/api/servers/:id/start', function (req, res){
+ manager.runServer();
+ res.send({status:"ok"});
});
app.get('/api/settings', function (req, res){
diff --git a/manager.js b/manager.js
new file mode 100644
index 0000000..3d09d9a
--- /dev/null
+++ b/manager.js
@@ -0,0 +1,53 @@
+var spawn = require('child_process').spawn;
+
+var config = require('./config');
+
+function Server(id, title, port, mods) {
+ this.id = id;
+ this.title = title;
+ this.port = port;
+ this.mods = mods;
+}
+
+Server.prototype.armaServerPath = function() {
+ return config.path + '/arma3server';
+}
+
+Server.prototype.makeModsParameter = function() {
+ return '-mod=' + this.mods.join(';');
+}
+
+Server.prototype.makePortParameter = function() {
+ return '-port=' + this.port;
+}
+
+Server.prototype.start = function() {
+ var mods = this.makeModsParameter();
+ var port = this.makePortParameter();
+
+ var server = spawn(this.armaServerPath(), [mods, port, '-config=server.cfg', '-noSound', '-world=empty']);
+
+ server.stdout.on('data', function (data) {
+ console.log('stdout: ' + data);
+ });
+
+ server.stderr.on('data', function (data) {
+ console.log('stderr: ' + data);
+ });
+
+ server.on('close', function (code) {
+ console.log('child process exited with code ' + code);
+ });
+}
+
+function Manager() {
+ this.servers = [];
+};
+
+Manager.prototype.addServer = (function (id, title) {
+ mods = [];
+ port = 2302;
+ this.servers.push(new Server(id, title, port, mods));
+});
+
+module.exports = Manager;
\ No newline at end of file
diff --git a/package.json b/package.json
index 6236893..fb62eee 100644
--- a/package.json
+++ b/package.json
@@ -4,6 +4,7 @@
"version": "0.0.1",
"private": true,
"dependencies": {
- "express": "3.x"
+ "express": "3.x",
+ "slug": "~0.4.0"
}
-}
\ No newline at end of file
+}
diff --git a/public/js/tpl/servers/list_item.html b/public/js/tpl/servers/list_item.html
index 3f79d01..73f5ecc 100644
--- a/public/js/tpl/servers/list_item.html
+++ b/public/js/tpl/servers/list_item.html
@@ -1,2 +1,2 @@
-<%-name%>
+<%-title%>
\ No newline at end of file
diff --git a/servers.js.example b/servers.js.example
deleted file mode 100644
index 9b724eb..0000000
--- a/servers.js.example
+++ /dev/null
@@ -1,4 +0,0 @@
-module.exports = [
- {name: "first-server"},
- {name: "second-server"}
-];