User:Kanonkas/speedyblock.js

addOnloadHook(function {    if(document.getElementById("difference")) {      mw.util.addPortletLink("p-cactions", "javascript:grawpBlock", "Block user", "ca-grawp", "Block user");     } }); function grawpBlock { var rcol = document.getElementById('bodyContent').getElementsByTagName('td').item(1); if (rcol != null) var user = rcol.getElementsByTagName('a')[3].innerHTML; var expiry = 'indefinite'; var others = '&noemail=0&autoblock=1&nocreate=1' var token = getBlockToken; if(IPhandler(user) == true){ expiry = '3%20hours'; others = '&autoblock=1&nocreate=1&allowusertalk=1'; }       jsMsg(' '); blockUser(user, token, expiry, others); var rollback = getElementsByClassName(document, "span", "mw-rollback-link"); if (rollback[0]) { rollbacklink = rollback[0].getElementsByTagName('a')[0].href; rollbacktoken = rollbacklink.substring(rollbacklink.indexOf('&token=')+7) doRollback(rollbacktoken, user); } } function getBlockToken { var req = sajax_init_object; var params = "action=block&gettoken=1&format=json"; req.open("POST", wgScriptPath + "/api.php?", false); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.setRequestHeader("Content-length", params.length); req.setRequestHeader("Connection", "close"); req.send(params); response = eval('(' + req.responseText + ')'); token = response['block']['blocktoken']; delete req; return token; } function doRollback(rollbacktoken, user) { document.getElementById('Grawpblockinfo').innerHTML+= "Starting rollback "; var req = sajax_init_object; title = encodeURIComponent(document.getElementsByTagName('h1')[0].innerHTML); var params = "action=rollback&token="+rollbacktoken+"&title="+title+"&user="+encodeURIComponent(user)+"&markbot=1&format=json"; url = wgScriptPath + "/api.php"; req.open("POST", url, true); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.setRequestHeader("Content-length", params.length); req.setRequestHeader("Connection", "close"); req.onreadystatechange = function { if(req.readyState == 4 && req.status == 200) { response = eval('(' + req.responseText + ')'); try { document.getElementById('Grawpblockinfo').innerHTML += "Rollback on "+response['rollback']['title']+" succeeded "; } catch(err) { document.getElementById('Grawpblockinfo').innerHTML += "Error " + response['error']['info']+" "; }     delete req; } }  req.send(params) } function blockUser(user, token, expiry, others) { document.getElementById('Grawpblockinfo').innerHTML+= "Blocking " + user + " "; var req = sajax_init_object; var params = "action=block&format=json&token="+encodeURIComponent(token)+"&user="+encodeURIComponent(user)+"&expiry="+expiry+"&reason=Vandalism"+others; url = wgScriptPath + "/api.php"; req.open("POST", url, true); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.setRequestHeader("Content-length", params.length); req.setRequestHeader("Connection", "close"); req.onreadystatechange = function { if(req.readyState == 4 && req.status == 200) { response = eval('(' + req.responseText + ')'); try { document.getElementById('Grawpblockinfo').innerHTML+= response['block']['user']+" has been blocked "; } catch(err) { document.getElementById('Grawpblockinfo').innerHTML+= "Error " + response['error']['info']+" "; }     delete req; } }  req.send(params) } function IPhandler(PossIP) {          var count = 0 while (perp != -1) {          var IP; var perp = PossIP.indexOf('.'); if (perp == -1) {           IP = PossIP.substring(0, PossIP.length) }          else {          IP = PossIP.substring(0, perp); }          var check = Iptest(IP); if (check != 1) {          return false; }          else {          PossIP = PossIP.substring(perp + 1, PossIP.length) count++; }   }       if (count == 4) return true; else return false; } function Iptest(Num) {   if (Num >=0 && Num <= 255) return 1; }