commit 59012ceece94ac48a427a2302a8339fea3e7e5ab parent b17eca462710c8466f14615ab63f22f3850f5a54 Author: MTRNord <mtrnord1@gmail.com> Date: Sat, 19 Mar 2016 19:05:33 +0100 Add some more basics and restructure code Diffstat:
18 files changed, 427 insertions(+), 22 deletions(-)
diff --git a/backend/rcon.js b/backend/rcon.js @@ -0,0 +1,24 @@ +var rcon = require('srcds-rcon')({ + address: '127.0.0.1', + password: '1199' +}); +module.exports = { + start: function () { + console.log("Start Rcon Commands") + rcon.connect().then(() => { + return rcon.command('changelevel de_dust2').then(() => { + console.log('changed map'); + }); + }).then( + () => rcon.command('sv_lan 0').then(() => console.log('changed sv_lan')) + ).then( + () => rcon.command('mp_restartgame').then(() => console.log('restarted game')) + ).then( + () => rcon.disconnect() + ).catch(err => { + console.log('caught', err); + console.log(err.stack); + }); + console.log("End Rcon Commands") + } +}; diff --git a/package.json b/package.json @@ -4,7 +4,8 @@ "description": "A clone of the eBot by deStrO fully based on node.js with build in Web Page", "main": "start.js", "scripts": { - "test": "node_modules/.bin/mocha --reporter mocha-circleci-reporter test/*.js" + "test": "node_modules/.bin/mocha --reporter mocha-circleci-reporter test/*.js", + "start": "node start.js" }, "repository": { "type": "git", @@ -26,6 +27,8 @@ }, "homepage": "https://github.com/MTRNord/nBot#readme", "dependencies": { + "express": "^4.13.4", + "socket.io": "^1.4.5", "srcds-rcon": "^2.2.0" }, "devDependencies": { diff --git a/start.js b/start.js @@ -1,21 +1,5 @@ -let rcon = require('srcds-rcon')({ - address: 'IP', - password: 'test' -}); - -rcon.connect().then(() => { - return rcon.command('sv_airaccelerate 10').then(() => { - console.log('changed sv_airaccelerate'); - }); -}).then( - () => rcon.command('status').then(status => console.log(`got status ${status}`)) -).then( - () => rcon.command('cvarlist').then(cvarlist => console.log(`cvarlist is \n${cvarlist}`)) -).then( - () => rcon.command('changelevel de_dust2').then(() => console.log('changed map')) -).then( - () => rcon.disconnect() -).catch(err => { - console.log('caught', err); - console.log(err.stack); -}); +var web = require("./web/server.js") +var rcon = require("./backend/rcon.js") +rcon.start() +web.start() +web.iojs() diff --git a/web/index.html b/web/index.html diff --git a/web/server.js b/web/server.js @@ -0,0 +1,30 @@ +var app = require('express')(); +var express = require('express') +var http = require('http').Server(app); +var io = require('socket.io')(http); +var rcon = require("../backend/rcon.js") + +module.exports = { + start: function () { + app.get('/', function(req, res){ + res.sendFile(__dirname + '/theme/index.html'); + }); + app.get('/theme.css', function(req, res){ + res.sendFile(__dirname + '/theme/theme.css'); + }); + app.use('/css', express.static(__dirname + '/theme/css')); + app.use('/js', express.static(__dirname + '/theme/js')); + app.use('/fonts', express.static(__dirname + '/theme/fonts')); + http.listen(3000, function(){ + console.log('listening on *:3000'); + }); + }, + iojs: function () { + io.on('connection', function (socket) { + socket.emit('news', { hello: 'world' }); + socket.on('my other event', function (data) { + console.log(data); + }); + }); + } +}; diff --git a/web/css/bootstrap-theme.css b/web/theme/css/bootstrap-theme.css diff --git a/web/css/bootstrap-theme.min.css b/web/theme/css/bootstrap-theme.min.css diff --git a/web/css/bootstrap.css b/web/theme/css/bootstrap.css diff --git a/web/css/bootstrap.min.css b/web/theme/css/bootstrap.min.css diff --git a/web/fonts/glyphicons-halflings-regular.eot b/web/theme/fonts/glyphicons-halflings-regular.eot Binary files differ. diff --git a/web/fonts/glyphicons-halflings-regular.svg b/web/theme/fonts/glyphicons-halflings-regular.svg diff --git a/web/fonts/glyphicons-halflings-regular.ttf b/web/theme/fonts/glyphicons-halflings-regular.ttf Binary files differ. diff --git a/web/fonts/glyphicons-halflings-regular.woff b/web/theme/fonts/glyphicons-halflings-regular.woff Binary files differ. diff --git a/web/fonts/glyphicons-halflings-regular.woff2 b/web/theme/fonts/glyphicons-halflings-regular.woff2 Binary files differ. diff --git a/web/theme/index.html b/web/theme/index.html @@ -0,0 +1,346 @@ + +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> + <meta name="description" content=""> + <meta name="author" content=""> + <link rel="icon" href="favicon.ico"> + + <title>nBot</title> + <script src="https://cdn.socket.io/socket.io-1.4.5.js"></script> + <!-- Bootstrap core CSS --> + <link href="css/bootstrap.min.css" rel="stylesheet"> + <!-- Bootstrap theme --> + <link href="css/bootstrap-theme.min.css" rel="stylesheet"> + <!-- Custom styles for this template --> + <link href="theme.css" rel="stylesheet"> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + </head> + + <body role="document"> + <script> + var socket = io('http://localhost:3000'); + socket.on('news', function (data) { + console.log(data); + socket.emit('my other event', { my: 'data' }); + }); + </script> + <!-- Fixed navbar --> + <nav class="navbar navbar-inverse navbar-fixed-top"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand" href="#">Bootstrap theme</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li class="active"><a href="#">Home</a></li> + <li><a href="#about">About</a></li> + <li><a href="#contact">Contact</a></li> + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="#">Action</a></li> + <li><a href="#">Another action</a></li> + <li><a href="#">Something else here</a></li> + <li role="separator" class="divider"></li> + <li class="dropdown-header">Nav header</li> + <li><a href="#">Separated link</a></li> + <li><a href="#">One more separated link</a></li> + </ul> + </li> + </ul> + </div><!--/.nav-collapse --> + </div> + </nav> + + <div class="container theme-showcase" role="main"> + + <!-- Main jumbotron for a primary marketing message or call to action --> + <div class="jumbotron"> + <h1>Theme example</h1> + <p>This is a template showcasing the optional theme stylesheet included in Bootstrap. Use it as a starting point to create something more unique by building on or modifying it.</p> + </div> + + + <div class="page-header"> + <h1>Buttons</h1> + </div> + <p> + <button type="button" class="btn btn-lg btn-default">Default</button> + <button type="button" class="btn btn-lg btn-primary">Primary</button> + <button type="button" class="btn btn-lg btn-success">Success</button> + <button type="button" class="btn btn-lg btn-info">Info</button> + <button type="button" class="btn btn-lg btn-warning">Warning</button> + <button type="button" class="btn btn-lg btn-danger">Danger</button> + <button type="button" class="btn btn-lg btn-link">Link</button> + </p> + <p> + <button type="button" class="btn btn-default">Default</button> + <button type="button" class="btn btn-primary">Primary</button> + <button type="button" class="btn btn-success">Success</button> + <button type="button" class="btn btn-info">Info</button> + <button type="button" class="btn btn-warning">Warning</button> + <button type="button" class="btn btn-danger">Danger</button> + <button type="button" class="btn btn-link">Link</button> + </p> + <p> + <button type="button" class="btn btn-sm btn-default">Default</button> + <button type="button" class="btn btn-sm btn-primary">Primary</button> + <button type="button" class="btn btn-sm btn-success">Success</button> + <button type="button" class="btn btn-sm btn-info">Info</button> + <button type="button" class="btn btn-sm btn-warning">Warning</button> + <button type="button" class="btn btn-sm btn-danger">Danger</button> + <button type="button" class="btn btn-sm btn-link">Link</button> + </p> + <p> + <button type="button" class="btn btn-xs btn-default">Default</button> + <button type="button" class="btn btn-xs btn-primary">Primary</button> + <button type="button" class="btn btn-xs btn-success">Success</button> + <button type="button" class="btn btn-xs btn-info">Info</button> + <button type="button" class="btn btn-xs btn-warning">Warning</button> + <button type="button" class="btn btn-xs btn-danger">Danger</button> + <button type="button" class="btn btn-xs btn-link">Link</button> + </p> + + + <div class="page-header"> + <h1>Tables</h1> + </div> + <div class="row"> + <div class="col-md-6"> + <table class="table"> + <thead> + <tr> + <th>#</th> + <th>First Name</th> + <th>Last Name</th> + <th>Username</th> + </tr> + </thead> + <tbody> + <tr> + <td>1</td> + <td>Mark</td> + <td>Otto</td> + <td>@mdo</td> + </tr> + <tr> + <td>2</td> + <td>Jacob</td> + <td>Thornton</td> + <td>@fat</td> + </tr> + <tr> + <td>3</td> + <td>Larry</td> + <td>the Bird</td> + <td>@twitter</td> + </tr> + </tbody> + </table> + </div> + <div class="col-md-6"> + <table class="table table-striped"> + <thead> + <tr> + <th>#</th> + <th>First Name</th> + <th>Last Name</th> + <th>Username</th> + </tr> + </thead> + <tbody> + <tr> + <td>1</td> + <td>Mark</td> + <td>Otto</td> + <td>@mdo</td> + </tr> + <tr> + <td>2</td> + <td>Jacob</td> + <td>Thornton</td> + <td>@fat</td> + </tr> + <tr> + <td>3</td> + <td>Larry</td> + <td>the Bird</td> + <td>@twitter</td> + </tr> + </tbody> + </table> + </div> + </div> + + <div class="row"> + <div class="col-md-6"> + <table class="table table-bordered"> + <thead> + <tr> + <th>#</th> + <th>First Name</th> + <th>Last Name</th> + <th>Username</th> + </tr> + </thead> + <tbody> + <tr> + <td rowspan="2">1</td> + <td>Mark</td> + <td>Otto</td> + <td>@mdo</td> + </tr> + <tr> + <td>Mark</td> + <td>Otto</td> + <td>@TwBootstrap</td> + </tr> + <tr> + <td>2</td> + <td>Jacob</td> + <td>Thornton</td> + <td>@fat</td> + </tr> + <tr> + <td>3</td> + <td colspan="2">Larry the Bird</td> + <td>@twitter</td> + </tr> + </tbody> + </table> + </div> + <div class="col-md-6"> + <table class="table table-condensed"> + <thead> + <tr> + <th>#</th> + <th>First Name</th> + <th>Last Name</th> + <th>Username</th> + </tr> + </thead> + <tbody> + <tr> + <td>1</td> + <td>Mark</td> + <td>Otto</td> + <td>@mdo</td> + </tr> + <tr> + <td>2</td> + <td>Jacob</td> + <td>Thornton</td> + <td>@fat</td> + </tr> + <tr> + <td>3</td> + <td colspan="2">Larry the Bird</td> + <td>@twitter</td> + </tr> + </tbody> + </table> + </div> + </div> + + <div class="page-header"> + <h1>Alerts</h1> + </div> + <div class="alert alert-success" role="alert"> + <strong>Well done!</strong> You successfully read this important alert message. + </div> + <div class="alert alert-info" role="alert"> + <strong>Heads up!</strong> This alert needs your attention, but it's not super important. + </div> + <div class="alert alert-warning" role="alert"> + <strong>Warning!</strong> Best check yo self, you're not looking too good. + </div> + <div class="alert alert-danger" role="alert"> + <strong>Oh snap!</strong> Change a few things up and try submitting again. + </div> + + <div class="page-header"> + <h1>Panels</h1> + </div> + <div class="row"> + <div class="col-sm-4"> + <div class="panel panel-default"> + <div class="panel-heading"> + <h3 class="panel-title">Panel title</h3> + </div> + <div class="panel-body"> + Panel content + </div> + </div> + <div class="panel panel-primary"> + <div class="panel-heading"> + <h3 class="panel-title">Panel title</h3> + </div> + <div class="panel-body"> + Panel content + </div> + </div> + </div><!-- /.col-sm-4 --> + <div class="col-sm-4"> + <div class="panel panel-success"> + <div class="panel-heading"> + <h3 class="panel-title">Panel title</h3> + </div> + <div class="panel-body"> + Panel content + </div> + </div> + <div class="panel panel-info"> + <div class="panel-heading"> + <h3 class="panel-title">Panel title</h3> + </div> + <div class="panel-body"> + Panel content + </div> + </div> + </div><!-- /.col-sm-4 --> + <div class="col-sm-4"> + <div class="panel panel-warning"> + <div class="panel-heading"> + <h3 class="panel-title">Panel title</h3> + </div> + <div class="panel-body"> + Panel content + </div> + </div> + <div class="panel panel-danger"> + <div class="panel-heading"> + <h3 class="panel-title">Panel title</h3> + </div> + <div class="panel-body"> + Panel content + </div> + </div> + </div><!-- /.col-sm-4 --> + </div> + + </div> <!-- /container --> + + + <!-- Bootstrap core JavaScript + ================================================== --> + <!-- Placed at the end of the document so the pages load faster --> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> + <script src="js/bootstrap.min.js"></script> + </body> +</html> diff --git a/web/js/bootstrap.js b/web/theme/js/bootstrap.js diff --git a/web/js/bootstrap.min.js b/web/theme/js/bootstrap.min.js diff --git a/web/theme/theme.css b/web/theme/theme.css @@ -0,0 +1,18 @@ +body { + padding-top: 70px; + padding-bottom: 30px; +} + +.theme-dropdown .dropdown-menu { + position: static; + display: block; + margin-bottom: 20px; +} + +.theme-showcase > p > .btn { + margin: 5px 0; +} + +.theme-showcase .navbar .container { + width: auto; +}