updated private cloud server and console

This commit is contained in:
strawmanbobi
2025-10-20 19:24:01 +08:00
parent f00d088078
commit a5ef6ac6ed
35 changed files with 236 additions and 231 deletions

View File

@@ -12,10 +12,10 @@ let enums = new Enums();
//noinspection JSUnresolvedVariable
exports.setupEnvironment = function () {
MYSQL_DB_SERVER_ADDRESS = "localhost";
MYSQL_DB_SERVER_ADDRESS = "127.0.0.1";
MYSQL_DB_NAME = "irext";
MYSQL_DB_USER = "root";
MYSQL_DB_PASSWORD = "root";
MYSQL_DB_PASSWORD = "421aWill.";
REDIS_HOST = "localhost";
REDIS_PORT = "6379";
REDIS_PASSWORD = null;
@@ -23,6 +23,6 @@ exports.setupEnvironment = function () {
PYTHON_PATH = "/usr/bin/python";
LISTEN_PORT = "8301";
SERVER_ADDRESS = "localhost";
EXTERNAL_SERVER_ADDRESS = "irext.net";
EXTERNAL_SERVER_ADDRESS = "srv.irext.net";
EXTERNAL_SERVER_PORT = "80";
};

View File

@@ -4,23 +4,23 @@
*/
// system inclusion
var express= require('express');
var app = module.exports = express();
var http = require('http').Server(app);
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
let express= require('express');
let app = module.exports = express();
let http = require('http').Server(app);
let bodyParser = require('body-parser');
let methodOverride = require('method-override');
// global inclusion
require('./mini_poem/configuration/constants');
var System = require('./mini_poem/utils/system_utils');
var dbConn = require('./mini_poem/db/mysql/mysql_connection');
let System = require('./mini_poem/utils/system_utils');
let dbConn = require('./mini_poem/db/mysql/mysql_connection');
// local inclusion
var systemConfig = require('./configuration/system_configs');
var Enums = require('./constants/enums');
var ErrorCode = require('./constants/error_code');
var enums = new Enums();
var errorCode = new ErrorCode();
let systemConfig = require('./configuration/system_configs');
let Enums = require('./constants/enums');
let ErrorCode = require('./constants/error_code');
let enums = new Enums();
let errorCode = new ErrorCode();
SERVER = enums.SERVER_MAIN;
@@ -33,23 +33,23 @@ app.use(methodOverride());
app.use(tokenValidation);
app.use("/", express.static(__dirname + '/web/'));
systemConfig.setupEnvironment();
var serverListenPort = LISTEN_PORT;
let serverListenPort = LISTEN_PORT;
console.log("initializing MySQL connection to : " + MYSQL_DB_SERVER_ADDRESS + ":" + MYSQL_DB_NAME);
dbConn.setMySQLParameter(MYSQL_DB_SERVER_ADDRESS, MYSQL_DB_NAME, MYSQL_DB_USER, MYSQL_DB_PASSWORD);
require('./routes');
var certificateLogic = require('./work_unit/authentication_logic.js');
let certificateLogic = require('./work_unit/authentication_logic.js');
// kick start the engine
System.startupHttp(http, serverListenPort, "irext Console V1.2.7");
// kickstart the engine
System.startupHttp(http, serverListenPort, "irext Console V1.5.0");
////////////////// authentication middleware //////////////////
function tokenValidation (req, res, next) {
var bodyParam;
var adminID = null;
var token = null;
let bodyParam;
let adminID = null;
let token = null;
bodyParam = req.body;
if (null != bodyParam) {
@@ -73,14 +73,14 @@ function tokenValidation (req, res, next) {
token = req.query.token;
}
if (req.url.indexOf("/irext/int") !== -1) {
var contentType = req.get("content-type");
let contentType = req.get("content-type");
if (null != contentType && contentType.indexOf("multipart/form-data") != -1) {
// request of content type of multipart/form-data would be validated inside each service
next();
} else {
certificateLogic.verifyTokenWorkUnit(adminID, token, function(validateTokenErr) {
if(errorCode.SUCCESS.code !== validateTokenErr.code) {
var fakeResponse = {
let fakeResponse = {
status: validateTokenErr,
entity: null
};
@@ -92,12 +92,12 @@ function tokenValidation (req, res, next) {
});
}
} else if (req.url.indexOf("/irext/nav/nav_to_url") !== -1) {
var page = bodyParam.page;
var pageCode = page.indexOf("code");
var pageDoc = page.indexOf("doc");
var pageStat = page.indexOf("stat");
let page = bodyParam.page;
let pageCode = page.indexOf("code");
let pageDoc = page.indexOf("doc");
let pageStat = page.indexOf("stat");
var permissions = "";
let permissions = "";
if (-1 !== pageCode) {
permissions = ",0";

View File

@@ -3,7 +3,7 @@
* 2014-12-01.
*/
var BaseCache = function(_cacheType, _host, _port, _user, _password) {
let BaseCache = function(_cacheType, _host, _port, _user, _password) {
throw new Error("Abstract class");
};

View File

@@ -4,18 +4,18 @@
*/
require('../configuration/constants');
var ErrorCode = require('../configuration/error_code');
var Enums = require('../configuration/enums');
var BaseCache = require('./base_cache.js');
let ErrorCode = require('../configuration/error_code');
let Enums = require('../configuration/enums');
let BaseCache = require('./base_cache.js');
var redis = require("redis");
let redis = require("redis");
var logger = require('../logging/logger4js').helper;
let logger = require('../logging/logger4js').helper;
var errorCode = new ErrorCode();
var enums = new Enums();
let errorCode = new ErrorCode();
let enums = new Enums();
var Cache = function(_host, _port, _user, _password) {
let Cache = function(_host, _port, _user, _password) {
this.redisClient = redis.createClient(_port, _host, {detect_buffers: true});
// initialize client according to run-time ENV
// in _user indicates the redis instance:token pair value

View File

@@ -20,7 +20,7 @@ global.FILE_TEMP_PATH = "";
// db : MySQL
global.MYSQL_DB_SERVER_ADDRESS = "127.0.0.1";
global.MYSQL_DB_NAME = "default_db";
global.MYSQL_DB_NAME = "db_default";
global.MYSQL_DB_USER = "root";
global.MYSQL_DB_PASSWORD = "root";

View File

@@ -9,7 +9,7 @@ function MD5(sMessage, fullSize) {
}
function AddUnsigned(lX, lY) {
var lX4, lY4, lX8, lY8, lResult;
let lX4, lY4, lX8, lY8, lResult;
lX8 = (lX & 0x80000000);
lY8 = (lY & 0x80000000);
lX4 = (lX & 0x40000000);
@@ -59,14 +59,14 @@ function MD5(sMessage, fullSize) {
}
function ConvertToWordArray(sMessage) {
var lWordCount;
var lMessageLength = sMessage.length;
var lNumberOfWords_temp1 = lMessageLength + 8;
var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
var lWordArray = Array(lNumberOfWords - 1);
var lBytePosition = 0;
var lByteCount = 0;
let lWordCount;
let lMessageLength = sMessage.length;
let lNumberOfWords_temp1 = lMessageLength + 8;
let lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
let lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
let lWordArray = Array(lNumberOfWords - 1);
let lBytePosition = 0;
let lByteCount = 0;
while (lByteCount < lMessageLength) {
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
@@ -82,7 +82,7 @@ function MD5(sMessage, fullSize) {
}
function WordToHex(lValue) {
var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount;
let WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount;
for (lCount = 0; lCount <= 3; lCount++) {
lByte = (lValue >>> (lCount * 8)) & 255;
WordToHexValue_temp = "0" + lByte.toString(16);
@@ -91,12 +91,12 @@ function MD5(sMessage, fullSize) {
return WordToHexValue;
}
var x = Array();
var k, AA, BB, CC, DD, a, b, c, d
var S11 = 7, S12 = 12, S13 = 17, S14 = 22;
var S21 = 5, S22 = 9 , S23 = 14, S24 = 20;
var S31 = 4, S32 = 11, S33 = 16, S34 = 23;
var S41 = 6, S42 = 10, S43 = 15, S44 = 21;
let x = Array();
let k, AA, BB, CC, DD, a, b, c, d
let S11 = 7, S12 = 12, S13 = 17, S14 = 22;
let S21 = 5, S22 = 9 , S23 = 14, S24 = 20;
let S31 = 4, S32 = 11, S33 = 16, S34 = 23;
let S41 = 6, S42 = 10, S43 = 15, S44 = 21;
// Steps 1 and 2. Append padding bits and length and convert to words
x = ConvertToWordArray(sMessage);
// Step 3. Initialise
@@ -180,7 +180,7 @@ function MD5(sMessage, fullSize) {
d = AddUnsigned(d, DD);
}
// Step 5. Output the 128 bit digest
var temp;
let temp;
if (undefined != fullSize && null != fullSize) {
temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);
} else {

View File

@@ -3,13 +3,13 @@
* 2014-09-22
*/
var orm = require('orm');
var logger = require('../../logging/logger4js').helper;
require('../../configuration/constants');
let orm = require('orm');
let logger = require('../../logging/logger4js').helper;
var ormOpt;
let ormOpt;
exports.setMySQLParameter = function(dbHost, dbName, dbUser, dbPassword) {
exports.setMySQLParameter = function (dbHost, dbName, dbUser, dbPassword) {
logger.info("initialize mysql connection, user = " + dbUser);
ormOpt = {
protocol: "mysql",
@@ -18,7 +18,7 @@ exports.setMySQLParameter = function(dbHost, dbName, dbUser, dbPassword) {
user: dbUser,
password: dbPassword,
charset: 'utf8',
query: { pool: false }
query: {pool: false}
};
exports.mysqlDB = orm.connect(ormOpt);
};

View File

@@ -3,16 +3,16 @@
* 2016-12-03
*/
var pythonShell = require('python-shell');
let pythonShell = require('python-shell');
var constants = require('../configuration/constants.js');
var logger = require('../logging/logger4js').helper;
let constants = require('../configuration/constants.js');
let logger = require('../logging/logger4js').helper;
var ErrorCode = require('../configuration/error_code.js');
let ErrorCode = require('../configuration/error_code.js');
var errorCode = new ErrorCode();
let errorCode = new ErrorCode();
var PythonCaller = function() {
let PythonCaller = function() {
};
@@ -27,12 +27,12 @@ var PythonCaller = function() {
* return : Error code of python caller
*/
PythonCaller.prototype.call = function() {
var userArgIndex = 0;
var numArgs = arguments.length;
var callback = null;
var scriptPath = null;
var scriptName = null;
var userArguments = [];
let userArgIndex = 0;
let numArgs = arguments.length;
let callback = null;
let scriptPath = null;
let scriptName = null;
let userArguments = [];
if(numArgs < 3) {
logger.error("internal error while calling python script from application : no script specified");
// TODO: specify the error code for this type of error
@@ -51,12 +51,12 @@ PythonCaller.prototype.call = function() {
throw errorCode.PYTHON_SCRIPT_PATH_NOT_SPECIFIED;
} else {
// parse user arguments from python caller
var args = arguments[2];
let args = arguments[2];
for(userArgIndex = 0; userArgIndex < args.length; userArgIndex++) {
userArguments.push(args[userArgIndex]);
}
// logger.info("user arguments = " + userArguments);
var options = {
let options = {
mode: 'text',
pythonPath: PYTHON_PATH,
pythonOptions: ['-u'],

View File

@@ -4,17 +4,17 @@
*/
// system inclusion
var queryString = require('querystring');
var http = require('http');
var request = require('request');
let queryString = require('querystring');
let http = require('http');
let request = require('axios');
// local inclusion
var Map = require('../mem/map.js');
var ErrorCode = require('../configuration/error_code.js');
let Map = require('../mem/map.js');
let ErrorCode = require('../configuration/error_code.js');
var errorCode = new ErrorCode();
let errorCode = new ErrorCode();
var logger = require('../logging/logger4js').helper;
let logger = require('../logging/logger4js').helper;
/**
*
@@ -24,7 +24,7 @@ var logger = require('../logging/logger4js').helper;
* @param _queryParams : map of query parameters
* @constructor
*/
var Request = function(_host, _port, _service, _queryParams) {
let Request = function(_host, _port, _service, _queryParams) {
this.host = _host;
this.port = _port;
this.service = _service;
@@ -32,9 +32,9 @@ var Request = function(_host, _port, _service, _queryParams) {
};
Request.prototype.urlizeQueryParams = function() {
var i = 0;
var urlParams = '';
var paramElement = null;
let i = 0;
let urlParams = '';
let paramElement = null;
if(undefined == this.queryParams || null == this.queryParams) {
return '';
}
@@ -54,9 +54,9 @@ Request.prototype.urlizeQueryParams = function() {
};
Request.prototype.sendGetRequest = function(options, callback) {
var data = '';
var httpTag = options.https ? 'https://' : 'http://';
var url = httpTag + this.host + ':' + this.port + this.service +
let data = '';
let httpTag = options.https ? 'https://' : 'http://';
let url = httpTag + this.host + ':' + this.port + this.service +
this.urlizeQueryParams();
if(options.https) {
@@ -94,10 +94,10 @@ Request.prototype.sendGetRequest = function(options, callback) {
};
Request.prototype.sendPostRequest = function(bodyData, callback) {
var requestData = JSON.stringify(bodyData);
var url = this.service +
let requestData = JSON.stringify(bodyData);
let url = this.service +
this.urlizeQueryParams();
var options = {
let options = {
host: this.host,
port: this.port,
path: url,
@@ -107,8 +107,8 @@ Request.prototype.sendPostRequest = function(bodyData, callback) {
}
};
var req = http.request(options, function(res) {
var data = '';
let req = http.request(options, function(res) {
let data = '';
res.setEncoding('utf8');
res.on('data', function (chunk) {
data += chunk;
@@ -130,9 +130,9 @@ Request.prototype.sendPostRequest = function(bodyData, callback) {
};
Request.prototype.postMultipartForm = function(formData, callback) {
var url = this.service +
let url = this.service +
this.urlizeQueryParams();
var req = request.post({url: url, formData: formData}, function optionalCallback(err, res, body) {
let req = request.post({url: url, formData: formData}, function optionalCallback(err, res, body) {
if (err) {
console.error('exception occured in http request : ' + e);
callback(errorCode.FAILED, null);
@@ -148,18 +148,18 @@ Request.prototype.postMultipartForm = function(formData, callback) {
// post simple file to HTTP server
Request.prototype.postSimpleFile = function(fileName, fileContent, contentType, options, callback) {
var httpTag = options.https ? 'https://' : 'http://';
var url = httpTag + this.host + ':' + this.port + this.service +
let httpTag = options.https ? 'https://' : 'http://';
let url = httpTag + this.host + ':' + this.port + this.service +
this.urlizeQueryParams();
var req = request.post(url, function (err, resp, body) {
let req = request.post(url, function (err, resp, body) {
if (err) {
callback(errorCode.FAILED, resp);
} else {
callback(errorCode.SUCCESS, resp);
}
});
var form = req.form();
let form = req.form();
form.append('file', fileContent, {
filename: fileName,
contentType: contentType

View File

@@ -3,21 +3,21 @@
* 2014-08-30
*/
var constants = require('../configuration/constants');
var Enums = require('../configuration/enums');
var log4js = require('log4js');
var enums = new Enums();
var dateUtils = require('../utils/date_utils');
let constants = require('../configuration/constants');
let Enums = require('../configuration/enums');
let log4js = require('log4js');
let enums = new Enums();
let dateUtils = require('../utils/date_utils');
var helper = helper || {};
exports.helper = helper;
var logRoot = "./logs/";
var userDebugLogFolder = "user_debug/";
var devLogFolder = "dev/";
var productionLogFolder = "production/";
let logRoot = "./logs/";
let userDebugLogFolder = "user_debug/";
let devLogFolder = "dev/";
let productionLogFolder = "production/";
var logFile = "common.log";
let logFile = "common.log";
log4js.configure({
appenders: {
@@ -57,12 +57,12 @@ log4js.configure({
replaceConsole: true
});
var userProductionLog = log4js.getLogger('userProductionLog');
var userDebugLog = log4js.getLogger('userDebugLog');
var userDevelopmentLog = log4js.getLogger('userDevelopmentLog');
let userProductionLog = log4js.getLogger('userProductionLog');
let userDebugLog = log4js.getLogger('userDebugLog');
let userDevelopmentLog = log4js.getLogger('userDevelopmentLog');
helper.info = function (msg) {
var date = dateUtils.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss S");
let date = dateUtils.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss S");
if (enums.APP_DEVELOPMENT_MODE === ENV) {
console.log(date + ": " + msg);
} else if (enums.APP_PRODUCTION_MODE === ENV) {
@@ -74,7 +74,7 @@ helper.info = function (msg) {
};
helper.error = function (msg) {
var date = dateUtils.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss S");
let date = dateUtils.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss S");
if (enums.APP_DEVELOPMENT_MODE === ENV) {
console.log(date + ": " + msg);
} else if (enums.APP_PRODUCTION_MODE === ENV) {
@@ -85,7 +85,7 @@ helper.error = function (msg) {
};
helper.warn = function (msg) {
var date = dateUtils.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss S");
let date = dateUtils.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss S");
if (enums.APP_DEVELOPMENT_MODE === ENV) {
console.log(date + ": " + msg);
} else if (enums.APP_PRODUCTION_MODE === ENV) {
@@ -96,7 +96,7 @@ helper.warn = function (msg) {
};
helper.debug = function (msg) {
var date = dateUtils.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss S");
let date = dateUtils.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss S");
if (enums.APP_DEVELOPMENT_MODE === ENV) {
console.log(date + ": " + msg);
} else if (enums.APP_PRODUCTION_MODE === ENV) {
@@ -107,7 +107,7 @@ helper.debug = function (msg) {
};
helper.trace = function (msg) {
var date = dateUtils.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss S");
let date = dateUtils.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss S");
if (enums.APP_DEVELOPMENT_MODE === ENV) {
console.log(date + ": " + msg);
} else if (enums.APP_PRODUCTION_MODE === ENV) {
@@ -118,7 +118,7 @@ helper.trace = function (msg) {
};
helper.fatal = function (msg) {
var date = dateUtils.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss S");
let date = dateUtils.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss S");
if (enums.APP_DEVELOPMENT_MODE === ENV) {
console.log(date + ": " + msg);
} else if (enums.APP_PRODUCTION_MODE === ENV) {

View File

@@ -26,7 +26,7 @@ function Map() {
};
this.remove = function(_key) {
var bln = false;
let bln = false;
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].key == _key) {
@@ -73,7 +73,7 @@ function Map() {
};
this.containsKey = function(_key) {
var bln = false;
let bln = false;
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].key == _key) {
@@ -87,7 +87,7 @@ function Map() {
};
this.containsValue = function(_value) {
var bln = false;
let bln = false;
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].value == _value) {
@@ -101,7 +101,7 @@ function Map() {
};
this.values = function() {
var arr = [];
let arr = [];
for (i = 0; i < this.elements.length; i++) {
arr.push(this.elements[i].value);
}
@@ -109,7 +109,7 @@ function Map() {
};
this.keys = function() {
var arr = [];
let arr = [];
for (i = 0; i < this.elements.length; i++) {
arr.push(this.elements[i].key);
}

View File

@@ -4,7 +4,7 @@
*/
function formatDate(date, fmt) {
var o = {
let o = {
"M+" : date.getMonth() + 1,
"d+" : date.getDate(),
"h+" : date.getHours(),
@@ -15,25 +15,25 @@ function formatDate(date, fmt) {
};
if(/(y+)/.test(fmt))
fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)
for(let k in o)
if(new RegExp("("+ k +")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
return fmt;
}
function getNextDay(dateString) {
var nextDayStr;
var nextMonthStr;
var nextYearStr;
var currentDate = new Date(dateString);
var nextDate = new Date(currentDate.getTime() + 24 * 60 * 60 * 1000);
var nextDay = nextDate.getDate();
let nextDayStr;
let nextMonthStr;
let nextYearStr;
let currentDate = new Date(dateString);
let nextDate = new Date(currentDate.getTime() + 24 * 60 * 60 * 1000);
let nextDay = nextDate.getDate();
if(nextDay < 10) {
nextDayStr = "0" + nextDay;
} else {
nextDayStr = nextDay;
}
var nextMonth = nextDate.getMonth() + 1;
let nextMonth = nextDate.getMonth() + 1;
if(nextMonth < 10) {
nextMonthStr = "0" + nextMonth;
} else {
@@ -44,18 +44,18 @@ function getNextDay(dateString) {
}
function getPreviousDay(dateString) {
var lastDayStr;
var lastMonthStr;
var lastYearStr;
var currentDate = new Date(dateString);
var lastDate = new Date(currentDate.getTime() - 24 * 60 * 60 * 1000);
var lastDay = lastDate.getDate();
let lastDayStr;
let lastMonthStr;
let lastYearStr;
let currentDate = new Date(dateString);
let lastDate = new Date(currentDate.getTime() - 24 * 60 * 60 * 1000);
let lastDay = lastDate.getDate();
if(lastDay < 10) {
lastDayStr = "0" + lastDay;
} else {
lastDayStr = lastDay;
}
var lastMonth = lastDate.getMonth() + 1;
let lastMonth = lastDate.getMonth() + 1;
if(lastMonth < 10) {
lastMonthStr = "0" + lastMonth;
} else {
@@ -70,9 +70,9 @@ function getDateDiffer(startTime, endTime, diffType) {
endTime = endTime.replace(/\-/g, "/");
diffType = diffType.toLowerCase();
var sTime = new Date(startTime);
var eTime = new Date(endTime);
var divNum = 1;
let sTime = new Date(startTime);
let eTime = new Date(endTime);
let divNum = 1;
switch (diffType) {
case "second":
divNum = 1000;
@@ -94,7 +94,7 @@ function getDateDiffer(startTime, endTime, diffType) {
function dateDiff(sDate1, sDate2) {
var aDate, oDate1, oDate2, iDays;
let aDate, oDate1, oDate2, iDays;
aDate = sDate1.split("-");
oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]); //转换为yyyy-MM-dd格式
aDate = sDate2.split("-");

View File

@@ -3,7 +3,7 @@
* 2014-03-14
*/
var Map = function() {
let Map = function() {
this.elements = [];
};
@@ -27,7 +27,7 @@ Map.prototype.put = function(_key, _value) {
};
Map.prototype.remove = function(_key) {
var bln = false;
let bln = false;
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].key == _key) {
@@ -74,7 +74,7 @@ Map.prototype.element = function(_index) {
};
Map.prototype.containsKey = function(_key) {
var bln = false;
let bln = false;
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].key == _key) {
@@ -88,7 +88,7 @@ Map.prototype.containsKey = function(_key) {
};
Map.prototype.containsValue = function(_value) {
var bln = false;
let bln = false;
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].value == _value) {
@@ -102,7 +102,7 @@ Map.prototype.containsValue = function(_value) {
};
Map.prototype.values = function() {
var arr = [];
let arr = [];
for (i = 0; i < this.elements.length; i++) {
arr.push(this.elements[i].value);
}
@@ -110,7 +110,7 @@ Map.prototype.values = function() {
};
Map.prototype.keys = function() {
var arr = [];
let arr = [];
for (i = 0; i < this.elements.length; i++) {
arr.push(this.elements[i].key);
}

View File

@@ -4,13 +4,13 @@
*/
function objectMemberCount(conditions) {
var memberCount = 0;
for(var f in conditions) {
let memberCount = 0;
for(let f in conditions) {
memberCount++;
}
var whereClause = "";
var index = 0;
for(var field in conditions) {
let whereClause = "";
let index = 0;
for(let field in conditions) {
whereClause += field + " = '" + conditions[field] + "'";
if(index < memberCount - 1) {
whereClause += " AND ";

View File

@@ -1,29 +1,29 @@
exports.randomChar = function(l) {
var x = "0123456789qwertyuioplkjhgfdsazxcvbnm";
var tmp = "";
for(var i = 0;i < l; i++) {
let x = "0123456789qwertyuioplkjhgfdsazxcvbnm";
let tmp = "";
for(let i = 0;i < l; i++) {
tmp += x.charAt(Math.ceil(Math.random()*100000000)%x.length);
}
return tmp;
};
exports.randomNumber = function(l) {
var x = "0123456789";
var tmp = "";
for(var i = 0;i < l; i++) {
let x = "0123456789";
let tmp = "";
for(let i = 0;i < l; i++) {
tmp += x.charAt(Math.ceil(Math.random()*100000000)%x.length);
}
return tmp;
};
exports.validateEmail = function (email) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
let re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
};
function rnd() {
var today = new Date();
var seed = today.getTime();
let today = new Date();
let seed = today.getTime();
seed = (seed * 9301 + 49297) % 233280;
return seed / (233280.0);
}
@@ -33,6 +33,6 @@ function cr(number) {
}
function isNumber() {
var r = /^[0-9]*[1-9][0-9]*$/;
let r = /^[0-9]*[1-9][0-9]*$/;
return r.test(str);
}

View File

@@ -3,9 +3,9 @@
* 2016-12-02
*/
var dateUtils = require('./date_utils');
var platform = require('platform');
var UAParser = require('ua-parser-js');
let dateUtils = require('./date_utils');
let platform = require('platform');
let UAParser = require('ua-parser-js');
function startup(expressApp, port, serverName) {
if(expressApp && expressApp.listen && typeof(expressApp.listen) == "function") {
@@ -32,8 +32,8 @@ function getOS() {
}
function getUAInfo(ua) {
var parser = new UAParser();
var result = parser.setUA(ua).getResult();
let parser = new UAParser();
let result = parser.setUA(ua).getResult();
return result;
}

View File

@@ -1,6 +1,6 @@
{
"name": "irext",
"version": "0.0.1",
"version": "1.5.0",
"description": "console of irext",
"scripts": {
"dev": "supervisor -w . -i ./web irext_console.js",
@@ -22,15 +22,15 @@
"express": "^4.14.0",
"form-data": "^2.1.2",
"formidable": "^1.0.17",
"log4js": "^3.0.6",
"log4js": "6.4.0",
"method-override": "^2.3.7",
"mysql": "^2.12.0",
"orm": "^5.0.2",
"platform": "^1.3.3",
"python-shell": "^0.4.0",
"redis": "^2.8.0",
"request": "^2.79.0",
"ua-parser-js": "^0.7.12"
"redis": "3.1.1",
"ua-parser-js": "^0.7.12",
"axios": "^1.6.2"
},
"devDependencies": {
"supervisor": "^0.12.0"

View File

@@ -29,7 +29,6 @@ exports.adminLogin = function (req, res) {
let loginResponse = new LoginResponse();
authenticationLogic.adminLoginWorkUnit(userName, password, function (adminLoginErr, admin) {
logger.info("admin login successfully, entity = " + JSON.stringify(admin));
loginResponse.status = adminLoginErr;
loginResponse.entity = admin;
res.send(loginResponse);

View File

@@ -15,20 +15,20 @@
<body class="page_index" style="background: #3F3F3F; color: #FFFFFF;">
<div class="navbar container">
<div class="header clearfix">
<h3 data-i18n="page_index.title">IRext 本地控制台 - 1.2.7</h3>
<h3 data-i18n="page_index.title">IRext 本地控制台 - 1.5.0</h3>
</div>
</div>
<div class="container">
<div class="container">
<div class="form-signin" style="margin-top: 100px;">
<h4 class="text-muted" data-i18n="page_index.d_signin_title" style="color: #FFFFFF;"></h4>
<h4 class="text-muted" data-i18n="page_index.d_signin_title" style="color: #FFFFFF;"></h4>
<label for="user_name" class="sr-only" data-i18n="page_index.d_signin_email">邮件地址</label>
<input type="email" id="user_name" class="form-control" placeholder="Email" required autofocus>
<label for="password" class="sr-only" data-i18n="page_index.d_signin_password">密码</label>
<input type="password" id="password" class="form-control" placeholder="Password" required>
<div class="row">
<div class="col-lg-12">
<button class="btn btn-lg btn-info" style="width: 100%;" data-i18n="page_index.d_signin_signin" onclick="signIn();"></button>
<button class="btn btn-lg btn-info" style="width: 100%;" data-i18n="page_index.d_signin_signin" onclick="signIn();"></button>
</div>
</div>
</div>

View File

@@ -117,6 +117,7 @@ function doSignIn(userName, password) {
contentType: "application/json; charset=utf-8",
timeout: 20000,
success: function(response) {
console.log(JSON.stringify(response))
if(response.status.code === 0) {
token = response.entity.token;
adminID = response.entity.id;

View File

@@ -3,18 +3,18 @@
"name": "IRext"
},
"page_index": {
"title": "IRext 本地控制台 - 1.2.7",
"d_signin_title": "登",
"title": "IRext 本地控制台 - 1.5.0",
"d_signin_title": "登",
"d_signin_email": "邮箱地址",
"d_signin_password": "密码",
"d_signin_signin": "登",
"d_signin_signin": "登",
"d_changepw_title": "重置密码",
"d_changepw_hint": "系统会自动为你挑选一个6位随机数的新密码并发送到你的邮件确认更改密码",
"d_changepw_confirm": "确定",
"d_changepw_cancel": "取消",
"common_signout": "注销",
"d_signin_success": "登成功3秒后自动进入控制台",
"d_signin_failed": "登失败,请确认邮件地址和密码正确",
"d_signin_success": "登成功3秒后自动进入控制台",
"d_signin_failed": "登失败,请确认邮件地址和密码正确",
"d_signup_email_sent": "带有新密码的邮件已经发送到您的邮箱,请注意查收",
"d_signup_email_occupied": "这个邮件地址已经被使用",
"d_signin_fill_email_pw": "请填写邮件地址和密码",

View File

@@ -3,7 +3,7 @@
"name": "IRext"
},
"page_index": {
"title": "IRext Local Console - 1.2.7",
"title": "IRext Local Console - 1.5.0",
"d_signin_title": "Sign in",
"d_signin_email": "Email",
"d_signin_password": "Password",

View File

@@ -3,7 +3,7 @@
"name": "IRext"
},
"page_index": {
"title": "IRext Local Console - 1.2.7",
"title": "IRext Local Console - 1.5.0",
"d_signin_title": "Sign in",
"d_signin_email": "Email",
"d_signin_password": "Password",

View File

@@ -3,18 +3,18 @@
"name": "IRext"
},
"page_index": {
"title": "IRext 本地控制台 - 1.2.7",
"d_signin_title": "登",
"title": "IRext 本地控制台 - 1.5.0",
"d_signin_title": "登",
"d_signin_email": "邮箱地址",
"d_signin_password": "密码",
"d_signin_signin": "登",
"d_signin_signin": "登",
"d_changepw_title": "重置密码",
"d_changepw_hint": "系统会自动为你挑选一个6位随机数的新密码并发送到你的邮件确认更改密码",
"d_changepw_confirm": "确定",
"d_changepw_cancel": "取消",
"common_signout": "注销",
"d_signin_success": "登成功3秒后自动进入控制台",
"d_signin_failed": "登失败,请确认邮件地址和密码正确",
"d_signin_success": "登成功3秒后自动进入控制台",
"d_signin_failed": "登失败,请确认邮件地址和密码正确",
"d_signup_email_sent": "带有新密码的邮件已经发送到您的邮箱,请注意查收",
"d_signup_email_occupied": "这个邮件地址已经被使用",
"d_signin_fill_email_pw": "请填写邮件地址和密码",

View File

@@ -3,18 +3,18 @@
"name": "IRext"
},
"page_index": {
"title": "IRext 本地控制台 - 1.2.7",
"d_signin_title": "登",
"title": "IRext 本地控制台 - 1.5.0",
"d_signin_title": "登",
"d_signin_email": "邮箱地址",
"d_signin_password": "密码",
"d_signin_signin": "登",
"d_signin_signin": "登",
"d_changepw_title": "重置密码",
"d_changepw_hint": "系统会自动为你挑选一个6位随机数的新密码并发送到你的邮件确认更改密码",
"d_changepw_confirm": "确定",
"d_changepw_cancel": "取消",
"common_signout": "注销",
"d_signin_success": "登成功3秒后自动进入控制台",
"d_signin_failed": "登失败,请确认邮件地址和密码正确",
"d_signin_success": "登成功3秒后自动进入控制台",
"d_signin_failed": "登失败,请确认邮件地址和密码正确",
"d_signup_email_sent": "带有新密码的邮件已经发送到您的邮箱,请注意查收",
"d_signup_email_occupied": "这个邮件地址已经被使用",
"d_signin_fill_email_pw": "请填写邮件地址和密码",

View File

@@ -9,6 +9,7 @@ let AdminAuth = require('../authentication/admin_auth.js');
let RequestSender = require('../mini_poem/http/request.js');
let ErrorCode = require('../constants/error_code.js');
const {set} = require("express/lib/application");
let logger = require('../mini_poem/logging/logger4js').helper;
let errorCode = new ErrorCode();
@@ -18,6 +19,7 @@ let adminAuth = new AdminAuth(REDIS_HOST, REDIS_PORT, null, REDIS_PASSWORD);
let SIGN_IN_SERVICE = "/irext-server/app/admin_login";
exports.adminLoginWorkUnit = function (userName, password, callback) {
let queryParams = new Map();
let requestSender =
@@ -47,20 +49,21 @@ exports.adminLoginWorkUnit = function (userName, password, callback) {
adminAuth.setAuthInfo(key, token, ttl, function(setAdminAuthErr) {
if (errorCode.SUCCESS.code === setAdminAuthErr.code) {
key = "admin_name_" + admin.id;
name = admin.user_name;
name = admin.userName;
adminAuth.setAuthInfo(key, name, ttl, function(setAdminNameErr) {
if (errorCode.SUCCESS.code === setAdminNameErr.code) {
admin.token = token;
}
callback(setAdminNameErr, admin);
});
} else {
callback(errorCode.FAILED, null);
}
});
} else {
callback(errorCode.FAILED, null);
}
} else {
logger.error("admin sign in failed");
callback(errorCode.FAILED, null);
}
});

4
server/.gitignore vendored
View File

@@ -43,11 +43,15 @@ hs_err_pid*
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
.idea/*
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# User log
logs/
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using

View File

@@ -5,7 +5,7 @@
<groupId>net.irext.server</groupId>
<artifactId>private-server</artifactId>
<version>1.2.7</version>
<version>1.5.0</version>
<packaging>jar</packaging>
<name>IRext Private Server</name>
@@ -14,27 +14,20 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<version>3.5.6</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.1.RELEASE</version>
<version>3.5.6</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
@@ -44,33 +37,39 @@
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.1.1.RELEASE</version>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp</groupId>
<artifactId>okhttp</artifactId>

View File

@@ -1,6 +1,7 @@
package net.irext.server.service.businesslogic;
import com.squareup.okhttp.*;
import jakarta.servlet.ServletContext;
import net.irext.decode.sdk.bean.TemperatureRange;
import net.irext.server.service.mapper.CollectKeyMapper;
import net.irext.server.service.mapper.DecodeRemoteMapper;
@@ -18,7 +19,6 @@ import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import javax.servlet.ServletContext;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

View File

@@ -1,12 +1,12 @@
package net.irext.server.service.cache.impl;
import jakarta.annotation.PostConstruct;
import net.irext.server.service.cache.IDecodeSessionRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Repository;
import javax.annotation.PostConstruct;
import java.util.Map;
import java.util.concurrent.TimeUnit;

View File

@@ -1,5 +1,7 @@
package net.irext.server.service.cache.impl;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource;
import net.irext.server.service.cache.IIRBinaryRepository;
import net.irext.server.service.model.RemoteIndex;
import org.springframework.beans.factory.annotation.Autowired;
@@ -7,8 +9,6 @@ import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Repository;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.Map;
import java.util.concurrent.TimeUnit;

View File

@@ -1,13 +1,13 @@
package net.irext.server.service.cache.impl;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource;
import net.irext.server.service.cache.IUserAppRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Repository;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
/**

View File

@@ -1,5 +1,7 @@
package net.irext.server.service.restapi;
import jakarta.servlet.ServletContext;
import jakarta.servlet.http.HttpServletRequest;
import net.irext.server.service.Constants;
import net.irext.server.service.businesslogic.IndexingLogic;
import net.irext.server.service.model.*;
@@ -13,8 +15,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.HeaderParam;
import java.util.List;

View File

@@ -1,6 +1,7 @@
package net.irext.server.service.restapi;
import com.google.gson.Gson;
import jakarta.servlet.ServletContext;
import net.irext.server.service.businesslogic.OperationLogic;
import net.irext.server.service.cache.IDecodeSessionRepository;
import net.irext.server.service.cache.IIRBinaryRepository;
@@ -22,7 +23,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.ServletContext;
import javax.ws.rs.core.HttpHeaders;
import java.io.File;
import java.io.FileInputStream;

View File

@@ -1,5 +1,6 @@
package net.irext.server.service.restapi;
import jakarta.servlet.http.HttpServletRequest;
import net.irext.server.service.Constants;
import net.irext.server.service.businesslogic.UserLoginLogic;
import net.irext.server.service.cache.IUserAppRepository;
@@ -18,8 +19,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/**
* Filename: SignInServiceImpl.java
* Revised: Date: 2017-04-27