Built motion from commit 67e5df37.|2.0.68
[motion2.git] / server / config / license / index.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 _0x0295=['format','YYYY-MM-DD\x20HH:mm','GREY\x20PERIOD\x20START\x20AT\x20%s','error','message','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','version','../../mysqldb','../environment','./hardware','../logger','license','www.xcallymotion.com','/api/servers/%s/check?version=%s','application/json','request','setEncoding','data','parse','createCipher','aes-256-ctr','secrets','session','update','utf8','base64','final','createDecipher','then','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','data2','GREY\x20PERIOD\x20STARTED\x20AT\x20%s','data1','days'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x0295,0x1f0));var _0x5029=function(_0x12fcbd,_0x884804){_0x12fcbd=_0x12fcbd-0x0;var _0x28ec2a=_0x0295[_0x12fcbd];return _0x28ec2a;};'use strict';var util=require(_0x5029('0x0'));var https=require('https');var crypto=require('crypto');var moment=require(_0x5029('0x1'));var BPromise=require('bluebird');var pkginfo=require('pkginfo')(module,_0x5029('0x2'));var db=require(_0x5029('0x3'))['db'];var config=require(_0x5029('0x4'));var hardware=require(_0x5029('0x5'));var logger=require(_0x5029('0x6'))(_0x5029('0x7'));var HOST=_0x5029('0x8');var TIME=0x3c*0x3e8;var DAYS=0x7;var GREY_PERIOD=![];var LICENCE_ACTIVE=![];function httpRequest(_0x215955){return new BPromise(function(_0x5b3cd,_0x502a62){var _0x54978f={'host':HOST,'port':0x1bb,'path':util['format'](_0x5029('0x9'),_0x215955,module['exports'][_0x5029('0x2')]),'method':'GET','headers':{'Content-Type':_0x5029('0xa')}};var _0x520bc3=https[_0x5029('0xb')](_0x54978f,function(_0x22cfb4){_0x22cfb4[_0x5029('0xc')]('utf8');var _0x3f4c48='';_0x22cfb4['on'](_0x5029('0xd'),function(_0x3fe6d1){_0x3f4c48+=_0x3fe6d1;});_0x22cfb4['on']('end',function(){try{_0x5b3cd(JSON[_0x5029('0xe')](_0x3f4c48));}catch(_0x2442b2){_0x502a62(_0x2442b2);}});});_0x520bc3['on']('error',_0x502a62);_0x520bc3['end']();});}function encryptDate(_0x49f836){var _0x4aebb6=crypto[_0x5029('0xf')](_0x5029('0x10'),config[_0x5029('0x11')][_0x5029('0x12')]);var _0x2c0b33=_0x4aebb6[_0x5029('0x13')](_0x49f836,_0x5029('0x14'),_0x5029('0x15'));_0x2c0b33+=_0x4aebb6[_0x5029('0x16')](_0x5029('0x15'));return _0x2c0b33;}function decryptDate(_0x457c73){var _0x353cba=crypto[_0x5029('0x17')](_0x5029('0x10'),config[_0x5029('0x11')]['session']);var _0x1ed567=_0x353cba[_0x5029('0x13')](_0x457c73,_0x5029('0x15'),_0x5029('0x14'));_0x1ed567+=_0x353cba[_0x5029('0x16')](_0x5029('0x14'));return _0x1ed567;}function manageLicense(_0xaba461,_0x4adbb3){var _0x226a5c=_0x4adbb3['get']({'plain':!![]});httpRequest(_0xaba461)[_0x5029('0x18')](function(_0x8a414c){if(_0x8a414c[_0x5029('0x19')]){if(!LICENCE_ACTIVE){LICENCE_ACTIVE=!![];logger[_0x5029('0x1a')]('THE\x20LICENSE\x20HAS\x20BEEN\x20ACTIVED');}if(_0x226a5c['license']!=_0x8a414c[_0x5029('0x7')]){logger['info'](_0x5029('0x1b'));}return _0x4adbb3[_0x5029('0x13')]({'data1':_0xaba461,'data2':null,'license':_0x8a414c[_0x5029('0x7')]});}else{if(_0x226a5c[_0x5029('0x1c')]&&!GREY_PERIOD){GREY_PERIOD=!![];logger[_0x5029('0x1a')](_0x5029('0x1d'),decryptDate(_0x226a5c[_0x5029('0x1c')]));}if(LICENCE_ACTIVE&&_0x226a5c[_0x5029('0x1e')]==_0xaba461){logger[_0x5029('0x1a')]('THE\x20LICENSE\x20HAS\x20BEEN\x20DEACTIVATED');}LICENCE_ACTIVE=![];if(_0x226a5c['data2']){if(moment()['diff'](decryptDate(_0x226a5c[_0x5029('0x1c')]),_0x5029('0x1f'))>DAYS){logger['info']('DEMO\x20START\x20AT\x20%s',moment()[_0x5029('0x20')](_0x5029('0x21')));return _0x4adbb3[_0x5029('0x13')]({'data1':_0xaba461,'data2':null,'license':null});}}else if(_0x226a5c['license']){if(_0x226a5c[_0x5029('0x1e')]!==_0xaba461){logger[_0x5029('0x1a')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x226a5c[_0x5029('0x1e')],_0xaba461);}GREY_PERIOD=!![];logger[_0x5029('0x1a')](_0x5029('0x22'),moment()['format'](_0x5029('0x21')));return _0x4adbb3[_0x5029('0x13')]({'data2':encryptDate(moment()[_0x5029('0x20')]('YYYY-MM-DD\x20HH:mm'))});}}return _0x4adbb3;})[_0x5029('0x18')](function(_0x2bb398){_0x4adbb3=_0x2bb398;})['catch'](function(_0x1d79b9){logger[_0x5029('0x23')](_0x1d79b9[_0x5029('0x24')]);})[_0x5029('0x25')](function(){setTimeout(function(){manageLicense(hardware[_0x5029('0x26')](),_0x4adbb3);},TIME);});}function defaultLicense(){var _0x2a1ed6=hardware[_0x5029('0x26')]();if(_0x2a1ed6){return db[_0x5029('0x27')][_0x5029('0x28')]({'where':{'id':0x1},'defaults':{'data1':_0x2a1ed6}})[_0x5029('0x29')](function(_0x358a2b,_0x4519c8){logger['info'](_0x5029('0x2a'),_0x2a1ed6);manageLicense(_0x2a1ed6,_0x358a2b);})['catch'](function(_0x31c621){logger['error'](_0x31c621['message']);});}}exports[_0x5029('0x2b')]=defaultLicense;