Advertisement
Guest User

Untitled

a guest
Aug 16th, 2016
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.29 KB | None | 0 0
  1. var winston = require('winston');
  2. var request = require('request');
  3. var util = require('util');
  4. var PAGE_NAME = "ACCESS_CONTROL: ";
  5. var config = require('config');
  6. var DevicesModel = require('../models/Devices');
  7. var CommonUtils = require('../utils/CommonUtils');
  8. var Validator = require('../utils/validator');
  9. const HOUR = 3600;
  10. const MINUTE = 60;
  11. function parseCfg(fileString) {
  12. var modifiedString = fileString.replace("LOCAL_CARD_INIT\r\n", "");
  13. var arr = modifiedString.split("\r\n");
  14. var resultObj = {};
  15. var localCardCounter = 1;
  16. for (var i in arr) {
  17. var pair = arr[i].split("=");
  18. if (pair[0] == "LOCAL_CARD") {
  19. resultObj[pair[0] + localCardCounter++] = pair[1].trim();
  20. } else if (pair[0] == "") {
  21. console.log("Delete empty string");
  22. } else if (pair[0] == "SAVE_CONFIG") {
  23. console.log("Delete empty string");
  24. } else {
  25. resultObj[pair[0]] = pair[1].trim();
  26. }
  27. }
  28. return resultObj;
  29. }
  30.  
  31. function addDOOR_CRITICAL_TIMEParams(cfg) {
  32. var doorCritialTime = cfg["DOOR_CRITICAL_TIME"].trim();
  33. var timeObj = calcTime(doorCritialTime);
  34.  
  35. cfg["tmp_door_critical_time"] = timeObj.time_value;
  36. cfg["door_critical_time_units"] = timeObj.units;
  37. }
  38.  
  39. function addDISCRETE_LINKAGE0Params(cfg) {
  40. var param = cfg["DISCRETE_LINKAGE"];
  41. var discreteLinkageArray = param.split(",");
  42. var binaryArray = CommonUtils.toBinaryArray(discreteLinkageArray[0], 19);
  43.  
  44. cfg["gaz_siren"] = binaryArray[0];
  45. cfg["gaz_light"] = binaryArray[1];
  46. cfg["gaz_relay1"] = binaryArray[2];
  47. cfg["gaz_relay2"] = binaryArray[3];
  48. cfg["vibro_siren"] = binaryArray[4];
  49. cfg["vibro_light"] = binaryArray[5];
  50. cfg["vibro_relay1"] = binaryArray[6];
  51. cfg["vibro_relay2"] = binaryArray[7];
  52. cfg["incline_siren"] = binaryArray[8];
  53. cfg["incline_light"] = binaryArray[9];
  54. cfg["incline_relay1"] = binaryArray[10];
  55. cfg["incline_relay2"] = binaryArray[11];
  56. cfg["door_siren"] = binaryArray[12];
  57. cfg["door_light"] = binaryArray[13];
  58. cfg["door_relay1"] = binaryArray[14];
  59. cfg["door_relay2"] = binaryArray[15];
  60. cfg["card_siren"] = binaryArray[16];
  61. cfg["card_light"] = binaryArray[17];
  62. cfg["card_relay1"] = binaryArray[18];
  63. cfg["card_relay2"] = binaryArray[19];
  64. }
  65.  
  66. function calcTime(time) {
  67. var units = 0;
  68. var time_value = 0;
  69. if (!time || time==0) {
  70. units = 0;
  71. time_value = 0
  72. } else if (time >= HOUR) {
  73. units = 3600;
  74. time_value = time / HOUR;
  75. } else if (time >= 60) {
  76. units = 60;
  77. time_value = time / MINUTE;
  78. } else {
  79. units = 1;
  80. time_value = time;
  81. }
  82. return {units: units, time_value: time_value};
  83. }
  84.  
  85. function addDISCRETE_LINKAGEsiren_pulse_widthParams(cfg) {
  86. var param = cfg["DISCRETE_LINKAGE"];
  87. var discreteLinkageArray = param.split(",");
  88. var time = discreteLinkageArray[2].trim();
  89. var timeObj = calcTime(time);
  90.  
  91. cfg["tmp_sirene_pulse_width"] = timeObj.time_value;
  92. cfg["sirene_pulse_width_units"] = timeObj.units;
  93. }
  94.  
  95. function addDISCRETE_LINKAGElight_pulse_widthParams(cfg) {
  96. var param = cfg["DISCRETE_LINKAGE"];
  97. var discreteLinkageArray = param.split(",");
  98. var time = discreteLinkageArray[3].trim();
  99. var timeObj = calcTime(time);
  100.  
  101. cfg["tmp_light_pulse_width"] = timeObj.time_value;
  102. cfg["light_pulse_width_units"] = timeObj.units;
  103. }
  104.  
  105. function addDISCRETE_LINKAGEdispenser_pulse_widthParams(cfg) {
  106. var param = cfg["DISCRETE_LINKAGE"];
  107. var discreteLinkageArray = param.split(",");
  108. var time = discreteLinkageArray[4].trim();
  109. var timeObj = calcTime(time);
  110.  
  111. cfg["tmp_dispenser_pulse_width"] = timeObj.time_value;
  112. cfg["dispenser_pulse_width_units"] = timeObj.units;
  113. }
  114.  
  115. function addDISCRETE_LINKAGEcomputer_pulse_widthParams(cfg) {
  116. var param = cfg["DISCRETE_LINKAGE"];
  117. var discreteLinkageArray = param.split(",");
  118. var time = discreteLinkageArray[5].trim();
  119. var timeObj = calcTime(time);
  120.  
  121. cfg["tmp_computer_pulse_width"] = timeObj.time_value;
  122. cfg["computer_pulse_width_units"] = timeObj.units;
  123. }
  124.  
  125. function addALARM_OUTPUT_OPTIONSParams(cfg) {
  126. var param = cfg["ALARM_OUTPUT_OPTIONS"];
  127. var binaryArray = CommonUtils.toBinaryArray(param, 26);
  128.  
  129. cfg["siren_def_alarm"] = binaryArray[0];
  130. cfg["siren_2x_click"] = binaryArray[1];
  131. cfg["light_def_alarm"] = binaryArray[8];
  132. cfg["light_2x_click"] = binaryArray[9];
  133. cfg["disps_def_alarm"] = binaryArray[16];
  134. cfg["disps_2x_click"] = binaryArray[17];
  135. cfg["comp_def_alarm"] = binaryArray[24];
  136. cfg["comp_2x_click"] = binaryArray[25];
  137. }
  138.  
  139. function processNetworkParams(configFile, req) {
  140. configFile["IP_ADDRESS"] = req.body.IP_ADDRESS;
  141. configFile["NETWORK_MASK"] = req.body.NETWORK_MASK;
  142. configFile["DEFAULT_GATEWAY"] = req.body.DEFAULT_GATEWAY;
  143. configFile["WEB_CONFIG_PORT"] = req.body.WEB_CONFIG_PORT;
  144. configFile["WEB_ALLOWED_TIME"] = req.body.WEB_ALLOWED_TIME;
  145. configFile["SPRUT_IP"] = req.body.SPRUT_IP;
  146. configFile["SPRUT_PORT"] = req.body.SPRUT_PORT;
  147. configFile["SPRUT_KAPERIOD_INDEX"] = req.body.SPRUT_KAPERIOD_INDEX;
  148. }
  149.  
  150. function processDateTimeParams(configFile, req) {
  151. configFile["TIME_ZONE"] = req.body.TIME_ZONE;
  152. configFile["TIME_SERVER_ADDRESS"] = req.body.TIME_SERVER_ADDRESS;
  153. }
  154.  
  155. function processLocalMinibaseRFIDParams(configFile, req) {
  156. configFile["LOCAL_CARD1"] = req.body.LOCAL_CARD1;
  157. configFile["LOCAL_CARD2"] = req.body.LOCAL_CARD2;
  158. configFile["LOCAL_CARD3"] = req.body.LOCAL_CARD3;
  159. configFile["LOCAL_CARD4"] = req.body.LOCAL_CARD4;
  160. configFile["LOCAL_CARD5"] = req.body.LOCAL_CARD5;
  161. configFile["LOCAL_CARD6"] = req.body.LOCAL_CARD6;
  162. configFile["LOCAL_CARD7"] = req.body.LOCAL_CARD7;
  163. configFile["LOCAL_CARD8"] = req.body.LOCAL_CARD8;
  164. configFile["LOCAL_CARD9"] = req.body.LOCAL_CARD9;
  165. configFile["LOCAL_CARD10"] = req.body.LOCAL_CARD10;
  166. configFile["LOCAL_CARD11"] = req.body.LOCAL_CARD11;
  167. configFile["LOCAL_CARD12"] = req.body.LOCAL_CARD12;
  168. configFile["LOCAL_CARD13"] = req.body.LOCAL_CARD13;
  169. configFile["LOCAL_CARD14"] = req.body.LOCAL_CARD14;
  170. configFile["LOCAL_CARD15"] = req.body.LOCAL_CARD15;
  171. configFile["LOCAL_CARD16"] = req.body.LOCAL_CARD16;
  172. configFile["LOCAL_CARD17"] = req.body.LOCAL_CARD17;
  173. configFile["LOCAL_CARD18"] = req.body.LOCAL_CARD18;
  174. configFile["LOCAL_CARD19"] = req.body.LOCAL_CARD19;
  175. configFile["LOCAL_CARD20"] = req.body.LOCAL_CARD20;
  176. configFile["LOCAL_CARD21"] = req.body.LOCAL_CARD21;
  177. configFile["LOCAL_CARD22"] = req.body.LOCAL_CARD22;
  178. configFile["LOCAL_CARD23"] = req.body.LOCAL_CARD23;
  179. }
  180.  
  181. function processALARM_OUTPUT_OPTIONSParams(configFile, req) {
  182. var sum = 0;
  183. console.log("req.body: " + util.inspect(req.body));
  184. if (req.body.siren_def_alarm) sum += (1 << 0);
  185. if (req.body.siren_2x_click) sum += (1 << 1);
  186. if (req.body.light_def_alarm)sum += (1 << 8);
  187. if (req.body.light_2x_click) sum += (1 << 9);
  188. if (req.body.disps_def_alarm) sum += (1 << 16);
  189. if (req.body.disps_2x_click) sum += (1 << 17);
  190. if (req.body.comp_def_alarm) sum += (1 << 24);
  191. if (req.body.comp_2x_click) sum += (1 << 25);
  192. configFile["ALARM_OUTPUT_OPTIONS"] = sum;
  193.  
  194. // перекладыаем параметры из реквеста для отображения на странице после сабмита
  195. configFile["siren_def_alarm"] = req.body.siren_def_alarm ? 1 : 0;
  196. configFile["siren_2x_click"] = req.body.siren_2x_click ? 1 : 0;
  197. configFile["light_def_alarm"] = req.body.light_def_alarm ? 1 : 0;
  198. configFile["light_2x_click"] = req.body.light_2x_click ? 1 : 0;
  199. configFile["disps_def_alarm"] = req.body.disps_def_alarm ? 1 : 0;
  200. configFile["disps_2x_click"] = req.body.disps_2x_click ? 1 : 0;
  201. configFile["comp_def_alarm"] = req.body.comp_def_alarm ? 1 : 0;
  202. configFile["comp_2x_click"] = req.body.comp_2x_click ? 1 : 0;
  203. }
  204.  
  205. function sanitizeTime (value, units) {
  206. if (units == 3600 ) {
  207. if (!(value >= 1 && value <= 24)) {
  208. return 1;
  209. } else {
  210. return value;
  211. }
  212. } else if (units == 60) {
  213. if (!(value >= 1 && value <= 59)) {
  214. return 1;
  215. } else {
  216. return value;
  217. }
  218. } else if (units == 1) {
  219. if (!(value >= 1 && value <= 59)) {
  220. return 30;
  221. } else {
  222. return value;
  223. }
  224. }
  225. return 0;
  226. }
  227.  
  228. function calcTimeWithUnits(value, units) {
  229. var val = sanitizeTime(value, units) * units;
  230. if(val <= 0 ) return 0;
  231. if(val > 18000) return 18000;
  232. return val;
  233. }
  234.  
  235. function processDISCRETE_LINKAGEParams(configFile, req) {
  236. var sum = 0;
  237. if (req.body.gaz_siren) {
  238. sum += (1 << 0);
  239. }
  240. if (req.body.gaz_light) {
  241. sum += (1 << 1);
  242. }
  243. if (req.body.gaz_relay1) {
  244. sum += (1 << 2);
  245. }
  246. if (req.body.gaz_relay2) {
  247. sum += (1 << 3);
  248. }
  249. if (req.body.vibro_siren) {
  250. sum += (1 << 4);
  251. }
  252. if (req.body.vibro_light) {
  253. sum += (1 << 5);
  254. }
  255. if (req.body.vibro_relay1) {
  256. sum += (1 << 6);
  257. }
  258. if (req.body.vibro_relay2) {
  259. sum += (1 << 7);
  260. }
  261. if (req.body.incline_siren) {
  262. sum += (1 << 8);
  263. }
  264. if (req.body.incline_light) {
  265. sum += (1 << 9);
  266. }
  267. if (req.body.incline_relay1) {
  268. sum += (1 << 10);
  269. }
  270. if (req.body.incline_relay2) {
  271. sum += (1 << 11);
  272. }
  273. if (req.body.door_siren) {
  274. sum += (1 << 12);
  275. }
  276. if (req.body.door_light) {
  277. sum += (1 << 13);
  278. }
  279. if (req.body.door_relay1) {
  280. sum += (1 << 14);
  281. }
  282. if (req.body.door_relay2) {
  283. sum += (1 << 15);
  284. }
  285. if (req.body.card_siren) {
  286. sum += (1 << 16);
  287. }
  288. if (req.body.card_light) {
  289. sum += (1 << 17);
  290. }
  291. if (req.body.card_relay1) {
  292. sum += (1 << 18);
  293. }
  294. if (req.body.card_relay2) {
  295. sum += (1 << 19);
  296. }
  297.  
  298. var sireneUnits = parseInt(req.body.sirene_pulse_width_units);
  299. var sirene_pulse_width = calcTimeWithUnits(req.body.tmp_sirene_pulse_width, sireneUnits);
  300. var lightUnits = parseInt(req.body.light_pulse_width_units);
  301. var light_pulse_width = calcTimeWithUnits(req.body.tmp_light_pulse_width, lightUnits);
  302. var dispenserUnits = parseInt(req.body.dispenser_pulse_width_units);
  303. var dispenser_pulse_width = calcTimeWithUnits(req.body.tmp_dispenser_pulse_width, dispenserUnits);
  304. var computerUnits = parseInt(req.body.computer_pulse_width_units);
  305. var computer_pulse_width = calcTimeWithUnits(req.body.tmp_computer_pulse_width, computerUnits);
  306.  
  307. configFile["DISCRETE_LINKAGE"] = sum + ", " +
  308. "12, " +
  309. sirene_pulse_width + ", " +
  310. light_pulse_width + ", " +
  311. dispenser_pulse_width + ", " +
  312. computer_pulse_width;
  313.  
  314. configFile["gaz_siren"] = req.body.gaz_siren ? 1 : 0;
  315. configFile["gaz_light"] = req.body.gaz_light ? 1 : 0;
  316. configFile["gaz_relay1"] = req.body.gaz_relay1 ? 1 : 0;
  317. configFile["gaz_relay2"] = req.body.gaz_relay2 ? 1 : 0;
  318. configFile["vibro_siren"] = req.body.vibro_siren ? 1 : 0;
  319. configFile["vibro_light"] = req.body.vibro_light ? 1 : 0;
  320. configFile["vibro_relay1"] = req.body.vibro_relay1 ? 1 : 0;
  321. configFile["vibro_relay2"] = req.body.vibro_relay2 ? 1 : 0;
  322. configFile["incline_siren"] = req.body.incline_siren ? 1 : 0;
  323. configFile["incline_light"] = req.body.incline_light ? 1 : 0;
  324. configFile["incline_relay1"] = req.body.incline_relay1 ? 1 : 0;
  325. configFile["incline_relay2"] = req.body.incline_relay2 ? 1 : 0;
  326. configFile["door_siren"] = req.body.door_siren ? 1 : 0;
  327. configFile["door_light"] = req.body.door_light ? 1 : 0;
  328. configFile["door_relay1"] = req.body.door_relay1 ? 1 : 0;
  329. configFile["door_relay2"] = req.body.door_relay2 ? 1 : 0;
  330. configFile["card_siren"] = req.body.card_siren ? 1 : 0;
  331. configFile["card_light"] = req.body.card_light ? 1 : 0;
  332. configFile["card_relay1"] = req.body.card_relay1 ? 1 : 0;
  333. configFile["card_relay2"] = req.body.card_relay2 ? 1 : 0;
  334.  
  335. configFile["tmp_sirene_pulse_width"] = req.body.tmp_sirene_pulse_width;
  336. configFile["sirene_pulse_width_units"] = req.body.sirene_pulse_width_units;
  337. configFile["tmp_light_pulse_width"] = req.body.tmp_light_pulse_width;
  338. configFile["light_pulse_width_units"] = req.body.light_pulse_width_units;
  339. configFile["tmp_dispenser_pulse_width"] = req.body.tmp_dispenser_pulse_width;
  340. configFile["dispenser_pulse_width_units"] = req.body.dispenser_pulse_width_units;
  341. configFile["tmp_computer_pulse_width"] = req.body.tmp_computer_pulse_width;
  342. configFile["computer_pulse_width_units"] = req.body.computer_pulse_width_units;
  343. }
  344.  
  345. function processEquipmentSettingsParams(configFile, req) {
  346. configFile["READER_DB_SOURCE"] = req.body.READER_DB_SOURCE;
  347. configFile["READER_TYPE"] = req.body.READER_TYPE;
  348. configFile["LOCK_OPEN_POWERED"] = req.body.LOCK_OPEN_POWERED;
  349. configFile["LOCK_PULSE_WIDTH"] = req.body.LOCK_PULSE_WIDTH;
  350. configFile["DOOR_SENSOR_PRESENT"] = req.body.DOOR_SENSOR_PRESENT ? 1 : 0;
  351. configFile["DOOR_SENSOR_INVERTED"] = req.body.DOOR_SENSOR_INVERTED ? 1 : 0;
  352.  
  353. var checkDoorCriticalTimeUnits = parseInt(req.body.door_critical_time_units);
  354. var doorCriticalTime = calcTimeWithUnits(req.body.tmp_door_critical_time, checkDoorCriticalTimeUnits);
  355. configFile["DOOR_CRITICAL_TIME"] = doorCriticalTime;
  356. configFile["tmp_door_critical_time"] = req.body.tmp_door_critical_time;
  357. configFile["door_critical_time_units"] = req.body.door_critical_time_units;
  358.  
  359. configFile["DOOR_SENSOR_INVERTED"] = req.body.DOOR_SENSOR_INVERTED ? 1 : 0;
  360. configFile["DI3_FUNCTION"] = req.body.DI3_FUNCTION;
  361. configFile["DI4_FUNCTION"] = req.body.DI4_FUNCTION;
  362. configFile["INCLINE_SENSOR_TYPE"] = req.body.INCLINE_SENSOR_TYPE;
  363. }
  364.  
  365. function createFileFromRequest(configFile) {
  366. return "USER_NAME_PASSWORD= 00000\r\n" +
  367. "IP_ADDRESS= " + configFile.IP_ADDRESS + "\r\n" +
  368. "NETWORK_MASK= " + configFile.NETWORK_MASK + "\r\n" +
  369. "DEFAULT_GATEWAY= " + configFile.DEFAULT_GATEWAY + "\r\n" +
  370. "WEB_CONFIG_PORT= " + configFile.WEB_CONFIG_PORT + "\r\n" +
  371. "WEB_ALLOWED_TIME= " + configFile.WEB_ALLOWED_TIME + "\r\n" +
  372. "SUPERVISOR_CARD=\r\n" +
  373. "TIME_ZONE= " + configFile.TIME_ZONE + "\r\n" +
  374. "TIME_SERVER_ADDRESS= " + configFile.TIME_SERVER_ADDRESS + "\r\n" +
  375. "SET_MAIN_STATE= 0\r\n" +
  376. "BLOCKING_FLAGS= 0\r\n" +
  377. "TIMING_FLAG= 0\r\n" +
  378. "LOCK_OPEN_POWERED= " + configFile.LOCK_OPEN_POWERED + "\r\n" +
  379. "LOCK_PULSE_WIDTH= " + configFile.LOCK_PULSE_WIDTH + "\r\n" +
  380. "DOOR_SENSOR_PRESENT= 1\r\n" +
  381. "DOOR_SENSOR_INVERTED= " + configFile.DOOR_SENSOR_INVERTED + "\r\n" +
  382. "DI3_FUNCTION= " + configFile.DI3_FUNCTION + "\r\n" +
  383. "DI4_FUNCTION= " + configFile.DI4_FUNCTION + "\r\n" +
  384. "READER_DB_SOURCE= " + configFile.READER_DB_SOURCE + "\r\n" +
  385. "CHECK_DOOR_CRITICAL_TIME= 1\r\n" +
  386. "DOOR_CRITICAL_TIME= " + configFile.DOOR_CRITICAL_TIME + "\r\n" +
  387. "READER_TYPE= " + configFile.READER_TYPE + "\r\n" +
  388. "ACCESS_MODE= 0\r\n" +
  389. "INCLINE_SENSOR_TYPE= " + configFile.INCLINE_SENSOR_TYPE + "\r\n" +
  390. "SPRUT_IP= " + configFile.SPRUT_IP + "\r\n" +
  391. "SPRUT_PORT= " + configFile.SPRUT_PORT + "\r\n" +
  392. "SPRUT_KAPERIOD_INDEX= " + configFile.SPRUT_KAPERIOD_INDEX + "\r\n" +
  393. "RFID_BASE_PRESENT= 1949,6325\r\n" +
  394. "SCHEDULE_PRESENT= 0,0\r\n" +
  395. "LOCAL_CARD_INIT\r\n" +
  396. "LOCAL_CARD= " + configFile.LOCAL_CARD1 + "\r\n" +
  397. "LOCAL_CARD= " + configFile.LOCAL_CARD2 + "\r\n" +
  398. "LOCAL_CARD= " + configFile.LOCAL_CARD3 + "\r\n" +
  399. "LOCAL_CARD= " + configFile.LOCAL_CARD4 + "\r\n" +
  400. "LOCAL_CARD= " + configFile.LOCAL_CARD5 + "\r\n" +
  401. "LOCAL_CARD= " + configFile.LOCAL_CARD6 + "\r\n" +
  402. "LOCAL_CARD= " + configFile.LOCAL_CARD7 + "\r\n" +
  403. "LOCAL_CARD= " + configFile.LOCAL_CARD8 + "\r\n" +
  404. "LOCAL_CARD= " + configFile.LOCAL_CARD9 + "\r\n" +
  405. "LOCAL_CARD= " + configFile.LOCAL_CARD10 + "\r\n" +
  406. "LOCAL_CARD= " + configFile.LOCAL_CARD11 + "\r\n" +
  407. "LOCAL_CARD= " + configFile.LOCAL_CARD12 + "\r\n" +
  408. "LOCAL_CARD= " + configFile.LOCAL_CARD13 + "\r\n" +
  409. "LOCAL_CARD= " + configFile.LOCAL_CARD14 + "\r\n" +
  410. "LOCAL_CARD= " + configFile.LOCAL_CARD15 + "\r\n" +
  411. "LOCAL_CARD= " + configFile.LOCAL_CARD16 + "\r\n" +
  412. "LOCAL_CARD= " + configFile.LOCAL_CARD17 + "\r\n" +
  413. "LOCAL_CARD= " + configFile.LOCAL_CARD18 + "\r\n" +
  414. "LOCAL_CARD= " + configFile.LOCAL_CARD19 + "\r\n" +
  415. "LOCAL_CARD= " + configFile.LOCAL_CARD20 + "\r\n" +
  416. "LOCAL_CARD= " + configFile.LOCAL_CARD21 + "\r\n" +
  417. "LOCAL_CARD= " + configFile.LOCAL_CARD22 + "\r\n" +
  418. "LOCAL_CARD= " + configFile.LOCAL_CARD23 + "\r\n" +
  419. "DISCRETE_LINKAGE= " + configFile.DISCRETE_LINKAGE + "\r\n" +
  420. "ALARM_OUTPUT_OPTIONS= " + configFile.ALARM_OUTPUT_OPTIONS + "\r\n" +
  421. "WEB_INTERFACE_ENABLE= 1" + "\r\n";
  422. }
  423.  
  424. module.exports = {
  425.  
  426. index: function (req, res, next) {
  427. var deviceId = req.query.device_id;
  428. DevicesModel.getDeviceById(deviceId, function(err, device) {
  429. if (!err && device.length == 1) {
  430. var serialNumber = device[0].serial_number;
  431. console.log("device serial_number: "+serialNumber);
  432. HTTPHelper.getControllerSetupCommandHTTP(serialNumber, function(err, body) {
  433. if (!err && body && body.h1_resp) {
  434. console.log("body: " + util.inspect(body));
  435. try {
  436. var configFile = parseCfg(body.h1_resp);
  437. configFile["device_id"] = deviceId;
  438. configFile["serial_number"] = serialNumber;
  439. addDOOR_CRITICAL_TIMEParams(configFile);
  440. addDISCRETE_LINKAGE0Params(configFile);
  441. addDISCRETE_LINKAGEsiren_pulse_widthParams(configFile);
  442. addALARM_OUTPUT_OPTIONSParams(configFile);
  443. addDISCRETE_LINKAGEsiren_pulse_widthParams(configFile);
  444. addDISCRETE_LINKAGElight_pulse_widthParams(configFile);
  445. addDISCRETE_LINKAGEdispenser_pulse_widthParams(configFile);
  446. addDISCRETE_LINKAGEcomputer_pulse_widthParams(configFile);
  447. console.log("configFile: " + JSON.stringify(configFile));
  448. res.render('access_control', {user:req.user, configFile: configFile});
  449. } catch (e) {
  450. winston.error(PAGE_NAME + "Error while parsing config file: " + util.inspect(e));
  451. res.render('access_control', {error: "Error while parsing config file " + e, user: req.user});
  452. }
  453. } else {
  454. res.render('access_control', {error: "Error while obtaining config file: " + err, user: req.user});
  455. }
  456. });
  457. /* HTTPHelper.sendControllerCommandHTTP('GET_IDS', serialNumber, function(err, body) {
  458. var configFile = parseCfg(body.h1_resp);
  459. configFile["part_number"] = part_number;
  460. configFile["firmware_ver"] = firmware_ver;
  461. res.render('access_control', {user: req.user, configFile: configFile});
  462. }); */
  463. } else {
  464. res.render('access_control',
  465. {
  466. user:req.user,
  467. configFile: {},
  468. status: -1,
  469. error: "Ошибка при получении устройства по id: " + deviceId + " err: " + err
  470. });
  471. }
  472.  
  473. });
  474. },
  475.  
  476. save: function(req, res, next) {
  477. var deviceId = req.body.device_id;
  478. DevicesModel.getDeviceById(deviceId, function(err, device) {
  479. if (!err && device.length == 1) {
  480. var serialNumber = device[0].serial_number;
  481. var uploadFileName = "PBFACU.CFG";
  482. var mimeType = "application/octet-stream";
  483.  
  484. var configFile = {};
  485. // TODO валидировать параметры из реквеста, а не перекладывать напрямую в файл
  486. try {
  487. configFile["device_id"] = deviceId;
  488. processNetworkParams(configFile, req);
  489. processDateTimeParams(configFile, req);
  490. processLocalMinibaseRFIDParams(configFile, req);
  491. processEquipmentSettingsParams(configFile, req);
  492. processALARM_OUTPUT_OPTIONSParams(configFile, req);
  493. processDISCRETE_LINKAGEParams(configFile, req);
  494. console.log("configFile: " + util.inspect(configFile));
  495. } catch (e) {
  496. res.status(400).json({error: "Ошибка параметров формы: " + e});
  497. }
  498.  
  499. var pData = createFileFromRequest(configFile);
  500.  
  501. console.log("pData: " + pData);
  502.  
  503. HTTPHelper.uploadControllerConfigFileHTTP(
  504. uploadFileName,
  505. mimeType,
  506. serialNumber,
  507. pData, function (err, json) {
  508. if (err) {
  509. winston.error(PAGE_NAME + "Error while key loading to device: " + serialNumber);
  510. winston.error(util.inspect(err));
  511. return res.status(500).json({error: "Ошибка при загрузке на сервер"});
  512. }
  513. winston.info("uploadHTTP response: " + util.inspect(json));
  514. var error = Validator.validateH1Resp(json, "File has been uploaded");
  515. if (error) {
  516. winston.error("Configuration save error: " + error);
  517. return res.status(500).json({error: error});
  518. }
  519. winston.info("Configuration saved successfully");
  520. return res.json({message: "Конфигурация контроллера успешно сохранена"});
  521. }
  522. );
  523.  
  524. } else {
  525. res.status(400).json({error: "Ошибка при получении устройства по id: " + deviceId + " err: " + err});
  526. }
  527. });
  528. },
  529.  
  530. serverTimeSync: function(req, res, next) {
  531. var deviceId = req.body.device_id;
  532. DevicesModel.getDeviceById(deviceId, function(err, device) {
  533. if (!err && device.length == 1) {
  534. var serialNumber = device[0].serial_number;
  535. var serverTimeSync = req.body.SERVER_TIME_SYNC;
  536. HTTPHelper.sendControllerCommandHTTP(serverTimeSync, serialNumber, function(err, json) {
  537. winston.error(util.inspect(err));
  538. return res.status(500).json({error: "Ошибка при синхронизации времени с сервером"});
  539. });
  540. } else {
  541. res.status(400).json({error: "Ошибка при получении устройства по id: " + deviceId + " err: " + err});
  542. }
  543. })
  544. },
  545.  
  546. setTimeZone: function(req, res, next) {
  547. var deviceId = req.body.device_id;
  548. DevicesModel.getDeviceById(deviceId, function(err, device) {
  549. if (!err && device.length == 1) {
  550. var serialNumber = device[0].serial_number;
  551. var setTimeZone = req.body.TIME_ZONE;
  552. HTTPHelper.sendControllerCommandHTTP(setTimeZone, serialNumber, function(err, json) {
  553. winston.error(util.inspect(err));
  554. return res.status(500).json({error: "Ошибка при установке часового пояса"});
  555. });
  556. } else {
  557. res.status(400).json({error: "Ошибка при получении устройства по id: " + deviceId + " err: " + err});
  558. }
  559. })
  560. }
  561. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement