update api
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
var crypto = require('crypto');
|
||||
|
||||
var random = (len = 32) => {
|
||||
var buf = crypto.randomBytes(len);
|
||||
return buf.toString("hex");
|
||||
}
|
||||
|
||||
var sha256 = (str) => {
|
||||
return crypto.createHash("sha256").update(str).digest('base64');
|
||||
}
|
||||
|
||||
var genPassHash = (str) => {
|
||||
var hash = random(16);
|
||||
var pass = sha256(str + hash);
|
||||
return `$${hash}$${pass}`;
|
||||
}
|
||||
|
||||
var comparePass = (plain, hash) => {
|
||||
var match = hash.match(/^\$(.+?)\$(.+)$/);
|
||||
if (match == null || match.length < 3 || !match[1] || !match[2]) return false;
|
||||
var pass = sha256(plain + match[1]);
|
||||
if (pass == match[2]) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
random,
|
||||
sha256,
|
||||
genPassHash,
|
||||
comparePass
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
const mysql = require('mysql');
|
||||
|
||||
class MySQLPool {
|
||||
constructor() {
|
||||
this._user = '';
|
||||
this._password = '';
|
||||
this._host = '';
|
||||
this._port = 3306;
|
||||
this._database = '';
|
||||
this._socketPath = ''
|
||||
this._pool = null;
|
||||
this.autoclose = false;
|
||||
this._useSocket = false;
|
||||
}
|
||||
|
||||
createPool() {
|
||||
let json = {
|
||||
connectionLimit: 30,
|
||||
user: this._user,
|
||||
password: this._password,
|
||||
host: this._host,
|
||||
port: this._port,
|
||||
socketPath: this._socketPath
|
||||
};
|
||||
if (this._useSocket) {
|
||||
delete json.host;
|
||||
delete json.port;
|
||||
} else {
|
||||
delete json.socketPath;
|
||||
}
|
||||
this._pool = mysql.createPool(json);
|
||||
}
|
||||
|
||||
async getConn() {
|
||||
return new Promise((resolve, reject) => {
|
||||
this._pool.getConnection((err, conn) => {
|
||||
if (err) return reject(err);
|
||||
return resolve(conn)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
formatQuery(query, arg) {
|
||||
return mysql.format(query, arg);
|
||||
}
|
||||
|
||||
escape(val) {
|
||||
return mysql.escape(val);
|
||||
}
|
||||
|
||||
recordPage(rows, page, maxPage) {
|
||||
if (!page || !isFinite(page) || page < 1) page = 1;
|
||||
|
||||
let totalpage = Math.ceil(rows / maxPage);
|
||||
|
||||
let prevpage = page - 1;
|
||||
let nextpage = page + 1;
|
||||
|
||||
if (prevpage < 1) prevpage = 1;
|
||||
if (nextpage > totalpage) nextpage = totalpage;
|
||||
|
||||
let rec_start = (page - 1) * maxPage + 1
|
||||
let rec_end = (rec_start + maxPage - 1);
|
||||
if (rec_end > rows) rec_end = rows;
|
||||
|
||||
let json = {
|
||||
rec_start,
|
||||
rec_end,
|
||||
total: rows,
|
||||
prevpage,
|
||||
nextpage,
|
||||
totalpage,
|
||||
page
|
||||
};
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
set user(str) { this._user = str; }
|
||||
set host(str) { this._host = str; }
|
||||
set password(str) { this._password = str; }
|
||||
set port(str) { this._port = str; }
|
||||
set database(str) { this._database = str; }
|
||||
}
|
||||
|
||||
|
||||
// let Pool = ((opts) => {
|
||||
// let defOpts = {
|
||||
// user: 'root',
|
||||
// pass: '',
|
||||
// host: 'localhost',
|
||||
// port: 3306,
|
||||
// socket: '/var/lib/mysql/mysql.sock',
|
||||
// useSocket: false
|
||||
// }
|
||||
|
||||
// let opt = {
|
||||
// user: opts.user || defOpts.user,
|
||||
// pass: opts.pass || defOpts.pass,
|
||||
// host: opts.host || defOpts.host,
|
||||
// port: opts.port || defOpts.port,
|
||||
// socket: opts.socket || defOpts.socket,
|
||||
// useSocket: opts.useSocket || defOpts.useSocket
|
||||
// };
|
||||
|
||||
// let pool = new MySQLPool();
|
||||
|
||||
// pool._host = opt.host;
|
||||
// pool._password = opt.pass;
|
||||
// pool._port = opt.port;
|
||||
// pool._user = opt.user;
|
||||
// pool._socket = opt.socket;
|
||||
// pool._useSocket = opt.useSocket;
|
||||
|
||||
// pool.createPool();
|
||||
// return pool
|
||||
// })()
|
||||
|
||||
module.exports = new MySQLPool();
|
||||
Reference in New Issue
Block a user