FSN#39138 Ontvangen xml berichten via gen_import aan API aanbieden

svn path=/Website/trunk/; revision=41535
This commit is contained in:
Erik Groener
2019-03-13 15:41:15 +00:00
parent 54899aeb74
commit 7c09420bb1
2 changed files with 76 additions and 10 deletions

View File

@@ -116,13 +116,22 @@ if (shouldFrom)
}
var action = oRs("fac_email_setting_action").Value; // Package aanroep
var path = oRs("fac_email_setting_attachpath").Value;
var isUrl = false;
if (path && path.substr(0, 1) == "*") // Bijvoorbeeld '*flexfilespath' or '*fg_dwf_path_concept'
{
path = S(path.substr(1)) + "/";
}
if (path && (path.substr(0,5) == "http:" || path.substr(0,6) == "https:"))
{
isUrl = true;
}
oRs.Close();
var result = { success: true, path: path, attachments: [] };
var result = { success: true
, path: path
, attachments: []
, tempfolder: Server.MapPath("../trunk_data/temp")
};
var psession_id = Session.SessionID;
// verwijder entries in de FAC_RESULT table zodat de action nieuwe resultaten kan schrijven
@@ -185,8 +194,12 @@ if (action) // Bijv "fac.processemail" of "uwva.closeorder-sample"
oRs.Close();
}
else
result.maillog = "Verder geen e-mail action gedefinieerd";
{
if (isUrl)
result.maillog = "Bijlagen worden verder verwerkt via url";
else
result.maillog = "Verder geen e-mail action gedefinieerd";
}
__Log(result.maillog);
// opruimen
@@ -217,6 +230,14 @@ if (result.path)
{
__Log("Ongewenste extensie e-mail bijlage: {0} ({1} bytes) van {2}. Bestand is niet opgeslagen.".format(safefilename, attsize, theFrom));
}
else if (isUrl)
{
__Log('{0} bijlage ({1} bytes) verwerken met {2}'.format(safefilename, attsize, result.path));
result.attachments.push ({ sequence: i,
safefilename: safefilename,
safeurl: result.path
})
}
else
{
__Log('{0} bijlage ({1} bytes) mag naar {2}'.format(safefilename, attsize, result.path));

View File

@@ -16,7 +16,7 @@ function OnAcceptMessage(oClient, oMessage)
Result.Value = 0;
EventLog.write("=============================");
// Er kunnen meerdere Recipients zijn en zelfs meerdere geldige
// Maar pas op: als ze allemaal terugvallen op catchall telt het slechts als <EFBFBD><EFBFBD>n!!!
// Maar pas op: als ze allemaal terugvallen op catchall telt het slechts als !!!
// Daarom moet je, als je dit wilt ondersteunen, voor alle adressen toch een eigen
// account aanmaken in hMailserver!
for (i=0; i < oMessage.Recipients.Count; i++)
@@ -30,7 +30,7 @@ function OnAcceptMessage(oClient, oMessage)
Result.Value = 0;
}
// Verwerk <EFBFBD><EFBFBD>n bericht
// Verwerk bericht
function OnAcceptMessageTo(oClient, oMessage, RecipientNr)
{
var i;
@@ -136,11 +136,56 @@ function OnAcceptMessageTo(oClient, oMessage, RecipientNr)
// api_hmail.asp heeft bepaald wat veilige extensies zijn en waar ze naar toe moeten
for (i = 0; i < data.attachments.length; i++)
{
var sequence = data.attachments[i].sequence; // de onveilige zijn er uit gestript, daarom niet per se i==sequence
var safefilename = data.attachments[i].safefilename;
var oAttach = oMessage.Attachments.Item(sequence);
EventLog.write(oAttach.fileName + ' bijlage (' + oAttach.Size + ' bytes) naar ' + safefilename);
oAttach.SaveAs(safefilename);
if (data.attachments[i].safeurl.length > 0)
{
var sequence = data.attachments[i].sequence; // de onveilige zijn er uit gestript, daarom niet per se i==sequence
var safefilename = data.attachments[i].safefilename;
var safeurl = data.attachments[i].safeurl;
var tempfile = data.tempfolder + "\\" + safefilename;
EventLog.write("bijlage tijdelijk naar " + tempfile);
var oAttach = oMessage.Attachments.Item(sequence);
oAttach.SaveAs(tempfile);
var objStream = new ActiveXObject("ADODB.Stream");
objStream.Open();
objStream.Type = 1; // adTypeBinary
objStream.LoadFromFile(tempfile);
EventLog.write("POSTing to:"+safeurl);
var http_request = new ActiveXObject("WinHTTP.WinHTTPRequest.5.1");
http_request.open("POST", safeurl);
http_request.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
http_request.send(objStream);
objStream.close();
var objFso = new ActiveXObject("Scripting.FileSystemObject");
objFso.DeleteFile(tempfile);
EventLog.write("bijlage weer verwijderd");
if (http_request.status != 200)
{
EventLog.write("http_request failed");
EventLog.write(http_request.status);
EventLog.write(http_request.ResponseText);
Result.Message = "mail processing error";
Result.Value = 2; // reject
return;
}
else
{
EventLog.write("response = " + http_request.responseText);
}
EventLog.write("bijlage " + safefilename + " (" + oAttach.Size + " bytes) naar " + safeurl);
}
else
{
var sequence = data.attachments[i].sequence; // de onveilige zijn er uit gestript, daarom niet per se i==sequence
var safefilename = data.attachments[i].safefilename;
var oAttach = oMessage.Attachments.Item(sequence);
EventLog.write(oAttach.fileName + ' bijlage (' + oAttach.Size + ' bytes) naar ' + safefilename);
oAttach.SaveAs(safefilename);
}
}
EventLog.write("E-mail accepted and processed");
}