badmfck-api-server 1.2.3 → 1.2.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,6 +7,7 @@ exports.MysqlService = exports.executeQuery = exports.REQ_MYSQL_QUERY = void 0;
7
7
  const mysql_1 = __importDefault(require("mysql"));
8
8
  const BaseService_1 = require("./BaseService");
9
9
  const badmfck_signal_1 = require("badmfck-signal");
10
+ const crypto_1 = require("crypto");
10
11
  exports.REQ_MYSQL_QUERY = new badmfck_signal_1.Req("REQ_MYSQL_QUERY");
11
12
  const executeQuery = async (query) => { return await exports.REQ_MYSQL_QUERY.request(query); };
12
13
  exports.executeQuery = executeQuery;
@@ -21,6 +22,14 @@ class MysqlService extends BaseService_1.BaseService {
21
22
  constructor(options) {
22
23
  super("mysql");
23
24
  this.options = options;
25
+ if (this.options.host.startsWith("_"))
26
+ this.options.host = decrypt(this.options.host.substring(1)) ?? this.options.host;
27
+ if (this.options.user.startsWith("_"))
28
+ this.options.user = decrypt(this.options.user.substring(1)) ?? this.options.user;
29
+ if (this.options.database.startsWith("_"))
30
+ this.options.database = decrypt(this.options.database.substring(1)) ?? this.options.database;
31
+ if (this.options.password.startsWith("_"))
32
+ this.options.password = decrypt(this.options.password.substring(1)) ?? this.options.password;
24
33
  }
25
34
  static async executeQuery(query) { return await exports.REQ_MYSQL_QUERY.request(query); }
26
35
  async init() {
@@ -306,4 +315,30 @@ class MysqlService extends BaseService_1.BaseService {
306
315
  }
307
316
  }
308
317
  exports.MysqlService = MysqlService;
318
+ const secret_key = "AKLWkajw%^&dgwqhw#98453i23bfk23rn2knknglrgjeit";
319
+ const secret_iv = "rthadrfk23rn2kn#*FNKA@gt44df3tslrgj##!it";
320
+ const key = (0, crypto_1.createHash)('sha512').update(secret_key).digest('hex').substring(0, 32);
321
+ const iv = (0, crypto_1.createHash)('sha512').update(secret_iv).digest('hex').substring(0, 16);
322
+ const decrypt = (encrypted) => {
323
+ try {
324
+ encrypted = Buffer.from(encrypted, 'base64').toString('binary');
325
+ const decipher = (0, crypto_1.createDecipheriv)('aes-256-cbc', key, iv);
326
+ let decrypted = decipher.update(encrypted, 'binary', 'utf8');
327
+ decrypted += decipher.final('utf8');
328
+ return decrypted;
329
+ }
330
+ catch (e) {
331
+ return null;
332
+ }
333
+ };
334
+ const encrypt = (txt) => {
335
+ try {
336
+ let encipher = (0, crypto_1.createCipheriv)('aes-256-cbc', key, iv), encrypted = encipher.update(txt, 'utf8', 'binary');
337
+ encrypted += encipher.final('binary');
338
+ return Buffer.from(encrypted, 'binary').toString('base64');
339
+ }
340
+ catch (e) {
341
+ return null;
342
+ }
343
+ };
309
344
  exports.default = MysqlService;
@@ -0,0 +1,18 @@
1
+ export interface IValidatorOptions {
2
+ min?: number;
3
+ max?: number;
4
+ type?: "string" | "boolean" | "number";
5
+ regex?: RegExp;
6
+ }
7
+ export declare enum ValidationReport {
8
+ OK = 1,
9
+ VALUE_IS_NULL = 2,
10
+ TYPE_MISSMATCH = 3,
11
+ VALUE_TOO_BIG = 4,
12
+ VALUE_TOO_SHORT = 5,
13
+ VALUE_INCORRECT = 6
14
+ }
15
+ export declare class Validator {
16
+ static validateObject(fields: string[], object: any): boolean;
17
+ static validateValue(value: string | number | boolean, opt?: IValidatorOptions): ValidationReport;
18
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Validator = exports.ValidationReport = void 0;
4
+ var ValidationReport;
5
+ (function (ValidationReport) {
6
+ ValidationReport[ValidationReport["OK"] = 1] = "OK";
7
+ ValidationReport[ValidationReport["VALUE_IS_NULL"] = 2] = "VALUE_IS_NULL";
8
+ ValidationReport[ValidationReport["TYPE_MISSMATCH"] = 3] = "TYPE_MISSMATCH";
9
+ ValidationReport[ValidationReport["VALUE_TOO_BIG"] = 4] = "VALUE_TOO_BIG";
10
+ ValidationReport[ValidationReport["VALUE_TOO_SHORT"] = 5] = "VALUE_TOO_SHORT";
11
+ ValidationReport[ValidationReport["VALUE_INCORRECT"] = 6] = "VALUE_INCORRECT";
12
+ })(ValidationReport || (exports.ValidationReport = ValidationReport = {}));
13
+ class Validator {
14
+ static validateObject(fields, object) {
15
+ if (!object || typeof object !== "object")
16
+ return false;
17
+ for (let i of fields) {
18
+ if (!(i in object) || object[i] === undefined)
19
+ return false;
20
+ }
21
+ return true;
22
+ }
23
+ static validateValue(value, opt) {
24
+ if (!value)
25
+ return ValidationReport.VALUE_IS_NULL;
26
+ if (!opt)
27
+ return ValidationReport.OK;
28
+ if (!opt.type)
29
+ opt.type = "string";
30
+ if (opt.type === "boolean") {
31
+ if (typeof value === "boolean")
32
+ return ValidationReport.OK;
33
+ if (typeof value === "number" && (value === 1 || value === 0))
34
+ return ValidationReport.OK;
35
+ return ValidationReport.TYPE_MISSMATCH;
36
+ }
37
+ if (opt.type === "number") {
38
+ if (typeof value !== "number")
39
+ return ValidationReport.TYPE_MISSMATCH;
40
+ if (opt.max && value > opt.max)
41
+ return ValidationReport.VALUE_TOO_BIG;
42
+ if (opt.min && value < opt.min)
43
+ return ValidationReport.VALUE_TOO_BIG;
44
+ return ValidationReport.OK;
45
+ }
46
+ if (typeof value !== "string")
47
+ return ValidationReport.TYPE_MISSMATCH;
48
+ if (opt.max && value.length > opt.max)
49
+ return ValidationReport.VALUE_TOO_BIG;
50
+ if (opt.min && value.length < opt.min)
51
+ return ValidationReport.VALUE_TOO_SHORT;
52
+ if (opt.regex) {
53
+ const tmp = value.replaceAll(opt.regex, "");
54
+ if (tmp.length !== 0)
55
+ return ValidationReport.VALUE_INCORRECT;
56
+ }
57
+ return ValidationReport.OK;
58
+ }
59
+ }
60
+ exports.Validator = Validator;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { APIService, Initializer } from "./apiServer/APIService";
2
2
  import { LocalRequest } from "./apiServer/LocalRequest";
3
3
  import { MysqlService } from "./apiServer/MysqlService";
4
- export { APIService, Initializer, LocalRequest, MysqlService };
4
+ import { Validator } from "./apiServer/helper/Validator";
5
+ export { APIService, Initializer, LocalRequest, MysqlService, Validator };
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MysqlService = exports.LocalRequest = exports.Initializer = exports.APIService = void 0;
3
+ exports.Validator = exports.MysqlService = exports.LocalRequest = exports.Initializer = exports.APIService = void 0;
4
4
  const APIService_1 = require("./apiServer/APIService");
5
5
  Object.defineProperty(exports, "APIService", { enumerable: true, get: function () { return APIService_1.APIService; } });
6
6
  Object.defineProperty(exports, "Initializer", { enumerable: true, get: function () { return APIService_1.Initializer; } });
@@ -8,3 +8,5 @@ const LocalRequest_1 = require("./apiServer/LocalRequest");
8
8
  Object.defineProperty(exports, "LocalRequest", { enumerable: true, get: function () { return LocalRequest_1.LocalRequest; } });
9
9
  const MysqlService_1 = require("./apiServer/MysqlService");
10
10
  Object.defineProperty(exports, "MysqlService", { enumerable: true, get: function () { return MysqlService_1.MysqlService; } });
11
+ const Validator_1 = require("./apiServer/helper/Validator");
12
+ Object.defineProperty(exports, "Validator", { enumerable: true, get: function () { return Validator_1.Validator; } });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "badmfck-api-server",
3
- "version": "1.2.3",
3
+ "version": "1.2.5",
4
4
  "description": "Simple API http server based on express",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",