* [FIX] Wrong URL handling when downloading files. Thanks to @fprina for the feedback ans testing. Closes #1354

Signed-off-by: Rubén D <nuxsmin@syspass.org>
This commit is contained in:
Rubén D
2019-05-25 20:28:35 +02:00
parent 58dbc3509e
commit 1adb103f29
5 changed files with 15 additions and 14 deletions

View File

@@ -61,8 +61,8 @@ final class Installer extends Service
* sysPass' version and build number
*/
const VERSION = [3, 1, 0];
const VERSION_TEXT = '3.1-RC3';
const BUILD = 19052502;
const VERSION_TEXT = '3.1-RC4';
const BUILD = 19052503;
/**
* @var DatabaseSetupInterface

View File

@@ -942,11 +942,11 @@ sysPass.Actions = function (log) {
log.info("file:download");
const fileType = $obj.data("item-type");
const url = sysPassApp.util.getUrl(ajaxUrl.entrypoint,
const url = sysPassApp.requests.getUrl(sysPassApp.util.getUrl(ajaxUrl.entrypoint,
{
r: [$obj.data("action-route"), $obj.data("item-id")],
sk: sysPassApp.sk.get()
});
}));
if (fileType === 'application/pdf') {
window.open(url, '_blank');

View File

@@ -34,11 +34,11 @@ sysPassApp.sk.set(a.csrf)})},nav:function(a,b){c.info("grid:nav");var d=$("#"+a.
sysPassApp.msg.error(sysPassApp.config.LANG[44])}},positive:{title:sysPassApp.config.LANG[43],onClick:function(a){a.preventDefault();"function"===typeof b&&b(c)}}})},getSelection:function(a){a=a.data("selection");var b=[];return a&&($(a).find(".is-selected").each(function(){b.push($(this).data("item-id"))}),0===b.length)?!1:b}},r={runner:null,run:function(a){c.info("task:run");c.info("taskId: "+a);var b=$("#taskStatus");b.css("display","block");b.empty().html(sysPassApp.config.LANG[62]);var d=sysPassApp.requests.getRequestOpts();
d.method="get";d.url=sysPassApp.util.getUrl(e.entrypoint,{r:["task/trackStatus",a]});return this.runner=sysPassApp.requests.getActionEvent(d,function(a){a=a.task+" - "+a.message+" - "+a.time+" - "+a.progress+"%<br>"+sysPassApp.config.LANG[62];c.info(a);b.empty().html(a)})},end:function(){c.info("task:end");null!==this.runner&&(c.info("Task ended"),this.runner.close(),$("#taskStatus").css("display","none"))}};return{getContent:f,showFloatingBox:h,closeFloatingBox:p,appMgmt:v,account:m,accountManager:{restore:function(a){c.info("accountManager:restore");
g.state.update(a);var b=a.data("item-id"),d=sysPassApp.requests.getRequestOpts();d.method="get";d.url=sysPassApp.util.getUrl(e.entrypoint,{r:[a.data("action-route"),a.data("item-id")],sk:sysPassApp.sk.get(),isAjax:1});sysPassApp.requests.getActionCall(d,function(d){sysPassApp.msg.out(d);0===d.status&&((d=a.data("action-next"))?f({r:[d,b]}):f({r:g.state.tab.route,tabIndex:g.state.tab.index}))})}},file:{view:function(a){c.info("file:view");var b=sysPassApp.requests.getRequestOpts();b.method="get";b.url=
sysPassApp.util.getUrl(e.entrypoint,{r:[a.data("action-route"),a.data("item-id")],sk:sysPassApp.sk.get()});sysPassApp.requests.getActionCall(b,function(b){if(0!==b.status)return sysPassApp.msg.out(b);q(a,b.data.html)})},download:function(a){c.info("file:download");var b=a.data("item-type");a=sysPassApp.util.getUrl(e.entrypoint,{r:[a.data("action-route"),a.data("item-id")],sk:sysPassApp.sk.get()});"application/pdf"===b?window.open(a,"_blank"):$.fileDownload(a,{httpMethod:"GET",successCallback:function(a){sysPassApp.msg.ok(sysPassApp.config.LANG[72])}})},
delete:function(a){c.info("file:delete");var b='<div id="alert"><p id="alert-text">'+sysPassApp.config.LANG[15]+"</p></div>";mdlDialog().show({text:b,negative:{title:sysPassApp.config.LANG[44],onClick:function(a){a.preventDefault();sysPassApp.msg.error(sysPassApp.config.LANG[44])}},positive:{title:sysPassApp.config.LANG[43],onClick:function(b){b=sysPassApp.requests.getRequestOpts();b.method="get";b.url=sysPassApp.util.getUrl(e.entrypoint,{r:[a.data("action-route"),a.data("item-id")],sk:sysPassApp.sk.get()});
sysPassApp.requests.getActionCall(b,function(a){sysPassApp.msg.out(a);0===a.status&&m.listFiles($("#list-account-files"))})}}})}},checks:{wiki:function(a){c.info("checks:wiki");a=$(a.data("src"));a.find("[name='sk']").val(sysPassApp.sk.get());var b=sysPassApp.requests.getRequestOpts();b.url=e.entrypoint;b.data=a.serialize();sysPassApp.requests.getActionCall(b,function(a){sysPassApp.msg.out(a);0===a.status&&$("#dokuWikiResCheck").html(a.data)})}},config:{save:function(a){c.info("config:save");g.save(a)},
masterpass:function(a){c.info("config:masterpass");var b='<div id="alert"><p id="alert-text">'+sysPassApp.config.LANG[59]+"</p></div>";mdlDialog().show({text:b,negative:{title:sysPassApp.config.LANG[44],onClick:function(b){b.preventDefault();sysPassApp.msg.error(sysPassApp.config.LANG[44]);a.find(":input[type=password]").val("")}},positive:{title:sysPassApp.config.LANG[43],onClick:function(b){b=a.find("input[name='taskId']").val();var d=sysPassApp.requests.getRequestOpts();b&&(d.useFullLoading=!0,
r.run(b));d.url=sysPassApp.util.getUrl(e.entrypoint,{r:a.data("action-route")});d.data=a.serialize()+"&sk="+sysPassApp.sk.get();sysPassApp.requests.getActionCall(d,function(b){sysPassApp.msg.out(b);a.find(":input[type=password]").val("");r.end()})}}})},backup:function(a){c.info("config:backup");g.state.update(a);var b=sysPassApp.requests.getRequestOpts();b.url=e.entrypoint+"?r="+a.data("action-route");b.useFullLoading=!0;b.data=a.serialize()+"&sk="+sysPassApp.sk.get();sysPassApp.requests.getActionCall(b,
sysPassApp.util.getUrl(e.entrypoint,{r:[a.data("action-route"),a.data("item-id")],sk:sysPassApp.sk.get()});sysPassApp.requests.getActionCall(b,function(b){if(0!==b.status)return sysPassApp.msg.out(b);q(a,b.data.html)})},download:function(a){c.info("file:download");var b=a.data("item-type");a=sysPassApp.requests.getUrl(sysPassApp.util.getUrl(e.entrypoint,{r:[a.data("action-route"),a.data("item-id")],sk:sysPassApp.sk.get()}));"application/pdf"===b?window.open(a,"_blank"):$.fileDownload(a,{httpMethod:"GET",
successCallback:function(a){sysPassApp.msg.ok(sysPassApp.config.LANG[72])}})},delete:function(a){c.info("file:delete");var b='<div id="alert"><p id="alert-text">'+sysPassApp.config.LANG[15]+"</p></div>";mdlDialog().show({text:b,negative:{title:sysPassApp.config.LANG[44],onClick:function(a){a.preventDefault();sysPassApp.msg.error(sysPassApp.config.LANG[44])}},positive:{title:sysPassApp.config.LANG[43],onClick:function(b){b=sysPassApp.requests.getRequestOpts();b.method="get";b.url=sysPassApp.util.getUrl(e.entrypoint,
{r:[a.data("action-route"),a.data("item-id")],sk:sysPassApp.sk.get()});sysPassApp.requests.getActionCall(b,function(a){sysPassApp.msg.out(a);0===a.status&&m.listFiles($("#list-account-files"))})}}})}},checks:{wiki:function(a){c.info("checks:wiki");a=$(a.data("src"));a.find("[name='sk']").val(sysPassApp.sk.get());var b=sysPassApp.requests.getRequestOpts();b.url=e.entrypoint;b.data=a.serialize();sysPassApp.requests.getActionCall(b,function(a){sysPassApp.msg.out(a);0===a.status&&$("#dokuWikiResCheck").html(a.data)})}},
config:{save:function(a){c.info("config:save");g.save(a)},masterpass:function(a){c.info("config:masterpass");var b='<div id="alert"><p id="alert-text">'+sysPassApp.config.LANG[59]+"</p></div>";mdlDialog().show({text:b,negative:{title:sysPassApp.config.LANG[44],onClick:function(b){b.preventDefault();sysPassApp.msg.error(sysPassApp.config.LANG[44]);a.find(":input[type=password]").val("")}},positive:{title:sysPassApp.config.LANG[43],onClick:function(b){b=a.find("input[name='taskId']").val();var d=sysPassApp.requests.getRequestOpts();
b&&(d.useFullLoading=!0,r.run(b));d.url=sysPassApp.util.getUrl(e.entrypoint,{r:a.data("action-route")});d.data=a.serialize()+"&sk="+sysPassApp.sk.get();sysPassApp.requests.getActionCall(d,function(b){sysPassApp.msg.out(b);a.find(":input[type=password]").val("");r.end()})}}})},backup:function(a){c.info("config:backup");g.state.update(a);var b=sysPassApp.requests.getRequestOpts();b.url=e.entrypoint+"?r="+a.data("action-route");b.useFullLoading=!0;b.data=a.serialize()+"&sk="+sysPassApp.sk.get();sysPassApp.requests.getActionCall(b,
function(a){sysPassApp.msg.out(a);0===a.status&&f({r:g.state.tab.route,tabIndex:g.state.tab.index})})},export:function(a){c.info("config:export");g.save(a)},import:function(a){c.info("config:import");var b=sysPassApp.requests.getRequestOpts();b.url=e.entrypoint+"?r="+a.data("action-route");b.data=a.serialize()+"&sk="+sysPassApp.sk.get();sysPassApp.requests.getActionCall(b,function(a){sysPassApp.msg.out(a)})},refreshMpass:function(a){c.info("config:import");var b=sysPassApp.requests.getRequestOpts();
b.method="get";b.url=sysPassApp.util.getUrl(e.entrypoint,{r:a.data("action-route"),sk:sysPassApp.sk.get(),isAjax:1});sysPassApp.requests.getActionCall(b,function(a){sysPassApp.msg.out(a)})},mailCheck:function(a){c.info("config:mailCheck");var b=$(a.data("src")),d=sysPassApp.requests.getRequestOpts();d.url=e.entrypoint+"?r="+a.data("action-route");d.data=b.serialize()+"&sk="+sysPassApp.sk.get();sysPassApp.requests.getActionCall(d,function(a){sysPassApp.msg.out(a)})}},main:w,user:{showSettings:function(a){c.info("user:showSettings");
f({r:a.data("action-route")},"userSettings")},saveSettings:function(a){c.info("user:saveSettings");g.save(a)},password:function(a){c.info("user:password");var b=sysPassApp.requests.getRequestOpts();b.type="html";b.method="get";b.url=sysPassApp.util.getUrl(e.entrypoint,{r:[a.data("action-route"),a.data("item-id")],sk:sysPassApp.sk.get(),isAjax:1});sysPassApp.requests.getActionCall(b,function(a){0===a.length?w.logout():h(a)})},passreset:function(a){c.info("user:passreset");var b=sysPassApp.requests.getRequestOpts();

View File

@@ -242,6 +242,7 @@ sysPass.Requests = function (sysPassApp) {
getRequestOpts: getRequestOpts,
getActionCall: getActionCall,
getActionEvent: getActionEvent,
getUrl: getUrl,
history: history
};
};

View File

@@ -1,5 +1,5 @@
sysPass.Requests=function(c){var e=c.log,b=[],h={type:"json",url:"",method:"post",callback:"",async:!0,data:"",cache:!1,processData:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",timeout:0,addHistory:!1,hash:"",useLoading:!0,useFullLoading:!1};Object.seal(h);var k={get:function(){return b},add:function(a){var g=""===a.hash?c.util.hash.md5(JSON.stringify(a)):a.hash;if(0<b.length&&b[b.length-1].hash===g)return b;e.info("history:add");a.hash=g;b.push(a);15<=b.length&&b.splice(0,10);
return b},del:function(){e.info("history:del");if("undefined"!==typeof b.pop())return b[b.length-1]},reset:function(){e.info("history:reset");b=[]},length:function(){return b.length}},l=function(a){return-1===a.indexOf("http")&&-1===a.indexOf("https")?c.config.APP_ROOT+a:a};return{getRequestOpts:function(){return Object.create(h)},getActionCall:function(a,b,m){e.info("getActionCall");return $.ajax({dataType:a.type,url:l(a.url),method:a.method,async:a.async,data:a.data,cache:a.cache,processData:a.processData,
contentType:a.contentType,timeout:a.timeout,beforeSend:function(){!0===a.useLoading&&c.theme.loading.show(a.useFullLoading)},success:function(d){if("function"!==typeof b)return!0;!0===a.addHistory&&(a.callback=b,k.add(a));"json"===a.type&&void 0!==d.csrf&&""!==d.csrf&&c.sk.set(d.csrf);b(d)},error:function(b,f,g){"function"!==typeof m?(f=void 0!==c.config.LANG[1]?c.config.LANG[1]:"An error occurred",f+="<p>"+g+"</p><p>"+b.responseText+"</p>",e.error(f),"html"===a.type&&$("#content").html(c.msg.html.error(f)),
c.msg.error(f)):m()},complete:function(b){!0===a.useLoading&&c.theme.loading.hide();void 0!==c.theme&&("html"===a.type||void 0!==b.responseJSON&&void 0!==b.responseJSON.data&&void 0!==b.responseJSON.data.html)&&c.theme.ajax.complete()}})},getActionEvent:function(a,b,c){var d=new EventSource(l(a.url));d.addEventListener("message",function(a){a=JSON.parse(a.data);e.debug(a);1===a.end?(e.info("getActionEvent:Ending"),d.close(),"function"===typeof c&&c(a)):"function"===typeof b&&b(a)});d.addEventListener("error",
function(a){e.error("getActionEvent:Error occured");d.close()});return d},history:k}};
sysPass.Requests=function(c){var e=c.log,b=[],k={type:"json",url:"",method:"post",callback:"",async:!0,data:"",cache:!1,processData:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",timeout:0,addHistory:!1,hash:"",useLoading:!0,useFullLoading:!1};Object.seal(k);var l={get:function(){return b},add:function(a){var g=""===a.hash?c.util.hash.md5(JSON.stringify(a)):a.hash;if(0<b.length&&b[b.length-1].hash===g)return b;e.info("history:add");a.hash=g;b.push(a);15<=b.length&&b.splice(0,10);
return b},del:function(){e.info("history:del");if("undefined"!==typeof b.pop())return b[b.length-1]},reset:function(){e.info("history:reset");b=[]},length:function(){return b.length}},h=function(a){return-1===a.indexOf("http")&&-1===a.indexOf("https")?c.config.APP_ROOT+a:a};return{getRequestOpts:function(){return Object.create(k)},getActionCall:function(a,b,m){e.info("getActionCall");return $.ajax({dataType:a.type,url:h(a.url),method:a.method,async:a.async,data:a.data,cache:a.cache,processData:a.processData,
contentType:a.contentType,timeout:a.timeout,beforeSend:function(){!0===a.useLoading&&c.theme.loading.show(a.useFullLoading)},success:function(d){if("function"!==typeof b)return!0;!0===a.addHistory&&(a.callback=b,l.add(a));"json"===a.type&&void 0!==d.csrf&&""!==d.csrf&&c.sk.set(d.csrf);b(d)},error:function(b,f,g){"function"!==typeof m?(f=void 0!==c.config.LANG[1]?c.config.LANG[1]:"An error occurred",f+="<p>"+g+"</p><p>"+b.responseText+"</p>",e.error(f),"html"===a.type&&$("#content").html(c.msg.html.error(f)),
c.msg.error(f)):m()},complete:function(b){!0===a.useLoading&&c.theme.loading.hide();void 0!==c.theme&&("html"===a.type||void 0!==b.responseJSON&&void 0!==b.responseJSON.data&&void 0!==b.responseJSON.data.html)&&c.theme.ajax.complete()}})},getActionEvent:function(a,b,c){var d=new EventSource(h(a.url));d.addEventListener("message",function(a){a=JSON.parse(a.data);e.debug(a);1===a.end?(e.info("getActionEvent:Ending"),d.close(),"function"===typeof c&&c(a)):"function"===typeof b&&b(a)});d.addEventListener("error",
function(a){e.error("getActionEvent:Error occured");d.close()});return d},getUrl:h,history:l}};