commit 278d39f473fbf8eb81a831fe8d9a5acd4f14638c
parent 9c4b5b4171eb09374d2381932024d6a06778c4df
Author: MTRNord <mtrnord1@gmail.com>
Date: Tue, 29 Mar 2016 23:48:58 +0200
Prepare PluginManager and installer
Diffstat:
6 files changed, 237 insertions(+), 4 deletions(-)
diff --git a/backend/pluginManager.js b/backend/pluginManager.js
@@ -0,0 +1,43 @@
+/**
+* Build and setup csgoserver
+*
+* @module nBot
+* @submodule pluginManager
+* @requires server, github
+*/
+var GitHubApi = require("github");
+
+var github = new GitHubApi({
+ // required
+ version: "3.0.0",
+ // optional
+ debug: true,
+ protocol: "https",
+ host: "api.github.com", // should be api.github.com for GitHub
+ pathPrefix: "", // for some GHEs; none for GitHub
+ timeout: 5000,
+ headers: {
+ "user-agent": "nBot" // GitHub is happy with a unique user agent
+ }
+});
+/**
+* @class pluginManager
+* @static
+*/
+var pluginManager = module.exports = {}
+ /**
+ * @method getSourcemodVersions
+ * @beta Work in Progress
+ */
+ pluginManager.getSourcemodVersions = function () {
+ github.repos.getTags({
+ // optional:
+ // headers: {
+ // "cookie": "blahblah"
+ // },
+ user: "alliedmodders",
+ repo: "sourcemod"
+ }, function(err, res) {
+ return res
+ });
+ }
diff --git a/package.json b/package.json
@@ -29,6 +29,7 @@
"homepage": "https://github.com/MTRNord/nBot#readme",
"dependencies": {
"express": "^4.13.4",
+ "github": "^0.2.4",
"progress": "^1.1.8",
"socket.io": "^1.4.5",
"srcds-rcon": "^2.2.0"
diff --git a/web/server.js b/web/server.js
@@ -3,7 +3,7 @@
*
* @module nBot
* @submodule server
-* @requires app, express, http, io, rcon, addserver, util
+* @requires app, express, http, io, rcon, addserver, util, pluginManager
*/
var app = require('express')();
var express = require('express')
@@ -11,6 +11,7 @@ var http = require('http').Server(app);
var io = require('socket.io')(http);
var rcon = require("../backend/rcon.js")
var addserver = require("../backend/addServer.js")
+var pluginManager = require("../backend/pluginManager.js")
var util = require('util');
/**
* @class server
@@ -58,7 +59,11 @@ var server = module.exports = {};
if (command.command == "add_server") {
addserver.start()
}else {
- console.log("unknown command");
+ if (command.command == "refreshSourcemod") {
+ socket.emit('SourcemodList', {response: pluginManager.getSourcemodVersions(), command: command.command});
+ }else {
+ console.log("unknown command");
+ }
}
}
}
diff --git a/web/theme/index.html b/web/theme/index.html
@@ -1,4 +1,3 @@
-
<!DOCTYPE html>
<html lang="en">
<head>
@@ -65,7 +64,7 @@
<a href="#">Dashboard</a>
</li>
<li>
- <a href="#">Shortcuts</a>
+ <a href="pluginManager.html">PluginManager</a>
</li>
<li>
<a href="#">Overview</a>
diff --git a/web/theme/js/pluginManagerConnect.js b/web/theme/js/pluginManagerConnect.js
@@ -0,0 +1,19 @@
+PNotify.prototype.options.styling = "bootstrap3";
+$("#menu-toggle").click(function(e) {
+ e.preventDefault();
+ $("#wrapper").toggleClass("toggled");
+});
+var ws = location.protocol+'//'+location.hostname+(location.port ? ':'+location.port: '');
+var socket = io(ws);
+$(document).off('click', '#refreshSourcemodReleases').on('click', '#refreshSourcemodReleases', function (e) {
+ console.log('refresh fired');
+
+ socket.emit('command', {command: 'refreshSourcemod'});
+ e.preventDefault();
+});
+socket.on('status_alert', function (message) {
+ console.warn(message)
+});
+socket.on('SourcemodList', function (message) {
+ console.warn(message)
+});
diff --git a/web/theme/pluginManager.html b/web/theme/pluginManager.html
@@ -0,0 +1,166 @@
+<!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="MTRNord">
+ <link rel="icon" href="favicon.ico">
+
+ <title>nBot | PluginManager</title>
+ <!-- Bootstrap core CSS -->
+ <link href="css/bootstrap.min.css" rel="stylesheet">
+ <link href="css/bootstrap-tour.min.css" rel="stylesheet">
+ <!-- Bootstrap theme -->
+ <!--<link href="css/bootstrap-theme.min.css" rel="stylesheet">-->
+ <!-- Custom styles for this template -->
+ <link href="css/theme.css" rel="stylesheet">
+ <link href="css/sidebar.css" rel="stylesheet">
+ <link href="css/pnotify.custom.min.css" media="all" rel="stylesheet" type="text/css" />
+ <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
+ <link href="//getbootstrap.com/assets/css/ie10-viewport-bug-workaround.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>
+ <div id="wrapper" class="toggled">
+ <!-- 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>
+ </ul>
+ </div><!--/.nav-collapse -->
+ </div>
+ </nav>
+ <!-- Sidebar -->
+ <div id="sidebar-wrapper">
+ <ul class="sidebar-nav">
+ <li class="sidebar-brand">
+ <a href="#">
+ Start Bootstrap
+ </a>
+ </li>
+ <li>
+ <a href="index.html">Dashboard</a>
+ </li>
+ <li>
+ <a href="#">PluginManager</a>
+ </li>
+ <li>
+ <a href="#">Overview</a>
+ </li>
+ <li>
+ <a href="#">Events</a>
+ </li>
+ <li>
+ <a href="#">About</a>
+ </li>
+ <li>
+ <a href="#">Services</a>
+ </li>
+ <li>
+ <a href="#">Contact</a>
+ </li>
+ </ul>
+ </div>
+ <!-- /#sidebar-wrapper -->
+ <!-- Main jumbotron for a primary marketing message or call to action -->
+ <div class="jumbotron">
+ <div id="page-content-wrapper">
+ <div class="container">
+ <button type="button" class="btn btn-default" aria-label="Toggle Menu" href="#menu-toggle" id="menu-toggle">
+ <span class="glyphicon glyphicon-th-list" aria-hidden="true"></span> MENU
+ </button>
+ <h1>nBot</h1>
+ <p>This is a eBot like CSGO Webadministration called nBot.</p>
+
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h3 class="panel-title" id="install_sourcemod_1">Install Sourcemod</h3>
+ </div>
+ <div class="panel-body">
+ <div class="panel panel-default">
+ <div class="panel-heading" id="install_sourcemod-data_1">Infos</div>
+ <div class="panel-body">
+ <p><b>Placeholder</b></p>
+ </div>
+ </div>
+ <div class="panel panel-default">
+ <div class="panel-heading">Versions</div>
+ <div class="panel-body">
+ <button type="button" class="btn btn-danger btn-lg" id="refreshSourcemodReleases"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span>Refresh</button>
+ <table class="table table-hover" id="SourcemodVersions">
+ <tr>
+ <th>Id</th>
+ <th>First Name</th>
+ <th>Last Name</th>
+ </tr>
+ </table>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <button type="button" class="btn btn-info btn-lg" id="add_server">Add Server</button>
+ </div>
+ </div>
+ </div>
+ <div class="container">
+ <!-- Example row of columns -->
+ <div class="row">
+ <div class="col-md-4">
+ <h2>Heading</h2>
+ <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
+ <p><a class="btn btn-default" href="#" role="button">View details »</a></p>
+ </div>
+ <div class="col-md-4">
+ <h2>Heading</h2>
+ <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
+ <p><a class="btn btn-default" href="#" role="button">View details »</a></p>
+ </div>
+ <div class="col-md-4">
+ <h2>Heading</h2>
+ <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
+ <p><a class="btn btn-default" href="#" role="button">View details »</a></p>
+ </div>
+ </div>
+
+ <hr>
+
+ <footer>
+ <p>© 2016 MTRNord & Theme: © 2015 Bootstrap</p>
+ </footer>
+ </div> <!-- /container -->
+ </div>
+ <!-- Bootstrap core JavaScript
+ ================================================== -->
+ <!-- Placed at the end of the document so the pages load faster -->
+ <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
+ <script type="text/javascript" src="js/bootstrap.min.js"></script>
+ <script type="text/javascript" src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
+ <script type="text/javascript" src="js/pnotify.custom.min.js"></script>
+ <script type="text/javascript" src="js/bootstrap-tour.min.js"></script>
+ <script type="text/javascript" src="js/pluginManagerConnect.js"></script>
+ <script type="text/javascript" src="js/tour.js"></script>
+ </body>
+</html>