flexbiz-server 12.2.2 → 12.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/package.json +2 -2
  2. package/server/app.js +14 -14
  3. package/server/auths/local.js +27 -26
  4. package/server/cluster.js +12 -11
  5. package/server/controllers/controller.js +83 -79
  6. package/server/controllers/controllerRPT.js +18 -17
  7. package/server/data/sys/listinfo.js +80395 -78085
  8. package/server/data/sys/reportinfo.js +8826 -8826
  9. package/server/data/sys/trangthai.js +10348 -10229
  10. package/server/libs/cdpstk.js +1 -1
  11. package/server/libs/databanle.js +13 -13
  12. package/server/libs/getGiaban.js +17 -16
  13. package/server/libs/permission.js +12 -12
  14. package/server/libs/post-book.js +9 -8
  15. package/server/libs/post-socai.js +9 -9
  16. package/server/libs/prototypes.js +7 -7
  17. package/server/libs/tinhGtPhanboSltp.js +5 -5
  18. package/server/libs/tinhGtPhanboYtcp.js +2 -2
  19. package/server/libs/tinhGtThcppstk.js +1 -1
  20. package/server/libs/tinhGtTrucTiep.js +8 -7
  21. package/server/libs/tinhgiatb.js +16 -19
  22. package/server/libs/tinhgiatb1vt.js +3 -3
  23. package/server/libs/tinhhoahong.js +32 -0
  24. package/server/libs/utils.js +4 -3
  25. package/server/models/app.js +9 -8
  26. package/server/models/approve.js +4 -4
  27. package/server/models/customer.js +8 -4
  28. package/server/models/dh2.js +10 -7
  29. package/server/models/dmbp.js +7 -4
  30. package/server/models/dmgiaban.js +6 -6
  31. package/server/models/dmhoahonghd.js +6 -5
  32. package/server/models/dmnvt.js +3 -3
  33. package/server/models/dmvt.js +9 -9
  34. package/server/models/ecomcategories.js +2 -2
  35. package/server/models/ecomcategories_cty.js +3 -0
  36. package/server/models/fbconversation.js +9 -0
  37. package/server/models/fbmessage.js +2 -0
  38. package/server/models/fbpage.js +2 -0
  39. package/server/models/group.js +7 -5
  40. package/server/models/hd2.js +11 -8
  41. package/server/models/hd3.js +9 -9
  42. package/server/models/hd7.js +1 -1
  43. package/server/models/listinfo.js +15 -8
  44. package/server/models/notification.js +3 -2
  45. package/server/models/originimportid.js +1 -0
  46. package/server/models/participant.js +5 -5
  47. package/server/models/pbl.js +4 -4
  48. package/server/models/reportinfo.js +2 -2
  49. package/server/models/rptform.js +3 -2
  50. package/server/models/schedule.js +1 -1
  51. package/server/models/so1.js +17 -14
  52. package/server/models/socai.js +7 -5
  53. package/server/models/task.js +4 -4
  54. package/server/models/tdttco.js +8 -4
  55. package/server/models/tdttno.js +8 -4
  56. package/server/models/tokens.js +2 -2
  57. package/server/models/tontucthoi.js +2 -2
  58. package/server/models/usergroup.js +4 -3
  59. package/server/models/vatra.js +2 -2
  60. package/server/models/vatvao.js +4 -4
  61. package/server/modules/lists/ls-assinvestment.js +1 -1
  62. package/server/modules/lists/ls-asskey.js +34 -34
  63. package/server/modules/lists/ls-customer.js +13 -7
  64. package/server/modules/lists/ls-dmbp.js +7 -3
  65. package/server/modules/lists/ls-dmnkh.js +5 -1
  66. package/server/modules/lists/ls-dmnvt.js +5 -5
  67. package/server/modules/lists/ls-dmvt.js +48 -35
  68. package/server/modules/lists/ls-ecomcategories.js +5 -0
  69. package/server/modules/lists/ls-ecomcategories_cty.js +5 -0
  70. package/server/modules/lists/ls-fbconversation.js +3 -0
  71. package/server/modules/lists/ls-fbmessage.js +3 -0
  72. package/server/modules/lists/ls-fbpage.js +10 -0
  73. package/server/modules/lists/ls-file.js +21 -25
  74. package/server/modules/lists/ls-group.js +5 -1
  75. package/server/modules/lists/ls-introducecode.js +8 -7
  76. package/server/modules/lists/ls-introducer.js +16 -17
  77. package/server/modules/lists/ls-message2.js +8 -7
  78. package/server/modules/lists/ls-message2setting.js +4 -4
  79. package/server/modules/lists/ls-news.js +1 -1
  80. package/server/modules/lists/ls-opportunity.js +3 -3
  81. package/server/modules/lists/ls-session.js +2 -2
  82. package/server/modules/lists/ls-task.js +18 -18
  83. package/server/modules/lists/ls-usergroup.js +6 -2
  84. package/server/modules/public/callin.js +6 -6
  85. package/server/modules/reports/calc-tinhgiatb.js +2 -2
  86. package/server/modules/reports/rp-cdpstk.js +3 -3
  87. package/server/modules/reports/rp-chitiettaisan.js +9 -8
  88. package/server/modules/reports/rp-ckvt.js +9 -7
  89. package/server/modules/reports/rp-congviectheonv.js +5 -5
  90. package/server/modules/reports/rp-ctbanle.js +13 -12
  91. package/server/modules/reports/rp-databanle.js +8 -4
  92. package/server/modules/reports/rp-dtbanletheoct.js +16 -9
  93. package/server/modules/reports/rp-dtbanletheokh.js +12 -6
  94. package/server/modules/reports/rp-dtbanletheokho.js +14 -9
  95. package/server/modules/reports/rp-dtbanletheonam.js +15 -9
  96. package/server/modules/reports/rp-dtbanletheongay.js +13 -8
  97. package/server/modules/reports/rp-dtbanletheonv.js +15 -9
  98. package/server/modules/reports/rp-dtbanletheoquy.js +15 -9
  99. package/server/modules/reports/rp-dtbanletheothang.js +15 -9
  100. package/server/modules/reports/rp-getinvoice2pay.js +4 -6
  101. package/server/modules/reports/rp-getinvoice2receive.js +4 -6
  102. package/server/modules/reports/rp-hoahong.js +9 -0
  103. package/server/modules/reports/rp-kqhdkd.js +5 -4
  104. package/server/modules/reports/rp-ptcttct.js +7 -6
  105. package/server/modules/reports/rp-pttct.js +8 -8
  106. package/server/modules/reports/rp-pttctkho.js +3 -2
  107. package/server/modules/reports/rp-pttctkho2.js +3 -3
  108. package/server/modules/reports/rp-thnxt.js +8 -7
  109. package/server/modules/reports/rp-thnxt_sl.js +6 -6
  110. package/server/modules/reports/rp-thnxttt.js +6 -6
  111. package/server/modules/reports/rp-tmbctc.js +16 -16
  112. package/server/modules/systems/sys-app.js +25 -24
  113. package/server/modules/systems/sys-notification.js +2 -2
  114. package/server/modules/systems/sys-schedule.js +1 -1
  115. package/server/modules/systems/sys-user.js +8 -8
  116. package/server/modules/vouchers/vo-bc1.js +9 -8
  117. package/server/modules/vouchers/vo-bg2.js +9 -9
  118. package/server/modules/vouchers/vo-bn1.js +5 -4
  119. package/server/modules/vouchers/vo-dh2.js +14 -19
  120. package/server/modules/vouchers/vo-dnm.js +11 -12
  121. package/server/modules/vouchers/vo-hd2.js +66 -54
  122. package/server/modules/vouchers/vo-hd3.js +28 -22
  123. package/server/modules/vouchers/vo-hd7.js +37 -36
  124. package/server/modules/vouchers/vo-pbl.js +49 -49
  125. package/server/modules/vouchers/vo-pc1.js +9 -8
  126. package/server/modules/vouchers/vo-pn1.js +24 -22
  127. package/server/modules/vouchers/vo-pn5.js +1 -1
  128. package/server/modules/vouchers/vo-pn9.js +23 -23
  129. package/server/modules/vouchers/vo-pnc.js +8 -8
  130. package/server/modules/vouchers/vo-pnh.js +5 -5
  131. package/server/modules/vouchers/vo-pt1.js +17 -16
  132. package/server/modules/vouchers/vo-pxc.js +16 -16
  133. package/server/modules/vouchers/vo-pxh.js +12 -10
  134. package/server/modules/vouchers/vo-so1.js +90 -116
  135. package/server/modules/vouchers/vo-so4.js +1 -1
  136. package/server/modules/vouchers/vo-so5.js +2 -2
  137. package/server/templates/reset mat khau.html +1 -1
  138. package/server/templates/reset mat khau.pug +1 -3
  139. package/server/workers/restoreApp.js +21 -12
  140. package/server/workers/runScript.js +3 -3
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "flexbiz-server",
3
3
  "main": "./server/app.js",
4
4
  "description": "Flexible Server",
5
- "version": "12.2.2",
5
+ "version": "12.2.4",
6
6
  "author": {
7
7
  "name": "Van Truong Pham",
8
8
  "email": "invncur@gmail.com"
@@ -33,7 +33,7 @@
33
33
  "ejs": "^3.1.6",
34
34
  "elliptic-nodejs": "latest",
35
35
  "excel-report": "latest",
36
- "expo-server-sdk": "^3.0.1",
36
+ "expo-server-sdk": "^3.6.0",
37
37
  "express": "^4.17.1",
38
38
  "express-session": "^1.17.2",
39
39
  "fluent-ffmpeg": "^2.1.2",
package/server/app.js CHANGED
@@ -3,20 +3,20 @@ const express=require("express"),bodyParser=require("body-parser"),passport=requ
3
3
  ($configs$$.admins=$configs$$.adminUsers.map($u$$=>$u$$.email));$configs$$.supportUsers||($configs$$.supportUsers=[...$configs$$.admins]);$configs$$.public_token||($configs$$.public_token="flex.public.token");global.port=$options$$.port||$configs$$.PORT||443;var $compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require($configs$$.paths.menu||"./menu").getModules();global.modulesInMenu={};Object.values($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$).forEach(function($module$$){global.modulesInMenu[$module$$.name]=
4
4
  $module$$});require("moment-timezone").tz.setDefault($configs$$.timezone||"Asia/Ho_Chi_Minh");$app$$||($app$$=express());$app$$.set("trust proxy",1);const $toobusy$$=require("toobusy-js");$configs$$.maxLag&&$toobusy$$.maxLag($configs$$.maxLag);$toobusy$$.onLag(function($currentLag$$){console.log("Event loop lag detected! Latency: "+$currentLag$$+"ms")});$app$$.use(function($req$$,$res$$,$next$$){$toobusy$$()?(console.error("Server is busy right now"),$res$$.status(503).send({error:"Server is busy right now, sorry."})):
5
5
  $next$$()});$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("express-session");$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$({secret:"QV098PVT123456HLBN",resave:!1,saveUninitialized:!0,cookie:{secure:!1}}));$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("cookie-parser");$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$());$app$$.use(function($req$$,
6
- $res$$,$next$$){let $uid$$=$req$$.cookies.uid;$uid$$||($uid$$="uid:"+crypto.randomBytes(20).toString("hex"),$res$$.cookie("uid",$uid$$,{expires:new Date(Date.now()+31536E6),sameSite:"none",secure:!0}),$req$$.cookies.uid=$uid$$);$next$$()});$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("compression");$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$());$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=
7
- $configs$$.paths.uploads||__dirname+"/uploads";$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("multer")({dest:$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$,limits:{fileSize:$configs$$.limitFileSize||1048576}});$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$);$app$$.use(cors({credentials:!0,exposedHeaders:["set-cookie"],origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||
8
- ($configs$$.paths={});$app$$.use("/",express.static($configs$$.paths.public||__dirname+"/public"));$app$$.use("/admin",express.static($configs$$.paths.admin||__dirname+"/admin"));$app$$.use("/templates",express.static($configs$$.paths.templates||__dirname+"/templates"));$app$$.use("/images",express.static($configs$$.paths.images||__dirname+"/images"));$app$$.use(bodyParser.json({limit:$configs$$.limitRequestSize||"1mb"}));$app$$.use(bodyParser.urlencoded({limit:$configs$$.limitRequestSize||"1mb",
9
- extended:!0}));$app$$.use(passport.initialize());$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("morgan");var $accessLogStream_rfs$$=require("rotating-file-stream");const $logDirectory$$=$configs$$.paths.log||__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);$accessLogStream_rfs$$=$accessLogStream_rfs$$("access.log",{interval:"1d",path:$logDirectory$$});$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$("combined",
10
- {stream:$accessLogStream_rfs$$,skip:function($req$$,$res$$){return 400>$res$$.statusCode}}));$app$$.use(function($err$$,$req$$,$res$$,$next$$){console.error($err$$.stack);$res$$.status(500).send("Server Error!")});global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(()=>{function $initSysData$$(){console.log("creating system data...");const $files$$=fs.readdirSync(__dirname+"/data/sys");async.mapSeries($files$$,function($file$$,$callback$jscomp$0$$){setImmediate(()=>{if(".js"==
11
- $file$$.substr(-3)){const $data$$=JSON.parse(JSON.stringify(require("./data/sys/"+$file$$).data)),$model$$=global.getModel(""+$file$$);console.log("creating system data...",$file$$);$model$$.deleteMany({},$e$$=>{console.error($e$$);async.mapSeries($data$$,function($r$$,$callback$$){delete $r$$._id;delete $r$$.__v;delete $r$$.collection_name;delete $r$$.pkey;$model$$.create($r$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$()})},function($error$$,$rs$$){$callback$jscomp$0$$($error$$,
12
- $rs$$)})})}else $callback$jscomp$0$$()})},function($error$$){if($error$$)return console.log($error$$);console.log("created system data")})}console.log("Connected to Database");var $Agenda_Mailmanagement_redis$$=require("redis");global.clientRedis=$Agenda_Mailmanagement_redis$$.createClient();global.clientRedis.on("connect",function(){console.log("redis connected");0!=$options$$.createRedisCache&&require("./libs/redis-cache").set()});if(!0!==$options$$.lite){$Agenda_Mailmanagement_redis$$=require("./libs/mailmanagement");
13
- global.mailmanagement=new $Agenda_Mailmanagement_redis$$;global.mailmanagement.start();$Agenda_Mailmanagement_redis$$=require("agenda");global.agenda=new $Agenda_Mailmanagement_redis$$({db:{address:$configs$$.database.url}});require("./libs/schedule").define();global.agenda.on("ready",async()=>{console.log("agenda is ready")});const $campaign$$=global.getModel("campaign");$campaign$$.find({status:!0}).lean().exec(($e$$,$rs$$)=>{$rs$$&&$rs$$.forEach($cam$$=>{$campaign$$.listenerEvents($cam$$,()=>{})})});
14
- $configs$$.adminUsers.forEach(function($adminUser$$){User.findOne({email:$adminUser$$.email},function($error$jscomp$4_u$$,$rs$$){if($error$jscomp$4_u$$)return console.error($error$jscomp$4_u$$);$rs$$||($adminUser$$.local={name:$adminUser$$.name,email:$adminUser$$.email,active:!0},$error$jscomp$4_u$$=new User($adminUser$$),$error$jscomp$4_u$$.local.password=$error$jscomp$4_u$$.generateHash($adminUser$$.email+$adminUser$$.defaultPassword),$error$jscomp$4_u$$.save(function($error$$,$user$$){if($error$$)return console.error($error$$);
15
- $user$$&&console.log("da tao thanh cong user "+$user$$.email)}))})});$configs$$.initSysData?$initSysData$$():global.getModel("tableinfo").findOne({},($e$$,$rs$$)=>{$rs$$||$initSysData$$()});require("./route")($app$$,()=>{if(!1!==$options$$.createServer){var $StaticPool_StaticPool$$=require("sticky-session");if($configs$$.use_ssl){var $server_sslConfig$$=require("./sslConfig");$server_sslConfig$$=https.createServer($server_sslConfig$$($options$$.sslDir),$app$$)}else $server_sslConfig$$=http.createServer($app$$);
16
- $server_sslConfig$$.timeout=6E5;!1!==$options$$.useSocket&&User.initSocket($server_sslConfig$$);if(!1!==$options$$.cluster){if(!$StaticPool_StaticPool$$.listen($server_sslConfig$$,global.port))$server_sslConfig$$.once("listening",function(){console.log("server started on",global.port)});$StaticPool_StaticPool$$=require("cluster");$StaticPool_StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool_StaticPool$$.on("online",
17
- function($worker$$){console.info("worker "+$worker$$.process.pid+" is online")})}else $server_sslConfig$$.listen(global.port,()=>{console.log("server start at "+global.port+" port")})}$options$$.start_import_data_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/inputWorker.js"),global.importDataMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.log("load import data pool")}));
18
- $options$$.start_report_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/reportWorker.js"),global.reportMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.log("load report pool")}));$callback$jscomp$1$$&&$callback$jscomp$1$$()})}else require("./route")($app$$,()=>{$callback$jscomp$1$$&&$callback$jscomp$1$$()},!0)}).catch($err$$=>{console.log("Not Connected to Database ERROR! ",
19
- $err$$)});return $app$$};process.on("uncaughtException",function($err$jscomp$2_error$$){console.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$2_error$$.message);console.error($err$jscomp$2_error$$.stack);$err$jscomp$2_error$$=`
6
+ $res$$,$next$$){let $uid$$=$req$$.cookies.uid;$uid$$||($uid$$=$req$$.headers.uid);$uid$$||($uid$$="uid:"+crypto.randomBytes(20).toString("hex"),$res$$.cookie("uid",$uid$$,{expires:new Date(Date.now()+31536E6),sameSite:"none",secure:!0}));$res$$.set("uid",$uid$$);$req$$.cookies.uid=$uid$$;$next$$()});$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("compression");$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$());$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=
7
+ $configs$$.paths.uploads||__dirname+"/uploads";const $limitFileSize$$=$configs$$.limitFileSize||1048576;$app$$.use(function($req$jscomp$2_size$$,$res$$,$next$$){if(($req$jscomp$2_size$$=$req$jscomp$2_size$$.headers["content-lenght"])&&$req$jscomp$2_size$$>$limitFileSize$$)return $res$$.status(400).send({error:"File too large"});$next$$()});$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("multer")({dest:$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$,
8
+ limits:{files:1,fileSize:$limitFileSize$$}});$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$);$app$$.use(cors({credentials:!0,exposedHeaders:["set-cookie","uid"],origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||($configs$$.paths={});$app$$.use("/",express.static($configs$$.paths.public||__dirname+"/public"));$app$$.use("/admin",express.static($configs$$.paths.admin||__dirname+"/admin"));$app$$.use("/templates",express.static($configs$$.paths.templates||
9
+ __dirname+"/templates"));$app$$.use("/images",express.static($configs$$.paths.images||__dirname+"/images"));$app$$.use(bodyParser.json({limit:$configs$$.limitRequestSize||"1mb"}));$app$$.use(bodyParser.urlencoded({limit:$configs$$.limitRequestSize||"1mb",extended:!0}));$app$$.use(passport.initialize());$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("morgan");var $accessLogStream_rfs$$=require("rotating-file-stream");const $logDirectory$$=$configs$$.paths.log||
10
+ __dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);$accessLogStream_rfs$$=$accessLogStream_rfs$$("access.log",{interval:"1d",path:$logDirectory$$});$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$("combined",{stream:$accessLogStream_rfs$$,skip:function($req$$,$res$$){return 400>$res$$.statusCode}}));$app$$.use(function($err$$,$req$$,$res$$,$next$$){console.error($err$$.stack);$res$$.status(500).send("Server Error!")});global.mongoose.connect($configs$$.database.url,
11
+ {useNewUrlParser:!0}).then(()=>{function $initSysData$$(){console.log("creating system data...");const $files$$=fs.readdirSync(__dirname+"/data/sys");async.mapSeries($files$$,function($file$$,$callback$jscomp$0$$){setImmediate(()=>{if(".js"==$file$$.substr(-3)){const $data$$=JSON.parse(JSON.stringify(require("./data/sys/"+$file$$).data)),$model$$=global.getModel(""+$file$$);console.log("creating system data...",$file$$);$model$$.deleteMany({},$e$$=>{console.error($e$$);async.mapSeries($data$$,function($r$$,
12
+ $callback$$){delete $r$$._id;delete $r$$.__v;delete $r$$.collection_name;delete $r$$.pkey;$model$$.create($r$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$()})},function($error$$,$rs$$){$callback$jscomp$0$$($error$$,$rs$$)})})}else $callback$jscomp$0$$()})},function($error$$){if($error$$)return console.log($error$$);console.log("created system data")})}console.log("Connected to Database");var $Agenda_Mailmanagement_redis$$=require("redis");global.clientRedis=$Agenda_Mailmanagement_redis$$.createClient();
13
+ global.clientRedis.on("connect",function(){console.log("redis connected");0!=$options$$.createRedisCache&&require("./libs/redis-cache").set()});if(!0!==$options$$.lite){$Agenda_Mailmanagement_redis$$=require("./libs/mailmanagement");global.mailmanagement=new $Agenda_Mailmanagement_redis$$;global.mailmanagement.start();$Agenda_Mailmanagement_redis$$=require("agenda");global.agenda=new $Agenda_Mailmanagement_redis$$({db:{address:$configs$$.database.url}});require("./libs/schedule").define();global.agenda.on("ready",
14
+ async()=>{console.log("agenda is ready")});const $campaign$$=global.getModel("campaign");$campaign$$.find({status:!0}).lean().exec(($e$$,$rs$$)=>{$rs$$&&$rs$$.forEach($cam$$=>{$campaign$$.listenerEvents($cam$$,()=>{})})});$configs$$.adminUsers.forEach(function($adminUser$$){User.findOne({email:$adminUser$$.email},function($error$jscomp$4_u$$,$rs$$){if($error$jscomp$4_u$$)return console.error($error$jscomp$4_u$$);$rs$$||($adminUser$$.local={name:$adminUser$$.name,email:$adminUser$$.email,active:!0},
15
+ $error$jscomp$4_u$$=new User($adminUser$$),$error$jscomp$4_u$$.local.password=$error$jscomp$4_u$$.generateHash($adminUser$$.email+$adminUser$$.defaultPassword),$error$jscomp$4_u$$.save(function($error$$,$user$$){if($error$$)return console.error($error$$);$user$$&&console.log("da tao thanh cong user "+$user$$.email)}))})});$configs$$.initSysData?$initSysData$$():global.getModel("tableinfo").findOne({},($e$$,$rs$$)=>{$rs$$||$initSysData$$()});require("./route")($app$$,()=>{if(!1!==$options$$.createServer){var $StaticPool_StaticPool$$=
16
+ require("sticky-session");if($configs$$.use_ssl){var $server_sslConfig$$=require("./sslConfig");$server_sslConfig$$=https.createServer($server_sslConfig$$($options$$.sslDir),$app$$)}else $server_sslConfig$$=http.createServer($app$$);$server_sslConfig$$.timeout=6E5;!1!==$options$$.useSocket&&User.initSocket($server_sslConfig$$);if(!1!==$options$$.cluster){if(!$StaticPool_StaticPool$$.listen($server_sslConfig$$,global.port))$server_sslConfig$$.once("listening",function(){console.log("server started on",
17
+ global.port)});$StaticPool_StaticPool$$=require("cluster");$StaticPool_StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool_StaticPool$$.on("online",function($worker$$){console.info("worker "+$worker$$.process.pid+" is online")})}else $server_sslConfig$$.listen(global.port,()=>{console.log("server start at "+global.port+" port")})}$options$$.start_import_data_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),
18
+ global.importDataMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/inputWorker.js"),global.importDataMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.log("load import data pool")}));$options$$.start_report_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/reportWorker.js"),global.reportMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.log("load report pool")}));
19
+ $callback$jscomp$1$$&&$callback$jscomp$1$$()})}else require("./route")($app$$,()=>{$callback$jscomp$1$$&&$callback$jscomp$1$$()},!0)}).catch($err$$=>{console.log("Not Connected to Database ERROR! ",$err$$)});return $app$$};process.on("uncaughtException",function($err$jscomp$2_error$$){console.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$2_error$$.message);console.error($err$jscomp$2_error$$.stack);$err$jscomp$2_error$$=`
20
20
  Error: ${$err$jscomp$2_error$$.message}
21
21
  Stack: ${$err$jscomp$2_error$$.stack}
22
22
  `;try{const $logDirectory$$=__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);fs.writeFile(`${$logDirectory$$}/error-${(new Date).getTime()}.txt`,$err$jscomp$2_error$$,()=>{console.log("wrote log error")})}catch($e$$){console.log($e$$)}process.exit(1)});module.exports=mainServer;
@@ -1,11 +1,11 @@
1
1
  'use strict';const User=global.getModel("user"),Participant=global.getModel("participant"),UserGroup=global.getModel("usergroup"),Customer=global.getModel("customer"),axios=require("axios"),log=global.getModel("log"),App=global.getModel("app"),Wallet=global.getModel("wallet"),Token=global.getModel("token"),BasicStrategy=require("passport-http").BasicStrategy,_crypto=require("crypto"),validator=require("validator"),email=require("../libs/email"),loadTemplate=require("../libs/load-template"),permission=
2
- require("../libs/permission"),OTP=global.getModel("otp"),DIGITS="0123456789",jwt=require("jsonwebtoken"),redisCache=require("../libs/redis-cache");function generateOTP(){let $OTP$$="";for(let $i$$=0;6>$i$$;$i$$++)$OTP$$+=DIGITS[Math.floor(10*Math.random())];return $OTP$$}
2
+ require("../libs/permission"),OTP=global.getModel("otp"),DIGITS="0123456789",jwt=require("jsonwebtoken"),redisCache=require("../libs/redis-cache"),Controler=require("../controllers/controller");function generateOTP(){let $OTP$$="";for(let $i$$=0;6>$i$$;$i$$++)$OTP$$+=DIGITS[Math.floor(10*Math.random())];return $OTP$$}
3
3
  function generateToken($user$$){var $body_n_n$$={email:$user$$.email};configs.APP_SECRET?jwt.sign({user:$body_n_n$$},configs.APP_SECRET):($body_n_n$$=new Date,_crypto.createHash("md5").update($user$$.email+$body_n_n$$.toISOString()).digest("hex"));$body_n_n$$=new Date;return _crypto.createHash("md5").update($user$$.email+$body_n_n$$.toISOString()).digest("hex")}
4
4
  function saveOTP($Phone$$,$otp_code$$,$callback$$,$expires$$=5){let $expire_time$$=new Date;$expire_time$$.setMinutes($expire_time$$.getMinutes()+$expires$$);OTP.create({phone:$Phone$$,otp:$otp_code$$,expire_time:$expire_time$$},($e$$,$rs$$)=>{if($e$$)return $callback$$($e$$);$callback$$(null,$rs$$.toObject())})}
5
5
  function findByUsername($username$$,$fn$$){if(!$username$$)return $fn$$("B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n");User.findOne({$or:[{email:$username$$},{"local.phone":$username$$}]},function($error$$,$result$$){return!$error$$&&$result$$&&$result$$.local?$fn$$(null,$result$$):$fn$$($error$$||`T\u00e0i kho\u1ea3n ${$username$$} kh\u00f4ng t\u1ed3n t\u1ea1i`)})}
6
- async function addUserToApp($user$$,$body$$,$cust_session_created$$){if($body$$.id_app){if(!await App.findById($body$$.id_app))throw console.error("Can't find app",$body$$.id_app),"Kh\u00f4ng th\u1ec3 t\u00ecm th\u1ea5y th\u00f4ng tin c\u00f4ng ty n\u00e0y";await Participant.asyncCreateParticipant({id_app:$body$$.id_app,name:$body$$.name||$user$$.email,email:$body$$.email,group_id:$body$$.group_id,active:!0,session_created:$cust_session_created$$});await global.getModel("customer").findOne({id_app:$body$$.id_app,
6
+ async function addUserToApp($user$$,$body$$,$cust_session_created$$){if($body$$.id_app){if(!await App.findById($body$$.id_app))throw console.error("Can't find app",$body$$.id_app),"Kh\u00f4ng th\u1ec3 t\u00ecm th\u1ea5y th\u00f4ng tin c\u00f4ng ty n\u00e0y";$user$$.current_id_app=$body$$.id_app;await Participant.asyncCreateParticipant({id_app:$body$$.id_app,name:$body$$.name||$user$$.email,email:$body$$.email,group_id:$body$$.group_id,active:!0,session_created:$cust_session_created$$});await global.getModel("customer").findOne({id_app:$body$$.id_app,
7
7
  of_user:$user$$.email}).lean()||($cust_session_created$$={ten_kh:$body$$.name||$user$$.email,email:validator.isEmail($user$$.email)?$user$$.email:void 0},$body$$.customer_info&&($cust_session_created$$={...$cust_session_created$$,...$body$$.customer_info}),$cust_session_created$$.ten_kh||($cust_session_created$$.ten_kh=$body$$.name||$user$$.email),$cust_session_created$$={...$cust_session_created$$,id_app:$body$$.id_app,user_created:$user$$.email,user_updated:$user$$.email,kh_yn:!0,of_user:$user$$.email},
8
- await Customer.asyncCreateCustomer($cust_session_created$$))}}
8
+ await Customer.asyncCreateCustomer($cust_session_created$$));if($body$$.introduce_code){let $contrIntroducer$$=global.controllers.INTRODUCER;await new Promise(($rs$$,$rj$$)=>{Controler.create($user$$,$contrIntroducer$$,{introduce_code:$body$$.introduce_code},$e$$=>{if($e$$)return $rj$$($e$$.message||$e$$.error||$e$$);$rs$$()})})}}}
9
9
  module.exports=async function($app$jscomp$0$$,$passport$$){const $rateLimiter$$=await global.createRateLimiterMiddleware(configs.limitRequest.auth||{},"auth");$passport$$.use(new BasicStrategy(function($username$$,$password$$,$done$$){if(!$username$$)return $done$$("B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n");$username$$=$username$$.trim().toLowerCase();setImmediate(function(){findByUsername($username$$,function($err$$,$user$$){if($err$$)return $done$$($err$$);if(!$user$$)return $done$$("T\u00e0i kho\u1ea3n "+
10
10
  $username$$+" ch\u01b0a \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd.");if(0==$user$$.status)return $done$$("T\u00e0i kho\u1ea3n n\u00e0y kh\u00f4ng c\u00f2n hi\u1ec7u l\u1ef1c");if($user$$.local.rspassword)if($user$$.validRspassword($password$$))$user$$.local.password=$user$$.local.rspassword,$user$$.local.rspassword=void 0,User.findOneAndUpdate({email:$user$$.email},{local:$user$$.local},($e$$,$rs$$)=>{if($e$$)return console.error("Can't update password",$user$$.email,$e$$);console.log("updated new password",
11
11
  $user$$.email,$rs$$)});else{if(!$user$$.validPassword($password$$))return $done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.")}else{if(!$user$$.local.password)return $done$$("M\u1eadt kh\u1ea9u cho ng\u01b0\u1eddi d\u00f9ng n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i. H\u00e3y s\u1eed d\u1ee5ng t\u00ednh n\u0103ng kh\u00f4i ph\u1ee5c m\u1eadt kh\u1ea9u \u0111\u1ec3 \u0111\u1eb7t l\u1ea1i m\u1eadt kh\u1ea9u cho ng\u01b0\u1eddi d\u00f9ng n\u00e0y");if(!$user$$.validPassword($password$$))return $done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.")}return $done$$(null,
@@ -23,27 +23,28 @@ agent:$req$$.headers["user-agent"],ip:"",once:1==$req$$.query.once||"true"==$req
23
23
  "Unauthorized"});$req$$.user=$user$$;$next$$()})($req$$,$res$$,$next$$)},async($req$jscomp$3_user$$,$res$$)=>{let $data$$=$req$jscomp$3_user$$.body;$req$jscomp$3_user$$=$req$jscomp$3_user$$.user;if(!$data$$)return $res$$.status(400).send("Not have data to sign");if(!$data$$.id_app)return $res$$.status(400).send("Data miss id_app property");try{let $signature$$=await Wallet.sign($data$$.id_app,$req$jscomp$3_user$$.email,$data$$);$res$$.send($signature$$)}catch($e$$){return $res$$.status(400).send($e$$.message||
24
24
  $e$$)}});$app$jscomp$0$$.get("/auth/local",$rateLimiter$$,function($req$$,$res$$,$next$$){let $ip$$=($req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress).split(".").join("").split(":").join(""),$authorization$$=$req$$.headers.authorization;if(!$authorization$$)return $res$$.status(400).send({message:"Authorization is required"});$authorization$$=Buffer.from($authorization$$.replace("Basic ",""),"base64").toString("utf-8");$authorization$$=$authorization$$.split(":");if(1<
25
25
  $authorization$$.length){let $t_session$$="times_login_"+$ip$$+"_"+$authorization$$[0].trim().toLowerCase(),$d_session$$="datetime_login_"+$ip$$+"_"+$authorization$$[0].trim().toLowerCase();$req$$.t_session=$t_session$$;$req$$.d_session=$d_session$$;let $now$$=new Date,$d$$=$now$$,$times_try$$=1;if($req$$.headers.cookie&&$req$$.session){$req$$=$req$$.session;$req$$[$t_session$$]?($times_try$$=$req$$[$t_session$$]+1,$req$$[$t_session$$]=$times_try$$):($req$$[$t_session$$]=$times_try$$,$req$$[$d_session$$]=
26
- $now$$);$req$$[$d_session$$]?$d$$=new Date($req$$[$d_session$$]):$req$$[$d_session$$]=$now$$;$req$$=$now$$.getTime()-$d$$.getTime();if(18E6>$req$$&&10<$times_try$$)return $res$$.status(400).send({message:"B\u1ea1n \u0111\u0103ng nh\u1eadp sai 10 l\u1ea7n li\u00ean ti\u1ebfp. H\u00e3y th\u1eed l\u1ea1i sau "+Math.roundBy((18E6-$req$$)/6E4,0)+" ph\u00fat"});$next$$()}else global.clientRedis.get($t_session$$,function($err$$,$reply$$){$reply$$?($times_try$$=Number($reply$$)+1,global.clientRedis.set($t_session$$,
26
+ $now$$);$req$$[$d_session$$]?$d$$=new Date($req$$[$d_session$$]):$req$$[$d_session$$]=$now$$;$req$$=$now$$.getTime()-$d$$.getTime();if(18E6>$req$$&&10<$times_try$$)return $res$$.status(400).send({message:"B\u1ea1n \u0111\u0103ng nh\u1eadp sai 10 l\u1ea7n li\u00ean ti\u1ebfp. H\u00e3y th\u1eed l\u1ea1i sau "+Math.roundBy((9E5-$req$$)/6E4,0)+" ph\u00fat"});$next$$()}else global.clientRedis.get($t_session$$,function($err$$,$reply$$){$reply$$?($times_try$$=Number($reply$$)+1,global.clientRedis.set($t_session$$,
27
27
  $times_try$$)):(global.clientRedis.set($t_session$$,$times_try$$),global.clientRedis.set($d_session$$,$now$$));global.clientRedis.get($d_session$$,function($err$jscomp$3_time_wait$$,$reply$$){$reply$$?$d$$=new Date($reply$$):global.clientRedis.set($d_session$$,$now$$);$err$jscomp$3_time_wait$$=$now$$.getTime()-$d$$.getTime();if(18E6>$err$jscomp$3_time_wait$$&&10<$times_try$$)return $res$$.status(400).send({message:"B\u1ea1n \u0111\u0103ng nh\u1eadp sai 10 l\u1ea7n li\u00ean ti\u1ebfp. H\u00e3y th\u1eed l\u1ea1i sau "+
28
- Math.roundBy((18E6-$err$jscomp$3_time_wait$$)/6E4,0)+" ph\u00fat"});$next$$()})})}},function($req$$,$res$$,$next$$){$passport$$.authenticate("basic",{session:!1},function($err$$,$user$$){if($err$$||!$user$$)return $res$$.status(401).send({message:$err$$||"Unauthorized"});if(configs.require_verify&&!$user$$.local.active)return $res$$.status(401).send({require_verify:!0});$req$$.user=$user$$;$next$$()})($req$$,$res$$,$next$$)},async($req$$,$res$$)=>{let $agent$$=$req$$.headers["user-agent"];$req$$.headers.cookie?
29
- ($group_id_session$jscomp$1_session_created$$=$req$$.session,$group_id_session$jscomp$1_session_created$$[$req$$.t_session]=0,$group_id_session$jscomp$1_session_created$$[$req$$.d_session]=""):(global.clientRedis.set($req$$.t_session,0),global.clientRedis.set($req$$.d_session,""));log.create({id_app:"LOGIN",id_func:"LOGIN",action:"LOCALLOGIN"},$req$$.user.email,$req$$.header("user-agent"),$req$$);let $user$$=$req$$.user;if($req$$.query.id_app&&$req$$.query.group_id&&global.mongoose.Types.ObjectId.isValid($req$$.query.group_id)&&
30
- global.mongoose.Types.ObjectId.isValid($req$$.query.id_app)){const $id_app$$=$req$$.query.id_app;$group_id_session$jscomp$1_session_created$$=$req$$.query.group_id;const $app$$=await App.findById($id_app$$),$group$$=await UserGroup.findOne({_id:$group_id_session$jscomp$1_session_created$$,is_customer_group:!0});$app$$&&$group$$&&Participant.createParticipant({id_app:$id_app$$,email:$user$$.email,name:$user$$.name,group_id:$group_id_session$jscomp$1_session_created$$,active:!0},async $cust$jscomp$1_e$$=>
31
- {if($cust$jscomp$1_e$$)return console.log("can't add user",$user$$.email,"to company",$app$$.name);$cust$jscomp$1_e$$={ten_kh:$user$$.name||$user$$.email,email:$user$$.email,id_app:$id_app$$,user_created:$user$$.email,user_updated:$user$$.email,kh_yn:!0,of_user:$user$$.email};validator.isMobilePhone($user$$.email,["vi-VN"])&&($cust$jscomp$1_e$$.dien_thoai=$user$$.email);try{await Customer.asyncCreateCustomer($cust$jscomp$1_e$$)}catch($e$$){console.error("Auto create new customer with error:",$e$$.message)}})}const $accessToken$$=
32
- generateToken($user$$);var $group_id_session$jscomp$1_session_created$$=($req$$.cookies||{}).uid;$group_id_session$jscomp$1_session_created$$&&User.updateOne({email:$user$$.email,session_created:null},{session_created:$group_id_session$jscomp$1_session_created$$});(new Token({email:$user$$.email,session_created:$group_id_session$jscomp$1_session_created$$,token:$accessToken$$,agent:$agent$$,ip:"",once:1==$req$$.query.once||"true"==$req$$.query.once||"1"===$req$$.query.once?!0:!1})).save(function($e$$,
33
- $rs$$){if($e$$)return $res$$.status(500).send($e$$);$res$$.send({token:$accessToken$$,once:$rs$$.once})})});$app$jscomp$0$$.get("/check-user/:email",$rateLimiter$$,function($req$$,$res$$){const $email$$=$req$$.params.email;User.findOne({$or:[{email:$email$$},{"local.phone":$email$$}]},{email:1,name:1,picture:1}).lean().exec(function($e$$,$user$$){if($e$$||!$user$$)return $res$$.status(400).send($e$$||`T\u00e0i kho\u1ea3n ${$email$$} kh\u00f4ng t\u1ed3n t\u1ea1i`);$res$$.send($user$$)})});$app$jscomp$0$$.post("/signup",
34
- $rateLimiter$$,async($req$$,$res$$)=>{let $body$$=$req$$.body;$body$$.json&&($body$$=JSON.parse($body$$.json));if(!$body$$)return $res$$.status(400).send({error:"Kh\u00f4ng c\u00f3 n\u1ed9i dung"});if($body$$.id_app&&!global.mongoose.Types.ObjectId.isValid($body$$.id_app))return $res$$.status(400).send("id_app kh\u00f4ng h\u1ee3p l\u1ec7");if(configs.GOOGLE_RECAPTCHA_SECRET_KEY){var $app$$=$body$$["g-recaptcha-response"]||$req$$.query["g-recaptcha-response"];if(!$app$$)return $res$$.status(400).send("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u m\u1ed9t google recaptcha token");
35
- try{await permission.verifyReCaptcha($app$$)}catch($e$$){return $res$$.status(400).send($e$$.message||$e$$.error||$e$$)}}let $session_created$$=($req$$.cookies||{}).uid;if($session_created$$&&$body$$.id_app){$app$$=await App.findById($body$$.id_app);if(!$app$$)return $res$$.status(400).send({error:"C\u00f4ng ty kh\u00f4ng t\u1ed3n t\u1ea1i"});if($app$$.options&&$app$$.options.one_account_per_device&&await Participant.findOne({session_created:$session_created$$,id_app:$body$$.id_app}).lean())return $res$$.status(400).send({error:"M\u1ed7i thi\u1ebft b\u1ecb ch\u1ec9 \u0111\u01b0\u1ee3c t\u1ea1o m\u1ed9t t\u00e0i kho\u1ea3n"})}if(!$body$$.email)return $res$$.status(400).send({error:"B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n"});
36
- $body$$.email=$body$$.email.trim().toLowerCase();if(!validator.isEmail($body$$.email)&&!validator.isMobilePhone($body$$.email,["vi-VN"]))return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n \u0111\u0103ng nh\u1eadp ph\u1ea3i l\u00e0 1 \u0111\u1ecba ch\u1ec9 email ho\u1eb7c 1 s\u1ed1 \u0111i\u1ec7n tho\u1ea1i di \u0111\u1ed9ng"});if(!$body$$.name)return $res$$.status(400).send({error:"H\u1ecd v\u00e0 t\u00ean ch\u01b0a nh\u1eadp"});User.findOne({$or:[{email:$body$$.email},{"local.phone":$body$$.email}]},
37
- async function($error$jscomp$1$$,$result$$){if($error$jscomp$1$$)return $res$$.status(400).send($error$jscomp$1$$);if($result$$)if(!$result$$.local||configs.require_verify&&!$result$$.local.active||$result$$.local.email!=$body$$.email)$result$$.local||($result$$.local={});else if($body$$.id_app)try{if(await global.getModel("participant").findOne({id_app:$body$$.id_app,email:$body$$.email}))return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n n\u00e0y \u0111\u00e3 t\u1ed3n t\u1ea1i"});await addUserToApp($result$$,
38
- $body$$,$session_created$$);return $res$$.send("T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd th\u00e0nh c\u00f4ng")}catch($e$$){return $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$})}else return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd"});else $result$$=new User,$result$$.email=$body$$.email,$result$$.local={};$result$$.local.email=$body$$.email;$result$$.local.name=
39
- $body$$.name;$result$$.partner=$body$$.partner;$result$$.session_created=$session_created$$;$body$$.email2&&validator.isEmail($body$$.email2)&&($result$$.email2=$body$$.email2);$result$$.name=$result$$.local.name;$body$$.picture?$result$$.local.picture=$body$$.picture:$result$$.local.picture||($result$$.local.picture="/images/avatar.jpg");let $password$$;if($body$$.password){if($body$$.rePassword!==$body$$.password)return $res$$.status(400).send({error:"M\u1eadt kh\u1ea9u x\u00e1c nh\u1eadn kh\u00f4ng ch\u00ednh x\u00e1c"});
40
- if(!User.teststrengthPassword($body$$.password))return $res$$.status(400).send({error:"M\u1eadt kh\u1ea9u ph\u1ea3i c\u00f3 \u00edt nh\u1ea5t 6 k\u00fd t\u1ef1 v\u00e0 bao g\u1ed3m \u00edt nh\u1ea5t m\u1ed9t ch\u1eef s\u1ed1, m\u1ed9t ch\u1eef hoa v\u00e0 m\u1ed9t ch\u1eef th\u01b0\u1eddng"});$password$$=$body$$.password}else $password$$=_crypto.createHash("md5").update($result$$.email+(new Date).toISOString()).digest("hex");$result$$.local.password=$result$$.generateHash($result$$.email+$password$$);
41
- $result$$.save(async function($app$jscomp$4_error$$,$newUser$$){if($app$jscomp$4_error$$)return $res$$.status(400).send({error:"Kh\u00f4ng th\u1ec3 \u0111\u0103ng k\u00fd"});log.create({id_app:"SIGNUP",id_func:"SIGNUP",action:"SIGNUP"},$result$$.email,$req$$.header("user-agent"),$req$$);if($body$$.cty_name){$app$jscomp$4_error$$=new App;$app$jscomp$4_error$$.user_created=$result$$.email;$app$jscomp$4_error$$.user_updated=$result$$.email;$app$jscomp$4_error$$.name=$body$$.cty_name;var $d$jscomp$1_now$$=
42
- new Date;$app$jscomp$4_error$$.ngay_dn=new Date($d$jscomp$1_now$$.getFullYear(),0,1);$app$jscomp$4_error$$.ngay_ks=new Date($d$jscomp$1_now$$.getFullYear()-1,12,0);$app$jscomp$4_error$$.nam_bd=$d$jscomp$1_now$$.getFullYear();$app$jscomp$4_error$$.ngay_ky1=new Date($d$jscomp$1_now$$.getFullYear(),0,1);$d$jscomp$1_now$$=new Date;$d$jscomp$1_now$$.setMonth($d$jscomp$1_now$$.getMonth()+3);$app$jscomp$4_error$$.expire_date=new Date($d$jscomp$1_now$$);$app$jscomp$4_error$$.save(function($error$jscomp$0$$,
43
- $obj$$){if($error$jscomp$0$$)return console.log("Khong tao duoc new app: "+$error$jscomp$0$$);require("../libs/initDatabase").init($obj$$._id,function($error$$){$error$$&&console.log("Can't init database \n"+$error$$)})})}try{await addUserToApp($newUser$$,$body$$,$session_created$$)}catch($e$$){return await User.deleteOne({email:$body$$.email}),$res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$})}validator.isEmail($body$$.email)&&!$body$$.password?(loadTemplate("thong tin dang nhap.html",
44
- {email:$result$$.email,password:$password$$,receiver_name:$body$$.name},function($error$jscomp$0$$,$html$$){if($error$jscomp$0$$)return console.log($error$jscomp$0$$);email.sendHtml({to:{name:$result$$.name,address:$result$$.email},subject:"Th\u00f4ng tin t\u00e0i kho\u1ea3n",html:$html$$},function($error$$){$error$$&&console.error("Khong the gui email thon tin tai khoan cho nguoi dung\n"+$error$$)})}),$res$$.send("T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o. Ki\u1ec3m tra email \u0111\u1ec3 l\u1ea5y th\u00f4ng tin \u0111\u0103ng nh\u1eadp")):
45
- $res$$.send("T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o")})})});$app$jscomp$0$$.get("/resetpassword",$rateLimiter$$,async($req$$,$res$$)=>{if(configs.GOOGLE_RECAPTCHA_SECRET_KEY)try{await permission.verifyReCaptcha($req$$.query["g-recaptcha-response"])}catch($e$$){return $res$$.status(400).send($e$$.message||$e$$.error||$e$$)}let $address$$=$req$$.query.email;if(!$address$$)return $res$$.status(400).send("Y\u00eau c\u1ea7u m\u1ed9t email");$address$$=$address$$.toLowerCase();
46
- User.findOne({$or:[{"local.email":$address$$},{email:$address$$},{email2:$address$$}]},function($error$jscomp$2$$,$result$$){if($error$jscomp$2$$)return $res$$.status(400).send($error$jscomp$2$$);if(!$result$$)return $res$$.status(400).send(`T\u00e0i kho\u1ea3n ${$address$$} ch\u01b0a \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd`);let $newpassword$$=_crypto.createHash("md5").update((new Date).toISOString()).digest("hex");$result$$.local.rspassword=$result$$.generateHash($result$$.email+$newpassword$$);
47
- $result$$.save(function($error$jscomp$1$$){if($error$jscomp$1$$)return $res$$.status(400).send($error$jscomp$1$$);log.create({id_app:"RESETPASSWORD",id_func:"RESETPASSWORD",action:"RESETPASSWORD"},$result$$.email,$req$$.header("user-agent"),$req$$);loadTemplate("reset mat khau.html",{receiver_name:$result$$.name,email:$result$$.email,password:$newpassword$$},function($error$jscomp$0$$,$html$$){if($error$jscomp$0$$)return console.log($error$jscomp$0$$);$result$$.email&&validator.isEmail($result$$.email)&&
48
- email.sendHtml({to:{name:$result$$.name,address:$result$$.email},subject:"\u0110\u1ed5i m\u1eadt kh\u1ea9u",html:$html$$},function($error$$){$error$$&&console.error("Khong the gui thong tin tai khoan cho nguoi su dung\n"+$error$$)});$result$$.email2&&validator.isEmail($result$$.email2)&&email.sendHtml({to:{name:$result$$.name,address:$result$$.email2},subject:"\u0110\u1ed5i m\u1eadt kh\u1ea9u",html:$html$$},function($error$$){$error$$&&console.error("Khong the gui thong tin tai khoan cho nguoi su dung\n"+
49
- $error$$)})});$res$$.send("M\u1eadt kh\u1ea9u c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u1ed5i th\u00e0nh c\u00f4ng. Ki\u1ec3m tra email \u0111\u1ec3 l\u1ea5y m\u1eadt kh\u1ea9u m\u1edbi, sau \u0111\u00f3 b\u1ea1n n\u00ean \u0111\u1ed5i m\u1eadt kh\u1ea9u n\u00e0y")})})})};
28
+ Math.roundBy((9E5-$err$jscomp$3_time_wait$$)/6E4,0)+" ph\u00fat"});$next$$()})})}},function($req$$,$res$$,$next$$){$passport$$.authenticate("basic",{session:!1},function($err$$,$user$$){if($err$$||!$user$$)return $res$$.status(401).send({message:$err$$||"Unauthorized"});if(configs.require_verify&&!$user$$.local.active)return $res$$.status(401).send({require_verify:!0});$req$$.user=$user$$;$next$$()})($req$$,$res$$,$next$$)},async($req$$,$res$$)=>{let $agent$$=$req$$.headers["user-agent"];$req$$.headers.cookie?
29
+ ($group_group_id_session$jscomp$1_session_created$$=$req$$.session,$group_group_id_session$jscomp$1_session_created$$[$req$$.t_session]=0,$group_group_id_session$jscomp$1_session_created$$[$req$$.d_session]=""):(global.clientRedis.set($req$$.t_session,0),global.clientRedis.set($req$$.d_session,""));log.create({id_app:"LOGIN",id_func:"LOGIN",action:"LOCALLOGIN"},$req$$.user.email,$req$$.header("user-agent"),$req$$);let $user$$=$req$$.user;if($req$$.query.id_app&&global.mongoose.Types.ObjectId.isValid($req$$.query.id_app)){const $id_app$$=
30
+ $req$$.query.id_app;$group_group_id_session$jscomp$1_session_created$$=$req$$.query.group_id&&global.mongoose.Types.ObjectId.isValid($req$$.query.group_id)?$req$$.query.group_id:void 0;const $app$$=await App.findById($id_app$$),$query_group$$={id_app:$id_app$$,is_customer_group:!0};$group_group_id_session$jscomp$1_session_created$$?$query_group$$._id=$group_group_id_session$jscomp$1_session_created$$:$query_group$$.default_group=!0;$group_group_id_session$jscomp$1_session_created$$=await UserGroup.findOne($query_group$$).lean();
31
+ $app$$&&$group_group_id_session$jscomp$1_session_created$$&&($group_group_id_session$jscomp$1_session_created$$=$group_group_id_session$jscomp$1_session_created$$._id.toString(),Participant.createParticipant({id_app:$id_app$$,email:$user$$.email,name:$user$$.name,group_id:$group_group_id_session$jscomp$1_session_created$$,active:!0},async $cust$jscomp$1_e$$=>{if($cust$jscomp$1_e$$)return console.log("can't add user",$user$$.email,"to company",$app$$.name);$cust$jscomp$1_e$$={ten_kh:$user$$.name||
32
+ $user$$.email,email:$user$$.email,id_app:$id_app$$,user_created:$user$$.email,user_updated:$user$$.email,kh_yn:!0,of_user:$user$$.email};validator.isMobilePhone($user$$.email,["vi-VN"])&&($cust$jscomp$1_e$$.dien_thoai=$user$$.email);try{await Customer.asyncCreateCustomer($cust$jscomp$1_e$$)}catch($e$$){console.error("Auto create new customer with error:",$e$$.message)}}))}const $accessToken$$=generateToken($user$$);var $group_group_id_session$jscomp$1_session_created$$=($req$$.cookies||{}).uid;$group_group_id_session$jscomp$1_session_created$$&&
33
+ User.updateOne({email:$user$$.email,session_created:null},{session_created:$group_group_id_session$jscomp$1_session_created$$});(new Token({email:$user$$.email,session_created:$group_group_id_session$jscomp$1_session_created$$,token:$accessToken$$,agent:$agent$$,ip:"",once:1==$req$$.query.once||"true"==$req$$.query.once||"1"===$req$$.query.once?!0:!1})).save(function($e$$,$rs$$){if($e$$)return $res$$.status(500).send($e$$);$res$$.send({token:$accessToken$$,once:$rs$$.once})})});$app$jscomp$0$$.get("/check-user/:email",
34
+ $rateLimiter$$,function($req$$,$res$$){const $email$$=$req$$.params.email;User.findOne({$or:[{email:$email$$},{"local.phone":$email$$}]},{email:1,name:1,picture:1}).lean().exec(function($e$$,$user$$){if($e$$||!$user$$)return $res$$.status(400).send($e$$||`T\u00e0i kho\u1ea3n ${$email$$} kh\u00f4ng t\u1ed3n t\u1ea1i`);$res$$.send($user$$)})});$app$jscomp$0$$.post("/signup",$rateLimiter$$,async($req$$,$res$$)=>{let $body$$=$req$$.body;$body$$.json&&($body$$=JSON.parse($body$$.json));if(!$body$$)return $res$$.status(400).send({error:"Kh\u00f4ng c\u00f3 n\u1ed9i dung"});
35
+ if($body$$.id_app&&!global.mongoose.Types.ObjectId.isValid($body$$.id_app))return $res$$.status(400).send("id_app kh\u00f4ng h\u1ee3p l\u1ec7");if(configs.GOOGLE_RECAPTCHA_SECRET_KEY){var $app$$=$body$$["g-recaptcha-response"]||$req$$.query["g-recaptcha-response"];if(!$app$$)return $res$$.status(400).send("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u m\u1ed9t google recaptcha token");try{await permission.verifyReCaptcha($app$$)}catch($e$$){return $res$$.status(400).send($e$$.message||$e$$.error||
36
+ $e$$)}}let $session_created$$=($req$$.cookies||{}).uid;if($session_created$$&&$body$$.id_app){$app$$=await App.findById($body$$.id_app);if(!$app$$)return $res$$.status(400).send({error:"C\u00f4ng ty kh\u00f4ng t\u1ed3n t\u1ea1i"});if($app$$.options&&$app$$.options.one_account_per_device&&await Participant.findOne({session_created:$session_created$$,id_app:$body$$.id_app}).lean())return $res$$.status(400).send({error:"M\u1ed7i thi\u1ebft b\u1ecb ch\u1ec9 \u0111\u01b0\u1ee3c t\u1ea1o m\u1ed9t t\u00e0i kho\u1ea3n"})}if(!$body$$.email)return $res$$.status(400).send({error:"B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n"});
37
+ $body$$.email=$body$$.email.trim().toLowerCase();if(!validator.isEmail($body$$.email)&&!validator.isMobilePhone($body$$.email,["vi-VN"]))return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n \u0111\u0103ng nh\u1eadp ph\u1ea3i l\u00e0 1 \u0111\u1ecba ch\u1ec9 email ho\u1eb7c 1 s\u1ed1 \u0111i\u1ec7n tho\u1ea1i di \u0111\u1ed9ng"});if(!$body$$.name)return $res$$.status(400).send({error:"H\u1ecd v\u00e0 t\u00ean ch\u01b0a nh\u1eadp"});if($body$$.introduce_code&&$body$$.id_app&&!await global.getModel("introducecode").findOne({id_app:$body$$.id_app,
38
+ status:!0,introduce_code:$body$$.introduce_code}).lean())return $res$$.status(400).send({error:"M\u00e3 gi\u1edbi thi\u1ec7u kh\u00f4ng h\u1ee3p l\u1ec7"});User.findOne({$or:[{email:$body$$.email},{"local.phone":$body$$.email}]},async function($error$jscomp$1$$,$result$$){if($error$jscomp$1$$)return $res$$.status(400).send($error$jscomp$1$$);if($result$$)if(!$result$$.local||configs.require_verify&&!$result$$.local.active||$result$$.local.email!=$body$$.email)$result$$.local||($result$$.local={});
39
+ else if($body$$.id_app)try{if(await global.getModel("participant").findOne({id_app:$body$$.id_app,email:$body$$.email}))return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n n\u00e0y \u0111\u00e3 t\u1ed3n t\u1ea1i"});await addUserToApp($result$$,$body$$,$session_created$$);return $res$$.send("T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd th\u00e0nh c\u00f4ng")}catch($e$$){return await global.getModel("participant").deleteOne({id_app:$body$$.id_app,
40
+ email:$body$$.email}),$res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$})}else return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd"});else $result$$=new User,$result$$.email=$body$$.email,$result$$.local={};$result$$.local.email=$body$$.email;$result$$.local.name=$body$$.name;$result$$.partner=$body$$.partner;$result$$.session_created=$session_created$$;$body$$.email2&&validator.isEmail($body$$.email2)&&($result$$.email2=
41
+ $body$$.email2);$result$$.name=$result$$.local.name;$body$$.picture?$result$$.local.picture=$body$$.picture:$result$$.local.picture||($result$$.local.picture="/images/avatar.jpg");let $password$$;if($body$$.password){if($body$$.rePassword!==$body$$.password)return $res$$.status(400).send({error:"M\u1eadt kh\u1ea9u x\u00e1c nh\u1eadn kh\u00f4ng ch\u00ednh x\u00e1c"});if(!User.teststrengthPassword($body$$.password))return $res$$.status(400).send({error:"M\u1eadt kh\u1ea9u ph\u1ea3i c\u00f3 \u00edt nh\u1ea5t 6 k\u00fd t\u1ef1 v\u00e0 bao g\u1ed3m \u00edt nh\u1ea5t m\u1ed9t ch\u1eef s\u1ed1, m\u1ed9t ch\u1eef hoa v\u00e0 m\u1ed9t ch\u1eef th\u01b0\u1eddng"});
42
+ $password$$=$body$$.password}else $password$$=_crypto.createHash("md5").update($result$$.email+(new Date).toISOString()).digest("hex");$result$$.local.password=$result$$.generateHash($result$$.email+$password$$);$result$$.save(async function($app$jscomp$4_error$$,$newUser$$){if($app$jscomp$4_error$$)return $res$$.status(400).send({error:"Kh\u00f4ng th\u1ec3 \u0111\u0103ng k\u00fd"});log.create({id_app:"SIGNUP",id_func:"SIGNUP",action:"SIGNUP"},$result$$.email,$req$$.header("user-agent"),$req$$);if($body$$.cty_name){$app$jscomp$4_error$$=
43
+ new App;$app$jscomp$4_error$$.user_created=$result$$.email;$app$jscomp$4_error$$.user_updated=$result$$.email;$app$jscomp$4_error$$.name=$body$$.cty_name;var $d$jscomp$1_now$$=new Date;$app$jscomp$4_error$$.ngay_dn=new Date($d$jscomp$1_now$$.getFullYear(),0,1);$app$jscomp$4_error$$.ngay_ks=new Date($d$jscomp$1_now$$.getFullYear()-1,12,0);$app$jscomp$4_error$$.nam_bd=$d$jscomp$1_now$$.getFullYear();$app$jscomp$4_error$$.ngay_ky1=new Date($d$jscomp$1_now$$.getFullYear(),0,1);$d$jscomp$1_now$$=new Date;
44
+ $d$jscomp$1_now$$.setMonth($d$jscomp$1_now$$.getMonth()+3);$app$jscomp$4_error$$.expire_date=new Date($d$jscomp$1_now$$);$app$jscomp$4_error$$.save(function($error$jscomp$0$$,$obj$$){if($error$jscomp$0$$)return console.log("Khong tao duoc new app: "+$error$jscomp$0$$);require("../libs/initDatabase").init($obj$$._id,function($error$$){$error$$&&console.log("Can't init database \n"+$error$$)})})}try{await addUserToApp($newUser$$,$body$$,$session_created$$)}catch($e$$){return await global.getModel("participant").deleteOne({id_app:$body$$.id_app,
45
+ email:$body$$.email}),await User.deleteOne({email:$body$$.email}),$res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$})}validator.isEmail($body$$.email)&&!$body$$.password?(loadTemplate("thong tin dang nhap.html",{email:$result$$.email,password:$password$$,receiver_name:$body$$.name},function($error$jscomp$0$$,$html$$){if($error$jscomp$0$$)return console.log($error$jscomp$0$$);email.sendHtml({to:{name:$result$$.name,address:$result$$.email},subject:"Th\u00f4ng tin t\u00e0i kho\u1ea3n",html:$html$$},
46
+ function($error$$){$error$$&&console.error("Khong the gui email thon tin tai khoan cho nguoi dung\n"+$error$$)})}),$res$$.send("T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o. Ki\u1ec3m tra email \u0111\u1ec3 l\u1ea5y th\u00f4ng tin \u0111\u0103ng nh\u1eadp")):$res$$.send("T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o")})})});$app$jscomp$0$$.get("/resetpassword",$rateLimiter$$,async($req$$,$res$$)=>{if(configs.GOOGLE_RECAPTCHA_SECRET_KEY)try{await permission.verifyReCaptcha($req$$.query["g-recaptcha-response"])}catch($e$$){return $res$$.status(400).send($e$$.message||
47
+ $e$$.error||$e$$)}let $address$$=$req$$.query.email;if(!$address$$)return $res$$.status(400).send("Y\u00eau c\u1ea7u m\u1ed9t \u0111\u1ecba ch\u1ec9 email ho\u1eb7c s\u1ed1 \u0111i\u1ec7n tho\u1ea1i");$address$$=$address$$.toLowerCase();User.findOne({$or:[{"local.email":$address$$},{email:$address$$},{email2:$address$$}]},function($error$jscomp$2$$,$result$$){if($error$jscomp$2$$)return $res$$.status(400).send($error$jscomp$2$$);if(!$result$$)return $res$$.status(400).send(`T\u00e0i kho\u1ea3n ${$address$$} ch\u01b0a \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd`);
48
+ let $newpassword$$=_crypto.createHash("md5").update((new Date).toISOString()).digest("hex");$result$$.local.rspassword=$result$$.generateHash($result$$.email+$newpassword$$);$result$$.save(function($error$jscomp$1$$){if($error$jscomp$1$$)return $res$$.status(400).send($error$jscomp$1$$);loadTemplate("reset mat khau.html",{receiver_name:$result$$.name,email:$result$$.email,password:$newpassword$$},function($error$jscomp$0$$,$html$$){if($error$jscomp$0$$)return $res$$.status(400).send($error$jscomp$0$$);
49
+ $result$$.email&&validator.isEmail($result$$.email)&&email.sendHtml({to:{name:$result$$.name,address:$result$$.email},subject:"\u0110\u1ed5i m\u1eadt kh\u1ea9u",html:$html$$},function($error$$){$error$$?console.error("Khong the gui thong tin tai khoan cho nguoi su dung\n"+$error$$):console.log("send new password to",$result$$.email)});$result$$.email2&&validator.isEmail($result$$.email2)&&email.sendHtml({to:{name:$result$$.name,address:$result$$.email2},subject:"\u0110\u1ed5i m\u1eadt kh\u1ea9u",
50
+ html:$html$$},function($error$$){$error$$?console.error("Khong the gui thong tin tai khoan cho nguoi su dung\n"+$error$$):console.log("send new password to",$result$$.email)});log.create({id_app:"RESETPASSWORD",id_func:"RESETPASSWORD",action:"RESETPASSWORD"},$result$$.email,$req$$.header("user-agent"),$req$$);$res$$.send("M\u1eadt kh\u1ea9u c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u1ed5i th\u00e0nh c\u00f4ng. Ki\u1ec3m tra email \u0111\u1ec3 l\u1ea5y m\u1eadt kh\u1ea9u m\u1edbi, sau \u0111\u00f3 b\u1ea1n n\u00ean \u0111\u1ed5i m\u1eadt kh\u1ea9u n\u00e0y")})})})})};
package/server/cluster.js CHANGED
@@ -3,17 +3,18 @@ const express=require("express"),bodyParser=require("body-parser"),passport=requ
3
3
  start_report_pool:!0,useAgenda:!0,createRedisCache:!0}){const $configs$$=global.configs={...defaultConfigs,...$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$,cluster:0!=$options$$.cluster};$configs$$.admins||($configs$$.admins=$configs$$.adminUsers.map($u$$=>$u$$.email));$configs$$.supportUsers||($configs$$.supportUsers=[...$configs$$.admins]);$configs$$.public_token||($configs$$.public_token="flex.public.token");global.port=$_port_accessLogStream_rfs$$;$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=
4
4
  require($configs$$.paths.menu||"./menu").getModules();global.modulesInMenu={};Object.values($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$).forEach(function($module$$){global.modulesInMenu[$module$$.name]=$module$$});require("moment-timezone").tz.setDefault($configs$$.timezone||"Asia/Ho_Chi_Minh");$app$$||($app$$=express());$app$$.set("trust proxy",1);const $toobusy$$=require("toobusy-js");$configs$$.maxLag&&$toobusy$$.maxLag($configs$$.maxLag);$toobusy$$.onLag(function($currentLag$$){console.log("Event loop lag detected! Latency: "+
5
5
  $currentLag$$+"ms")});$app$$.use(function($req$$,$res$$,$next$$){$toobusy$$()?(console.error("Server is busy right now"),$res$$.status(503).send({error:"Server is busy right now, sorry."})):$next$$()});$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("express-session");$app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$({secret:"QV098PVT123456HLBN",resave:!1,saveUninitialized:!0,cookie:{secure:!1}}));$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=
6
- require("cookie-parser");$app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$());$app$$.use(function($req$$,$res$$,$next$$){let $uid$$=$req$$.cookies.uid;$uid$$||($uid$$="uid:"+crypto.randomBytes(20).toString("hex"),$res$$.cookie("uid",$uid$$,{expires:new Date(Date.now()+31536E6),sameSite:"none",secure:!0}),$req$$.cookies.uid=$uid$$);$next$$()});$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("compression");
7
- $app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$());$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=$configs$$.paths.uploads||__dirname+"/uploads";$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("multer")({dest:$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$,limits:{fileSize:$configs$$.limitFileSize||1048576}});$app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$);
8
- $app$$.use(cors({credentials:!0,exposedHeaders:["set-cookie"],origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||($configs$$.paths={});$app$$.use("/",express.static($configs$$.paths.public||__dirname+"/public"));$app$$.use("/admin",express.static($configs$$.paths.admin||__dirname+"/admin"));$app$$.use("/templates",express.static($configs$$.paths.templates||__dirname+"/templates"));$app$$.use("/images",express.static($configs$$.paths.images||__dirname+"/images"));$app$$.use(bodyParser.json({limit:$configs$$.limitRequestSize||
9
- "1mb"}));$app$$.use(bodyParser.urlencoded({limit:$configs$$.limitRequestSize||"1mb",extended:!0}));$app$$.use(passport.initialize());$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("morgan");$_port_accessLogStream_rfs$$=require("rotating-file-stream");const $logDirectory$$=$configs$$.paths.log||__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);$_port_accessLogStream_rfs$$=$_port_accessLogStream_rfs$$("access-cluster.log",
10
- {interval:"1d",path:$logDirectory$$});$app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$("combined",{stream:$_port_accessLogStream_rfs$$,skip:function($req$$,$res$$){return 400>$res$$.statusCode}}));$app$$.use(function($err$$,$req$$,$res$$,$next$$){console.error($err$$.stack);$res$$.status(500).send("Server error!")});global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(async $clientMongo_redis$$=>{console.log("Connected to Database");
11
- global.clientMongo=$clientMongo_redis$$;$clientMongo_redis$$=require("redis");global.clientRedis=$clientMongo_redis$$.createClient({enable_offline_queue:!1});global.clientRedis.on("connect",async function(){console.log("redis connected");0!=$options$$.createRedisCache&&require("./libs/redis-cache").set();var $Agenda_Mailmanagement_StaticPool_StaticPool$$=require("./libs/mailmanagement");global.mailmanagement=new $Agenda_Mailmanagement_StaticPool_StaticPool$$;!1!==$options$$.useAgenda&&($Agenda_Mailmanagement_StaticPool_StaticPool$$=
12
- require("agenda"),global.agenda=new $Agenda_Mailmanagement_StaticPool_StaticPool$$({db:{address:$configs$$.database.url}}),require("./libs/schedule").define(),await global.agenda.start());global.getModel("schedule").start();require("./route")($app$$);$Agenda_Mailmanagement_StaticPool_StaticPool$$=$configs$$.use_ssl?https.createServer(sslConfig($sslDir$$),$app$$):http.createServer($app$$);$Agenda_Mailmanagement_StaticPool_StaticPool$$.timeout=6E5;global.getModel("user").initSocket($Agenda_Mailmanagement_StaticPool_StaticPool$$);
13
- if(!1!==$options$$.cluster){if(!require("sticky-session").listen($Agenda_Mailmanagement_StaticPool_StaticPool$$,global.port))$Agenda_Mailmanagement_StaticPool_StaticPool$$.once("listening",function(){console.log("server cluster started on",global.port)});$Agenda_Mailmanagement_StaticPool_StaticPool$$=require("cluster");$Agenda_Mailmanagement_StaticPool_StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$Agenda_Mailmanagement_StaticPool_StaticPool$$.on("online",
14
- function($worker$$){console.info("worker "+$worker$$.process.pid+" is online");global.clientRedis.set("lastworker",JSON.stringify({pid:$worker$$.process.pid}))})}else $Agenda_Mailmanagement_StaticPool_StaticPool$$.listen(global.port,()=>{console.log("server start at "+global.port+" port")});$options$$.start_import_data_pool&&($Agenda_Mailmanagement_StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $Agenda_Mailmanagement_StaticPool_StaticPool$$(__dirname+"/workers/inputWorker.js"),
15
- global.importDataMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.log("load import data pool")}));$options$$.start_report_pool&&($Agenda_Mailmanagement_StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $Agenda_Mailmanagement_StaticPool_StaticPool$$(__dirname+"/workers/reportWorker.js"),global.reportMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.log("load report pool")}))})}).catch($err$$=>{console.error("Not Connected to Database ERROR!",
16
- $err$$)})};process.on("uncaughtException",function($err$jscomp$2_error$$){console.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$2_error$$.message);console.error($err$jscomp$2_error$$.stack);$err$jscomp$2_error$$=`
6
+ require("cookie-parser");$app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$());$app$$.use(function($req$$,$res$$,$next$$){let $uid$$=$req$$.cookies.uid;$uid$$||($uid$$=$req$$.headers.uid);$uid$$||($uid$$="uid:"+crypto.randomBytes(20).toString("hex"),$res$$.cookie("uid",$uid$$,{expires:new Date(Date.now()+31536E6),sameSite:"none",secure:!0}));$res$$.set("uid",$uid$$);$req$$.cookies.uid=$uid$$;$next$$()});$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=
7
+ require("compression");$app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$());$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=$configs$$.paths.uploads||__dirname+"/uploads";const $limitFileSize$$=$configs$$.limitFileSize||1048576;$app$$.use(function($req$jscomp$2_size$$,$res$$,$next$$){if(($req$jscomp$2_size$$=$req$jscomp$2_size$$.headers["content-lenght"])&&$req$jscomp$2_size$$>$limitFileSize$$)return $res$$.status(400).send({error:"File too large"});
8
+ $next$$()});$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("multer")({dest:$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$,limits:{files:1,fileSize:$limitFileSize$$}});$app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$);$app$$.use(cors({credentials:!0,exposedHeaders:["set-cookie","uid"],origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||
9
+ ($configs$$.paths={});$app$$.use("/",express.static($configs$$.paths.public||__dirname+"/public"));$app$$.use("/admin",express.static($configs$$.paths.admin||__dirname+"/admin"));$app$$.use("/templates",express.static($configs$$.paths.templates||__dirname+"/templates"));$app$$.use("/images",express.static($configs$$.paths.images||__dirname+"/images"));$app$$.use(bodyParser.json({limit:$configs$$.limitRequestSize||"1mb"}));$app$$.use(bodyParser.urlencoded({limit:$configs$$.limitRequestSize||"1mb",
10
+ extended:!0}));$app$$.use(passport.initialize());$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("morgan");$_port_accessLogStream_rfs$$=require("rotating-file-stream");const $logDirectory$$=$configs$$.paths.log||__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);$_port_accessLogStream_rfs$$=$_port_accessLogStream_rfs$$("access-cluster.log",{interval:"1d",path:$logDirectory$$});$app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$("combined",
11
+ {stream:$_port_accessLogStream_rfs$$,skip:function($req$$,$res$$){return 400>$res$$.statusCode}}));$app$$.use(function($err$$,$req$$,$res$$,$next$$){console.error($err$$.stack);$res$$.status(500).send("Server error!")});global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(async $clientMongo_redis$$=>{console.log("Connected to Database");global.clientMongo=$clientMongo_redis$$;$clientMongo_redis$$=require("redis");global.clientRedis=$clientMongo_redis$$.createClient({enable_offline_queue:!1});
12
+ global.clientRedis.on("connect",async function(){console.log("redis connected");0!=$options$$.createRedisCache&&require("./libs/redis-cache").set();var $Agenda_Mailmanagement_StaticPool_StaticPool$$=require("./libs/mailmanagement");global.mailmanagement=new $Agenda_Mailmanagement_StaticPool_StaticPool$$;!1!==$options$$.useAgenda&&($Agenda_Mailmanagement_StaticPool_StaticPool$$=require("agenda"),global.agenda=new $Agenda_Mailmanagement_StaticPool_StaticPool$$({db:{address:$configs$$.database.url}}),
13
+ require("./libs/schedule").define(),await global.agenda.start());global.getModel("schedule").start();require("./route")($app$$);$Agenda_Mailmanagement_StaticPool_StaticPool$$=$configs$$.use_ssl?https.createServer(sslConfig($sslDir$$),$app$$):http.createServer($app$$);$Agenda_Mailmanagement_StaticPool_StaticPool$$.timeout=6E5;global.getModel("user").initSocket($Agenda_Mailmanagement_StaticPool_StaticPool$$);if(!1!==$options$$.cluster){if(!require("sticky-session").listen($Agenda_Mailmanagement_StaticPool_StaticPool$$,
14
+ global.port))$Agenda_Mailmanagement_StaticPool_StaticPool$$.once("listening",function(){console.log("server cluster started on",global.port)});$Agenda_Mailmanagement_StaticPool_StaticPool$$=require("cluster");$Agenda_Mailmanagement_StaticPool_StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$Agenda_Mailmanagement_StaticPool_StaticPool$$.on("online",function($worker$$){console.info("worker "+$worker$$.process.pid+
15
+ " is online");global.clientRedis.set("lastworker",JSON.stringify({pid:$worker$$.process.pid}))})}else $Agenda_Mailmanagement_StaticPool_StaticPool$$.listen(global.port,()=>{console.log("server start at "+global.port+" port")});$options$$.start_import_data_pool&&($Agenda_Mailmanagement_StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $Agenda_Mailmanagement_StaticPool_StaticPool$$(__dirname+"/workers/inputWorker.js"),global.importDataMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},
16
+ ()=>{console.log("load import data pool")}));$options$$.start_report_pool&&($Agenda_Mailmanagement_StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $Agenda_Mailmanagement_StaticPool_StaticPool$$(__dirname+"/workers/reportWorker.js"),global.reportMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.log("load report pool")}))})}).catch($err$$=>{console.error("Not Connected to Database ERROR!",$err$$)})};
17
+ process.on("uncaughtException",function($err$jscomp$2_error$$){console.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$2_error$$.message);console.error($err$jscomp$2_error$$.stack);$err$jscomp$2_error$$=`
17
18
  Error: ${$err$jscomp$2_error$$.message}
18
19
  Stack: ${$err$jscomp$2_error$$.stack}
19
20
  `;try{const $logDirectory$$=__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);fs.writeFile(`${$logDirectory$$}/error-${(new Date).getTime()}.txt`,$err$jscomp$2_error$$,()=>{console.log("wrote log error")})}catch($e$$){console.log($e$$)}process.exit(1)});module.exports=clusterServer;