Built motion from commit (unavailable).|2.5.4
[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 _0x896e=['../../mysqldb','../environment','./hardware','../logger','license','https://www.xcallymotion.com','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','aes-256-ctr','secrets','session','update','utf8','base64','final','||FIELD||VALUE||\x0a','User','findOne','admin','fullname','|uuid|','|machineUuid|','|name|','email','getFirstInterface','ipAddress','openIssue','MOTLICENSE','Motion\x20License\x20Alert','Alert','get','active','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','data1','uuid','YYYY-MM-DD\x20HH:mm','format','diff','days','DEMO\x20START\x20AT\x20%s','message','getUuid','License','findOrCreate','SERVICE\x20LICENSE\x20STARTED\x20%s','catch','default','util','crypto','moment','request-promise','bluebird','pkginfo','version'];(function(_0x28593d,_0x387aaf){var _0x3d3e81=function(_0x483032){while(--_0x483032){_0x28593d['push'](_0x28593d['shift']());}};_0x3d3e81(++_0x387aaf);}(_0x896e,0x1e9));var _0xe896=function(_0x3d0e5b,_0x17d15d){_0x3d0e5b=_0x3d0e5b-0x0;var _0x4669d9=_0x896e[_0x3d0e5b];return _0x4669d9;};'use strict';var util=require(_0xe896('0x0'));var crypto=require(_0xe896('0x1'));var moment=require(_0xe896('0x2'));var rp=require(_0xe896('0x3'));var BPromise=require(_0xe896('0x4'));var pkginfo=require(_0xe896('0x5'))(module,_0xe896('0x6'));var db=require(_0xe896('0x7'))['db'];var config=require(_0xe896('0x8'));var hardware=require(_0xe896('0x9'));var logger=require(_0xe896('0xa'))(_0xe896('0xb'));var jira=require('../../api/jira/jira.controller');var HOST=_0xe896('0xc');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var ADMIN;var oldToken;function httpRequest(_0x7a0721){return new BPromise(function(_0x3b902c,_0x264eeb){var _0x43c619=util['format'](_0xe896('0xd'),HOST,_0x7a0721,module[_0xe896('0xe')][_0xe896('0x6')]);if(oldToken){_0x43c619=util['format'](_0xe896('0xf'),HOST,_0x7a0721,module['exports'][_0xe896('0x6')],oldToken);}var _0x5be679={'uri':_0x43c619,'method':_0xe896('0x10'),'timeout':0xea60,'json':!![]};return rp(_0x5be679)[_0xe896('0x11')](function(_0xa00ae9){_0x3b902c(_0xa00ae9);})['catch'](function(_0x3c531e){_0x264eeb(_0x3c531e);});});}function encryptDate(_0x4452cd){var _0x3e8ac9=crypto['createCipher'](_0xe896('0x12'),config[_0xe896('0x13')][_0xe896('0x14')]);var _0x5383b7=_0x3e8ac9[_0xe896('0x15')](_0x4452cd,_0xe896('0x16'),_0xe896('0x17'));_0x5383b7+=_0x3e8ac9['final']('base64');return _0x5383b7;}function decryptDate(_0x446ce2){var _0x25606b=crypto['createDecipher']('aes-256-ctr',config[_0xe896('0x13')][_0xe896('0x14')]);var _0x57f04b=_0x25606b[_0xe896('0x15')](_0x446ce2,'base64',_0xe896('0x16'));_0x57f04b+=_0x25606b[_0xe896('0x18')](_0xe896('0x16'));return _0x57f04b;}function sendJiraAlert(_0x5dc89d,_0x782813,_0x9714f1){var _0xdcdba8=_0xe896('0x19');return db[_0xe896('0x1a')][_0xe896('0x1b')]({'where':{'role':_0xe896('0x1c')},'attributes':[_0xe896('0x1d'),'email'],'raw':!![]})[_0xe896('0x11')](function(_0x5e1f29){ADMIN=_0x5e1f29;_0xdcdba8+='|reason|'+_0x9714f1+'|\x0a';_0xdcdba8+=_0xe896('0x1e')+_0x5dc89d+'|\x0a';_0xdcdba8+=_0xe896('0x1f')+_0x782813+'|\x0a';_0xdcdba8+=_0xe896('0x20')+ADMIN[_0xe896('0x1d')]+'|\x0a';_0xdcdba8+='|email|'+ADMIN[_0xe896('0x21')]+'|\x0a';return _0xdcdba8;})['then'](function(_0x5001f7){var _0x45dd49=hardware[_0xe896('0x22')]()[_0xe896('0x23')];return jira[_0xe896('0x24')]({'key':_0xe896('0x25'),'summary':_0xe896('0x26'),'description':_0x5001f7,'issuetype':_0xe896('0x27'),'oldToken':_0x5dc89d,'newToken':_0x782813,'email':ADMIN['email'],'name':ADMIN[_0xe896('0x1d')],'reason':GRAY_PERIOD_REASON,'ip':_0x45dd49});});}function manageLicense(_0x163a75,_0xc3cd05){var _0x569d5f=_0xc3cd05[_0xe896('0x28')]({'plain':!![]});httpRequest(_0x163a75)[_0xe896('0x11')](function(_0x2bc11d){if(oldToken){oldToken=undefined;}if(_0x2bc11d[_0xe896('0x29')]){if(!_0x569d5f[_0xe896('0xb')]&&_0x569d5f[_0xe896('0xb')]!=_0x2bc11d['license']||_0x569d5f[_0xe896('0xb')]&&_0x569d5f[_0xe896('0x2a')]){logger[_0xe896('0x2b')](_0xe896('0x2c'));}if(_0x569d5f[_0xe896('0xb')]&&!_0x569d5f['data2']&&_0x569d5f['license']!=_0x2bc11d['license']){logger['info']('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x569d5f[_0xe896('0xb')]&&!_0x569d5f[_0xe896('0x2a')]&&_0x569d5f[_0xe896('0xb')]==_0x2bc11d[_0xe896('0xb')]){return _0xc3cd05;}return _0xc3cd05[_0xe896('0x15')]({'data1':_0x163a75,'data2':null,'license':_0x2bc11d[_0xe896('0xb')]});}else{if(_0x2bc11d[_0xe896('0xb')]||_0x569d5f[_0xe896('0xb')]){if(!_0x569d5f['data2']){if(_0x569d5f['data1']==_0x163a75){GRAY_PERIOD_REASON=_0xe896('0x2d');logger[_0xe896('0x2b')](_0xe896('0x2e'));}else{GRAY_PERIOD_REASON=_0xe896('0x2f');oldToken=_0x569d5f['data1'];logger[_0xe896('0x2b')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x569d5f['data1'],_0x163a75);}sendJiraAlert(_0x569d5f[_0xe896('0x30')],_0x2bc11d[_0xe896('0x31')],GRAY_PERIOD_REASON);logger[_0xe896('0x2b')]('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON['toUpperCase'](),moment()['format'](_0xe896('0x32')));return _0xc3cd05[_0xe896('0x15')]({'data2':encryptDate(moment()[_0xe896('0x33')](_0xe896('0x32')))});}else{if(moment()[_0xe896('0x34')](decryptDate(_0x569d5f['data2']),_0xe896('0x35'))>DAYS){logger[_0xe896('0x2b')](_0xe896('0x36'),moment()[_0xe896('0x33')](_0xe896('0x32')));return _0xc3cd05[_0xe896('0x15')]({'data1':_0x163a75,'data2':null,'license':null});}}}else{if(_0x569d5f[_0xe896('0x30')]!=_0x163a75){logger[_0xe896('0x2b')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x569d5f[_0xe896('0x30')],_0x163a75);return _0xc3cd05[_0xe896('0x15')]({'data1':_0x163a75,'data2':null,'license':null});}}}return _0xc3cd05;})['then'](function(_0xc5eedb){_0xc3cd05=_0xc5eedb;})['catch'](function(_0x43ecc4){logger['error'](_0x43ecc4[_0xe896('0x37')]);})['finally'](function(){setTimeout(function(){manageLicense(hardware[_0xe896('0x38')](),_0xc3cd05);},TIME);});}function defaultLicense(){var _0x470c29=hardware[_0xe896('0x38')]();if(_0x470c29){return db[_0xe896('0x39')][_0xe896('0x3a')]({'where':{'id':0x1},'defaults':{'data1':_0x470c29}})['spread'](function(_0x480b8a,_0x203aea){logger[_0xe896('0x2b')](_0xe896('0x3b'),_0x470c29);manageLicense(_0x470c29,_0x480b8a);})[_0xe896('0x3c')](function(_0x2ff489){logger['error'](_0x2ff489['message']);});}}exports[_0xe896('0x3d')]=defaultLicense;