3d0e994d11bdb714822d0b3048359c84092ac72f
[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 _0x9872=['lodash','moment','./hardware','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then','catch','uuid','data1','data2','split','decryptString','demo','gray','deadline','add','days','grayReason','machineUuid','changed','disabled','message','User','role','sequelize','COUNT','col','count','admin','user','telephone','users','telephones','pick','License\x20limit\x20reached\x20for\x20users','exports','util'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x9872,0x12c));var _0x2987=function(_0x2a8a97,_0x415200){_0x2a8a97=_0x2a8a97-0x0;var _0x96d61c=_0x9872[_0x2a8a97];return _0x96d61c;};'use strict';var util=require(_0x2987('0x0'));var _=require(_0x2987('0x1'));var moment=require(_0x2987('0x2'));var BPromise=require('bluebird');var hardware=require(_0x2987('0x3'));var encryptor=require('../../components/encryptor');var db=require(_0x2987('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x2987('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x2987('0x6'),'machineUuid':hardware[_0x2987('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x2987('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x2987('0x8'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x96c299){return new BPromise(function(_0xae04c,_0x576328){return db[_0x2987('0x9')][_0x2987('0xa')](_[_0x2987('0xb')](_0x96c299,{'raw':!![],'where':{'id':0x1}}))[_0x2987('0xc')](function(_0x2b3921){return checkLicense(_0x2b3921,null);})['then'](function(_0x17d9be){_0xae04c(_0x17d9be);return;})[_0x2987('0xd')](function(_0x48c566){_0x576328(_0x48c566);});});}function checkLicense(_0x5ae0eb,_0x44181f){if(!_0x5ae0eb){demoLicense[_0x2987('0xe')]=_0x5ae0eb['data1'];return demoLicense;}try{var _0x148dbf=_0x44181f||_0x5ae0eb['license'];if(_['isEmpty'](_0x148dbf)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x2bbe66=_0x5ae0eb[_0x2987('0xf')];var _0x4092f3=_0x5ae0eb[_0x2987('0x10')];var _0x13d04c=_0x2bbe66[_0x2987('0x11')]('-')[0x4];var _0x4f5090=_0x2bbe66[_0x2987('0x11')]('-')[0x0];var _0x9250aa=encryptor[_0x2987('0x12')](_0x148dbf,util['format']('%s:%s:%s',_0x13d04c,_0x2bbe66,_0x4f5090));var _0x395363=JSON['parse'](_0x9250aa);_0x395363[_0x2987('0x13')]=![];_0x395363[_0x2987('0xe')]=_0x2bbe66;_0x395363['machineUuid']=hardware['getUuid']();if(_0x4092f3){var _0x258387=encryptor[_0x2987('0x12')](_0x4092f3);_0x395363[_0x2987('0x14')]=_0x258387;_0x395363[_0x2987('0x15')]=moment(_0x258387)[_0x2987('0x16')](0x7,_0x2987('0x17'))['format']();_0x395363[_0x2987('0x18')]=_0x395363[_0x2987('0xe')]!=_0x395363[_0x2987('0x19')]?_0x2987('0x1a'):_0x2987('0x1b');}return _0x395363;}catch(_0x1e81f0){breakingLicense[_0x2987('0xe')]=_0x5ae0eb['data1'];breakingLicense[_0x2987('0x1c')]=_0x1e81f0[_0x2987('0x1c')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x4a4cae,_0xada54a){getLicense()[_0x2987('0xc')](function(_0x3d7539){return db[_0x2987('0x1d')]['findAll']({'attributes':[_0x2987('0x1e'),[db[_0x2987('0x1f')]['fn'](_0x2987('0x20'),db['sequelize'][_0x2987('0x21')]('role')),_0x2987('0x22')]],'group':_0x2987('0x1e'),'where':{'role':{'$or':[_0x2987('0x23'),_0x2987('0x24'),_0x2987('0x25')]}},'raw':!![]})['then'](function(_0x39a773){var _0x2a79ad={'user':_0x3d7539[_0x2987('0x26')]||0x0,'telephone':_0x3d7539[_0x2987('0x27')]||0x0};_0x39a773['forEach'](function(_0x120513){var _0x2a3789=_0x120513[_0x2987('0x1e')]===_0x2987('0x23')?_0x2987('0x24'):_0x120513['role'];_0x2a79ad[_0x2a3789]-=_0x120513[_0x2987('0x22')];if(_0x2a79ad[_0x2a3789]<0x0)_0x2a79ad[_0x2a3789]=0x0;});_0x4a4cae(_0x2a79ad);return;});})['catch'](function(_0x186d0b){_0xada54a(_0x186d0b);});});}function checkUserLimits(_0x382cd1){return new BPromise(function(_0x2adde2,_0x5dfa8e){getLimits()[_0x2987('0xc')](function(_0x146021){var _0x5386d9=_[_0x2987('0x28')](_['countBy'](_0x382cd1,_0x2987('0x1e')),['admin',_0x2987('0x24'),_0x2987('0x25')]);var _0x38bca4=(_0x5386d9[_0x2987('0x23')]||0x0)+(_0x5386d9[_0x2987('0x24')]||0x0);var _0x592c26=_0x5386d9[_0x2987('0x25')]||0x0;if(_0x38bca4>_0x146021[_0x2987('0x24')])return _0x5dfa8e(_0x2987('0x29'));if(_0x592c26>_0x146021[_0x2987('0x25')])return _0x5dfa8e('License\x20limit\x20reached\x20for\x20telephones');return _0x2adde2();})[_0x2987('0xd')](function(_0x1073d1){_0x5dfa8e(_0x1073d1);});});}module[_0x2987('0x2a')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};