Index: bootstrap/win/get_file.js |
=================================================================== |
--- bootstrap/win/get_file.js (revision 14457) |
+++ bootstrap/win/get_file.js (working copy) |
@@ -2,113 +2,115 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-function download(sURL, sPath, verbose) { |
+function Download(url, path, verbose) { |
if (verbose) { |
- WScript.StdOut.Write(" * GET " + sURL + "..."); |
+ WScript.StdOut.Write(" * GET " + url + "..."); |
} |
- var oResponseBody = null; |
- try { |
- oXMLHTTP = new ActiveXObject("MSXML2.ServerXMLHTTP"); |
- } catch (e) { |
- WScript.StdOut.WriteLine("[-] XMLHTTP " + new Number(e.number).toHex() + |
- ": Cannot create Active-X object (" + e.description) + ")."; |
- WScript.Quit(1); |
- } |
- try { |
- oXMLHTTP.open("GET", sURL, false); |
- } catch (e) { |
- WScript.StdOut.WriteLine("[-] XMLHTTP " + new Number(e.number).toHex() + |
- ": invalid URL."); |
- WScript.Quit(1); |
- } |
- var sSize = "?"; |
- var iSize |
- try { |
- oXMLHTTP.send(null); |
- if (oXMLHTTP.status != 200) { |
- WScript.StdOut.WriteLine("[-] HTTP " + oXMLHTTP.status + " " + |
- oXMLHTTP.statusText); |
- WScript.Quit(1); |
- } |
- oResponseBody = oXMLHTTP.responseBody; |
- sSize = oXMLHTTP.getResponseHeader("Content-Length"); |
- if (sSize != "") { |
- iSize = parseInt(sSize) |
- sSize = iSize.toBytes(); |
- } else { |
- try { |
- iSize = new Number(oXMLHTTP.responseText.length) |
- sSize = iSize.toBytes(); |
- } catch(e) { |
- sSize = "unknown size"; |
- } |
- } |
- } catch (e) { |
- WScript.StdOut.WriteLine("[-] XMLHTTP " + new Number(e.number).toHex() + |
- ": Cannot make HTTP request (" + e.description) + ")"; |
- WScript.Quit(1); |
- } |
+ var response_body = null; |
+ try { |
+ xml_http = new ActiveXObject("MSXML2.ServerXMLHTTP"); |
+ } catch (e) { |
+ WScript.StdOut.WriteLine("[-] XMLHTTP " + new Number(e.number).toHex() + |
+ ": Cannot create Active-X object (" + e.description) + ")."; |
+ WScript.Quit(1); |
+ } |
+ try { |
+ xml_http.open("GET", url, false); |
+ } catch (e) { |
+ WScript.StdOut.WriteLine("[-] XMLHTTP " + new Number(e.number).toHex() + |
+ ": invalid URL."); |
+ WScript.Quit(1); |
+ } |
+ var size_description = "?"; |
+ var file_size |
+ try { |
+ xml_http.send(null); |
+ if (xml_http.status != 200) { |
+ WScript.StdOut.WriteLine("[-] HTTP " + xml_http.status + " " + |
+ xml_http.statusText); |
+ WScript.Quit(1); |
+ } |
+ response_body = xml_http.responseBody; |
+ size_description = xml_http.getResponseHeader("Content-Length"); |
+ if (size_description != "") { |
+ file_size = parseInt(size_description) |
+ size_description = file_size.toBytes(); |
+ } else { |
+ try { |
+ file_size = new Number(xml_http.responseText.length) |
+ size_description = file_size.toBytes(); |
+ } catch(e) { |
+ size_description = "unknown size"; |
+ } |
+ } |
+ } catch (e) { |
+ WScript.StdOut.WriteLine("[-] XMLHTTP " + new Number(e.number).toHex() + |
+ ": Cannot make HTTP request (" + e.description) + ")"; |
+ WScript.Quit(1); |
+ } |
if (verbose) { |
- WScript.StdOut.WriteLine("ok (" + sSize + ")."); |
- WScript.StdOut.Write(" * Save " + sPath + "..."); |
+ WScript.StdOut.WriteLine("ok (" + size_description + ")."); |
+ WScript.StdOut.Write(" * Save " + path + "..."); |
} |
- try { |
- var oAS = new ActiveXObject("ADODB.Stream"); |
- oAS.Mode = 3; // ReadWrite |
- oAS.Type = 1; // 1= Binary |
- oAS.Open(); // Open the stream |
- oAS.Write(oResponseBody); // Write the data |
- oAS.SaveToFile(sPath, 2); // Save to our destination |
- oAS.Close(); |
- } catch(e) { |
- WScript.StdOut.WriteLine("[-] ADODB.Stream " + new Number(e.number).toHex() + |
- ": Cannot save file (" + e.description + ")"); |
- WScript.Quit(1); |
- } |
- if (typeof(iSize) != undefined) { |
- oFSO = WScript.CreateObject("Scripting.FileSystemObject") |
- oFile = oFSO.GetFile(sPath) |
- if (oFile.Size < iSize) { |
- WScript.StdOut.WriteLine("[-] File only partially downloaded."); |
- WScript.Quit(1); |
- } |
- } |
+ try { |
+ var adodb_stream = new ActiveXObject("ADODB.Stream"); |
+ adodb_stream.Mode = 3; // ReadWrite |
+ adodb_stream.Type = 1; // 1= Binary |
+ adodb_stream.Open(); // Open the stream |
+ adodb_stream.Write(response_body); // Write the data |
+ adodb_stream.SaveTfile(path, 2); // Save to our destination |
+ adodb_stream.Close(); |
+ } catch(e) { |
+ WScript.StdOut.WriteLine("[-] ADODB.Stream " + new Number( |
+ e.number).toHex() + ": Cannot save file (" + e.description + ")"); |
+ WScript.Quit(1); |
+ } |
+ if (typeof(file_size) != undefined) { |
+ file_system_object = WScript.CreateObject("Scripting.FileSystemObject") |
+ file = file_system_object.GetFile(path) |
+ if (file.Size < file_size) { |
+ WScript.StdOut.WriteLine("[-] File only partially downloaded."); |
+ WScript.Quit(1); |
+ } |
+ } |
if (verbose) { |
WScript.StdOut.WriteLine("ok."); |
} |
} |
-Number.prototype.isInt = function Number_isInt() { |
- return this % 1 == 0; |
+Number.prototype.isInt = function NumberIsInt() { |
+ return this % 1 == 0; |
}; |
-Number.prototype.toBytes = function Number_toBytes() { |
- // Returns a "pretty" string representation of a number of bytes: |
- var aUnits = ["KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; |
- var sUnit = "bytes"; |
- var iLimit = 1; |
- while(this > iLimit * 1100 && aUnits.length > 0) { |
- iLimit *= 1024; |
- sUnit = aUnits.shift(); |
- } |
- return (Math.round(this * 100 / iLimit) / 100).toString() + " " + sUnit; |
+Number.prototype.toBytes = function NumberToBytes() { |
+ // Returns a "pretty" string representation of a number of bytes: |
+ var units = ["KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; |
+ var unit = "bytes"; |
+ var limit = 1; |
+ while(this > limit * 1100 && units.length > 0) { |
+ limit *= 1024; |
+ unit = units.shift(); |
+ } |
+ return (Math.round(this * 100 / limit) / 100).toString() + " " + unit; |
}; |
-Number.prototype.toHex = function Number_toHex(nLength) { |
- if (arguments.length == 0) nLength = 1; |
- if (typeof(nLength) != "number" && !(nLength instanceof Number)) { |
- throw Exception("Length must be a positive integer larger than 0.", TypeError, 0); |
- } |
- if (nLength < 1 || !nLength.isInt()) { |
- throw Exception("Length must be a positive integer larger than 0.", "RangeError", 0); |
- } |
- var sResult = (this + (this < 0 ? 0x100000000 : 0)).toString(16); |
- while (sResult.length < nLength) sResult = "0" + sResult; |
- return sResult; |
+Number.prototype.toHex = function NumberToHex(length) { |
+ if (arguments.length == 0) length = 1; |
+ if (typeof(length) != "number" && !(length instanceof Number)) { |
+ throw Exception("Length must be a positive integer larger than 0.", |
+ TypeError, 0); |
+ } |
+ if (length < 1 || !length.isInt()) { |
+ throw Exception("Length must be a positive integer larger than 0.", |
+ "RangeError", 0); |
+ } |
+ var result = (this + (this < 0 ? 0x100000000 : 0)).toString(16); |
+ while (result.length < length) result = "0" + result; |
+ return result; |
}; |
if (WScript.Arguments.length != 2) { |
WScript.StdOut.Write("Incorrect arguments to download.js") |
} else { |
- download(WScript.Arguments(0), WScript.Arguments(1), false); |
+ Download(WScript.Arguments(0), WScript.Arguments(1), false); |
} |