a4a6378df073da28576e238d94b95ee8265ef1da
[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 _0xe77c=['info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','data1','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','uuid','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','diff','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','catch','message','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','util','crypto','moment','bluebird','pkginfo','version','../../mysqldb','../environment','./hardware','../logger','https://www.xcallymotion.com','%s/api/servers/%s/check?version=%s','exports','format','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','secrets','update','utf8','base64','final','aes-256-ctr','session','||FIELD||VALUE||\x0a','User','findOne','fullname','email','|uuid|','|name|','getFirstInterface','ipAddress','Motion\x20License\x20Alert','Alert','get','active','license','data2'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xe77c,0x176));var _0xce77=function(_0x27276d,_0x339778){_0x27276d=_0x27276d-0x0;var _0x4263f7=_0xe77c[_0x27276d];return _0x4263f7;};'use strict';var util=require(_0xce77('0x0'));var crypto=require(_0xce77('0x1'));var moment=require(_0xce77('0x2'));var rp=require('request-promise');var BPromise=require(_0xce77('0x3'));var pkginfo=require(_0xce77('0x4'))(module,_0xce77('0x5'));var db=require(_0xce77('0x6'))['db'];var config=require(_0xce77('0x7'));var hardware=require(_0xce77('0x8'));var logger=require(_0xce77('0x9'))('license');var jira=require('../../api/jira/jira.controller');var HOST=_0xce77('0xa');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var ADMIN;var oldToken;function httpRequest(_0x51fe6b){return new BPromise(function(_0x3a9d5d,_0x30b78b){var _0x3e85c9=util['format'](_0xce77('0xb'),HOST,_0x51fe6b,module[_0xce77('0xc')][_0xce77('0x5')]);if(oldToken){_0x3e85c9=util[_0xce77('0xd')](_0xce77('0xe'),HOST,_0x51fe6b,module['exports'][_0xce77('0x5')],oldToken);}var _0x5d572d={'uri':_0x3e85c9,'method':_0xce77('0xf'),'timeout':0xea60,'json':!![]};return rp(_0x5d572d)[_0xce77('0x10')](function(_0xe38504){_0x3a9d5d(_0xe38504);})['catch'](function(_0x1a8ef2){_0x30b78b(_0x1a8ef2);});});}function encryptDate(_0x5600df){var _0x564d7f=crypto['createCipher']('aes-256-ctr',config[_0xce77('0x11')]['session']);var _0x443b30=_0x564d7f[_0xce77('0x12')](_0x5600df,_0xce77('0x13'),_0xce77('0x14'));_0x443b30+=_0x564d7f[_0xce77('0x15')](_0xce77('0x14'));return _0x443b30;}function decryptDate(_0x49418a){var _0x3bcc4e=crypto['createDecipher'](_0xce77('0x16'),config[_0xce77('0x11')][_0xce77('0x17')]);var _0x5503c8=_0x3bcc4e[_0xce77('0x12')](_0x49418a,_0xce77('0x14'),_0xce77('0x13'));_0x5503c8+=_0x3bcc4e[_0xce77('0x15')](_0xce77('0x13'));return _0x5503c8;}function sendJiraAlert(_0x4ddd2c,_0x3262a3,_0x5ee662){var _0x302d5a=_0xce77('0x18');return db[_0xce77('0x19')][_0xce77('0x1a')]({'where':{'role':'admin'},'attributes':[_0xce77('0x1b'),_0xce77('0x1c')],'raw':!![]})[_0xce77('0x10')](function(_0x21e8b2){ADMIN=_0x21e8b2;_0x302d5a+='|reason|'+_0x5ee662+'|\x0a';_0x302d5a+=_0xce77('0x1d')+_0x4ddd2c+'|\x0a';_0x302d5a+='|machineUuid|'+_0x3262a3+'|\x0a';_0x302d5a+=_0xce77('0x1e')+ADMIN[_0xce77('0x1b')]+'|\x0a';_0x302d5a+='|email|'+ADMIN[_0xce77('0x1c')]+'|\x0a';return _0x302d5a;})[_0xce77('0x10')](function(_0x541e2e){var _0x3319d1=hardware[_0xce77('0x1f')]()[_0xce77('0x20')];return jira['openIssue']({'key':'MOTLICENSE','summary':_0xce77('0x21'),'description':_0x541e2e,'issuetype':_0xce77('0x22'),'oldToken':_0x4ddd2c,'newToken':_0x3262a3,'email':ADMIN[_0xce77('0x1c')],'name':ADMIN[_0xce77('0x1b')],'reason':GRAY_PERIOD_REASON,'ip':_0x3319d1});});}function manageLicense(_0x580994,_0x56bb75){var _0x471b79=_0x56bb75[_0xce77('0x23')]({'plain':!![]});httpRequest(_0x580994)[_0xce77('0x10')](function(_0x8cbd84){if(oldToken){oldToken=undefined;}if(_0x8cbd84[_0xce77('0x24')]){if(!_0x471b79[_0xce77('0x25')]&&_0x471b79[_0xce77('0x25')]!=_0x8cbd84['license']||_0x471b79[_0xce77('0x25')]&&_0x471b79[_0xce77('0x26')]){logger[_0xce77('0x27')](_0xce77('0x28'));}if(_0x471b79['license']&&!_0x471b79[_0xce77('0x26')]&&_0x471b79[_0xce77('0x25')]!=_0x8cbd84[_0xce77('0x25')]){logger[_0xce77('0x27')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x471b79[_0xce77('0x25')]&&!_0x471b79[_0xce77('0x26')]&&_0x471b79[_0xce77('0x25')]==_0x8cbd84[_0xce77('0x25')]){return _0x56bb75;}return _0x56bb75[_0xce77('0x12')]({'data1':_0x580994,'data2':null,'license':_0x8cbd84[_0xce77('0x25')]});}else{if(_0x8cbd84['license']||_0x471b79[_0xce77('0x25')]){if(!_0x471b79['data2']){if(_0x471b79[_0xce77('0x29')]==_0x580994){GRAY_PERIOD_REASON=_0xce77('0x2a');logger['info'](_0xce77('0x2b'));}else{GRAY_PERIOD_REASON=_0xce77('0x2c');oldToken=_0x471b79['data1'];logger['info']('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x471b79[_0xce77('0x29')],_0x580994);}sendJiraAlert(_0x471b79['data1'],_0x8cbd84[_0xce77('0x2d')],GRAY_PERIOD_REASON);logger[_0xce77('0x27')](_0xce77('0x2e'),GRAY_PERIOD_REASON[_0xce77('0x2f')](),moment()['format'](_0xce77('0x30')));return _0x56bb75[_0xce77('0x12')]({'data2':encryptDate(moment()[_0xce77('0xd')](_0xce77('0x30')))});}else{if(moment()[_0xce77('0x31')](decryptDate(_0x471b79[_0xce77('0x26')]),'days')>DAYS){logger[_0xce77('0x27')]('DEMO\x20START\x20AT\x20%s',moment()[_0xce77('0xd')](_0xce77('0x30')));return _0x56bb75[_0xce77('0x12')]({'data1':_0x580994,'data2':null,'license':null});}}}else{if(_0x471b79[_0xce77('0x29')]!=_0x580994){logger[_0xce77('0x27')](_0xce77('0x32'),_0x471b79[_0xce77('0x29')],_0x580994);return _0x56bb75[_0xce77('0x12')]({'data1':_0x580994,'data2':null,'license':null});}}}return _0x56bb75;})[_0xce77('0x10')](function(_0x1daa5d){_0x56bb75=_0x1daa5d;})[_0xce77('0x33')](function(_0x103f97){logger['error'](_0x103f97[_0xce77('0x34')]);})[_0xce77('0x35')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x56bb75);},TIME);});}function defaultLicense(){var _0x454ce1=hardware[_0xce77('0x36')]();if(_0x454ce1){return db[_0xce77('0x37')][_0xce77('0x38')]({'where':{'id':0x1},'defaults':{'data1':_0x454ce1}})[_0xce77('0x39')](function(_0x4f6aa5,_0x5cd587){logger[_0xce77('0x27')](_0xce77('0x3a'),_0x454ce1);manageLicense(_0x454ce1,_0x4f6aa5);})[_0xce77('0x33')](function(_0x1d20ff){logger['error'](_0x1d20ff[_0xce77('0x34')]);});}}exports['default']=defaultLicense;