Update App Server
- Use App server port for Websocket Server. - pause/resume serving and market when node acts as slave/master respectively.
This commit is contained in:
parent
c4732f5831
commit
0b70f099b0
71
src/app.js
71
src/app.js
@ -3,11 +3,17 @@ const express = require('express');
|
|||||||
const cookieParser = require("cookie-parser");
|
const cookieParser = require("cookie-parser");
|
||||||
const sessions = require('express-session');
|
const sessions = require('express-session');
|
||||||
const Request = require('./request');
|
const Request = require('./request');
|
||||||
|
const WebSocket = require('ws');
|
||||||
|
|
||||||
const REFRESH_INTERVAL = 5 * 1000; //10 * 60 * 1000;
|
const REFRESH_INTERVAL = 5 * 1000; //10 * 60 * 1000;
|
||||||
|
|
||||||
module.exports = function App(secret, trustedIDs, DB) {
|
module.exports = function App(secret, DB) {
|
||||||
|
|
||||||
|
if (!(this instanceof App))
|
||||||
|
return new App(secret, DB);
|
||||||
|
|
||||||
|
var server = null,
|
||||||
|
wss = null;
|
||||||
const app = express();
|
const app = express();
|
||||||
//session middleware
|
//session middleware
|
||||||
app.use(sessions({
|
app.use(sessions({
|
||||||
@ -65,12 +71,67 @@ module.exports = function App(secret, trustedIDs, DB) {
|
|||||||
app.post('/withdraw-rupee', Request.WithdrawRupee);
|
app.post('/withdraw-rupee', Request.WithdrawRupee);
|
||||||
|
|
||||||
//Manage user tags (Access to trusted IDs only)
|
//Manage user tags (Access to trusted IDs only)
|
||||||
Request.trustedIDs = trustedIDs;
|
|
||||||
app.post('/add-tag', Request.addUserTag);
|
app.post('/add-tag', Request.addUserTag);
|
||||||
app.post('/remove-tag', Request.removeUserTag);
|
app.post('/remove-tag', Request.removeUserTag);
|
||||||
|
|
||||||
Request.DB = DB;
|
Request.DB = DB;
|
||||||
Request.periodicProcess();
|
|
||||||
let refresher = setInterval(Request.periodicProcess, REFRESH_INTERVAL);
|
//Properties
|
||||||
return app;
|
var periodInstance = null;
|
||||||
|
let self = this;
|
||||||
|
|
||||||
|
//return server, express-app, wss
|
||||||
|
Object.defineProperty(self, "server", {
|
||||||
|
get: () => server
|
||||||
|
});
|
||||||
|
Object.defineProperty(self, "express", {
|
||||||
|
get: () => app
|
||||||
|
});
|
||||||
|
Object.defineProperty(self, "wss", {
|
||||||
|
get: () => wss
|
||||||
|
});
|
||||||
|
|
||||||
|
//set trustedID for subAdmin requests
|
||||||
|
Object.defineProperty(self, "trustedIDs", {
|
||||||
|
set: (ids) => Request.trustedIDs = ids
|
||||||
|
});
|
||||||
|
|
||||||
|
//Start (or) Stop servers
|
||||||
|
self.start = (port) => new Promise(resolve => {
|
||||||
|
server = app.listen(port, () => {
|
||||||
|
wss = new WebSocket.Server({
|
||||||
|
server
|
||||||
|
});
|
||||||
|
resolve(`Server Running at port ${port}`);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
self.stop = () => new Promise(resolve => {
|
||||||
|
server.close(() => {
|
||||||
|
server = null;
|
||||||
|
wss = null;
|
||||||
|
resolve('Server stopped')
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
//(Node is not master) Pause serving the clients
|
||||||
|
self.pause = () => {
|
||||||
|
Request.pause();
|
||||||
|
if (periodInstance !== null) {
|
||||||
|
clearInterval(periodInstance);
|
||||||
|
periodInstance = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//(Node is master) Resume serving the clients
|
||||||
|
self.resume = () => {
|
||||||
|
Request.resume();
|
||||||
|
Request.periodicProcess();
|
||||||
|
if (periodInstance === null)
|
||||||
|
periodInstance = setInterval(Request.periodicProcess, REFRESH_INTERVAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(self, "periodInstance", {
|
||||||
|
get: () => periodInstance
|
||||||
|
});
|
||||||
}
|
}
|
||||||
@ -54,10 +54,6 @@ const tokenAPI = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function returnRates() {
|
|
||||||
return coupling.price.currentRate;
|
|
||||||
}
|
|
||||||
|
|
||||||
function addSellOrder(floID, quantity, min_price) {
|
function addSellOrder(floID, quantity, min_price) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if (!floID || !floCrypto.validateAddr(floID))
|
if (!floID || !floCrypto.validateAddr(floID))
|
||||||
@ -505,7 +501,9 @@ function blockchainReCheck() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
returnRates,
|
get rate() {
|
||||||
|
return coupling.price.currentRate;
|
||||||
|
},
|
||||||
addBuyOrder,
|
addBuyOrder,
|
||||||
addSellOrder,
|
addSellOrder,
|
||||||
cancelOrder,
|
cancelOrder,
|
||||||
|
|||||||
@ -21,8 +21,13 @@ INTERNAL.e_code = 500;
|
|||||||
const oneDay = 1000 * 60 * 60 * 24;
|
const oneDay = 1000 * 60 * 60 * 24;
|
||||||
const maxSessionTimeout = 60 * oneDay;
|
const maxSessionTimeout = 60 * oneDay;
|
||||||
|
|
||||||
|
var serving;
|
||||||
|
const INVALID_SERVER_MSG = "Incorrect Server. Please connect to main server.";
|
||||||
|
|
||||||
function validateRequestFromFloID(request, sign, floID, proxy = true) {
|
function validateRequestFromFloID(request, sign, floID, proxy = true) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
if (!serving)
|
||||||
|
return reject(INVALID(INVALID_SERVER_MSG));
|
||||||
DB.query("SELECT " + (proxy ? "proxyKey AS pubKey FROM Sessions" : "pubKey FROM Users") + " WHERE floID=?", [floID]).then(result => {
|
DB.query("SELECT " + (proxy ? "proxyKey AS pubKey FROM Sessions" : "pubKey FROM Users") + " WHERE floID=?", [floID]).then(result => {
|
||||||
if (result.length < 1)
|
if (result.length < 1)
|
||||||
return reject(INVALID(proxy ? "Session not active" : "User not registered"));
|
return reject(INVALID(proxy ? "Session not active" : "User not registered"));
|
||||||
@ -53,6 +58,8 @@ function storeRequest(floID, req_str, sign) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function SignUp(req, res) {
|
function SignUp(req, res) {
|
||||||
|
if (!serving)
|
||||||
|
return res.status(INVALID.e_code).send(INVALID_SERVER_MSG);
|
||||||
let data = req.body,
|
let data = req.body,
|
||||||
session = req.session;
|
session = req.session;
|
||||||
if (floCrypto.getFloID(data.pubKey) !== data.floID)
|
if (floCrypto.getFloID(data.pubKey) !== data.floID)
|
||||||
@ -249,11 +256,15 @@ function ListTransactions(req, res) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getRate(req, res) {
|
function getRate(req, res) {
|
||||||
let rate = market.returnRates();
|
if (!serving)
|
||||||
res.send(`${rate}`);
|
res.status(INVALID.e_code).send(INVALID_SERVER_MSG);
|
||||||
|
else
|
||||||
|
res.send(`${market.rate}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
function Account(req, res) {
|
function Account(req, res) {
|
||||||
|
if (!serving)
|
||||||
|
return res.status(INVALID.e_code).send(INVALID_SERVER_MSG);
|
||||||
const setLogin = function(message) {
|
const setLogin = function(message) {
|
||||||
let randID = floCrypto.randString(16, true);
|
let randID = floCrypto.randString(16, true);
|
||||||
req.session.random = randID;
|
req.session.random = randID;
|
||||||
@ -506,5 +517,11 @@ module.exports = {
|
|||||||
set DB(db) {
|
set DB(db) {
|
||||||
DB = db;
|
DB = db;
|
||||||
market.DB = db;
|
market.DB = db;
|
||||||
|
},
|
||||||
|
pause() {
|
||||||
|
serving = false;
|
||||||
|
},
|
||||||
|
resume() {
|
||||||
|
serving = true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Loading…
Reference in New Issue
Block a user