8251ae7c7d7256bf215daca1b2608112151eb1ce
[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 _0xd965=['active','license','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','encryptString','YYYY-MM-DD\x20HH:mm','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','error','message','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','moment','request-promise','bluebird','version','../../components/encryptor','./hardware','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','%s/api/servers/%s/check?version=%s&oldtoken=%s','exports','GET','then','catch','data1'];(function(_0x34bdf9,_0x2c1f33){var _0x4d9708=function(_0x5a613a){while(--_0x5a613a){_0x34bdf9['push'](_0x34bdf9['shift']());}};_0x4d9708(++_0x2c1f33);}(_0xd965,0xfb));var _0x5d96=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd965[_0x3dd15e];return _0x231fd0;};'use strict';var util=require('util');var moment=require(_0x5d96('0x0'));var rp=require(_0x5d96('0x1'));var BPromise=require(_0x5d96('0x2'));var pkginfo=require('pkginfo')(module,_0x5d96('0x3'));var db=require('../../mysqldb')['db'];var encryptor=require(_0x5d96('0x4'));var hardware=require(_0x5d96('0x5'));var logger=require('../logger')('license');var HOST=_0x5d96('0x6');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x46fc4c){return new BPromise(function(_0x5159a3,_0x371848){var _0x5a34ef=util[_0x5d96('0x7')](_0x5d96('0x8'),HOST,_0x46fc4c,module['exports'][_0x5d96('0x3')]);if(oldToken){_0x5a34ef=util[_0x5d96('0x7')](_0x5d96('0x9'),HOST,_0x46fc4c,module[_0x5d96('0xa')]['version'],oldToken);}var _0x24656a={'uri':_0x5a34ef,'method':_0x5d96('0xb'),'timeout':0xea60,'json':!![]};return rp(_0x24656a)[_0x5d96('0xc')](function(_0x2fa5a6){_0x5159a3(_0x2fa5a6);})[_0x5d96('0xd')](function(_0x547fb1){_0x371848(_0x547fb1);});});}function manageLicense(_0x53a277,_0xbcd8b0){var _0x4b5942=_0xbcd8b0['get']({'plain':!![]});if(!isOldTokenSent&&_0x4b5942[_0x5d96('0xe')]!==_0x53a277&&!_0x4b5942['data2']){oldToken=_0x4b5942[_0x5d96('0xe')];}httpRequest(_0x53a277)[_0x5d96('0xc')](function(_0x2da4a1){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x2da4a1[_0x5d96('0xf')]){isOldTokenSent=![];if(!_0x4b5942[_0x5d96('0x10')]&&_0x4b5942[_0x5d96('0x10')]!=_0x2da4a1[_0x5d96('0x10')]||_0x4b5942[_0x5d96('0x10')]&&_0x4b5942[_0x5d96('0x11')]){logger[_0x5d96('0x12')](_0x5d96('0x13'));}if(_0x4b5942[_0x5d96('0x10')]&&!_0x4b5942[_0x5d96('0x11')]&&_0x4b5942['license']!=_0x2da4a1[_0x5d96('0x10')]){logger[_0x5d96('0x12')](_0x5d96('0x14'));}if(_0x4b5942['license']&&!_0x4b5942['data2']&&_0x4b5942['license']==_0x2da4a1['license']){return _0xbcd8b0;}return _0xbcd8b0[_0x5d96('0x15')]({'data1':_0x53a277,'data2':null,'license':_0x2da4a1[_0x5d96('0x10')]});}else{if(_0x2da4a1[_0x5d96('0x10')]||_0x4b5942[_0x5d96('0x10')]){if(!_0x4b5942[_0x5d96('0x11')]){if(_0x4b5942[_0x5d96('0xe')]==_0x53a277){GRAY_PERIOD_REASON='Disabled';logger[_0x5d96('0x12')](_0x5d96('0x16'));}else{GRAY_PERIOD_REASON='Changed';logger['info'](_0x5d96('0x17'),_0x4b5942[_0x5d96('0xe')],_0x53a277);}logger[_0x5d96('0x12')]('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON['toUpperCase'](),moment()[_0x5d96('0x7')]('YYYY-MM-DD\x20HH:mm'));return _0xbcd8b0[_0x5d96('0x15')]({'data2':encryptor[_0x5d96('0x18')](moment()[_0x5d96('0x7')](_0x5d96('0x19')))});}else{if(moment()[_0x5d96('0x1a')](encryptor[_0x5d96('0x1b')](_0x4b5942['data2']),_0x5d96('0x1c'))>DAYS){logger['info'](_0x5d96('0x1d'),moment()['format'](_0x5d96('0x19')));isOldTokenSent=![];return _0xbcd8b0[_0x5d96('0x15')]({'data1':_0x53a277,'data2':null,'license':null});}}}else{if(_0x4b5942[_0x5d96('0xe')]!=_0x53a277){logger[_0x5d96('0x12')](_0x5d96('0x17'),_0x4b5942[_0x5d96('0xe')],_0x53a277);return _0xbcd8b0[_0x5d96('0x15')]({'data1':_0x53a277,'data2':null,'license':null});}}}return _0xbcd8b0;})['then'](function(_0x15a87f){_0xbcd8b0=_0x15a87f;})[_0x5d96('0xd')](function(_0x24eab0){logger[_0x5d96('0x1e')](_0x24eab0[_0x5d96('0x1f')]);})['finally'](function(){setTimeout(function(){manageLicense(hardware[_0x5d96('0x20')](),_0xbcd8b0);},TIME);});}function defaultLicense(){var _0x3e0a69=hardware[_0x5d96('0x20')]();if(_0x3e0a69){return db[_0x5d96('0x21')][_0x5d96('0x22')]({'where':{'id':0x1},'defaults':{'data1':_0x3e0a69}})[_0x5d96('0x23')](function(_0x1fa4c8,_0x46aba3){logger[_0x5d96('0x12')](_0x5d96('0x24'),_0x3e0a69);manageLicense(_0x3e0a69,_0x1fa4c8);})[_0x5d96('0xd')](function(_0x14cb80){logger[_0x5d96('0x1e')](_0x14cb80['message']);});}}exports[_0x5d96('0x25')]=defaultLicense;