Slavehack Assist

By Simbanafsi Last update Jun 7, 2011 — Installed 1,913 times.

There are 6 previous versions of this script.

// ==UserScript==
// @name           SH Assistant
// @namespace      http://www.source.site90.com/
// @description    Makes playing slavehack a bit easier
// @include        http://www.slavehack.com/index2.php*
// @version       1.4
// ==/UserScript==

// Chrome users can replace localhost with something else to mask their IP with.
var IP_MASK = "localhost";

if (GM_registerMenuCommand){
    GM_registerMenuCommand("Change IP Mask", changeMask);
}

if (document.getElementById("editlog")){ // No log file on page - nothing to do
    var myip = document.getElementById("content").getElementsByTagName("h2")[0].innerHTML.split("'")[1];
    if (document.getElementById("editlog").innerHTML.match(myip)){ // Log file found and contains your ip
        if (GM_getValue){
            if (GM_getValue.toString && GM_getValue.toString().indexOf("not supported")!=-1){
                var mask = IP_MASK;
            }
            else{
                var mask = GM_getValue("mask", "localhost");
            }
        }
        else{
            var mask = IP_MASK;
        }
        var logFile = document.getElementById("editlog");
        var events = logFile.innerHTML.split("\n");
        var replacement = "";
        for (i = 0; i < events.length; i++){
            events[i] = events[i].replace(myip, mask);
            replacement = replacement + events[i] + "\n";
        }
        logFile.innerHTML = replacement;
        document.getElementById("editlog").parentNode.submit()
    }
    else{ // Log file does not contain your ip
        var listButton = document.createElement("input");
        listButton.type = "button";
        listButton.value = "list Addresses";
        listButton.id = "listButton";
        document.getElementById("editlog").parentNode.insertBefore(listButton, document.getElementById("editlog"));
        document.getElementById("listButton").addEventListener("click", list, true);
        
        var filterButton = document.createElement("input");
        filterButton.type = "button";
        filterButton.value = "Filter Addresses";
        filterButton.id = "filterButton";
        document.getElementById("editlog").parentNode.insertBefore(filterButton, document.getElementById("editlog"));
        document.getElementById("filterButton").addEventListener("click", filter, true);
        
    }
}

function list(){
    var events = document.getElementById("editlog").innerHTML.split("\n");
    var replacement = "";
    for (i = 0; i < events.length; i++){
        ipaddr = events[i].match(/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/)
        if (ipaddr){
            replacement = replacement + ipaddr + "\n";
        }
        document.getElementById("editlog").innerHTML = replacement;
    }
}

function filter(){
    var events = document.getElementById("editlog").innerHTML.split("\n");
    var replacement = "";
    for (i = 0; i < events.length; i++){
        ipaddr = events[i].match(/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/)
        if (ipaddr){
            replacement = replacement + events[i] + "\n";
        }
        document.getElementById("editlog").innerHTML = replacement;
    }
}

function changeMask(){
    if (GM_getValue){
        mask = GM_getValue("mask", "localhost");
        newMask = prompt("New IP mask:", mask);
        GM_setValue("mask", newMask);
    }
    else{
        alert("Upgrade your version of greasemonkey to use this feature");
    }
}