<%@ Language=JavaScript %>
<% /*
      $Revision$
      $Id$

    File:               shared/BijlagenStream.asp
    Description:        Open een file door hem te streamen. Daardoor hoeft een bestand
                        niet per se onder de www-root te vallen
    Parameters:
        pkey            ALG_RUIMTE_KEY of ...
        pModule         "ALG" of ...
        pKenmerk_key    ALG_KENMERK_KEY of ...
        pFileName       de file die de gebruiker wil zien.
        pDosave         Als meegegeven dan wil de gebruiker 'SaveAs' doen
                        -->Negeren voortaan: we doen altijd 'attachment'. Schijnt beter te openen

    Context:            - Rechtstreeks als een gebruiker klikt op een flexveld type 'F'/'E'
                        - Vanuit BijlagenForm.asp op een document klikt (type 'F'/'E' of 'M')
    Note:               - Als het een DWF is spelen we vals: we tonen hem eventueel met SLNKDWF
                        - Als de bestandsnaam eindigt op .encrypted dan hebben we hem binnen SLNKDWF
                          met een geheime sleutel encrypted. On-the-fly decrypten we hem weer.
                        Met TAMPER bescherming!
*/ %>
<%
DOCTYPE_Disable = 1; // ook al volgt straks een response.Clear
// Session.Contents.RemoveAll(); // even om te testen

%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../shared/FlexFiles.inc" -->
<%
    if (user_key < 0)
        shared.simpel_page(L("lcl_no_auth"));
    protectQS.verify(); // tamper check

    var pModule = getQParamSafe("module");
    var pKey    = getQParamInt("key", -1);
    var pNiveau = getQParamSafe("niveau", "");
    var pKenmerk_key=getQParamInt("kenmerk_key", -1);
    var pFileName=getQParam("filename");
    var pDosave=getQParam("dosave", 0)==1;

    // Zonder extensie downloaden keuren we goed
    // (ook al staan we sinds 5.2.1 uploaden niet meer toe)
    if (pFileName.indexOf(".") >= 0 && !new RegExp(S("flexAllowedExt"), "ig").test(pFileName))
    {
        INTERNAL_ERROR_BAD_EXT;
    }

    // Doet whitelist van pModule
    params = flexProps(pModule, pKey, String(pKenmerk_key), pNiveau);

    // Bestanden zijn nu te vinden on ...cust/*/flexfiles/[module]/[key]/
    __Log("vAttachPath = " + params.AttachPath);
    if (!pDosave && S("view_dwf_with_slnkdwf") && String(pFileName).match(/.dwf$/i))
        Response.Redirect("../SLNKDwf/ShowDWF.asp?absfile=" + params.AttachPath + "/" + safe.filename(pFileName));

    if (pFileName.match(/\.encrypted$/)) // Auto decrypt gewenst
    {
        var contentFile=pFileName.replace(/\.encrypted$/,"");
        var oZip = Server.CreateObject("SLNKDWF.Zip");
        oZip.Open(params.AttachPath + "/" + safe.filename(pFileName));

        Response.clear;
        Response.contenttype = "application/octet-stream";
        Response.AddHeader("content-disposition", "attachment; filename= \"" + safeContentName(contentFile) + "\"");
        oZip.DecryptToStream(Response, contentFile);
        Response.End();
    }
    else
        StreamFile(params.AttachPath, pFileName, "application/octet-stream")

%>
