// ScanMail2p_api.js // Folderstructuur is als volgt: // Hoofdfolder // Subfolder (moet geldige apinaam zijn) // SubSubfolder (moet geldige apikey zijn) // B.v. van een zo'n folder structuur: ./Mail2Api/FIN_FACTUUR_SIDB/abc123456789xyz // Scan van alle subsubfolders van de subfolders onder hoofdfolder [p_hoofdfolder] alle xml's en roept voor elke xml de api conform de meegeven rooturl [p_url]. // De apinaam is dus de naam van de subfolder. // De apikey is de naam van de subsubfoldernaam. // // $Revision$ // $Id$ // var p_hoofdfolder = WScript.Arguments(0); // hoofdfolder, alle subfolders hieronder worden gescaned op xml's var p_url = WScript.Arguments(1); // root-url, iets als 'https://marx.mareon.nl/' var G_log_level = WScript.Arguments(2); // Loglevel, 0-3. var G_logfolder = "./LOG/" ; // De aanroep voor elke gescande XML zal dan iets worden als: p_url + '?' + 'api=' + [subfoldernaam] + '&' + 'apikey=' + [subsubfoldernaam waar XML staat] function __Log(s, level) { if (level == undefined) level=0; if (G_log_level > 0 || level==0){ if (level <= G_log_level){ WScript.Echo(s); var dt = new Date; // De LOG-folder aanmaken als die niet bestaat... if (!fso.FolderExists(G_logfolder)) fso.CreateFolder(G_logfolder); var logname = G_logfolder + "/ScanMail_" + padout(dt.getFullYear()) + "_" + padout(dt.getMonth() + 1) + "_" + padout(dt.getDate()) + ".log"; var flog = fso.OpenTextFile(logname, 8 /* ForAppending */, true /* create */); var tms = toDateString(new Date) + " " + toTimeString(new Date); flog.WriteLine(tms + " " +s); flog.Close(); } } } function padout(number) { return (number < 10) ? "0" + number : number; } function toDateString(jsDate) { return padout(jsDate.getFullYear()) + "-" + padout(jsDate.getMonth() + 1) + "-" + padout(jsDate.getDate()); } function toTimeString(jsDate) { return padout(jsDate.getHours()) + ":" + padout(jsDate.getMinutes()) + ":" + padout(jsDate.getSeconds()); } try { var fh, lenght; fso = new ActiveXObject("Scripting.FileSystemObject"); objRS = new ActiveXObject("ADODB.Recordset"); objRS.CursorLocation = 3 // useClient objRS.Fields.Append ("Name", 200, 100) // adVarChar objRS.Fields.Append ("created", 7 ) // adDate objRS.Fields.Append ("api", 200, 100) // adVarChar objRS.Fields.Append ("apikey", 200, 100) // adVarChar objRS.Fields.Append ("SubSubfolder", 200, 100) // adVarChar objRS.Open(); __Log("-------------------------------------------------------- START SCAN MAIL2API --------------------------------------------------------", 1); // plaats de bestandsnamen en creatiedata in een resultset om deze vervolgens te kunnen filteren. p_hoofdfolder = p_hoofdfolder.replace(/\//g,"\\"); __Log("Folder: " + p_hoofdfolder, 1); var hf = fso.GetFolder(p_hoofdfolder); var filecount = 0; var subfc = new Enumerator(hf.SubFolders); var subfoldercount = 0; for (; !subfc.atEnd(); subfc.moveNext()) { subfoldercount++; l_api = subfc.item().name; __Log("Api: " + l_api, 1); l_subfolder = p_hoofdfolder + '/' + l_api; __Log("Subfolder: " + l_subfolder, 1); var f2 = fso.GetFolder(l_subfolder); var subsubfc = new Enumerator(f2.SubFolders); var subsubfoldercount = 0; for (; !subsubfc.atEnd(); subsubfc.moveNext()) { subfoldercount++; l_apikey = subsubfc.item().name; __Log("Apikey " + l_apikey, 1); l_subsubfolder = l_subfolder + '/' + l_apikey; __Log("SubSubfolder: " + l_subsubfolder, 1); var f = fso.GetFolder(l_subsubfolder); var fc = new Enumerator(f.files); for (; !fc.atEnd(); fc.moveNext()) { filename = fc.item().name; __Log("File: " + filename, 1); var file = fso.GetFile(l_subsubfolder + '/' + filename); var dt = new Date(file.DateCreated); if (fc.item().name.indexOf(".xml") != -1) { filecount++; objRS.AddNew(); objRS("Name") = filename; objRS("SubSubfolder") = l_subsubfolder; objRS("created") = file.DateCreated; objRS("api") = l_api; objRS("apikey") = l_apikey; } } __Log("Filecount " + filecount, 1); } } __Log("Filecount TOTAAL " + filecount, 1); if (filecount > 0) { objRS.Sort = "SubSubfolder, Name ASC"; objRS.MoveFirst(); while (!objRS.EOF) { l_xml_filename = objRS("Name").Value; l_subsubfolder = objRS("SubSubfolder").Value; l_xml_file = l_subsubfolder + "/" + l_xml_filename; __Log("File (sorted): " + l_xml_file, 1); var fileStream = new ActiveXObject("ADODB.Stream"); fileStream.open(); fileStream.CharSet = "Windows-1252"; // het doel fileStream.LoadFromFile(l_xml_file); __Log("Filesize " + fileStream.Size, 1); fileStream.Position = 0; XMLReq = fileStream.ReadText; __Log("Request: " + XMLReq, 3); l_api = objRS("api").Value; __Log("l_api: " + l_api, 3); l_apikey = objRS("apikey").Value; __Log("l_apikey: " + l_apikey, 3); l_url = p_url + "?API=" + l_api + "&APIKEY=" + l_apikey __Log("URL: " + l_url, 1); try { var backdir_api = l_subsubfolder + "./BACKUP"+(new Date).getFullYear()+"/"; if (!fso.FolderExists(backdir_api)) fso.CreateFolder(backdir_api); //backdir_api += api + "\\"; //if (!fso.FolderExists(backdir_api)) // fso.CreateFolder(backdir_api); } catch (e) { __Log("Cannot create backup folder " + backdir_api + "\n" + e.description); WScript.Quit(); } var objXMLHTTP = new ActiveXObject("MSXML2.ServerXMLHTTP.6.0"); objXMLHTTP.open("POST", l_url ); objXMLHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); objXMLHTTP.send(XMLReq); __Log("Status: " + objXMLHTTP.status, 1); __Log("StatusText: " + objXMLHTTP.statusText); __Log("Result: " + objXMLHTTP.responseText, 1); if (objXMLHTTP.status == 200) { jsDate = new Date; dateString = padout(jsDate.getFullYear()) + "-" + padout(jsDate.getMonth() + 1) + "-" + padout(jsDate.getDate()); timeString = padout(jsDate.getHours()) + "-" + padout(jsDate.getMinutes() + 1) + "-" + padout(jsDate.getSeconds()); backDir = backdir_api + dateString + "_" + "bck" + "\\"; if (!fso.FolderExists(backDir)) fso.CreateFolder(backDir); fso.MoveFile(l_xml_file, backDir + timeString + "_" + l_xml_filename); } objRS.MoveNext(); } } __Log("-------------------------------------------------------- END SCAN MAIL2API --------------------------------------------------------", 1); } catch (e) { WScript.Echo("Serieuze fout in ScanMail2Api.js: " + e.description) WScript.Quit(1); }