My Brute Login Bot

By milhouse Last update Jun 28, 2010 — Installed 872 times.

There are 6 previous versions of this script.

// ==UserScript==
// @name           My Brute Login Bot
// @description    Automatically logs in your brutes to My Brute sites mybrute.com, elbruto.es and labrute.fr
// @version        0.3.2
// @include        http://*.mybrute.com/login*
// @include        http://*.mybrute.com/cellule*
// @include        http://*.elbruto.es/login*
// @include        http://*.elbruto.es/cellule*
// @include        http://*.labrute.fr/login*
// @include        http://*.labrute.fr/cellule*
// @include        http://*.meinbrutalo.de/login*
// @include        http://*.meinbrutalo.de/cellule*
// ==/UserScript==

// Initialization
var myBrutes  = GM_getValue('my.brutes', false);
    myBrutes  = blank(myBrutes) ? [] : myBrutes.split(";");
var brute     = location.host.split(".")[0];
var page      = /^\/(\w*)/.exec(location.pathname)[1];
var isManaged = include(myBrutes, brute);

var autoRegister = GM_getValue('autoRegister', true);
GM_registerMenuCommand('Toggle Tournament auto-registration', toggleAutoRegister);

// Main logic
register();

window.addEventListener("load", autoLogin, false);

function autoLogin() {
  if (page == 'login') {
    if(isManaged)
      logIn();
    else
      manage();
  } else { // on cellule
    if(isManaged)
      checkLogin();
  }
}

// Core functions
function logIn() {
  var loginFailed = document.getElementsByClassName('error').length > 0;
  if(!loginFailed)
    document.forms[0].submit();
}

function checkLogin() {
  var notLoggedIn = document.querySelector("a[href='/login']");
  if(notLoggedIn)
    go('login');
}

function manage() {
  var hasNoPassword = blank(document.forms[0].elements[0].value);
  if(hasNoPassword) return;
  myBrutes.push(brute);
  GM_setValue('my.brutes', myBrutes.join(';'));
  logIn();
}

function register() {
  if(!isManaged || !autoRegister) return;
  var registerDiv = document.getElementById('tournament');
  if(!registerDiv) return;
  var registerLink = registerDiv.querySelector("a[href='/sub']");
  if(!registerLink) return;

  GM_xmlhttpRequest({
    url: '/sub', method: 'GET',
    onreadystatechange: function(response) {
      if(response.readyState != 2) return;
      with(registerDiv) {
        removeChild(children[2]);
        removeChild(children[1]);
        style.backgroundColor = '#DEEE9E';
        style.color = '#3A8B17';
      }
    }
  });
}

function toggleAutoRegister() {
  autoRegister = !autoRegister;
  GM_setValue('autoRegister', autoRegister);
  alert('Tournament auto-registration is now '+(autoRegister?'En':'Dis')+'abled.');
  register();
}

// Utils
function include(array, element) { return array.indexOf(element) != -1; }
function go(page) { location.pathname = page; }
function blank(string) { return string == '' }