[3.1] wbb bridge anpassung von 3.0

Du suchst eine bestimmte Extension, weißt aber nicht genau wo bzw. ob sie überhaupt existiert? Du kannst hier die von dir gewünschte/gesuchte Extension beschreiben ...
Falls ein Extension-Autor eine der Anfragen hier aufnimmt, um eine neue Extension zu entwickeln, geht's in Extensions in Entwicklung weiter.
Saugjunkie
Mitglied
Beiträge: 15
Registriert: 22.06.2010 14:32

[3.1] wbb bridge anpassung von 3.0

Beitrag von Saugjunkie »

Hallo und Guten Tag,

heute komme ich mit einer frage bzw mit einer bitte. Die Vorgeschichte ist wie folgt. Ich bin dabei mein wbb 3 forum nach phpbb3 zu konvertieren und habe dazu diesen Konverter benutzt. https://github.com/jkroepke/convert-wbb-to-phpbb.
Dieser hat mein forum auch wunderbar konvertiert und es lief problemlos unter 3.0.12.
Jetzt möchte ich natürlich auch weiter updaten auf 3.1 und dann auf 3.2.
Dazu benötige ich aber eine Anpassung der bridge die diesem Konverter bei lag.
Dies ist der code der in eine extension fuer die 3.1 rein sollte diese Datei nennt sich auth_wbb_db.php und liegt im verzeichnis includes/auth im phpbb 3.0.12.
Diese Datei funktioniert wie folgt. Der converter hat die passworter aus dem wbb in eine extra tabele innerhalb der phphbb datenbank erstellt und gleicht die user ids mit der tabele phpbbusers. Im endefekt macht das script nur das sich die user mit ihrem alten passwort einlogen koennen.

Code: Alles auswählen

<?php

/**
 * @ignore
 */
if (!defined('IN_PHPBB'))
{
    exit;
}

/*
The auth plugin just works, if the wbb has default ENCRYPTION options.
*/
define('ENCRYPTION_ENABLE_SALTING', 1);
define('ENCRYPTION_ENCRYPT_BEFORE_SALTING', 1);
define('ENCRYPTION_METHOD', 'sha1');
define('ENCRYPTION_SALT_POSITION', 'before');

require 'auth_db.php';

function login_wbb_db($username, $password, $ip = '', $browser = '', $forwarded_for = '')
{
    global $db;
    $username_clean = utf8_clean_string($username);
    $sql = 'SELECT wbbpw.* FROM ' . USERS_TABLE . "
        INNER JOIN " . USERS_WBB_PASSWORDS_TABLE . " wbbpw USING (user_id)
		WHERE username_clean = '" . $db->sql_escape($username_clean) . "'";

    $result = $db->sql_query($sql);
    $row = $db->sql_fetchrow($result);
    $db->sql_freeresult($result);

    // sha1($row['salt'].sha1($row['salt'].sha1($password)))
    if(!empty($row) && getDoubleSaltedHash($password, $row['salt']) === $row['password'])
    {
        $sql = 'UPDATE ' . USERS_TABLE . "
        SET user_password = '".phpbb_hash($password)."'
        WHERE user_id = " . (int) $row['user_id'] . ";";
        $db->sql_query($sql);

        $sql = 'DELETE FROM ' . USERS_WBB_PASSWORDS_TABLE . "
        WHERE user_id = " . (int) $row['user_id'] . ";";
        $db->sql_query($sql);
    }

    return login_db($username, $password, $ip, $browser, $forwarded_for);
}



/**
 * Returns a salted hash of the given value.
 *
 * @param 	string 		$value
 * @param	string		$salt
 * @return 	string 		$hash
 */
function getSaltedHash($value, $salt) {
    if (!defined('ENCRYPTION_ENABLE_SALTING') || ENCRYPTION_ENABLE_SALTING) {
        $hash = '';
        // salt
        if (!defined('ENCRYPTION_SALT_POSITION') || ENCRYPTION_SALT_POSITION == 'before') {
            $hash .= $salt;
        }

        // value
        if (!defined('ENCRYPTION_ENCRYPT_BEFORE_SALTING') || ENCRYPTION_ENCRYPT_BEFORE_SALTING) {
            $hash .= encrypt($value);
        }
        else {
            $hash .= $value;
        }

        // salt
        if (defined('ENCRYPTION_SALT_POSITION') && ENCRYPTION_SALT_POSITION == 'after') {
            $hash .= $salt;
        }

        return encrypt($hash);
    }
    else {
        return encrypt($value);
    }
}

/**
 * Returns a double salted hash of the given value.
 *
 * @param 	string 		$value
 * @param	string		$salt
 * @return 	string 		$hash
 */
function getDoubleSaltedHash($value, $salt) {
    return encrypt($salt . getSaltedHash($value, $salt));
}

/**
 * encrypts the given value.
 *
 * @param 	string 		$value
 * @return 	string 		$hash
 */
function encrypt($value) {
    if (defined('ENCRYPTION_METHOD')) {
        switch (ENCRYPTION_METHOD) {
            case 'sha1': return sha1($value);
            case 'md5': return md5($value);
            case 'crc32': return crc32($value);
            case 'crypt': return crypt($value);
        }
    }
    return sha1($value);
}
Ich bedanke mich schonmal recht herzlich und hoffe das mir da einer weiter helfen kann und diesen code anpasst. Ich habe es auch schon selber versucht da irgendwas zum laufen zu bekommen aber klappt nicht deswegen schreibe ich hier nach hilfe.

MFG
Saugjunkie
Benutzeravatar
chris1278
Mitglied
Beiträge: 3526
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: [3.1] wbb bridge anpassung von 3.0

Beitrag von chris1278 »

Mal eine einfache Frage. Wenn ich das Richtig verstanden habe hast du das alte Forum schon ins Phpbb 3.0 Versionsreihe Konvertiert und das Läuft.

Wenn dem So ist brauchst du keinen wbb zu phpbb konverter. Dann kannst du einfach die normale update funktion nutzen.
Saugjunkie
Mitglied
Beiträge: 15
Registriert: 22.06.2010 14:32

Re: [3.1] wbb bridge anpassung von 3.0

Beitrag von Saugjunkie »

damit hasst du recht natuerlich nur der converter erstellt in der datenbank eine tabelle namens

Code: Alles auswählen

phpbb_users_wbb_passwords
diese hat 3 spalten userid, password und salt
diese hat noch die alten passworter gespeichert und diese datei bzw bridge macht das man die alten passworter weiter benutzen kann.


MFG
Saugjunkie
Benutzeravatar
chris1278
Mitglied
Beiträge: 3526
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: [3.1] wbb bridge anpassung von 3.0

Beitrag von chris1278 »

Ja du könntest versuchen einfach das ein Benutzer aus dem alten wbb über die Passwort Reset funktion sich ein neues Passwort zu setzen. evtl.. erübrigt sich dann die eine tabelle. Aber hierbei kann ich dir nicht sagen ob das funktioniert. evtl. müsstest du das mal in ner lokalen testumgebung probieren.
Saugjunkie
Mitglied
Beiträge: 15
Registriert: 22.06.2010 14:32

Re: [3.1] wbb bridge anpassung von 3.0

Beitrag von Saugjunkie »

Natuerlich ein reset funktioniert und der user kann sich einloggen mir geht es aber gerade darum diesen schritt nicht zu machen. weill eine weitere Aufgabe des codes oben ist es wenn ein login erfolgreich war das password feld in der phpbbusers zu aktualisieren und den eintrag aus der phpbb_users_wbb_passwords zu löschen so das der user garnix davon merkt.

ich habs mich auch schon selber daran versucht aber durch ein simpeles copy und paste komme ich nicht weiter ich kann zwar die extension aktivieren aber sobald ich im acp auf Authentifizierung gehe kommt eine weise seite


MFG
Saugjunkie
Benutzeravatar
chris1278
Mitglied
Beiträge: 3526
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: [3.1] wbb bridge anpassung von 3.0

Beitrag von chris1278 »

Diese frage kann ich dir nicht beantworten. Ich vermute aber mal das sich das nicht vermeiden läst.
Saugjunkie
Mitglied
Beiträge: 15
Registriert: 22.06.2010 14:32

Re: [3.1] wbb bridge anpassung von 3.0

Beitrag von Saugjunkie »

ich muss ja nur oben den code zum laufen bekommen sprich in eine extension rein aktivieren und dann unter Authentifizierung diese extension waehlen.
Benutzeravatar
chris1278
Mitglied
Beiträge: 3526
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: [3.1] wbb bridge anpassung von 3.0

Beitrag von chris1278 »

Ich glaube zwar nicht das das so funktioniert. Aber evtl. weis einer von den anderen Moderatoren hier wie dein Problem zu lösen ist.
Saugjunkie
Mitglied
Beiträge: 15
Registriert: 22.06.2010 14:32

Re: [3.1] wbb bridge anpassung von 3.0

Beitrag von Saugjunkie »

Entschuldigt ich bin doof ich hab einfach zu kompliziert gedacht und war der Meinung für diesen code brauche ich eine extension.
generell wäre es besser klar nur ich wollte testen bevor ich jetzt auf 3.2 hoch gehe das das mit den Passwörtern klappt.
Ich mache das jetzt anders und schaue nach da ja phpbb ja schon Authentifizierungs Möglichkeiten mit bringt. Schaue ich ob ich das nicht darein mache zum testen. Sprich ich lösche den Inhalt vom Apache und knall da dann erstmal den obrigen code rein und schaue ob man sich dann mit den alten Passwörtern einloggen kann.

Wie es aber dann bei 3.2 aussieht weiss ich noch nicht da ja der obrige code ja eigentlich für die 3.0 gedacht war/ist.

MFG
Saugjunkie
Benutzeravatar
chris1278
Mitglied
Beiträge: 3526
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: [3.1] wbb bridge anpassung von 3.0

Beitrag von chris1278 »

Versuch doch folgendes:

Setze dir eine locale Testumgebung auf. Dann konvertiere das wbb forum ins Phpbb3 Forum so wie du es ja schon erfolgreich gemacht hast. Und dann setze bei deinem Acoount über die Phpbb Passwort Resert funktion das Passwort neu.

Dann kannst du dir vorher und nachher in der Datenbank anschaun wie es sich bei deinem Useraccount auschaut.

Dann kannst du mal in deiner "phpbb_users_wbb_passwords" Denn eintrag zu deinem Account löschen und Versuchen ob du dich immer noch mit deinem geänderten Passwort einloggen kannst.

Wenn dem so ist dann sollten deine User sich einfach alle mal ein neues Passwort erstellen und danach kannst du diese tabelle komplett löschen.

wie gesagt vorher in Testumgebung ausprobieren. Ich kann dir nicht sagen ob das 100% so funktioniert.
Antworten

Zurück zu „Extension Suche/Anfrage“