luci-base: fs.js: exec_direct(): add ability to encode command as latin1
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
9bb78b5cd8
commit
dc60aaeb77
1 changed files with 12 additions and 2 deletions
|
@ -390,12 +390,17 @@ var FileSystem = L.Class.extend(/** @lends LuCI.fs.prototype */ {
|
||||||
* `text` to interpret the output as string, `json` to parse the output
|
* `text` to interpret the output as string, `json` to parse the output
|
||||||
* as JSON or `blob` to return the output as Blob instance.
|
* as JSON or `blob` to return the output as Blob instance.
|
||||||
*
|
*
|
||||||
|
* @param {boolean} [latin1=false]
|
||||||
|
* Whether to encode the command line as Latin1 instead of UTF-8. This
|
||||||
|
* is usually not needed but can be useful for programs that cannot
|
||||||
|
* handle UTF-8 input.
|
||||||
|
*
|
||||||
* @returns {Promise<*>}
|
* @returns {Promise<*>}
|
||||||
* Returns a promise resolving with the command stdout output interpreted
|
* Returns a promise resolving with the command stdout output interpreted
|
||||||
* according to the specified type or rejecting with an error stating the
|
* according to the specified type or rejecting with an error stating the
|
||||||
* failure reason.
|
* failure reason.
|
||||||
*/
|
*/
|
||||||
exec_direct: function(command, params, type) {
|
exec_direct: function(command, params, type, latin1) {
|
||||||
var cmdstr = String(command)
|
var cmdstr = String(command)
|
||||||
.replace(/\\/g, '\\\\').replace(/(\s)/g, '\\$1');
|
.replace(/\\/g, '\\\\').replace(/(\s)/g, '\\$1');
|
||||||
|
|
||||||
|
@ -404,8 +409,13 @@ var FileSystem = L.Class.extend(/** @lends LuCI.fs.prototype */ {
|
||||||
cmdstr += ' ' + String(params[i])
|
cmdstr += ' ' + String(params[i])
|
||||||
.replace(/\\/g, '\\\\').replace(/(\s)/g, '\\$1');
|
.replace(/\\/g, '\\\\').replace(/(\s)/g, '\\$1');
|
||||||
|
|
||||||
|
if (latin1)
|
||||||
|
cmdstr = escape(cmdstr).replace(/\+/g, '%2b');
|
||||||
|
else
|
||||||
|
cmdstr = encodeURIComponent(cmdstr);
|
||||||
|
|
||||||
var postdata = 'sessionid=%s&command=%s'
|
var postdata = 'sessionid=%s&command=%s'
|
||||||
.format(encodeURIComponent(L.env.sessionid), encodeURIComponent(cmdstr));
|
.format(encodeURIComponent(L.env.sessionid), cmdstr);
|
||||||
|
|
||||||
return L.Request.post(L.env.cgi_base + '/cgi-exec', postdata, {
|
return L.Request.post(L.env.cgi_base + '/cgi-exec', postdata, {
|
||||||
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
||||||
|
|
Loading…
Reference in a new issue