Commit 1d120a911060e042f9671582a46eced56b4d8446
1 parent
788e8154b3
Exists in
master
SMSTOOLS-CONFIG set single value
Showing 2 changed files with 61 additions and 0 deletions Side-by-side Diff
lib/apiserver/routers/smstools-config.js
... | ... | @@ -82,6 +82,42 @@ async function pageModemSet(req, res) { |
82 | 82 | }); |
83 | 83 | } |
84 | 84 | |
85 | +async function pageModemSetSingleValue(req, res) { | |
86 | + if (!req.body) { | |
87 | + res.json({ | |
88 | + status: 'NOT OK', | |
89 | + message: 'Empty body', | |
90 | + }); | |
91 | + return; | |
92 | + } | |
93 | + | |
94 | + const modemName = (req.params.modemName || '').trim(); | |
95 | + if (!modemName) { | |
96 | + res.json({ | |
97 | + status: 'NOT OK', | |
98 | + message: 'Invalid modem name', | |
99 | + }); | |
100 | + return; | |
101 | + } | |
102 | + | |
103 | + const keyword = (req.body.keyword || '').trim(); | |
104 | + if (!keyword) { | |
105 | + res.json({ | |
106 | + status: 'NOT OK', | |
107 | + message: 'Invalid keyword', | |
108 | + }); | |
109 | + return; | |
110 | + } | |
111 | + | |
112 | + const { value } = req.body; | |
113 | + | |
114 | + const result = await smstoolsConfigSetter.setModemSingleValue(modemName, keyword, value); | |
115 | + res.json({ | |
116 | + dirty: !!smstoolsConfigData.dirty, | |
117 | + result, | |
118 | + }); | |
119 | +} | |
120 | + | |
85 | 121 | async function pageModemDelete(req, res) { |
86 | 122 | const modemName = (req.params.modemName || '').trim(); |
87 | 123 | if (!modemName) { |
... | ... | @@ -116,5 +152,6 @@ router.get('/modems', pageModemList); |
116 | 152 | |
117 | 153 | router.get('/set/:keyword', pageSet); |
118 | 154 | router.post('/modem/set/:modemName', bodyParser.json({ type: '*/json' }), pageModemSet); |
155 | +router.post('/modem/set-single-value/:modemName', bodyParser({ type: '*/json' }), pageModemSetSingleValue); | |
119 | 156 | router.get('/modem/delete/:modemName', pageModemDelete); |
120 | 157 | router.get('/install-config', pageInstallConfig); |
lib/smstools-config/setter.js
... | ... | @@ -73,6 +73,30 @@ exports.setModem = async (modemName, data) => { |
73 | 73 | return smstoolsConfigData; |
74 | 74 | }; |
75 | 75 | |
76 | +exports.setModemSingleValue = async (modemName, keyword, value) => { | |
77 | + if (!modemName) return smstoolsConfigData; | |
78 | + | |
79 | + if (keyword === 'device') { | |
80 | + const modemWithSameDevice = getModemByDevice(value); | |
81 | + if (modemWithSameDevice && modemWithSameDevice !== modemName) { | |
82 | + return smstoolsConfigData; | |
83 | + } | |
84 | + } | |
85 | + | |
86 | + if (!smstoolsConfigData.modems) { | |
87 | + smstoolsConfigData.modems = {}; | |
88 | + } | |
89 | + | |
90 | + if (!smstoolsConfigData.modems[modemName]) { | |
91 | + smstoolsConfigData.modems[modemName] = {}; | |
92 | + } | |
93 | + | |
94 | + smstoolsConfigData.modems[modemName][keyword] = value; | |
95 | + smstoolsConfigData.dirty = true; | |
96 | + await writeConfig(); | |
97 | + return smstoolsConfigData; | |
98 | +}; | |
99 | + | |
76 | 100 | |
77 | 101 | exports.delModem = async (modemName) => { |
78 | 102 | if (!modemName) return smstoolsConfigData; |