mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Add luci-proto-modemmanager to add puk code and display device in Network->Interfaces
This commit is contained in:
parent
307d22341f
commit
6511494f1c
6 changed files with 489 additions and 0 deletions
|
|
@ -0,0 +1,101 @@
|
|||
'use strict';
|
||||
'require baseclass';
|
||||
'require fs';
|
||||
|
||||
return baseclass.extend({
|
||||
|
||||
_mmcliBin: '/usr/bin/mmcli',
|
||||
|
||||
_emptyStringValue: '--',
|
||||
|
||||
_parseIndex: function (dbusPath) {
|
||||
var index = dbusPath.split('/').slice(-1);
|
||||
return parseInt(index);
|
||||
},
|
||||
|
||||
_parseOutput: function (output) {
|
||||
try {
|
||||
return this._removeEmptyStrings(JSON.parse(output));
|
||||
} catch (err) {
|
||||
return null;
|
||||
}
|
||||
},
|
||||
|
||||
_removeEmptyStrings: function (obj) {
|
||||
if (obj == null) {
|
||||
return obj;
|
||||
}
|
||||
|
||||
if (typeof obj == 'string') {
|
||||
if (obj == this._emptyStringValue) {
|
||||
obj = null;
|
||||
}
|
||||
} else if (Array.isArray()) {
|
||||
obj = obj.map(L.bind(function (it) {
|
||||
return this._removeEmptyStrings(it);
|
||||
}, this));
|
||||
} else {
|
||||
var keys = Object.keys(obj);
|
||||
keys.forEach(L.bind(function (key) {
|
||||
obj[key] = this._removeEmptyStrings(obj[key]);
|
||||
}, this));
|
||||
}
|
||||
|
||||
return obj;
|
||||
},
|
||||
|
||||
getModems: function () {
|
||||
return fs.exec_direct(this._mmcliBin, [ '-L', '-J' ]).then(L.bind(function (res) {
|
||||
var json = this._parseOutput(res);
|
||||
if (json == null) {
|
||||
return [];
|
||||
}
|
||||
var modems = json['modem-list'];
|
||||
var tasks = [];
|
||||
|
||||
modems.forEach(L.bind(function (modem) {
|
||||
var index = this._parseIndex(modem);
|
||||
if (!isNaN(index)) {
|
||||
tasks.push(this.getModem(index));
|
||||
}
|
||||
}, this));
|
||||
return Promise.all(tasks);
|
||||
}, this));
|
||||
},
|
||||
|
||||
getModem: function (index) {
|
||||
return fs.exec_direct(this._mmcliBin, [ '-m', index, '-J' ]).then(L.bind(function (modem) {
|
||||
return this._parseOutput(modem);
|
||||
}, this));
|
||||
},
|
||||
|
||||
getModemSims: function (modem) {
|
||||
var tasks = [];
|
||||
var simSlots = modem.generic['sim-slots'];
|
||||
var sim = modem.generic.sim;
|
||||
if (sim != null && !simSlots.includes(sim)) {
|
||||
simSlots.push(sim);
|
||||
}
|
||||
|
||||
simSlots.forEach(L.bind(function (modem) {
|
||||
var index = this._parseIndex(modem);
|
||||
if (!isNaN(index)) {
|
||||
tasks.push(this.getSim(index));
|
||||
}
|
||||
}, this));
|
||||
return Promise.all(tasks);
|
||||
},
|
||||
|
||||
getSim: function (index) {
|
||||
return fs.exec_direct(this._mmcliBin, [ '-i', index, '-J' ]).then(L.bind(function (sim) {
|
||||
return this._parseOutput(sim);
|
||||
}, this));
|
||||
},
|
||||
|
||||
getModemLocation: function (modem) {
|
||||
var index = this._parseIndex(modem['dbus-path']);
|
||||
return fs.exec_direct(this._mmcliBin, [ '-m', index, '--location-get', '-J' ]).then(L.bind(function (location) {
|
||||
return this._parseOutput(location);
|
||||
}, this));
|
||||
}
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue