User:Mr.Z-man/gwp.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
addOnloadHook(function() { 
    if(document.getElementById("difference")) {
      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=1&autoblock=1&nocreate=1'
        var token = getBlockToken();
        if(IPhandler(user) == true){
        expiry = '3%20hours';
        others = '&autoblock=1&nocreate=1';
        }
        jsMsg('<div id="Grawpblockinfo"></div>');
        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<br />";
  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<br />";
      } catch(err) {
        document.getElementById('Grawpblockinfo').innerHTML += "Error " + response['error']['info']+"<br />";
      }
      delete req;
    }
  }
  req.send(params)
}

function blockUser(user, token, expiry, others) {
  document.getElementById('Grawpblockinfo').innerHTML+= "Blocking " + user + "<br />";
  var req = sajax_init_object();
  var params = "action=block&format=json&token="+encodeURIComponent(token)+"&user="+encodeURIComponent(user)+"&expiry="+expiry+"&reason=Grawp"+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<br />";
      } catch(err) {
        document.getElementById('Grawpblockinfo').innerHTML+= "Error " + response['error']['info']+"<br />";
      }
      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;
}