Built motion from commit 5e31ea4.|0.0.32
[motion.git] / server / api / trunk / trunk.ami.js
index 6c8e79b..32b4a66 100644 (file)
@@ -1 +1,90 @@
-var _0x75aa=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x66\x73","\x75\x74\x69\x6C","\x70\x61\x74\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x54\x72\x75\x6E\x6B","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x6C\x6F\x64\x61\x73\x68","\x72\x65\x67\x69\x73\x74\x65\x72","\x63\x72\x65\x61\x74\x65\x20\x74\x72\x75\x6E\x6B\x20\x68\x6F\x6F\x6B","\x6C\x6F\x67","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65\x20\x74\x72\x75\x6E\x6B\x20\x68\x6F\x6F\x6B","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x64\x65\x6C\x65\x74\x65\x20\x74\x72\x75\x6E\x6B\x20\x68\x6F\x6F\x6B","\x61\x66\x74\x65\x72\x44\x65\x6C\x65\x74\x65","","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x63\x6C\x6F\x6E\x65","\x69\x64","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x5B\x25\x73\x5D\x0A","\x6E\x61\x6D\x65","\x66\x6F\x72\x6D\x61\x74","\x6F\x74\x68\x65\x72\x46\x69\x65\x6C\x64\x73","\x25\x73\x0A","\x25\x73\x3D\x25\x73\x0A","\x63\x61\x74\x63\x68","\x70\x6C\x75\x63\x6B","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72\x2F\x66\x69\x6C\x65\x73\x2F\x61\x73\x74\x65\x72\x69\x73\x6B\x2F\x73\x69\x70\x5F\x78\x63\x61\x6C\x6C\x79\x5F\x74\x72\x75\x6E\x6B\x73\x2E\x63\x6F\x6E\x66","\x6A\x6F\x69\x6E","\x77","\x30\x37\x37\x37","\x54\x72\x75\x6E\x6B\x73\x20\x66\x69\x6C\x65\x20\x73\x61\x76\x65\x64\x21","\x52\x65\x6C\x6F\x61\x64","\x63\x68\x61\x6E\x5F\x73\x69\x70","\x65\x72\x72\x6F\x72","\x61\x63\x74\x69\x6F\x6E","\x77\x72\x69\x74\x65\x46\x69\x6C\x65","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C"];_0x75aa[0];var fs=require(_0x75aa[1]);var util=require(_0x75aa[2]);var path=require(_0x75aa[3]);var config=require(_0x75aa[4]);var Trunk=require(_0x75aa[6])[_0x75aa[5]];var VoiceExtension=require(_0x75aa[6])[_0x75aa[7]];var _=require(_0x75aa[8]);exports[_0x75aa[9]]=function(_0xc7cax8){Trunk[_0x75aa[12]](function(_0xc7cax9){console[_0x75aa[11]](_0x75aa[10]);trunksRewrite(_0xc7cax9,_0xc7cax8,false);});Trunk[_0x75aa[14]](function(_0xc7cax9){console[_0x75aa[11]](_0x75aa[13]);trunksRewrite(_0xc7cax9,_0xc7cax8,false);});Trunk[_0x75aa[16]](function(_0xc7cax9){console[_0x75aa[11]](_0x75aa[15]);trunksRewrite(_0xc7cax9,_0xc7cax8,true);});};function trunksRewrite(_0xc7cax9,_0xc7cax8,_0xc7caxb){var _0xc7caxc=_0x75aa[17];if(!_0xc7caxb){var _0xc7caxd=_[_0x75aa[19]](_0xc7cax9[_0x75aa[18]]);delete _0xc7caxd[_0x75aa[20]];delete _0xc7caxd[_0x75aa[21]];delete _0xc7caxd[_0x75aa[22]];_0xc7caxc+=util[_0x75aa[25]](_0x75aa[23],_0xc7caxd[_0x75aa[24]]);if(_0xc7caxd[_0x75aa[26]]){_0xc7caxc+=util[_0x75aa[25]](_0x75aa[27],_0xc7caxd[_0x75aa[26]]);delete _0xc7caxd[_0x75aa[26]];};for(var _0xc7caxe in _0xc7caxd){if(_0xc7caxd[_0xc7caxe]){_0xc7caxc+=util[_0x75aa[25]](_0x75aa[28],_0xc7caxe,_0xc7caxd[_0xc7caxe])}};};Trunk[_0x75aa[44]]({where:{id:{$ne:_0xc7cax9[_0x75aa[20]]}}})[_0x75aa[43]](function(_0xc7cax10){var _0xc7cax11=_[_0x75aa[30]](_0xc7cax10,_0x75aa[18]);_0xc7cax11[_0x75aa[31]](function(_0xc7cax12){delete _0xc7cax12[_0x75aa[20]];delete _0xc7cax12[_0x75aa[21]];delete _0xc7cax12[_0x75aa[22]];_0xc7caxc+=util[_0x75aa[25]](_0x75aa[23],_0xc7cax12[_0x75aa[24]]);if(_0xc7cax12[_0x75aa[26]]){_0xc7caxc+=util[_0x75aa[25]](_0x75aa[27],_0xc7cax12[_0x75aa[26]]);delete _0xc7cax12[_0x75aa[26]];};for(var _0xc7caxe in _0xc7cax12){if(_0xc7cax12[_0xc7caxe]){_0xc7caxc+=util[_0x75aa[25]](_0x75aa[28],_0xc7caxe,_0xc7cax12[_0xc7caxe])}};});fs[_0x75aa[42]](path[_0x75aa[34]](config[_0x75aa[32]],_0x75aa[33]),_0xc7caxc,{flags:_0x75aa[35],mode:parseInt(_0x75aa[36],8)},function(_0xc7caxf){if(_0xc7caxf){throw _0xc7caxf};console[_0x75aa[11]](_0x75aa[37]);_0xc7cax8[_0x75aa[41]]({Action:_0x75aa[38],Module:_0x75aa[39]},function(_0xc7caxf,_0xc7cax13){if(_0xc7caxf){console[_0x75aa[40]](_0xc7caxf)}else {console[_0x75aa[11]](_0xc7cax13)}});});})[_0x75aa[29]](function(_0xc7caxf){console[_0x75aa[11]](_0xc7caxf)});}
\ No newline at end of file
+'use strict';
+
+var fs = require('fs');
+var util = require('util');
+var path = require('path');
+var config = require('../../config/environment');
+var Trunk = require('../../models').Trunk;
+var VoiceExtension = require('../../models').VoiceExtension;
+var _ = require('lodash');
+
+exports.register = function(ami) {
+  Trunk.afterCreate(function(doc) {
+    console.log('create trunk hook');
+    trunksRewrite(doc, ami, false);
+  })
+  Trunk.afterUpdate(function(doc) {
+    console.log('update trunk hook');
+    trunksRewrite(doc, ami, false);
+  })
+  Trunk.afterDelete(function(doc) {
+    console.log('delete trunk hook');
+    trunksRewrite(doc, ami, true);
+  })
+}
+
+function trunksRewrite(doc, ami, deleteTrunk) {
+  var trunksFile = '';
+  if (!deleteTrunk) {
+    var newTrunk = _.clone(doc.dataValues);
+    delete newTrunk.id;
+    delete newTrunk.createdAt;
+    delete newTrunk.updatedAt;
+    trunksFile += util.format('[%s]\n', newTrunk.name);
+    if (newTrunk.otherFields) {
+      trunksFile += util.format('%s\n', newTrunk.otherFields);
+      delete newTrunk.otherFields;
+    }
+    for (var key in newTrunk) {
+      if (newTrunk[key]) {
+        trunksFile += util.format('%s=%s\n', key, newTrunk[key]);
+      }
+    }
+  }
+  Trunk
+    .findAll({
+      where: {
+        id: {
+          $ne: doc.id
+        }
+      }
+    })
+    .then(function(trunks) {
+      var oldTrunks = _.pluck(trunks, 'dataValues');
+      oldTrunks.forEach(function(element) {
+        delete element.id;
+        delete element.createdAt;
+        delete element.updatedAt;
+        trunksFile += util.format('[%s]\n', element.name);
+        if (element.otherFields) {
+          trunksFile += util.format('%s\n', element.otherFields);
+          delete element.otherFields;
+        }
+        for (var key in element) {
+          if (element[key]) {
+            trunksFile += util.format('%s=%s\n', key, element[key]);
+          }
+        }
+      });
+      fs.writeFile(path.join(config.root, 'server/files/asterisk/sip_xcally_trunks.conf'), trunksFile, {
+        flags: 'w',
+        mode: parseInt('0777', 8)
+      }, function(err) {
+        if (err) throw err;
+        console.log("Trunks file saved!");
+        ami.action({
+          Action: 'Reload',
+          Module: 'chan_sip'
+        }, function(err, res) {
+          if (err) {
+            console.error(err);
+          } else {
+            console.log(res);
+          }
+        });
+      });
+    })
+    .catch(function(err) {
+      console.log(err);
+    });
+}