welsonjs/uriloader.js

85 lines
2.8 KiB
JavaScript
Raw Normal View History

2020-07-21 06:14:14 +00:00
//////////////////////////////////////////////////////////////////////////////////
//
// uriloader.js
//
/////////////////////////////////////////////////////////////////////////////////
2020-07-07 23:16:52 +00:00
var SHELL = require("lib/shell");
2020-07-07 15:55:50 +00:00
return {
main: function(args) {
2020-07-07 23:16:52 +00:00
var uri = args[0];
2020-07-27 00:54:52 +00:00
var pos = uri.indexOf(":///");
2020-07-07 23:16:52 +00:00
if(pos < 0) {
2020-07-27 00:54:52 +00:00
console.log("Not vaild URI scheme");
2020-07-07 23:16:52 +00:00
} else {
2020-07-27 00:54:52 +00:00
var cmd = [],
queryString = uri.substring(pos + 4),
2020-07-27 00:54:52 +00:00
query = this.parseQueryString(queryString);
2020-07-07 23:16:52 +00:00
if(!query.application) {
query.application = "";
}
switch(query.application) {
2020-07-21 08:13:33 +00:00
case "app":
2020-07-27 00:54:52 +00:00
cmd.push(["app.hta"].concat(args));
2020-07-21 08:13:33 +00:00
break;
2020-07-07 23:16:52 +00:00
case "mscalc":
2020-07-27 00:54:52 +00:00
cmd.push("calc.exe");
2020-07-07 23:16:52 +00:00
break;
2020-07-21 08:12:42 +00:00
case "msie":
2020-07-27 00:54:52 +00:00
cmd.push("%PROGRAMFILES%\\Internet Explorer\\iexplore.exe");
cmd.push("https://github.com/gnh1201/welsonjs");
2020-07-21 08:12:42 +00:00
break;
2020-07-07 23:16:52 +00:00
case "msexcel":
2020-07-27 00:54:52 +00:00
cmd.push("%PROGRAMFILES%\\Microsoft Office\\Office15\\EXCEL.EXE");
2020-07-07 23:16:52 +00:00
break;
case "mspowerpoint":
2020-07-27 00:54:52 +00:00
cmd.push("%PROGRAMFILES%\\Microsoft Office\\Office15\\POWERPNT.EXE");
2020-07-07 23:16:52 +00:00
break;
case "msword":
2020-07-27 00:54:52 +00:00
cmd.push("%PROGRAMFILES%\\Microsoft Office\\Office15\\WINWORD.EXE");
2020-07-07 23:16:52 +00:00
break;
case "msaccess":
2020-07-27 00:54:52 +00:00
cmd.push("%PROGRAMFILES%\\Microsoft Office\\Office15\\MSACCESS.EXE");
2020-07-07 23:16:52 +00:00
break;
dafault:
console.log("Unknown application");
break;
}
2020-07-27 00:54:52 +00:00
if(typeof(query.args) !== "undefined") {
cmd.push(query.args);
}
2020-07-27 00:54:52 +00:00
SHELL.run(cmd);
2020-07-23 10:35:53 +00:00
return 0;
2020-07-07 23:16:52 +00:00
}
2020-07-27 00:54:52 +00:00
},
parseQueryString: function(queryString) {
var query = {};
var pairs = (queryString.substring(0, 1) === '?' ? queryString.substring(1) : queryString).split('&');
for (var i in pairs) {
var pair = pairs[i].split('=');
var _k = decodeURIComponent(pair[0]);
var _v = decodeURIComponent(pair[1] || '');
var path = _k.split('[').map(function(s) {
return (s.indexOf(']') < 0 ? s : s.substring(0, s.length -1));
}).join('/');
if(path in query) {
if (Array.isArray(query[path])) {
query[path].push(_v);
} else {
query[path] = [query[path], _v];
}
} else {
query[path] = _v;
}
}
return query;
};
2020-07-07 15:55:50 +00:00
}