Blame view
lib/modems2.js
2.72 KB
f43dbc16a
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
'use strict'; const modemList = { by_name: {}, by_imsi: {}, by_msisdn: {}, }; /** * Objek data sebuah modem. * * @typedef {Object} ModemData * @property {string} name - nama modem |
7f757cc71
|
14 |
* @property {string} device - modem device path |
f43dbc16a
|
15 16 |
* @property {string} imsi - IMSI modem * @property {string} msisdn - MSISDN modem |
7f757cc71
|
17 18 19 |
* @property {string} networkId - operator network id * @property {string} networkName - operator network name * @property {string} signalStrength - modem signal strength |
527c38f99
|
20 |
* @property {number} uptime - modem uptime in seconds |
f43dbc16a
|
21 22 23 |
* @property {string} reportIp - IP modem * @property {number} reportPort - TCP port modem * @property {string} reportApikey - APIKEY modem |
b6d23624a
|
24 |
* @property {string} reportPathSms - url path untuk pengiriman SMS |
f43dbc16a
|
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
*/ /** * Update data sebuah modem berdasarkan nama modem. * * @param {ModemData} val - objek data modem */ function touchByName(val) { if (!val || !val.name) return; if (typeof val.name !== 'string') return; if (!val.name.trim()) return; modemList.by_name[val.name] = val; } /** * Update data sebuah modem berdasarkan IMSI. * * @param {ModemData} val - objek data modem */ function touchByIMSI(val) { if (!val || !val.imsi) return; if (typeof val.imsi !== 'string') return; if (!val.imsi.trim()) return; |
02503ffca
|
48 49 50 51 |
const oldName = modemList.by_imsi[val.imsi] ? modemList.by_imsi[val.imsi].name : null; if (oldName && oldName !== val.name && modemList.by_name[oldName]) { delete modemList.by_name[oldName]; } |
f43dbc16a
|
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
modemList.by_imsi[val.imsi] = val; } /** * Update data sebuah modem berdasarkan MSISDN. * * @param {ModemData} val - objek data modem */ function touchByMSISDN(val) { if (!val || !val.msisdn) return; if (typeof val.msisdn !== 'string') return; if (!val.msisdn.trim()) return; modemList.by_msisdn[val.msisdn] = val; } /** * Update data sebuah modem. * * @param {ModemData} val - objek data modem * @see ModemData */ function touch(val) { |
527c38f99
|
75 76 77 |
if (!val || typeof val !== 'object') return; val._ts = new Date(); |
f43dbc16a
|
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
if (!val.reportIp) { val.reportIp = '127.0.0.1'; } touchByName(val); touchByIMSI(val); touchByMSISDN(val); } /** * Ambil data sebuah modem. * * @param {string} selector - selector pencarian, valid jika bernilai salah satu dari: name, imsi, msisdn * @param {string} keyword - kata kunci modem yang ingin diambil * @returns {ModemData} data modem terkait */ function get(selector, keyword) { if (!selector || !keyword) return null; return modemList[`by_${selector}`] ? modemList[`by_${selector}`][keyword] : null; } |
d23d98061
|
99 100 101 |
function dump() { return modemList; } |
f43dbc16a
|
102 103 |
exports.touch = touch; exports.set = touch; |
d23d98061
|
104 105 |
exports.get = get; exports.dump = dump; |