ff68e49011cea1b62e6ca5de82a117b720c3f4df
[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 _0x1c3d=['toUpperCase','YYYY-MM-DD\x20HH:mm','diff','days','DEMO\x20START\x20AT\x20%s','message','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','error','default','crypto','moment','request-promise','bluebird','pkginfo','../environment','./hardware','../logger','license','../../api/jira/jira.controller','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','version','GET','then','catch','aes-256-ctr','utf8','base64','final','createDecipher','secrets','session','update','||FIELD||VALUE||\x0a','findOne','admin','fullname','|reason|','|name|','|email|','email','getFirstInterface','ipAddress','openIssue','Alert','get','active','data2','info','data1','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s'];(function(_0x3f2ea4,_0x4f2669){var _0x220efc=function(_0x471393){while(--_0x471393){_0x3f2ea4['push'](_0x3f2ea4['shift']());}};_0x220efc(++_0x4f2669);}(_0x1c3d,0x1b8));var _0xd1c3=function(_0x437351,_0x709928){_0x437351=_0x437351-0x0;var _0x40f093=_0x1c3d[_0x437351];return _0x40f093;};'use strict';var util=require('util');var crypto=require(_0xd1c3('0x0'));var moment=require(_0xd1c3('0x1'));var rp=require(_0xd1c3('0x2'));var BPromise=require(_0xd1c3('0x3'));var pkginfo=require(_0xd1c3('0x4'))(module,'version');var db=require('../../mysqldb')['db'];var config=require(_0xd1c3('0x5'));var hardware=require(_0xd1c3('0x6'));var logger=require(_0xd1c3('0x7'))(_0xd1c3('0x8'));var jira=require(_0xd1c3('0x9'));var HOST=_0xd1c3('0xa');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var ADMIN;var oldToken;function httpRequest(_0x5adcb7){return new BPromise(function(_0x398766,_0x420ab0){var _0x5db2f0=util[_0xd1c3('0xb')](_0xd1c3('0xc'),HOST,_0x5adcb7,module[_0xd1c3('0xd')][_0xd1c3('0xe')]);if(oldToken){_0x5db2f0=util[_0xd1c3('0xb')]('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x5adcb7,module['exports'][_0xd1c3('0xe')],oldToken);}var _0x1d7795={'uri':_0x5db2f0,'method':_0xd1c3('0xf'),'timeout':0xea60,'json':!![]};return rp(_0x1d7795)[_0xd1c3('0x10')](function(_0x57a4ab){_0x398766(_0x57a4ab);})[_0xd1c3('0x11')](function(_0x373ffb){_0x420ab0(_0x373ffb);});});}function encryptDate(_0x280405){var _0x159691=crypto['createCipher'](_0xd1c3('0x12'),config['secrets']['session']);var _0x11d1f3=_0x159691['update'](_0x280405,_0xd1c3('0x13'),_0xd1c3('0x14'));_0x11d1f3+=_0x159691[_0xd1c3('0x15')]('base64');return _0x11d1f3;}function decryptDate(_0xaaa259){var _0x4230f7=crypto[_0xd1c3('0x16')](_0xd1c3('0x12'),config[_0xd1c3('0x17')][_0xd1c3('0x18')]);var _0x586fa7=_0x4230f7[_0xd1c3('0x19')](_0xaaa259,_0xd1c3('0x14'),_0xd1c3('0x13'));_0x586fa7+=_0x4230f7['final']('utf8');return _0x586fa7;}function sendJiraAlert(_0x14f6cb,_0x3a1a74,_0x3f1df3){var _0x54a450=_0xd1c3('0x1a');return db['User'][_0xd1c3('0x1b')]({'where':{'role':_0xd1c3('0x1c')},'attributes':[_0xd1c3('0x1d'),'email'],'raw':!![]})['then'](function(_0x7942b7){ADMIN=_0x7942b7;_0x54a450+=_0xd1c3('0x1e')+_0x3f1df3+'|\x0a';_0x54a450+='|uuid|'+_0x14f6cb+'|\x0a';_0x54a450+='|machineUuid|'+_0x3a1a74+'|\x0a';_0x54a450+=_0xd1c3('0x1f')+ADMIN[_0xd1c3('0x1d')]+'|\x0a';_0x54a450+=_0xd1c3('0x20')+ADMIN[_0xd1c3('0x21')]+'|\x0a';return _0x54a450;})[_0xd1c3('0x10')](function(_0x46ed40){var _0x137fd5=hardware[_0xd1c3('0x22')]()[_0xd1c3('0x23')];return jira[_0xd1c3('0x24')]({'key':'MOTLICENSE','summary':'Motion\x20License\x20Alert','description':_0x46ed40,'issuetype':_0xd1c3('0x25'),'oldToken':_0x14f6cb,'newToken':_0x3a1a74,'email':ADMIN[_0xd1c3('0x21')],'name':ADMIN[_0xd1c3('0x1d')],'reason':GRAY_PERIOD_REASON,'ip':_0x137fd5});});}function manageLicense(_0x227f24,_0x5d1988){var _0x3dc860=_0x5d1988[_0xd1c3('0x26')]({'plain':!![]});httpRequest(_0x227f24)['then'](function(_0xcb5283){if(oldToken){oldToken=undefined;}if(_0xcb5283[_0xd1c3('0x27')]){if(!_0x3dc860[_0xd1c3('0x8')]&&_0x3dc860[_0xd1c3('0x8')]!=_0xcb5283[_0xd1c3('0x8')]||_0x3dc860[_0xd1c3('0x8')]&&_0x3dc860[_0xd1c3('0x28')]){logger['info']('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x3dc860[_0xd1c3('0x8')]&&!_0x3dc860[_0xd1c3('0x28')]&&_0x3dc860[_0xd1c3('0x8')]!=_0xcb5283[_0xd1c3('0x8')]){logger[_0xd1c3('0x29')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x3dc860[_0xd1c3('0x8')]&&!_0x3dc860[_0xd1c3('0x28')]&&_0x3dc860['license']==_0xcb5283[_0xd1c3('0x8')]){return _0x5d1988;}return _0x5d1988['update']({'data1':_0x227f24,'data2':null,'license':_0xcb5283[_0xd1c3('0x8')]});}else{if(_0xcb5283[_0xd1c3('0x8')]||_0x3dc860[_0xd1c3('0x8')]){if(!_0x3dc860[_0xd1c3('0x28')]){if(_0x3dc860[_0xd1c3('0x2a')]==_0x227f24){GRAY_PERIOD_REASON=_0xd1c3('0x2b');logger[_0xd1c3('0x29')](_0xd1c3('0x2c'));}else{GRAY_PERIOD_REASON=_0xd1c3('0x2d');oldToken=_0x3dc860['data1'];logger[_0xd1c3('0x29')](_0xd1c3('0x2e'),_0x3dc860['data1'],_0x227f24);}sendJiraAlert(_0x3dc860[_0xd1c3('0x2a')],_0xcb5283['uuid'],GRAY_PERIOD_REASON);logger[_0xd1c3('0x29')](_0xd1c3('0x2f'),GRAY_PERIOD_REASON[_0xd1c3('0x30')](),moment()['format'](_0xd1c3('0x31')));return _0x5d1988[_0xd1c3('0x19')]({'data2':encryptDate(moment()[_0xd1c3('0xb')](_0xd1c3('0x31')))});}else{if(moment()[_0xd1c3('0x32')](decryptDate(_0x3dc860[_0xd1c3('0x28')]),_0xd1c3('0x33'))>DAYS){logger[_0xd1c3('0x29')](_0xd1c3('0x34'),moment()['format']('YYYY-MM-DD\x20HH:mm'));return _0x5d1988[_0xd1c3('0x19')]({'data1':_0x227f24,'data2':null,'license':null});}}}else{if(_0x3dc860['data1']!=_0x227f24){logger[_0xd1c3('0x29')](_0xd1c3('0x2e'),_0x3dc860[_0xd1c3('0x2a')],_0x227f24);return _0x5d1988[_0xd1c3('0x19')]({'data1':_0x227f24,'data2':null,'license':null});}}}return _0x5d1988;})[_0xd1c3('0x10')](function(_0x3690f8){_0x5d1988=_0x3690f8;})['catch'](function(_0x2dcf77){logger['error'](_0x2dcf77[_0xd1c3('0x35')]);})['finally'](function(){setTimeout(function(){manageLicense(hardware[_0xd1c3('0x36')](),_0x5d1988);},TIME);});}function defaultLicense(){var _0x5eaa6d=hardware['getUuid']();if(_0x5eaa6d){return db[_0xd1c3('0x37')][_0xd1c3('0x38')]({'where':{'id':0x1},'defaults':{'data1':_0x5eaa6d}})[_0xd1c3('0x39')](function(_0x57b57f,_0x43b819){logger[_0xd1c3('0x29')](_0xd1c3('0x3a'),_0x5eaa6d);manageLicense(_0x5eaa6d,_0x57b57f);})['catch'](function(_0x222bf3){logger[_0xd1c3('0x3b')](_0x222bf3[_0xd1c3('0x35')]);});}}exports[_0xd1c3('0x3c')]=defaultLicense;