Utilisateur:Dr Brains/MassBlock.js

Une page de Wikipédia, l'encyclopédie libre.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
// Mass block tool by [[User:Krimpet]] (http://en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-massblock.js)
// After adding to your monobook.js, navigate to [[Special:Massblock]] to use the tool.

// <source lang=javascript><pre><nowiki>

function getParameter(p) {
     var re = new RegExp('&'+p+'=([^&]*)','i');
     var c = window.location.search; 
     return unescape((c=c.replace(/^\?/,'&').match(re)) ?c=c[1] :c="");
}

function massblock() {
     if((mw.config.get('wgNamespaceNumber')==-1)&&(mw.config.get('wgTitle')=="Special:Massblock")){
     document.title = "Krimpet's mass block tool";
     document.getElementById("content").innerHTML = ""
          + "<h1 class=\"firstHeading\">Krimpet's mass block tool</h1>"
          + "<span style=\"color:red\">MESS SOMETHING UP WITH THIS, AND <em>YOU</em> TAKE THE BLAME, BUCKO.</span>"
          + "<br />"
          + "<br />"
          + "List of IPs to block, one on each line please:<br>"
          + "<textarea id=\"iplist\" columns=\"24\" rows=\"10\"></textarea>"
          + "<br />"
          + "<br />"
          + "Expiry: "
          + "<input type=\"text\" value=\"1 year\" id=\"expiry\">"
          + "<br />"
          + "Reason: "
          + "<input type=\"text\" value=\"[[w:open proxy|open proxy]] or [[w:zombie computer|zombie]] ([[m:WM:OP|more info]])\" id=\"reason\">"
          + "<br />"
          + "<input type=\"checkbox\" id=\"ao\" />"
          + " Anon only"
          + "<br />"
          + "<input type=\"checkbox\" id=\"acb\" checked=\"checked\" />"
          + " Prevent account creation"
          + "<br />"
          + "<br />Blocks/min: "
          + "<input type=\"text\" value=\"10\" id=\"epm\">"
          + "<br />"
          + "<button onclick=\"massblock2()\">"
          + "Block IPs"
          + "</button>"
          + " "
          + "<button onclick=\"massblock4()\">"
          + "Abort"
          + "</button>"
          + "<div style=\"z-index:-1;position:relative;top:0px;left:0px\">"
          + "<iframe name=\"blockframe0\" width=\"1px\" height=\"1px\"></iframe>"
          + "<iframe name=\"blockframe1\" width=\"1px\" height=\"1px\"></iframe>"
          + "<iframe name=\"blockframe2\" width=\"1px\" height=\"1px\"></iframe>"
          + "<iframe name=\"blockframe3\" width=\"1px\" height=\"1px\"></iframe>"
          + "<iframe name=\"blockframe4\" width=\"1px\" height=\"1px\"></iframe>"
          + "<iframe name=\"blockframe5\" width=\"1px\" height=\"1px\"></iframe>"
          + "</div>";
     } else if (document.location.search.match("__MASSBLOCK__")) {
          document.getElementById("wpAnonOnly").checked = getParameter("ao") == "1";
          document.getElementById("wpCreateAccount").checked = getParameter("acb") == "1";
          document.getElementById("mw-bi-other").value = getParameter("expiry").replace("+"," ","g");
          document.getElementById("mw-bi-reason").value = getParameter("reason").replace("+"," ","g");
          setTimeout("document.getElementById(\"blockip\").submit()", 500);
     }
}

var wgBlocksToDo;
var wgBlocksToDoIndex;
var wgBlocksToDoInterval = 0;
var wgBlockFrame;
function massblock2() {
     if (!parseFloat(document.getElementById("epm").value)) return;
     wgBlocksToDo = new Array();

     iplist = document.getElementById("iplist").value.split("\n");
     for (i=0;i<iplist.length;i++) {
          wgBlocksToDo[i] = iplist[i].split(":")[0];
     }

     mbcode = "massblock3(wgBlocksToDo[wgBlocksToDoIndex++]);if (wgBlocksToDoIndex >= wgBlocksToDo.length) massblock4();";

     wgBlocksToDoIndex = wgBlockFrame = 0;
     eval(mbcode);
     wgBlocksToDoInterval = setInterval(mbcode, (60 / parseFloat(document.getElementById("epm").value)) * 1000);
}

function massblock3(ipToBlock) {
     if (ipToBlock + "" == "undefined") return;

     iplistobj = document.getElementById("iplist");
     if (iplistobj.value.indexOf("\n") == -1) iplistobj.value = "";
     iplistobj.value = iplistobj.value.substring(iplistobj.value.indexOf("\n") + 1);

     if (ipToBlock == "") return;

     frames["blockframe" + wgBlockFrame++].location.href = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=Special:Blockip&ip=" + ipToBlock + "&__MASSBLOCK__=1&expiry=" + document.getElementById("expiry").value + "&reason=" + document.getElementById("reason").value + "&ao=" + (document.getElementById("ao").checked ? "1" : "0") + "&acb=" + (document.getElementById("acb").checked ? "1" : "0");
     if (wgBlockFrame == 6) wgBlockFrame = 0;
}

function massblock4() {
     clearInterval(wgBlocksToDoInterval);
}
 
addOnloadHook(massblock);

// </nowiki></pre></source>