helmet, external_ip, emergency_shutdown added
This commit is contained in:
@@ -9,6 +9,7 @@ const config = require(config_path)
|
|||||||
const express = require('express')
|
const express = require('express')
|
||||||
const logger = require('./lib/logger')
|
const logger = require('./lib/logger')
|
||||||
const routes = require(routes_path)
|
const routes = require(routes_path)
|
||||||
|
const helmet = require('helmet')
|
||||||
|
|
||||||
// loggers
|
// loggers
|
||||||
const logger_init = new logger(init_log_path)
|
const logger_init = new logger(init_log_path)
|
||||||
@@ -16,6 +17,8 @@ const logger_runtime = new logger(runtime_log_path)
|
|||||||
|
|
||||||
const app = express()
|
const app = express()
|
||||||
|
|
||||||
|
app.use(helmet())
|
||||||
|
|
||||||
// logger
|
// logger
|
||||||
app.use(function(req, res, next) {
|
app.use(function(req, res, next) {
|
||||||
var {url} = req
|
var {url} = req
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ module.exports.create_session = async (req, res, next) => {
|
|||||||
throw new Error('session limit reached')
|
throw new Error('session limit reached')
|
||||||
|
|
||||||
var session_id = crypto.randomBytes(16).toString('hex')
|
var session_id = crypto.randomBytes(16).toString('hex')
|
||||||
|
|
||||||
|
|
||||||
// create session on session server
|
// create session on session server
|
||||||
http_client.get({
|
http_client.get({
|
||||||
@@ -59,7 +60,8 @@ module.exports.create_session = async (req, res, next) => {
|
|||||||
connection_link:answer.link,
|
connection_link:answer.link,
|
||||||
connection_code:code
|
connection_code:code
|
||||||
})
|
})
|
||||||
res.json({msg:'SESSION_CREATED', link:answer.link})
|
// SHALL REMOVE CONNECTION CODE BECAUSE IN WEB WE DO NOT NEED IT
|
||||||
|
res.json({msg:'SESSION_CREATED', link:answer.link, connection_code:code})
|
||||||
}, function(err) {
|
}, function(err) {
|
||||||
next(Error('session server not working'))
|
next(Error('session server not working'))
|
||||||
})
|
})
|
||||||
@@ -69,7 +71,15 @@ module.exports.create_session = async (req, res, next) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports.connect_session = async (req, res, next) => {
|
module.exports.connect_session = async (req, res, next) => {
|
||||||
|
try {
|
||||||
|
const db = await db_connection.get_db()
|
||||||
|
var session = await db.collection('session_active').findOne({connection_code:parseInt(req.query.connection_code)})
|
||||||
|
if (!session)
|
||||||
|
throw new Error('sessions not found')
|
||||||
|
res.json({connection_link:session.connection_link})
|
||||||
|
} catch (e) {
|
||||||
|
next (e)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports.close_session = async (req, res, next) => {
|
module.exports.close_session = async (req, res, next) => {
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
const db_connection = require('../database/connection.js')
|
||||||
|
const crypto = require('crypto')
|
||||||
|
|
||||||
|
module.exports.emergency_shutdown = async (req, res, next) => {
|
||||||
|
const db = await db_connection.get_db()
|
||||||
|
var id = crypto.createHash('md5').update(req.query.ip+req.query.port).digest('hex')
|
||||||
|
var query = {server_id:{$in:[id]}}
|
||||||
|
await db.collection('session_active').deleteMany(query)
|
||||||
|
res.json({msg:'SESSIONS_CLOSED'})
|
||||||
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
const router = require('express').Router()
|
const router = require('express').Router()
|
||||||
const router_title = require('./title')
|
const router_title = require('./title')
|
||||||
const router_session = require('./session')
|
const router_session = require('./session')
|
||||||
|
const router_session_server = require('./session_server')
|
||||||
|
|
||||||
router.use('/title', router_title)
|
router.use('/title', router_title)
|
||||||
router.use('/session', router_session)
|
router.use('/session', router_session)
|
||||||
|
router.use('/session_server', router_session_server)
|
||||||
|
|
||||||
module.exports = router
|
module.exports = router
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
const router = require('express').Router()
|
||||||
|
|
||||||
|
const {emergency_shutdown} = require('../controller/session_server')
|
||||||
|
|
||||||
|
router.get('/emergency_shutdown', emergency_shutdown)
|
||||||
|
|
||||||
|
module.exports = router
|
||||||
Generated
+14
@@ -12,6 +12,7 @@
|
|||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"experss": "^0.0.1-security",
|
"experss": "^0.0.1-security",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
|
"helmet": "^6.0.1",
|
||||||
"mongodb": "^4.12.0",
|
"mongodb": "^4.12.0",
|
||||||
"mongoose": "^6.8.0",
|
"mongoose": "^6.8.0",
|
||||||
"node-datetime": "^2.1.2",
|
"node-datetime": "^2.1.2",
|
||||||
@@ -1508,6 +1509,14 @@
|
|||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/helmet": {
|
||||||
|
"version": "6.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/helmet/-/helmet-6.0.1.tgz",
|
||||||
|
"integrity": "sha512-8wo+VdQhTMVBMCITYZaGTbE4lvlthelPYSvoyNvk4RECTmrVjMerp9RfUOQXZWLvCcAn1pKj7ZRxK4lI9Alrcw==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/http-errors": {
|
"node_modules/http-errors": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
|
||||||
@@ -3450,6 +3459,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
|
||||||
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
|
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
|
||||||
},
|
},
|
||||||
|
"helmet": {
|
||||||
|
"version": "6.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/helmet/-/helmet-6.0.1.tgz",
|
||||||
|
"integrity": "sha512-8wo+VdQhTMVBMCITYZaGTbE4lvlthelPYSvoyNvk4RECTmrVjMerp9RfUOQXZWLvCcAn1pKj7ZRxK4lI9Alrcw=="
|
||||||
|
},
|
||||||
"http-errors": {
|
"http-errors": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"experss": "^0.0.1-security",
|
"experss": "^0.0.1-security",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
|
"helmet": "^6.0.1",
|
||||||
"mongodb": "^4.12.0",
|
"mongodb": "^4.12.0",
|
||||||
"mongoose": "^6.8.0",
|
"mongoose": "^6.8.0",
|
||||||
"node-datetime": "^2.1.2",
|
"node-datetime": "^2.1.2",
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
{
|
{
|
||||||
"ip" : "127.0.0.1",
|
"ip" : "192.168.1.115",
|
||||||
"port" : 3002,
|
"port" : 3002,
|
||||||
|
"external_ip" : "192.168.1.115",
|
||||||
|
"external_port" : 3002,
|
||||||
"session_ports":{
|
"session_ports":{
|
||||||
"count": 50,
|
"count": 50,
|
||||||
"app_begin": 47000,
|
"app_begin": 47000,
|
||||||
|
|||||||
@@ -1,36 +1,24 @@
|
|||||||
// two bad headers
|
|
||||||
// const http_client = require('../../lib/http_client.js')
|
|
||||||
// const crypto = require('crypto')
|
|
||||||
|
|
||||||
|
|
||||||
// // filesystem
|
|
||||||
// const fs = require('fs')
|
|
||||||
|
|
||||||
// // node date time
|
|
||||||
// const node_time = require('node-datetime')
|
|
||||||
// // titles for process creation
|
|
||||||
// const titles = require('./titles.json')
|
|
||||||
|
|
||||||
const port_alloc = require('../../lib/port_alloc.js')
|
const port_alloc = require('../../lib/port_alloc.js')
|
||||||
const titles = require('../titles.json')
|
const titles = require('../titles.json')
|
||||||
const configg = require('../config.json')
|
const config = require('../config.json')
|
||||||
const { spawn } = require('node:child_process')
|
const { spawn } = require('node:child_process')
|
||||||
const child_process = require('child_process')
|
const child_process = require('child_process')
|
||||||
const http_client = require('../../lib/http_client.js')
|
const http_client = require('../../lib/http_client.js')
|
||||||
|
|
||||||
const app_port_begin = configg.session_ports.app_begin
|
const app_port_begin = config.session_ports.app_begin
|
||||||
const http_port_begin = configg.session_ports.http_begin
|
const http_port_begin = config.session_ports.http_begin
|
||||||
const ports_count = configg.session_ports.count
|
const ports_count = config.session_ports.count
|
||||||
|
|
||||||
const app_args_static = configg.app_args_static
|
const app_args_static = config.app_args_static
|
||||||
const app_args_ip = configg.app_args_runtime.ip
|
const app_args_ip = config.app_args_runtime.ip
|
||||||
const server_ip = configg.ip
|
const server_ip = config.external_ip
|
||||||
const app_args_port = configg.app_args_runtime.port
|
const server_port = config.external_port
|
||||||
|
const app_args_port = config.app_args_runtime.port
|
||||||
|
|
||||||
const webrtc_cirrus_path = configg.webrtc_args_static.cirrus_path
|
const webrtc_cirrus_path = config.webrtc_args_static.cirrus_path
|
||||||
|
|
||||||
const coordinator_port = configg.coordinator.port
|
const coordinator_port = config.coordinator.port
|
||||||
const coordinator_ip = configg.coordinator.ip
|
const coordinator_ip = config.coordinator.ip
|
||||||
|
|
||||||
// const http_client = require('../lib/http_client.js')
|
// const http_client = require('../lib/http_client.js')
|
||||||
|
|
||||||
@@ -38,6 +26,16 @@ const coordinator_ip = configg.coordinator.ip
|
|||||||
var app_port_alloc = new port_alloc(app_port_begin, ports_count)
|
var app_port_alloc = new port_alloc(app_port_begin, ports_count)
|
||||||
var http_port_alloc = new port_alloc(http_port_begin, ports_count)
|
var http_port_alloc = new port_alloc(http_port_begin, ports_count)
|
||||||
|
|
||||||
|
// close all own sessions on session server if emergency shutdown
|
||||||
|
http_client.get({
|
||||||
|
host: coordinator_ip,
|
||||||
|
port: coordinator_port,
|
||||||
|
path: `/session_server/emergency_shutdown?ip=${server_ip}&port=${server_port}`
|
||||||
|
}, async function(answer) {
|
||||||
|
}, function(err) {
|
||||||
|
//next(Error('session server not working'))
|
||||||
|
})
|
||||||
|
|
||||||
module.exports.create_session = async (req, res, next) => {
|
module.exports.create_session = async (req, res, next) => {
|
||||||
//create?title=name&next_var=0
|
//create?title=name&next_var=0
|
||||||
try {
|
try {
|
||||||
@@ -95,37 +93,15 @@ module.exports.create_session = async (req, res, next) => {
|
|||||||
}, function(err) {
|
}, function(err) {
|
||||||
next(Error('session server not working'))
|
next(Error('session server not working'))
|
||||||
})
|
})
|
||||||
// new http_client(coordinator_ip, coordinator_port).post(
|
|
||||||
// JSON.stringify({verb:'CLOSE_SESSION', session_id:req.query.session_id}), function(answer) {
|
|
||||||
|
|
||||||
// },
|
|
||||||
// function(error) {
|
|
||||||
|
|
||||||
// })
|
|
||||||
|
|
||||||
})
|
})
|
||||||
res.json({msg:'SESSION_CREATED', link:`http://${server_ip+':'+http_port}`})
|
res.json({msg:'SESSION_CREATED', link:`http://${server_ip+':'+http_port}`})
|
||||||
// callback(response)
|
|
||||||
// return
|
|
||||||
|
|
||||||
// get request
|
|
||||||
// http_client.get({
|
|
||||||
// host: free_server.ip,
|
|
||||||
// port: free_server.port,
|
|
||||||
// path: `/session/create?title=${req.query.title}&session_id=${session_id}`
|
|
||||||
// }, async function(answer) {
|
|
||||||
|
|
||||||
// res.json({msg:'SESSION_CREATED', link:answer.link})
|
|
||||||
// }, function(err) {
|
|
||||||
// next(Error('session server not working'))
|
|
||||||
// })
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
next(e)
|
next(e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports.connect_session = async (req, res, next) => {
|
module.exports.connect_session = async (req, res, next) => {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports.close_session = async (req, res, next) => {
|
module.exports.close_session = async (req, res, next) => {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"title":"Fortis",
|
"title":"mosharov",
|
||||||
"path":"D:/shared/Builds/Fortis_UnStable_64/WindowsNoEditor/FORTIS_Taktika.exe"
|
"path":"D:/shared/Builds/Fortis_UnStable_64/WindowsNoEditor/FORTIS_Taktika.exe"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title":"Ivazowsky",
|
"title":"ivazowsky",
|
||||||
"path":"D:/shared/Builds/Ivaz_Optimized_2/Ivazowsky.exe"
|
"path":"D:/shared/Builds/Ivaz_Optimized_2/Ivazowsky.exe"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
Reference in New Issue
Block a user