Built motion from commit (unavailable).|2.5.21
[motion2.git] / server / config / license / util.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x2332=['user','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','moment','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','find','defaults','then','catch','uuid','data1','isEmpty','data2','split','format','%s:%s:%s','parse','demo','machineUuid','gray','deadline','add','days','grayReason','disabled','message','User','findAll','role','count','admin','telephone','telephones','forEach','pick'];(function(_0x101a01,_0x18bd83){var _0x538e92=function(_0x3ed902){while(--_0x3ed902){_0x101a01['push'](_0x101a01['shift']());}};_0x538e92(++_0x18bd83);}(_0x2332,0x187));var _0x2233=function(_0x1a7f5b,_0x2821e9){_0x1a7f5b=_0x1a7f5b-0x0;var _0x464a32=_0x2332[_0x1a7f5b];return _0x464a32;};'use strict';var util=require(_0x2233('0x0'));var _=require(_0x2233('0x1'));var moment=require(_0x2233('0x2'));var BPromise=require('bluebird');var hardware=require(_0x2233('0x3'));var encryptor=require(_0x2233('0x4'));var db=require(_0x2233('0x5'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x2233('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x2233('0x7'),'machineUuid':hardware[_0x2233('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x2233('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':'Breaking\x20license','machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x13f6ac){return new BPromise(function(_0x5afa13,_0x5d2c7d){return db['License'][_0x2233('0x9')](_[_0x2233('0xa')](_0x13f6ac,{'raw':!![],'where':{'id':0x1}}))[_0x2233('0xb')](function(_0x4cfa1f){return checkLicense(_0x4cfa1f,null);})['then'](function(_0x206478){_0x5afa13(_0x206478);return;})[_0x2233('0xc')](function(_0x7fc3d0){_0x5d2c7d(_0x7fc3d0);});});}function checkLicense(_0x588874,_0x1536e5){if(!_0x588874){demoLicense[_0x2233('0xd')]=_0x588874[_0x2233('0xe')];return demoLicense;}try{var _0x3dd602=_0x1536e5||_0x588874['license'];if(_[_0x2233('0xf')](_0x3dd602)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0xd98bd3=_0x588874[_0x2233('0xe')];var _0x430a21=_0x588874[_0x2233('0x10')];var _0x341fce=_0xd98bd3['split']('-')[0x4];var _0x195097=_0xd98bd3[_0x2233('0x11')]('-')[0x0];var _0x576fa5=encryptor['decryptString'](_0x3dd602,util[_0x2233('0x12')](_0x2233('0x13'),_0x341fce,_0xd98bd3,_0x195097));var _0x20b189=JSON[_0x2233('0x14')](_0x576fa5);_0x20b189[_0x2233('0x15')]=![];_0x20b189['uuid']=_0xd98bd3;_0x20b189[_0x2233('0x16')]=hardware[_0x2233('0x8')]();if(_0x430a21){var _0x5e86ac=encryptor['decryptString'](_0x430a21);_0x20b189[_0x2233('0x17')]=_0x5e86ac;_0x20b189[_0x2233('0x18')]=moment(_0x5e86ac)[_0x2233('0x19')](0x7,_0x2233('0x1a'))[_0x2233('0x12')]();_0x20b189[_0x2233('0x1b')]=_0x20b189[_0x2233('0xd')]!=_0x20b189['machineUuid']?'changed':_0x2233('0x1c');}return _0x20b189;}catch(_0x54c7b7){breakingLicense[_0x2233('0xd')]=_0x588874[_0x2233('0xe')];breakingLicense[_0x2233('0x1d')]=_0x54c7b7['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x11114d,_0x300a6e){getLicense()[_0x2233('0xb')](function(_0x4400e5){return db[_0x2233('0x1e')][_0x2233('0x1f')]({'attributes':[_0x2233('0x20'),[db['sequelize']['fn']('COUNT',db['sequelize']['col'](_0x2233('0x20'))),_0x2233('0x21')]],'group':'role','where':{'role':{'$or':[_0x2233('0x22'),'user',_0x2233('0x23')]}},'raw':!![]})[_0x2233('0xb')](function(_0x187fd8){var _0x5b1bdf={'user':_0x4400e5['users']||0x0,'telephone':_0x4400e5[_0x2233('0x24')]||0x0};_0x187fd8[_0x2233('0x25')](function(_0x2e6da0){var _0x5de5cc=_0x2e6da0[_0x2233('0x20')]===_0x2233('0x22')?'user':_0x2e6da0['role'];_0x5b1bdf[_0x5de5cc]-=_0x2e6da0[_0x2233('0x21')];if(_0x5b1bdf[_0x5de5cc]<0x0)_0x5b1bdf[_0x5de5cc]=0x0;});_0x11114d(_0x5b1bdf);return;});})[_0x2233('0xc')](function(_0x29e05b){_0x300a6e(_0x29e05b);});});}function checkUserLimits(_0x39f455){return new BPromise(function(_0x1ede07,_0x43aade){getLimits()[_0x2233('0xb')](function(_0x5a201b){var _0x51b964=_[_0x2233('0x26')](_['countBy'](_0x39f455,_0x2233('0x20')),[_0x2233('0x22'),_0x2233('0x27'),_0x2233('0x23')]);var _0x43d7df=(_0x51b964['admin']||0x0)+(_0x51b964[_0x2233('0x27')]||0x0);var _0x29c7d3=_0x51b964[_0x2233('0x23')]||0x0;if(_0x43d7df>_0x5a201b[_0x2233('0x27')])return _0x43aade(_0x2233('0x28'));if(_0x29c7d3>_0x5a201b['telephone'])return _0x43aade(_0x2233('0x29'));return _0x1ede07();})[_0x2233('0xc')](function(_0x426577){_0x43aade(_0x426577);});});}module[_0x2233('0x2a')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};