Initial Website Setup
106
.gitignore
vendored
Normal file
@ -0,0 +1,106 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# TypeScript v1 declaration files
|
||||
typings/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Microbundle cache
|
||||
.rpt2_cache/
|
||||
.rts2_cache_cjs/
|
||||
.rts2_cache_es/
|
||||
.rts2_cache_umd/
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
.env.test
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
|
||||
# Next.js build output
|
||||
.next
|
||||
|
||||
# Nuxt.js build / generate output
|
||||
.nuxt
|
||||
dist
|
||||
|
||||
# Gatsby files
|
||||
.cache/
|
||||
# Comment in the public line in if your project uses Gatsby and *not* Next.js
|
||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||
# public
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
|
||||
# TernJS port file
|
||||
.tern-port
|
||||
*.exe
|
||||
*.zip
|
22
app/routes.js
Normal file
@ -0,0 +1,22 @@
|
||||
var express = require('express');
|
||||
var router = express.Router();
|
||||
|
||||
module.exports = function(){
|
||||
router.get('/forum', function(req, res) {
|
||||
res.redirect('https://forum.beamng-mp.com/');
|
||||
});
|
||||
|
||||
router.get('/servers', function(req, res) {
|
||||
res.render('servers.ejs');
|
||||
});
|
||||
|
||||
router.get('/stats', function(req, res) {
|
||||
res.render('stats.ejs');
|
||||
});
|
||||
|
||||
router.get('/keymaster', function(req, res) {
|
||||
res.redirect('https://forum.beamng-mp.com/');
|
||||
});
|
||||
|
||||
return router;
|
||||
}
|
56
index.js
Normal file
@ -0,0 +1,56 @@
|
||||
// Define all Items we require
|
||||
var express = require('express');
|
||||
var express = require('express');
|
||||
var bodyParser = require('body-parser');
|
||||
|
||||
const chalk = require('chalk');
|
||||
const error = chalk.bold.keyword('red');
|
||||
const warn = chalk.keyword('orange');
|
||||
const good = chalk.keyword('lime');
|
||||
|
||||
// Setup Webserver
|
||||
var app = express();
|
||||
|
||||
app.use(bodyParser.urlencoded({ extended: true }));
|
||||
app.use(bodyParser.json());
|
||||
|
||||
// PROXY HANDLING
|
||||
app.set('trust proxy', true);
|
||||
|
||||
// set the view engine to ejs
|
||||
app.set('view engine', 'ejs');
|
||||
|
||||
app.use(express.static('static'))
|
||||
|
||||
app.set("views", "./views")
|
||||
|
||||
// use res.render to load up an ejs view file
|
||||
// index page
|
||||
app.get('/', function(req, res) {
|
||||
res.render('index');
|
||||
});
|
||||
|
||||
var routes = require('./app/routes.js');
|
||||
app.use('/', routes);
|
||||
|
||||
app.get('/builds/launcher', function(req, res) {
|
||||
if (req.query.download == 'true') {
|
||||
const file = `${__dirname}/builds/launcher/launcher.exe`;
|
||||
res.download(file); // Set disposition and send it.
|
||||
} else if (req.query.version == 'true') {
|
||||
const file = `${__dirname}/builds/launcher/version.json`;
|
||||
res.download(file); // Set disposition and send it.
|
||||
} else {
|
||||
//res.sendStatus(403)
|
||||
res.send("Not Found!")
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/builds/server', function(req, res) {
|
||||
console.log(req.params)
|
||||
const file = `${__dirname}/builds/server/server.zip`;
|
||||
res.download(file); // Set disposition and send it.
|
||||
});
|
||||
|
||||
app.listen(3599);
|
||||
console.log('3599 is the magic port');
|
527
package-lock.json
generated
Normal file
@ -0,0 +1,527 @@
|
||||
{
|
||||
"name": "beamng-mp-backend",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"accepts": {
|
||||
"version": "1.3.7",
|
||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
|
||||
"integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
|
||||
"requires": {
|
||||
"mime-types": "~2.1.24",
|
||||
"negotiator": "0.6.2"
|
||||
}
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"requires": {
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"array-flatten": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
||||
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
|
||||
},
|
||||
"async": {
|
||||
"version": "0.9.2",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
|
||||
"integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
||||
},
|
||||
"body-parser": {
|
||||
"version": "1.19.0",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
|
||||
"integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
|
||||
"requires": {
|
||||
"bytes": "3.1.0",
|
||||
"content-type": "~1.0.4",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.2",
|
||||
"http-errors": "1.7.2",
|
||||
"iconv-lite": "0.4.24",
|
||||
"on-finished": "~2.3.0",
|
||||
"qs": "6.7.0",
|
||||
"raw-body": "2.4.0",
|
||||
"type-is": "~1.6.17"
|
||||
}
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"bytes": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
|
||||
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
|
||||
},
|
||||
"chalk": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
|
||||
"integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"requires": {
|
||||
"color-name": "~1.1.4"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
},
|
||||
"content-disposition": {
|
||||
"version": "0.5.3",
|
||||
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
|
||||
"integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
|
||||
"requires": {
|
||||
"safe-buffer": "5.1.2"
|
||||
}
|
||||
},
|
||||
"content-type": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
|
||||
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
|
||||
},
|
||||
"cookie": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
|
||||
"integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
|
||||
},
|
||||
"cookie-signature": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
||||
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
|
||||
},
|
||||
"debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"depd": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
|
||||
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
|
||||
},
|
||||
"destroy": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
|
||||
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
|
||||
},
|
||||
"ee-first": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
||||
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
|
||||
},
|
||||
"ejs": {
|
||||
"version": "3.1.5",
|
||||
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz",
|
||||
"integrity": "sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w==",
|
||||
"requires": {
|
||||
"jake": "^10.6.1"
|
||||
}
|
||||
},
|
||||
"encodeurl": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
|
||||
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
|
||||
},
|
||||
"escape-html": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
|
||||
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
|
||||
},
|
||||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
|
||||
},
|
||||
"etag": {
|
||||
"version": "1.8.1",
|
||||
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
|
||||
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
|
||||
},
|
||||
"express": {
|
||||
"version": "4.17.1",
|
||||
"resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
|
||||
"integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
|
||||
"requires": {
|
||||
"accepts": "~1.3.7",
|
||||
"array-flatten": "1.1.1",
|
||||
"body-parser": "1.19.0",
|
||||
"content-disposition": "0.5.3",
|
||||
"content-type": "~1.0.4",
|
||||
"cookie": "0.4.0",
|
||||
"cookie-signature": "1.0.6",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.2",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"finalhandler": "~1.1.2",
|
||||
"fresh": "0.5.2",
|
||||
"merge-descriptors": "1.0.1",
|
||||
"methods": "~1.1.2",
|
||||
"on-finished": "~2.3.0",
|
||||
"parseurl": "~1.3.3",
|
||||
"path-to-regexp": "0.1.7",
|
||||
"proxy-addr": "~2.0.5",
|
||||
"qs": "6.7.0",
|
||||
"range-parser": "~1.2.1",
|
||||
"safe-buffer": "5.1.2",
|
||||
"send": "0.17.1",
|
||||
"serve-static": "1.14.1",
|
||||
"setprototypeof": "1.1.1",
|
||||
"statuses": "~1.5.0",
|
||||
"type-is": "~1.6.18",
|
||||
"utils-merge": "1.0.1",
|
||||
"vary": "~1.1.2"
|
||||
}
|
||||
},
|
||||
"filelist": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz",
|
||||
"integrity": "sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==",
|
||||
"requires": {
|
||||
"minimatch": "^3.0.4"
|
||||
}
|
||||
},
|
||||
"finalhandler": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
|
||||
"integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"on-finished": "~2.3.0",
|
||||
"parseurl": "~1.3.3",
|
||||
"statuses": "~1.5.0",
|
||||
"unpipe": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"forwarded": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
|
||||
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
|
||||
},
|
||||
"fresh": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
|
||||
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
|
||||
},
|
||||
"http-errors": {
|
||||
"version": "1.7.2",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
|
||||
"integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
|
||||
"requires": {
|
||||
"depd": "~1.1.2",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.1.1",
|
||||
"statuses": ">= 1.5.0 < 2",
|
||||
"toidentifier": "1.0.0"
|
||||
}
|
||||
},
|
||||
"iconv-lite": {
|
||||
"version": "0.4.24",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
|
||||
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
|
||||
"requires": {
|
||||
"safer-buffer": ">= 2.1.2 < 3"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
|
||||
},
|
||||
"ipaddr.js": {
|
||||
"version": "1.9.1",
|
||||
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
|
||||
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
|
||||
},
|
||||
"jake": {
|
||||
"version": "10.8.2",
|
||||
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz",
|
||||
"integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==",
|
||||
"requires": {
|
||||
"async": "0.9.x",
|
||||
"chalk": "^2.4.2",
|
||||
"filelist": "^1.0.1",
|
||||
"minimatch": "^3.0.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||
"requires": {
|
||||
"color-convert": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||
"requires": {
|
||||
"ansi-styles": "^3.2.1",
|
||||
"escape-string-regexp": "^1.0.5",
|
||||
"supports-color": "^5.3.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "1.9.3",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||
"requires": {
|
||||
"color-name": "1.1.3"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||
"requires": {
|
||||
"has-flag": "^3.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"media-typer": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
||||
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
|
||||
},
|
||||
"merge-descriptors": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
|
||||
"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
|
||||
},
|
||||
"methods": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
|
||||
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
|
||||
},
|
||||
"mime": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
|
||||
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.44.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
|
||||
"integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.27",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
|
||||
"integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
|
||||
"requires": {
|
||||
"mime-db": "1.44.0"
|
||||
}
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||
},
|
||||
"negotiator": {
|
||||
"version": "0.6.2",
|
||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
|
||||
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
|
||||
},
|
||||
"on-finished": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
||||
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
|
||||
"requires": {
|
||||
"ee-first": "1.1.1"
|
||||
}
|
||||
},
|
||||
"parseurl": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
|
||||
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
|
||||
},
|
||||
"path-to-regexp": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
||||
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
|
||||
},
|
||||
"proxy-addr": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
|
||||
"integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
|
||||
"requires": {
|
||||
"forwarded": "~0.1.2",
|
||||
"ipaddr.js": "1.9.1"
|
||||
}
|
||||
},
|
||||
"qs": {
|
||||
"version": "6.7.0",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
|
||||
"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
|
||||
},
|
||||
"range-parser": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
|
||||
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
|
||||
},
|
||||
"raw-body": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
|
||||
"integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
|
||||
"requires": {
|
||||
"bytes": "3.1.0",
|
||||
"http-errors": "1.7.2",
|
||||
"iconv-lite": "0.4.24",
|
||||
"unpipe": "1.0.0"
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"send": {
|
||||
"version": "0.17.1",
|
||||
"resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
|
||||
"integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.2",
|
||||
"destroy": "~1.0.4",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"etag": "~1.8.1",
|
||||
"fresh": "0.5.2",
|
||||
"http-errors": "~1.7.2",
|
||||
"mime": "1.6.0",
|
||||
"ms": "2.1.1",
|
||||
"on-finished": "~2.3.0",
|
||||
"range-parser": "~1.2.1",
|
||||
"statuses": "~1.5.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ms": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
||||
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"serve-static": {
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
|
||||
"integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
|
||||
"requires": {
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"parseurl": "~1.3.3",
|
||||
"send": "0.17.1"
|
||||
}
|
||||
},
|
||||
"setprototypeof": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
|
||||
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
|
||||
},
|
||||
"statuses": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
|
||||
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"toidentifier": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
|
||||
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
|
||||
},
|
||||
"type-is": {
|
||||
"version": "1.6.18",
|
||||
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
|
||||
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
|
||||
"requires": {
|
||||
"media-typer": "0.3.0",
|
||||
"mime-types": "~2.1.24"
|
||||
}
|
||||
},
|
||||
"unpipe": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
||||
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
|
||||
},
|
||||
"utils-merge": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
|
||||
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
|
||||
},
|
||||
"vary": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
|
||||
}
|
||||
}
|
||||
}
|
25
package.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "beammp-website",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/Starystars67/BeamMP-Website.git"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"bugs": {
|
||||
"url": "https://github.com/Starystars67/BeamMP-Website/issues"
|
||||
},
|
||||
"homepage": "https://github.com/Starystars67/BeamMP-Website#readme",
|
||||
"dependencies": {
|
||||
"body-parser": "^1.19.0",
|
||||
"chalk": "^3.0.0",
|
||||
"ejs": "^3.0.1",
|
||||
"express": "^4.17.1"
|
||||
}
|
||||
}
|
10214
static/css/servers-styles.css
Normal file
631
static/css/styles.css
Normal file
@ -0,0 +1,631 @@
|
||||
/* --------- NAVBAR // GLOBAL --------- */
|
||||
|
||||
* {
|
||||
font-family: "Fira Sans", "Helvetica", Arial, sans-serif, serif;
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.container {
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.mobile-container {
|
||||
width: 250px;
|
||||
max-width: 480px;
|
||||
margin: auto;
|
||||
background-color: rgb(236, 188, 132);
|
||||
max-height: 500px;
|
||||
color: white;
|
||||
border-radius: 10px;
|
||||
overflow: hidden;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
/*.topnav {*/
|
||||
/* overflow: hidden;*/
|
||||
/* position: relative;*/
|
||||
/*}*/
|
||||
|
||||
/*.topnav #links {*/
|
||||
/* display: none;*/
|
||||
/*}*/
|
||||
|
||||
/*.topnav a {*/
|
||||
/* color: white;*/
|
||||
/* padding: 14px 16px;*/
|
||||
/* text-decoration: none;*/
|
||||
/* font-size: 17px;*/
|
||||
/* display: hidden;*/
|
||||
/*}*/
|
||||
|
||||
/*.topnav a.icon {*/
|
||||
/* display: hidden;*/
|
||||
/* position: absolute;*/
|
||||
/* right: 0;*/
|
||||
/* top: 0;*/
|
||||
/*}*/
|
||||
|
||||
.nav {
|
||||
position: fixed;
|
||||
z-index: 100;
|
||||
height: 80px;
|
||||
font-weight: 400px;
|
||||
overflow: visable;
|
||||
background-color: rgb(236, 188, 132);
|
||||
width: 100%;
|
||||
line-height: 1;
|
||||
transition: box-shadow .2s ease;
|
||||
}
|
||||
|
||||
.nav .links{
|
||||
display: flex;
|
||||
height: 100%;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.nav a {
|
||||
color: #161923;
|
||||
text-decoration: none;
|
||||
transition: background-color .2s ease;
|
||||
}
|
||||
|
||||
.nav .links li {
|
||||
height: 100%;
|
||||
padding-top: 20px;
|
||||
list-style: none;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
/* li{
|
||||
display: list-item;
|
||||
text-align: -webkit-match-parent;
|
||||
padding: 10px;
|
||||
} */
|
||||
|
||||
nav li {
|
||||
display: list-item;
|
||||
text-align: -webkit-match-parent;
|
||||
margin-block-start: 1em;
|
||||
margin-block-end: 1em;
|
||||
margin-inline-start: 0px;
|
||||
margin-inline-end: 0px;
|
||||
padding-inline-start: 40px;
|
||||
}
|
||||
|
||||
.logo-link {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
margin-left: -15px;
|
||||
padding: 20px 15px;
|
||||
align-items: center;
|
||||
align-content: center;
|
||||
}
|
||||
|
||||
.topnav {
|
||||
display: none;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.topnav #burger-links {
|
||||
display: hidden;
|
||||
}
|
||||
|
||||
.topnav a {
|
||||
padding: 14px 16px;
|
||||
text-decoration: none;
|
||||
font-size: 17px;
|
||||
display: hidden;
|
||||
}
|
||||
|
||||
.topnav a.icon {
|
||||
display: hidden;
|
||||
position: fixed;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.logo-text {
|
||||
font-size: 20px;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
.logo-image {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
/*border-radius: 50%;*/
|
||||
margin-top: -57px;
|
||||
}
|
||||
|
||||
.burger-menu {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 990px) {
|
||||
.navbar-links {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.burger-menu {
|
||||
display: block;
|
||||
margin-top: 25px;
|
||||
float: right;
|
||||
}
|
||||
/*.topnav {*/
|
||||
/* display: block;*/
|
||||
/* overflow: hidden;*/
|
||||
/* position: relative;*/
|
||||
/*}*/
|
||||
|
||||
/*.topnav #myLinks {*/
|
||||
/* display: hidden;*/
|
||||
/*}*/
|
||||
|
||||
/*.topnav a {*/
|
||||
/* padding: 14px 16px;*/
|
||||
/* text-decoration: none;*/
|
||||
/* font-size: 17px;*/
|
||||
/* display: block;*/
|
||||
/*}*/
|
||||
|
||||
/*.topnav a.icon {*/
|
||||
/* display: block;*/
|
||||
/* position: absolute;*/
|
||||
/* right: 0;*/
|
||||
/* top: 0;*/
|
||||
/*}*/
|
||||
}
|
||||
|
||||
@media screen and (max-width: 575px) {
|
||||
.burger-menu {
|
||||
display: block;
|
||||
margin-top: -25px;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 360px) {
|
||||
.burger-menu {
|
||||
display: block;
|
||||
margin-top: -43%;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 411px) {
|
||||
.burger-menu {
|
||||
display: block;
|
||||
margin-top: -38%;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 320px) {
|
||||
.burger-menu {
|
||||
display: block;
|
||||
margin-top: -50%;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 375px) {
|
||||
.burger-menu {
|
||||
display: block;
|
||||
margin-top: -42%;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 414px) {
|
||||
.burger-menu {
|
||||
display: block;
|
||||
margin-top: -37%;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 375px) {
|
||||
.burger-menu {
|
||||
display: block;
|
||||
margin-top: -41%;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
.text {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.logo-link {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
align-items: center;
|
||||
align-content: center;
|
||||
}
|
||||
|
||||
.logo-text {
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* ----------- IMAGE AND DOWNLOAD ----------- */
|
||||
|
||||
.main-content {
|
||||
display: flex;
|
||||
position: relative;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
height: calc(100vh - 80px);
|
||||
overflow: hidden;
|
||||
background: linear-gradient(-45deg, rgba(22, 25, 35, 0.35) 0%, rgba(22, 25, 35, 0.95) 100%) center center/100%, url(../img/beamng-mp-landing.png) center top/cover;
|
||||
color: #fefee1;
|
||||
}
|
||||
|
||||
.main-content .introduction {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
transition: transform .2s ease;
|
||||
transform: translateX(0);
|
||||
}
|
||||
|
||||
p {
|
||||
display: block;
|
||||
margin-block-start: 1em;
|
||||
margin-block-end: 1em;
|
||||
margin-inline-start: 0px;
|
||||
margin-inline-end: 0px;
|
||||
color: #c8cdbb;
|
||||
}
|
||||
|
||||
.main-content .lead {
|
||||
font-size: 30px;
|
||||
font-weight: 300;
|
||||
font-family: verdana;
|
||||
}
|
||||
|
||||
.middle-xs {
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.center-xs {
|
||||
-webkit-box-pack: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.main-content .buttons-wrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-end;
|
||||
align-content: flex-end;
|
||||
}
|
||||
|
||||
.main-content .buttons-wrapper .buttons .download-client {
|
||||
display: block;
|
||||
position: relative;
|
||||
padding: 15px 25px 15px 25px;
|
||||
cursor: pointer;
|
||||
color: #fefee1;
|
||||
border: none;
|
||||
text-shadow: 0 0 1px rgba(22, 25, 35, 0.5);
|
||||
background: radial-gradient(circle, rgba(150, 204, 0, 0.8), rgba(150, 204, 0, 0.65)) center/100%;
|
||||
transition: box-shadow .2s ease;
|
||||
font-size: 27px;
|
||||
font-weight: 300;
|
||||
line-height: 1;
|
||||
border-radius: 3px;
|
||||
text-decoration: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
min-width: 260px;
|
||||
}
|
||||
|
||||
.description {
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
font-weight: 200;
|
||||
opacity: .9;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
#button {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* --------- Features ---------*/
|
||||
|
||||
.features article.col-lg-3 {
|
||||
padding: 0 35px;
|
||||
}
|
||||
|
||||
.features article {
|
||||
margin-top: 50px;
|
||||
font-size: 15px;
|
||||
color: #c8cdbb;
|
||||
}
|
||||
|
||||
section {
|
||||
padding-bottom: 50px;
|
||||
}
|
||||
|
||||
/* @media only screen and {min-width: 75em}
|
||||
.col-lg-3 {
|
||||
-ms-flex-preferred-size: 25%;
|
||||
flex-basis: 25%;
|
||||
max-width: 25%;
|
||||
}
|
||||
@media only screen and {min-width: 75em}
|
||||
.col-lg, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-offset-0, .col-lg-offset-1, .col-lg-offset-2, .col-lg-offset-3, .col-lg-offset-4, .col-lg-offset-5, .col-lg-offset-6, .col-lg-offset-7, .col-lg-offset-8, .col-lg-offset-9, .col-lg-offset-10, .col-lg-offset-11, .col-lg-offset-12 {
|
||||
box-sizing: border-box;
|
||||
-webkit-box-flex: 0;
|
||||
-ms-flex: 0 0 auto;
|
||||
flex: 0 0 auto;
|
||||
padding-right: 0.5rem;
|
||||
padding-left: 0.5rem;
|
||||
}
|
||||
@media only screen and {min-width: 64em}
|
||||
.col-md-6 {
|
||||
-ms-flex-preferred-size: 50%;
|
||||
flex-basis: 50%;
|
||||
max-width: 50%;
|
||||
}
|
||||
@media only screen and {min-width: 64em}
|
||||
.col-md, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md-offset-0, .col-md-offset-1, .col-md-offset-2, .col-md-offset-3, .col-md-offset-4, .col-md-offset-5, .col-md-offset-6, .col-md-offset-7, .col-md-offset-8, .col-md-offset-9, .col-md-offset-10, .col-md-offset-11, .col-md-offset-12 {
|
||||
box-sizing: border-box;
|
||||
-webkit-box-flex: 0;
|
||||
-ms-flex: 0 0 auto;
|
||||
flex: 0 0 auto;
|
||||
padding-right: 0.5rem;
|
||||
padding-left: 0.5rem;
|
||||
}
|
||||
@media only screen and {min-width: 48em}
|
||||
.col-sm-6 {
|
||||
-ms-flex-preferred-size: 50%;
|
||||
flex-basis: 50%;
|
||||
max-width: 50%;
|
||||
}
|
||||
@media only screen and {min-width: 48em}
|
||||
.col-sm, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-offset-0, .col-sm-offset-1, .col-sm-offset-2, .col-sm-offset-3, .col-sm-offset-4, .col-sm-offset-5, .col-sm-offset-6, .col-sm-offset-7, .col-sm-offset-8, .col-sm-offset-9, .col-sm-offset-10, .col-sm-offset-11, .col-sm-offset-12 {
|
||||
box-sizing: border-box;
|
||||
-webkit-box-flex: 0;
|
||||
-ms-flex: 0 0 auto;
|
||||
flex: 0 0 auto;
|
||||
padding-right: 0.5rem;
|
||||
padding-left: 0.5rem;
|
||||
} */
|
||||
|
||||
/* #features {
|
||||
font-size: 16px;
|
||||
font-weight: 300;
|
||||
color: #fefee1;
|
||||
background-color: #161923;
|
||||
} */
|
||||
|
||||
body {
|
||||
font-size: 16px;
|
||||
font-weight: 300;
|
||||
color: #fefee1;
|
||||
background-color: #161923 !important;
|
||||
}
|
||||
|
||||
|
||||
/* --------- Bridge ---------- */
|
||||
|
||||
.container-fluid, .container {
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
hr {
|
||||
margin-top: 50px;
|
||||
border-top: 1px solid rgba(250, 255, 225, 0.15);
|
||||
}
|
||||
|
||||
|
||||
figure {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
img {
|
||||
margin-left: 40%;
|
||||
width: 572px;
|
||||
height: 332px;
|
||||
}
|
||||
|
||||
figure img {
|
||||
max-width: 100%;
|
||||
border-radius: 3px;
|
||||
filter: contrast(0.75);
|
||||
transition: filter .2s ease;
|
||||
width: 572px;
|
||||
height: 332px;
|
||||
}
|
||||
|
||||
figure {
|
||||
display: block;
|
||||
margin-block-start: 1em;
|
||||
margin-block-end: 1em;
|
||||
margin-inline-start: 40px;
|
||||
margin-inline-end: 40px;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 75em)
|
||||
.middle-lg {
|
||||
-webkit-box-align: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px) { /* Phones */
|
||||
figure img {
|
||||
width: 336px;
|
||||
height: 189px;
|
||||
}
|
||||
|
||||
img {
|
||||
margin-left: 6%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) { /* Ipad */
|
||||
img {
|
||||
margin-left: 10%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) { /* Ipad Pro */
|
||||
img {
|
||||
margin-left: 6%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1444px) { /* Responsive help */
|
||||
img {
|
||||
margin-left: 6%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (min-width: 75em)
|
||||
.col-lg-6 {
|
||||
-ms-flex-preferred-size: 50%;
|
||||
flex-basis: 50%;
|
||||
max-width: 50%;
|
||||
}
|
||||
|
||||
.user-features-list {
|
||||
display: inline-block;
|
||||
margin-top: 50px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 500px) {
|
||||
.user-features-list {
|
||||
display: inline-block;
|
||||
margin-top: 50px;
|
||||
padding-left: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
.user-features-list li {
|
||||
text-align: left;
|
||||
font-size: 30px;
|
||||
font-weight: 200;
|
||||
}
|
||||
|
||||
section ul li {
|
||||
margin-bottom: 9.80392px;
|
||||
color: #c8cdbb;
|
||||
}
|
||||
|
||||
|
||||
/* --------- FAQ ---------- */
|
||||
|
||||
#faq h1 {
|
||||
text-align: center;
|
||||
margin-top: 50px;
|
||||
font-size: 40px;
|
||||
font-weight: 100;
|
||||
line-height: 1;
|
||||
color: #fefee1;
|
||||
}
|
||||
|
||||
.faq h3 {
|
||||
position: relative;
|
||||
margin: 25px 0 0 0;
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
color: #fefee1;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-weight: 400;
|
||||
font-size: 20px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
/* -------- FOOTER -------- */
|
||||
|
||||
footer {
|
||||
min-height: 150px;
|
||||
background-color: #403F4C;
|
||||
padding-left: 25px;
|
||||
}
|
||||
|
||||
.text-white {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.row {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/* .row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-right: -15px;
|
||||
margin-left: -15px;
|
||||
} */
|
||||
|
||||
.text-right {
|
||||
text-align: right !important;
|
||||
}
|
||||
|
||||
.list-inline {
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.py-5 {
|
||||
padding-bottom: 3rem !important;
|
||||
}
|
||||
|
||||
.row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-right: -15px;
|
||||
margin-left: -15px;
|
||||
}
|
||||
|
||||
footer .container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
footer .row {
|
||||
width: 100%;
|
||||
justify-content: space-around;
|
||||
}
|
||||
|
||||
.row i {
|
||||
font-size: 22px;
|
||||
margin: 0 3px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
.container {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
footer .container {
|
||||
width: 80%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
|
BIN
static/img/Logo_black_1K.png
Normal file
After Width: | Height: | Size: 43 KiB |
BIN
static/img/Logo_black_2K.png
Normal file
After Width: | Height: | Size: 59 KiB |
BIN
static/img/Logo_black_4K.png
Normal file
After Width: | Height: | Size: 95 KiB |
BIN
static/img/beammp-logo.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
static/img/beammpservers.png
Normal file
After Width: | Height: | Size: 2.7 MiB |
BIN
static/img/beamng-mp-landing.png
Normal file
After Width: | Height: | Size: 1.9 MiB |
BIN
static/img/bridgeimage.png
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
static/img/logo.gif
Normal file
After Width: | Height: | Size: 514 KiB |
354
static/js/scripts.js
Normal file
@ -0,0 +1,354 @@
|
||||
$(function() {
|
||||
$.getJSON("/servers-info", function( data ) {
|
||||
$('#Servers-List').empty();
|
||||
console.log("Data Received:")
|
||||
console.log(data)
|
||||
$.each(data, function(k, v) {
|
||||
var v = data[k][Object.keys(data[k])[0]]
|
||||
$('#Servers-List').append(`<tr><td>${getCountryName(v.location)}</td><td>${formatServerName(v.sname)}</td><td>${SmoothMapName(v.map)}</td><td>---</td><td>---</td><td>${v.players}/${v.maxplayers}</td></tr>`);
|
||||
});
|
||||
$('#dataTable').DataTable();
|
||||
});
|
||||
});
|
||||
|
||||
var styleMap = {
|
||||
'^0': 'color:#000000',
|
||||
'^1': 'color:#0000AA',
|
||||
'^2': 'color:#00AA00',
|
||||
'^3': 'color:#00AAAA',
|
||||
'^4': 'color:#AA0000',
|
||||
'^5': 'color:#AA00AA',
|
||||
'^6': 'color:#FFAA00',
|
||||
'^7': 'color:#AAAAAA',
|
||||
'^8': 'color:#555555',
|
||||
'^9': 'color:#5555FF',
|
||||
'^a': 'color:#55FF55',
|
||||
'^b': 'color:#55FFFF',
|
||||
'^c': 'color:#FF5555',
|
||||
'^d': 'color:#FF55FF',
|
||||
'^e': 'color:#FFFF55',
|
||||
'^f': 'color:#FFFFFF',
|
||||
'^l': 'font-weight:bold',
|
||||
'^m': 'text-decoration:line-through',
|
||||
'^n': 'text-decoration:underline',
|
||||
'^o': 'font-style:italic',
|
||||
};
|
||||
function applyCode(string, codes) {
|
||||
var elem = document.createElement('span');
|
||||
string = string.replace(/\x00*/g, '');
|
||||
for(var i = 0, len = codes.length; i < len; i++) {
|
||||
elem.style.cssText += styleMap[codes[i]] + ';';
|
||||
}
|
||||
elem.innerHTML = string;
|
||||
return elem;
|
||||
}
|
||||
function formatServerName(string) {
|
||||
var codes = string.match(/\^.{1}/g) || [],
|
||||
indexes = [],
|
||||
apply = [],
|
||||
tmpStr,
|
||||
deltaIndex,
|
||||
noCode,
|
||||
final = document.createDocumentFragment(),
|
||||
i;
|
||||
for(i = 0, len = codes.length; i < len; i++) {
|
||||
indexes.push( string.indexOf(codes[i]) );
|
||||
string = string.replace(codes[i], '\x00\x00');
|
||||
}
|
||||
if(indexes[0] !== 0) {
|
||||
final.appendChild( applyCode( string.substring(0, indexes[0]), [] ) );
|
||||
}
|
||||
for(i = 0; i < len; i++) {
|
||||
indexDelta = indexes[i + 1] - indexes[i];
|
||||
if(indexDelta === 2) {
|
||||
while(indexDelta === 2) {
|
||||
apply.push ( codes[i] );
|
||||
i++;
|
||||
indexDelta = indexes[i + 1] - indexes[i];
|
||||
}
|
||||
apply.push ( codes[i] );
|
||||
} else {
|
||||
apply.push( codes[i] );
|
||||
}
|
||||
if( apply.lastIndexOf('^r') > -1) {
|
||||
apply = apply.slice( apply.lastIndexOf('^r') + 1 );
|
||||
}
|
||||
tmpStr = string.substring( indexes[i], indexes[i + 1] );
|
||||
final.appendChild( applyCode(tmpStr, apply) );
|
||||
}
|
||||
$('#TEMPAREA').html(final);
|
||||
return $('#TEMPAREA').html();;
|
||||
}
|
||||
|
||||
function SmoothMapName(map) {
|
||||
if (map != "Any Map") {
|
||||
map = map.replace("/info.json","")
|
||||
map = map.split('/').pop().replace(/\s*/g,'')
|
||||
map = map.replace(/_/g," ")
|
||||
map = map.replace(/-/g," ")
|
||||
map = toTitleCase(map)
|
||||
}
|
||||
return map
|
||||
}
|
||||
|
||||
function toTitleCase(str) {
|
||||
return str.replace(/\w\S*/g, function(txt){
|
||||
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
|
||||
});
|
||||
}
|
||||
|
||||
var isoCountries = {
|
||||
'AF' : 'Afghanistan',
|
||||
'AX' : 'Aland Islands',
|
||||
'AL' : 'Albania',
|
||||
'DZ' : 'Algeria',
|
||||
'AS' : 'American Samoa',
|
||||
'AD' : 'Andorra',
|
||||
'AO' : 'Angola',
|
||||
'AI' : 'Anguilla',
|
||||
'AQ' : 'Antarctica',
|
||||
'AG' : 'Antigua And Barbuda',
|
||||
'AR' : 'Argentina',
|
||||
'AM' : 'Armenia',
|
||||
'AW' : 'Aruba',
|
||||
'AU' : 'Australia',
|
||||
'AT' : 'Austria',
|
||||
'AZ' : 'Azerbaijan',
|
||||
'BS' : 'Bahamas',
|
||||
'BH' : 'Bahrain',
|
||||
'BD' : 'Bangladesh',
|
||||
'BB' : 'Barbados',
|
||||
'BY' : 'Belarus',
|
||||
'BE' : 'Belgium',
|
||||
'BZ' : 'Belize',
|
||||
'BJ' : 'Benin',
|
||||
'BM' : 'Bermuda',
|
||||
'BT' : 'Bhutan',
|
||||
'BO' : 'Bolivia',
|
||||
'BA' : 'Bosnia And Herzegovina',
|
||||
'BW' : 'Botswana',
|
||||
'BV' : 'Bouvet Island',
|
||||
'BR' : 'Brazil',
|
||||
'IO' : 'British Indian Ocean Territory',
|
||||
'BN' : 'Brunei Darussalam',
|
||||
'BG' : 'Bulgaria',
|
||||
'BF' : 'Burkina Faso',
|
||||
'BI' : 'Burundi',
|
||||
'KH' : 'Cambodia',
|
||||
'CM' : 'Cameroon',
|
||||
'CA' : 'Canada',
|
||||
'CV' : 'Cape Verde',
|
||||
'KY' : 'Cayman Islands',
|
||||
'CF' : 'Central African Republic',
|
||||
'TD' : 'Chad',
|
||||
'CL' : 'Chile',
|
||||
'CN' : 'China',
|
||||
'CX' : 'Christmas Island',
|
||||
'CC' : 'Cocos (Keeling) Islands',
|
||||
'CO' : 'Colombia',
|
||||
'KM' : 'Comoros',
|
||||
'CG' : 'Congo',
|
||||
'CD' : 'Congo, Democratic Republic',
|
||||
'CK' : 'Cook Islands',
|
||||
'CR' : 'Costa Rica',
|
||||
'CI' : 'Cote D\'Ivoire',
|
||||
'HR' : 'Croatia',
|
||||
'CU' : 'Cuba',
|
||||
'CY' : 'Cyprus',
|
||||
'CZ' : 'Czech Republic',
|
||||
'DK' : 'Denmark',
|
||||
'DJ' : 'Djibouti',
|
||||
'DM' : 'Dominica',
|
||||
'DO' : 'Dominican Republic',
|
||||
'EC' : 'Ecuador',
|
||||
'EG' : 'Egypt',
|
||||
'SV' : 'El Salvador',
|
||||
'GQ' : 'Equatorial Guinea',
|
||||
'ER' : 'Eritrea',
|
||||
'EE' : 'Estonia',
|
||||
'ET' : 'Ethiopia',
|
||||
'FK' : 'Falkland Islands (Malvinas)',
|
||||
'FO' : 'Faroe Islands',
|
||||
'FJ' : 'Fiji',
|
||||
'FI' : 'Finland',
|
||||
'FR' : 'France',
|
||||
'GF' : 'French Guiana',
|
||||
'PF' : 'French Polynesia',
|
||||
'TF' : 'French Southern Territories',
|
||||
'GA' : 'Gabon',
|
||||
'GM' : 'Gambia',
|
||||
'GE' : 'Georgia',
|
||||
'DE' : 'Germany',
|
||||
'GH' : 'Ghana',
|
||||
'GI' : 'Gibraltar',
|
||||
'GR' : 'Greece',
|
||||
'GL' : 'Greenland',
|
||||
'GD' : 'Grenada',
|
||||
'GP' : 'Guadeloupe',
|
||||
'GU' : 'Guam',
|
||||
'GT' : 'Guatemala',
|
||||
'GG' : 'Guernsey',
|
||||
'GN' : 'Guinea',
|
||||
'GW' : 'Guinea-Bissau',
|
||||
'GY' : 'Guyana',
|
||||
'HT' : 'Haiti',
|
||||
'HM' : 'Heard Island & Mcdonald Islands',
|
||||
'VA' : 'Holy See (Vatican City State)',
|
||||
'HN' : 'Honduras',
|
||||
'HK' : 'Hong Kong',
|
||||
'HU' : 'Hungary',
|
||||
'IS' : 'Iceland',
|
||||
'IN' : 'India',
|
||||
'ID' : 'Indonesia',
|
||||
'IR' : 'Iran, Islamic Republic Of',
|
||||
'IQ' : 'Iraq',
|
||||
'IE' : 'Ireland',
|
||||
'IM' : 'Isle Of Man',
|
||||
'IL' : 'Israel',
|
||||
'IT' : 'Italy',
|
||||
'JM' : 'Jamaica',
|
||||
'JP' : 'Japan',
|
||||
'JE' : 'Jersey',
|
||||
'JO' : 'Jordan',
|
||||
'KZ' : 'Kazakhstan',
|
||||
'KE' : 'Kenya',
|
||||
'KI' : 'Kiribati',
|
||||
'KR' : 'Korea',
|
||||
'KW' : 'Kuwait',
|
||||
'KG' : 'Kyrgyzstan',
|
||||
'LA' : 'Lao People\'s Democratic Republic',
|
||||
'LV' : 'Latvia',
|
||||
'LB' : 'Lebanon',
|
||||
'LS' : 'Lesotho',
|
||||
'LR' : 'Liberia',
|
||||
'LY' : 'Libyan Arab Jamahiriya',
|
||||
'LI' : 'Liechtenstein',
|
||||
'LT' : 'Lithuania',
|
||||
'LU' : 'Luxembourg',
|
||||
'MO' : 'Macao',
|
||||
'MK' : 'Macedonia',
|
||||
'MG' : 'Madagascar',
|
||||
'MW' : 'Malawi',
|
||||
'MY' : 'Malaysia',
|
||||
'MV' : 'Maldives',
|
||||
'ML' : 'Mali',
|
||||
'MT' : 'Malta',
|
||||
'MH' : 'Marshall Islands',
|
||||
'MQ' : 'Martinique',
|
||||
'MR' : 'Mauritania',
|
||||
'MU' : 'Mauritius',
|
||||
'YT' : 'Mayotte',
|
||||
'MX' : 'Mexico',
|
||||
'FM' : 'Micronesia, Federated States Of',
|
||||
'MD' : 'Moldova',
|
||||
'MC' : 'Monaco',
|
||||
'MN' : 'Mongolia',
|
||||
'ME' : 'Montenegro',
|
||||
'MS' : 'Montserrat',
|
||||
'MA' : 'Morocco',
|
||||
'MZ' : 'Mozambique',
|
||||
'MM' : 'Myanmar',
|
||||
'NA' : 'Namibia',
|
||||
'NR' : 'Nauru',
|
||||
'NP' : 'Nepal',
|
||||
'NL' : 'Netherlands',
|
||||
'AN' : 'Netherlands Antilles',
|
||||
'NC' : 'New Caledonia',
|
||||
'NZ' : 'New Zealand',
|
||||
'NI' : 'Nicaragua',
|
||||
'NE' : 'Niger',
|
||||
'NG' : 'Nigeria',
|
||||
'NU' : 'Niue',
|
||||
'NF' : 'Norfolk Island',
|
||||
'MP' : 'Northern Mariana Islands',
|
||||
'NO' : 'Norway',
|
||||
'OM' : 'Oman',
|
||||
'PK' : 'Pakistan',
|
||||
'PW' : 'Palau',
|
||||
'PS' : 'Palestinian Territory, Occupied',
|
||||
'PA' : 'Panama',
|
||||
'PG' : 'Papua New Guinea',
|
||||
'PY' : 'Paraguay',
|
||||
'PE' : 'Peru',
|
||||
'PH' : 'Philippines',
|
||||
'PN' : 'Pitcairn',
|
||||
'PL' : 'Poland',
|
||||
'PT' : 'Portugal',
|
||||
'PR' : 'Puerto Rico',
|
||||
'QA' : 'Qatar',
|
||||
'RE' : 'Reunion',
|
||||
'RO' : 'Romania',
|
||||
'RU' : 'Russian Federation',
|
||||
'RW' : 'Rwanda',
|
||||
'BL' : 'Saint Barthelemy',
|
||||
'SH' : 'Saint Helena',
|
||||
'KN' : 'Saint Kitts And Nevis',
|
||||
'LC' : 'Saint Lucia',
|
||||
'MF' : 'Saint Martin',
|
||||
'PM' : 'Saint Pierre And Miquelon',
|
||||
'VC' : 'Saint Vincent And Grenadines',
|
||||
'WS' : 'Samoa',
|
||||
'SM' : 'San Marino',
|
||||
'ST' : 'Sao Tome And Principe',
|
||||
'SA' : 'Saudi Arabia',
|
||||
'SN' : 'Senegal',
|
||||
'RS' : 'Serbia',
|
||||
'SC' : 'Seychelles',
|
||||
'SL' : 'Sierra Leone',
|
||||
'SG' : 'Singapore',
|
||||
'SK' : 'Slovakia',
|
||||
'SI' : 'Slovenia',
|
||||
'SB' : 'Solomon Islands',
|
||||
'SO' : 'Somalia',
|
||||
'ZA' : 'South Africa',
|
||||
'GS' : 'South Georgia And Sandwich Isl.',
|
||||
'ES' : 'Spain',
|
||||
'LK' : 'Sri Lanka',
|
||||
'SD' : 'Sudan',
|
||||
'SR' : 'Suriname',
|
||||
'SJ' : 'Svalbard And Jan Mayen',
|
||||
'SZ' : 'Swaziland',
|
||||
'SE' : 'Sweden',
|
||||
'CH' : 'Switzerland',
|
||||
'SY' : 'Syrian Arab Republic',
|
||||
'TW' : 'Taiwan',
|
||||
'TJ' : 'Tajikistan',
|
||||
'TZ' : 'Tanzania',
|
||||
'TH' : 'Thailand',
|
||||
'TL' : 'Timor-Leste',
|
||||
'TG' : 'Togo',
|
||||
'TK' : 'Tokelau',
|
||||
'TO' : 'Tonga',
|
||||
'TT' : 'Trinidad And Tobago',
|
||||
'TN' : 'Tunisia',
|
||||
'TR' : 'Turkey',
|
||||
'TM' : 'Turkmenistan',
|
||||
'TC' : 'Turks And Caicos Islands',
|
||||
'TV' : 'Tuvalu',
|
||||
'UG' : 'Uganda',
|
||||
'UA' : 'Ukraine',
|
||||
'AE' : 'United Arab Emirates',
|
||||
'GB' : 'United Kingdom',
|
||||
'US' : 'United States',
|
||||
'UM' : 'United States Outlying Islands',
|
||||
'UY' : 'Uruguay',
|
||||
'UZ' : 'Uzbekistan',
|
||||
'VU' : 'Vanuatu',
|
||||
'VE' : 'Venezuela',
|
||||
'VN' : 'Viet Nam',
|
||||
'VG' : 'Virgin Islands, British',
|
||||
'VI' : 'Virgin Islands, U.S.',
|
||||
'WF' : 'Wallis And Futuna',
|
||||
'EH' : 'Western Sahara',
|
||||
'YE' : 'Yemen',
|
||||
'ZM' : 'Zambia',
|
||||
'ZW' : 'Zimbabwe'
|
||||
};
|
||||
|
||||
function getCountryName (countryCode) {
|
||||
if (isoCountries.hasOwnProperty(countryCode)) {
|
||||
return isoCountries[countryCode];
|
||||
} else {
|
||||
return countryCode;
|
||||
}
|
||||
}
|
5309
static/stylesheets/app.css
Normal file
3423
static/stylesheets/app.min.e0bb64e7.css
Normal file
6722
static/stylesheets/bootstrap.css
vendored
Normal file
24
static/stylesheets/custom.css
Normal file
@ -0,0 +1,24 @@
|
||||
.text-red {
|
||||
color: #c30000;
|
||||
}
|
||||
|
||||
.font-weight-bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.dataTables_wrapper {
|
||||
margin-top: 10px;
|
||||
color: #d1ecfc;
|
||||
}
|
||||
|
||||
div#Clients-Table_length {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
label.col-md-4.control-label {
|
||||
color: #a9c5d0;
|
||||
}
|
||||
|
||||
.Print-Only {
|
||||
display: none;
|
||||
}
|
2602
static/stylesheets/plugins.css
Normal file
8
views/includes/footer.ejs
Normal file
@ -0,0 +1,8 @@
|
||||
<footer>
|
||||
<div class="container-fluid">
|
||||
<p class="text-gray-dark">
|
||||
<strong class="m-r-1">BeamMP Mod Team </strong>
|
||||
<span class="text-gray-dark">© 2020 - Present.</span>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
43
views/includes/nav.ejs
Normal file
@ -0,0 +1,43 @@
|
||||
<div class="container">
|
||||
<div class="row center-xs">
|
||||
<div class="col-md-4 col-sm-4">
|
||||
<a href class="logo-link">
|
||||
<span class="logo-text">BeamMP</span>
|
||||
<!--<img src="../img/beammp-logo.png"></img>-->
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-md-8 col-sm-8">
|
||||
<ul class="links">
|
||||
<li>
|
||||
<a href="/forum">
|
||||
<span class="text">Forum</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://wiki.beamng-mp.com">
|
||||
<span class="text">Docs</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/servers">
|
||||
<span class="text">Servers</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/stats">
|
||||
<span class="text">Statistics</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://github.com/Starystars67/BeamNG-MP">
|
||||
<span class="text">Github</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://www.patreon.com/BeamNGMP">
|
||||
<span class="text">Patreon</span>
|
||||
</a>
|
||||
</li>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
141
views/includes/navbar.ejs
Normal file
@ -0,0 +1,141 @@
|
||||
<div class="navbar-inverse navbar navbar-fixed-top">
|
||||
<div class="container-fluid">
|
||||
|
||||
<div class="navbar-header">
|
||||
<a class="current navbar-brand" href="/">
|
||||
<img alt="BeamMP Logo" class="h-20" src="../img/beammp-logo.png">
|
||||
</a>
|
||||
<button class="action-right-sidebar-toggle navbar-toggle collapsed" data-target="#navdbar" data-toggle="collapse" type="button">
|
||||
<i class="fa fa-fw fa-align-right text-white"></i>
|
||||
</button>
|
||||
<button class="navbar-toggle collapsed" data-target="#navbar" data-toggle="collapse" type="button">
|
||||
<i class="fa fa-fw fa-user text-white"></i>
|
||||
</button>
|
||||
<button class="action-sidebar-open navbar-toggle collapsed" type="button">
|
||||
<i class="fa fa-fw fa-bars text-white"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbar">
|
||||
|
||||
<!-- START Left Side Navbar -->
|
||||
<ul class="nav navbar-nav navbar-left clearfix yamm">
|
||||
|
||||
<!-- START Switch Sidebar ON/OFF -->
|
||||
<li id="sidebar-switch" class="hidden-xs">
|
||||
<a class="action-toggle-sidebar-slim" data-placement="bottom" data-toggle="tooltip" href="#" title="Slim sidebar on/off">
|
||||
<i class="fa fa-lg fa-bars fa-fw"></i>
|
||||
</a>
|
||||
</li>
|
||||
<!-- END Switch Sidebar ON/OFF -->
|
||||
</ul>
|
||||
<!-- START Left Side Navbar -->
|
||||
|
||||
<!-- START Right Side Navbar -->
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
|
||||
<li role="separator" class="divider hidden-lg hidden-md hidden-sm"></li>
|
||||
<li class="dropdown-header hidden-lg hidden-md hidden-sm text-gray-lighter text-uppercase">
|
||||
<strong>Your Profile</strong>
|
||||
</li>
|
||||
|
||||
<!-- START Notification -->
|
||||
<li class="dropdown">
|
||||
|
||||
<!-- START Icon Notification with Badge (10)-->
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button">
|
||||
<i class="fa fa-lg fa-fw fa-bell hidden-xs"></i>
|
||||
<span class="hidden-sm hidden-md hidden-lg">
|
||||
Notifications <span class="badge badge-primary m-l-1"></span>
|
||||
</span>
|
||||
<span class="label label-primary label-pill label-with-icon hidden-xs"></span>
|
||||
<span class="fa fa-fw fa-angle-down hidden-lg hidden-md hidden-sm"></span>
|
||||
</a>
|
||||
<!-- END Icon Notification with Badge (10)-->
|
||||
|
||||
<!-- START Notification Dropdown Menu -->
|
||||
<ul class="dropdown-menu dropdown-menu-right p-t-0 b-t-0 p-b-0 b-b-0 b-a-0">
|
||||
<li>
|
||||
<div class="yamm-content p-t-0 p-r-0 p-l-0 p-b-0">
|
||||
<ul class="list-group m-b-0 b-b-0">
|
||||
<li class="list-group-item b-r-0 b-l-0 b-r-0 b-t-r-0 b-t-l-0 b-b-2 w-350">
|
||||
<small class="text-uppercase">
|
||||
<strong>Notifications</strong>
|
||||
</small>
|
||||
<!--<a role="button" href="#" class="btn m-t-0 btn-xs btn-default pull-right">
|
||||
<i class="fa fa-fw fa-gear"></i>
|
||||
</a>-->
|
||||
</li>
|
||||
|
||||
<!-- START Scroll Inside Panel -->
|
||||
<li class="list-group-item b-a-0 p-x-0 p-y-0 b-t-0">
|
||||
<div class="scroll-300 custom-scrollbar">
|
||||
<!--<a href="../pages/timeline.html" class="list-group-item b-r-0 b-t-0 b-l-0">
|
||||
<div class="media">
|
||||
<div class="media-left">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle-thin fa-stack-2x text-danger"></i>
|
||||
<i class="fa fa-close fa-stack-1x fa-fw text-danger"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="media-body">
|
||||
<h5 class="m-t-0">
|
||||
<span>We need to compress the open-source SAS protocol!</span>
|
||||
</h5>
|
||||
<p class="text-nowrap small m-b-0">
|
||||
<span>24-Jan-2020, 09:41</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</a>-->
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<!-- END Scroll Inside Panel -->
|
||||
<li class="list-group-item b-a-0 p-x-0 p-y-0 r-a-0 b-b-0">
|
||||
<a class="list-group-item text-center b-r-0 b-b-0 b-l-0 b-r-b-r-0 b-r-b-l-0" href="/notifications">
|
||||
See All Notifications <i class="fa fa-angle-right"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
<!-- END Notification Dropdown Menu -->
|
||||
|
||||
</li>
|
||||
<!-- END Notification -->
|
||||
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle user-dropdown" data-toggle="dropdown" href="#" role="button">
|
||||
<span class="m-r-1"><%= user.username %>#<%= user.discriminator%></span>
|
||||
<div class="avatar avatar-image avatar-sm avatar-inline">
|
||||
<img alt="User" src="https://cdn.discordapp.com/avatars/<%= user.discord.id %>/<%= user.discord.avatar %>.png">
|
||||
</div>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li class="dropdown-header text-gray-lighter">
|
||||
<strong class="text-uppercase">Account</strong>
|
||||
</li>
|
||||
<li role="separator" class="divider"></li>
|
||||
<li>
|
||||
<a href="/profile-details">Your Profile</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Settings <span class="label label-danger label-outline">Coming Soon</span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://wiki.beamng-mp.com/">Wiki <span class="label label-primary label-outline">In-Progress</span></a>
|
||||
</li>
|
||||
<li role="separator" class="divider"></li>
|
||||
<li>
|
||||
<a href="/logout">Sign Out</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- END Right Side Navbar -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
224
views/index.ejs
Normal file
@ -0,0 +1,224 @@
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<title>BeamMP</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/styles.css"/>
|
||||
<!-- <link rel="stylesheet" type="text/css" href="../static/css/styles.css"/>-->
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
|
||||
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
|
||||
<script src="https://kit.fontawesome.com/90f05b466c.js" crossorigin="anonymous"></script>
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-160071688-1"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'UA-160071688-1');
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<nav class="nav">
|
||||
<%- include('includes/nav.ejs') %>
|
||||
|
||||
</nav>
|
||||
|
||||
<header class="main-content" style="background-position: center center, center 0px;">
|
||||
<div class="introduction" style="margin-top: 0px;">
|
||||
<div class="container">
|
||||
<div class="row center-xs middle-xs">
|
||||
<div class="col-lg-8 col-md-8 col-sm-8 col-xs-12">
|
||||
<p class="lead">
|
||||
<b>BeamMP</b> Bringing Multiplayer to BeamNG.drive!<br>
|
||||
With a smooth and enjoyable experience.
|
||||
</div>
|
||||
<div id="button" class="col-lg-4 col-md-4 col-sm-4 buttons-wrapper hidden-xs">
|
||||
<div class="buttons">
|
||||
<button class="download-client js-show-story" onclick="downloadinstaller()" href="beamMP.zip" download>
|
||||
<span class="text">Download Client</span>
|
||||
<span class="description"> BeamMP_Installer.zip</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="buttons mt-3">
|
||||
<button class="download-client js-show-story" onclick="downloadserver()" href="beamMP.zip" download style="background: radial-gradient(circle,rgb(255 179 38 / 80%),rgb(255 176 0 / 65%)) center/100%;">
|
||||
<span class="text">Download Server</span>
|
||||
<span class="description"> BeamMP_Server.zip</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<section id="features">
|
||||
<div class="container">
|
||||
<div class="row center-lg center-md center-sm center-xs features">
|
||||
<article class="col-lg-3">
|
||||
<h2>Stable Servers</h2>
|
||||
BeamMP allows for stable servers,
|
||||
with a variety of servers located accross the globe.
|
||||
</article>
|
||||
<article class="col-lg-3 col-md-6 col-sm-6 col-xs-12">
|
||||
<h2> BeamNG.drive </h2> BeamMP uses the same maps, vehicles & mods
|
||||
so you don't need to learn anything new!
|
||||
</article>
|
||||
<article class="col-lg-3 col-md-6 col-sm-6 col-xs-12">
|
||||
<h2> Standalone </h2> BeamMP doesn't modify your original installation,
|
||||
so you can play either singleplayer or multiplayer.
|
||||
</article>
|
||||
<article class="col-lg-3 col-md-6 col-sm-6 col-xs-12">
|
||||
<h2> Sync quality </h2> BeamMP updates your vehicle position ~100 per second,
|
||||
allowing for a smooth overall experience.
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="row middle-lg">
|
||||
<div class="col-lg-6">
|
||||
<figure>
|
||||
<!-- <img src="../img/beammpservers.png">-->
|
||||
<img src="../img/beammpservers.png">
|
||||
</figure>
|
||||
</div>
|
||||
<div class="col-lg-6" style="text-align:center">
|
||||
<ul class="user-features-list">
|
||||
<li> Dedicated servers </li>
|
||||
<li> The original BeamNG.Drive</li>
|
||||
<li> Dedicated support team</li>
|
||||
<li> 24/7 Global Access</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
<hr>
|
||||
<section id="faq">
|
||||
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
||||
<div class="container">
|
||||
<!-- <div class="row"> -->
|
||||
<h1>FAQ.</h1>
|
||||
<div class="faq">
|
||||
<h3 id="faq-heading">The server list is not showing up!</h3>
|
||||
<p>Try restarting BeamMP as this can sometimes happen, if this fails to fix your issue please create a ticket in the discord</p>
|
||||
<h3 id="faq-heading">How do I open a ticket in case something doesn’t work or I have questions?</h3>
|
||||
<p>Please check the <b>#how-to-use</b> channel in Discord. Please give an accurate description of what you’ve done so the support team will help you in a fast and effective way. </p>
|
||||
<h3 id="faq-heading">Help! Im getting error codes</h3>
|
||||
<p>Please open a ticket in our Discord.</p>
|
||||
<h3 id="faq-heading"> Does this work with pirated versions of BeamNG.drive?</h3>
|
||||
<p>We don’t know if it works with pirated versions of BeamNG.drive, but we <b>will not</b> provide any support to non legit copies of the game.</p>
|
||||
<h3 id="faq-heading">How do I host a server?</h3>
|
||||
<p>In order access the files needed to host a server you have to become a Patreon supporter or a “Server Booster”. You can find the Patreon <a href="https://www.patreon.com/BeamNGMP">here</a>. You can become a Server Booster
|
||||
by clicking the server Discord name and then Server Boost in Discord. Both these categories will have early access to newer versions of the mod too.
|
||||
Don't worry the server files will eventually be open for the public once we are happy enough to release them. </p>
|
||||
<h3 id="faq-heading">Can I use mods?</h3>
|
||||
<p>Mods are supported in the new version v2.0. These are installed on the server. See our <a href="https://wiki.beamng-mp.com/en/home/Server_Mod">wiki</a> for more infomation.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer class="py-5">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-6 col-sm-4 text-xs-center order-sm-2">
|
||||
<a class="text-white" target="_blank" href="https://www.reddit.com/r/BeamMP/">
|
||||
<i class="fab fa-reddit"></i>
|
||||
</a>
|
||||
|
||||
<a class="text-white" target="_blank" href="https://twitter.com/BeamNG_MP">
|
||||
<i class="fab fa-twitter"></i>
|
||||
</a>
|
||||
|
||||
<a class="text-white" target="_blank" href="https://www.facebook.com/BeamNGMP">
|
||||
<i class="fab fa-facebook"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-6 justify-content-between col-sm-4 text-right text-xs-center order-sm-3">
|
||||
|
||||
<a class="text-white" target="_blank" href="https://github.com/Starystars67/BeamNG-MP-docs">
|
||||
<i class="fab fa-github"></i>
|
||||
</a>
|
||||
|
||||
<a class="text-white" target="_blank" href="https://discord.gg/beammp">
|
||||
<i class="fab fa-discord"></i>
|
||||
</a>
|
||||
|
||||
<a class="text-white" target="_blank" href="https://www.beamng.com/threads/beamng-drive-multiplayer-beamng-mp-formally-local-multiplayer-lua-based.63052/">
|
||||
<i class="fa fa-envelope"></i>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-4 text-center py-4 order-sm-2">
|
||||
<small class="text-white">© 2020 BeamMP Mod Team All Rights Reserved</small>
|
||||
</br>
|
||||
<small class="ml-1"><a href="https://forum.beamng-mp.com/topic/95/privacy-policy-v1-0?_=1605727272235" target="_blank">Privacy Policy</a></small>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<!-- <footer class="">
|
||||
<div class="col-1 justify-content-between socials-left">
|
||||
<ul class="list-inline">
|
||||
|
||||
<li class="col-xs-4 list-inline-item h3" data-toggle="tooltip" data-placement="top" title="" aria-label="Reddit" data-original-title="Reddit">
|
||||
<a class="text-white" target="_blank" href="https://www.reddit.com/user/BeamNG-MP_Mod_Team">
|
||||
<i class="fab fa-reddit"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="col-xs-4 list-inline-item h3" data-toggle="tooltip" data-placement="top" title="" aria-label="Twitter" data-original-title="Twitter">
|
||||
<a class="text-white" target="_blank" href="https://twitter.com/BeamNG_MP">
|
||||
<i class="fab fa-twitter"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="col-xs-4 list-inline-item h3" data-toggle="tooltip" data-placement="top" title="" aria-label="Facebook" data-original-title="Facebook">
|
||||
<a class="text-white" target="_blank" href="https://www.facebook.com/BeamNGMP">
|
||||
<i class="fab fa-facebook"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="row middle-xs">
|
||||
<hr>
|
||||
<div class="col-lg-8 col-md-7 col-sm-6">
|
||||
<p>BeamNG-MP is not affiliated by BeamNG.Drive, Any trademarks belong to the respective owners.
|
||||
</p>
|
||||
</div>
|
||||
<div class="copyright col-lg-4 col-md-5 col-sm-6">
|
||||
<p class="righty"> © 2020 BeamNG-MP Mod Team All Rights Reserved.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer> -->
|
||||
<script>
|
||||
function downloadinstaller() {
|
||||
document.location.href ="/installer/BeamMP_Installer.zip";
|
||||
//alert("Sorry this is coming soon, Therefore it is not available just yet. Please join the discord to get the latest version: https://discord.gg/beammp")
|
||||
}
|
||||
|
||||
function downloadserver() {
|
||||
document.location.href ="/server/BeamMP_Server.zip";
|
||||
//alert("Sorry this is coming soon, Therefore it is not available just yet. Please join the discord to get the latest version: https://discord.gg/beammp")
|
||||
}
|
||||
|
||||
function myFunction() {
|
||||
var x = document.getElementById("burger-links");
|
||||
if (x.style.display === "block") {
|
||||
x.style.display = "none";
|
||||
} else {
|
||||
x.style.display = "block";
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<script src="js/script.js"></script>
|
||||
<!-- <script src="../static/js/script.js"></script>-->
|
||||
</body>
|
88
views/servers.ejs
Normal file
@ -0,0 +1,88 @@
|
||||
<!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, shrink-to-fit=no" />
|
||||
<meta name="description" content="" />
|
||||
<meta name="author" content="" />
|
||||
<title>BeamNG-MP-Servers</title>
|
||||
<link href="css/servers-styles.css" rel="stylesheet" />
|
||||
<link href="https://cdn.datatables.net/1.10.20/css/dataTables.bootstrap4.min.css" rel="stylesheet" crossorigin="anonymous" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/js/all.min.js" crossorigin="anonymous"></script>
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-160071688-1"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'UA-160071688-1');
|
||||
</script>
|
||||
</head>
|
||||
<body class="sb-nav-fixed">
|
||||
<span id="TEMPAREA" style="display:none;"></span>
|
||||
<nav class="sb-topnav navbar navbar-expand navbar-dark bg-dark">
|
||||
<%- include('includes/nav.ejs') %>
|
||||
</nav>
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<br>
|
||||
<br>
|
||||
<div class="container-fluid">
|
||||
<h1 class="mt-4">Server List</h1>
|
||||
<div class="card mb-4">
|
||||
<div class="card-header"><i class="fas fa-server mr-1"></i>BeamNG-MP Server List</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Location</th>
|
||||
<th>Server Name</th>
|
||||
<th>Map</th>
|
||||
<th>Ping</th>
|
||||
<th>Online Since</th>
|
||||
<th>Players</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th>Location</th>
|
||||
<th>Server Name</th>
|
||||
<th>Map</th>
|
||||
<th>Ping</th>
|
||||
<th>Online Since</th>
|
||||
<th>Players</th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
<tbody id="Servers-List">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer class="py-4 bg-light mt-auto">
|
||||
<div class="container-fluid">
|
||||
<div class="d-flex align-items-center justify-content-between small">
|
||||
<div class="text-muted">Copyright © BeamNG-MP Development Team 2020</div>
|
||||
<div>
|
||||
<a href="#">Privacy Policy</a>
|
||||
·
|
||||
<a href="#">Terms & Conditions</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
<script src="https://code.jquery.com/jquery-3.4.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
|
||||
<script src="js/scripts.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.datatables.net/1.10.20/js/dataTables.bootstrap4.min.js" crossorigin="anonymous"></script>
|
||||
<script src="js/datatables-demo.js"></script>
|
||||
</body>
|
||||
</html>
|
144
views/stats.ejs
Normal file
@ -0,0 +1,144 @@
|
||||
<!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, shrink-to-fit=no" />
|
||||
<meta name="description" content="" />
|
||||
<meta name="author" content="" />
|
||||
<title>BeamNG-MP-Statistics</title>
|
||||
<link href="css/servers-styles.css" rel="stylesheet" />
|
||||
<link href="https://cdn.datatables.net/1.10.20/css/dataTables.bootstrap4.min.css" rel="stylesheet" crossorigin="anonymous" />
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/js/all.min.js" crossorigin="anonymous"></script>
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-160071688-1"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js@2.8.0"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'UA-160071688-1');
|
||||
</script>
|
||||
</head>
|
||||
<body class="sb-nav-fixed">
|
||||
<nav class="sb-topnav navbar navbar-expand navbar-dark bg-dark">
|
||||
<%- include('includes/nav.ejs') %>
|
||||
</nav>
|
||||
<div id="layoutSidenav_content">
|
||||
<main>
|
||||
<br>
|
||||
<br>
|
||||
<div class="container-fluid">
|
||||
<h1 class="mt-4"><i class="fas fa-server mr-1"></i>BeamMP Statistics <span id="LivePlayerCount"></span></h1>
|
||||
<div style="height: 800px;">
|
||||
<canvas id="myChart" width="400" height="770"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer class="py-4 bg-light mt-auto">
|
||||
<div class="container-fluid">
|
||||
<div class="d-flex align-items-center justify-content-between small">
|
||||
<div class="text-muted">Copyright © BeamNG-MP Development Team 2020</div>
|
||||
<div>
|
||||
<a href="#">Privacy Policy</a>
|
||||
·
|
||||
<a href="#">Terms & Conditions</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
<script src="https://code.jquery.com/jquery-3.4.1.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.datatables.net/1.10.20/js/dataTables.bootstrap4.min.js" crossorigin="anonymous"></script>
|
||||
<script type="text/javascript">
|
||||
var chartData = {};
|
||||
|
||||
var GetChartData = function () {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/stats',
|
||||
data: {
|
||||
period: 'today',
|
||||
},
|
||||
dataType: 'json',
|
||||
success: function (d) {
|
||||
var Data = {}
|
||||
Data.Players = []
|
||||
Data.Servers = []
|
||||
Data.Labels = []
|
||||
console.log(d.history)
|
||||
d.history.forEach(function(item, index) {
|
||||
Data.Players.push(item.players)
|
||||
Data.Servers.push(item.servers)
|
||||
Data.Labels.push(item.datetime)
|
||||
});
|
||||
console.log(Data)
|
||||
var ctx = document.getElementById('myChart').getContext('2d');
|
||||
ctx.height = 770;
|
||||
var myChart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: Data.Labels,
|
||||
datasets: [{
|
||||
label: 'Servers',
|
||||
backgroundColor: 'rgba(255,0,0,0.1)',
|
||||
borderColor: 'rgba(255,0,0,0.4)',
|
||||
data: Data.Servers,
|
||||
fill: false,
|
||||
}, {
|
||||
label: 'Players',
|
||||
fill: false,
|
||||
backgroundColor: 'rgba(0,0,255,0.1)',
|
||||
borderColor: 'rgba(0,0,255,0.4)',
|
||||
data: Data.Players,
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
title: {
|
||||
display: true,
|
||||
text: 'BeamNG-MP Statistics'
|
||||
},
|
||||
tooltips: {
|
||||
mode: 'index',
|
||||
intersect: false,
|
||||
},
|
||||
hover: {
|
||||
mode: 'nearest',
|
||||
intersect: true
|
||||
},
|
||||
scales: {
|
||||
x: {
|
||||
display: true,
|
||||
scaleLabel: {
|
||||
display: true,
|
||||
labelString: 'Time'
|
||||
}
|
||||
},
|
||||
y: {
|
||||
display: true,
|
||||
scaleLabel: {
|
||||
display: true,
|
||||
labelString: 'Count'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$(document).ready(function() {
|
||||
GetChartData();
|
||||
});
|
||||
|
||||
//const socket = io('./stats');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|