Esempio n. 1
0
function connect($array)
{
    if ($GLOBALS["NETS"][$array["NETWORK"]]) {
        return true;
    }
    switch ($array["TYPE"]) {
        case "JOIN_NET":
            JOIN_NET($array);
            break;
        case "CREATE_NET":
            CREATE_NET($array);
            break;
        default:
            break;
    }
}
Esempio n. 2
0
function JOIN_NET($array)
{
    if (!isset($GLOBALS["COUNT" . __FUNCTION__])) {
        $GLOBALS["COUNT" . __FUNCTION__] = 0;
    }
    $unix = new unix();
    if (!isset($GLOBALS["hamachi_bin"])) {
        $GLOBALS["hamachi_bin"] = $unix->find_program("hamachi");
    }
    echo "Starting......: " . date("H:i:s") . " hamachi [logout]: ...- {$GLOBALS["COUNT" . __FUNCTION__]}\n";
    exec($GLOBALS["hamachi_bin"] . " logout 2>&1", $l);
    while (list($num, $ligne) = each($l)) {
        echo "Starting......: " . date("H:i:s") . " hamachi [logout]: {$ligne}\n";
    }
    $l = array();
    echo "Starting......: " . date("H:i:s") . " hamachi [login]: ...- {$GLOBALS["COUNT" . __FUNCTION__]}\n";
    exec($GLOBALS["hamachi_bin"] . " login 2>&1", $l);
    while (list($num, $ligne) = each($l)) {
        echo "Starting......: " . date("H:i:s") . " hamachi [login]: {$ligne}\n";
        if (preg_match("#failed, busy#", $ligne)) {
            echo "Starting......: " . date("H:i:s") . " hamachi [login]: waiting 2 seconds\n";
            sleep(2);
            if ($GLOBALS["COUNT" . __FUNCTION__] < 5) {
                $GLOBALS["COUNT" . __FUNCTION__] = $GLOBALS["COUNT" . __FUNCTION__] + 1;
                JOIN_NET($array);
            }
        }
        if (preg_match("#failed, already online#", $ligne)) {
            echo "Starting......: " . date("H:i:s") . " hamachi [login]: OK already online\n";
        }
    }
    echo "Starting......: " . date("H:i:s") . " hamachi [join]: {$array["NETWORK"]}...\n";
    $cmd = $GLOBALS["hamachi_bin"] . " join {$array["NETWORK"]} {$array["PASSWORD"]} 2>&1";
    exec($cmd, $l1);
    if ($GLOBALS["VERBOSE"]) {
        echo $cmd . "\n";
    }
    while (list($num, $ligne) = each($l1)) {
        echo "Starting......: " . date("H:i:s") . " hamachi [join]: {$ligne}\n";
        if (preg_match("#failed, manual approval required#", $ligne)) {
            echo "Starting......: " . date("H:i:s") . " hamachi [join]: approval requested\n";
            DO_JOIN($array["NETWORK"], $array["PASSWORD"]);
        }
    }
    DO_GO_ONLINE($array["NETWORK"]);
    FixRoute();
}