ilch Forum » Ilch Clan 1.1 » Allgemein » Bridge für eqdkp

Geschlossen
  1. #1
    User Pic
    MisterN Mitglied
    Registriert seit
    19.11.2013
    Beiträge
    14
    Beitragswertungen
    0 Beitragspunkte
    Hallo Leute!

    Ich baue gerade unsere Clan Page neu auf und habe mich da für ilch entschieden. Bin bis jetzt sehr happy damit :-)

    Jetzt muss ich nur noch eine Bridge zu eqdkp machen. Wie schaut das hier mit der Passwort-Verschlüsselung aus? Ich brauche nun irgendwie einen Passwortvergleich-script das mir das Klartext-PW mit dem in der ilch-DB abgleicht. Bis jetzt hatte ich es nur mit einem "einfachen" hash zu tun.

    Hier das Beispiel von der alten Seite:
    	public function check_password($password, $hash, $strSalt = '', $boolUseHash){
     
    		$itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
    		if (strlen($hash) == 34)
    		{
    			return ($this->_hash_crypt_private($password, $hash, $itoa64) === $hash) ? true : false;
    		}
    		return (md5($password) === $hash) ? true : false;
    	}


    Ich kann leider nicht php-coden, verstehe aber so manchen Teil...
    Wer könnte mir das bitte anpassen?

    Danke schon mal im Voraus,
    lg MisterN


    verwendete ilch Version: 1.1 P

    betroffene Homepage: externer Link
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Ich kenne eqdkp nicht, aber in Ilch gibt es im Grunde genauso eine Funktion, die nennt sich user_pw_check und ist in der includes/func/user.php.

    Ich weiß nicht wie du an den Hash kommst, den von ilch könnte man aus der ic?_user Tabelle auslesen. In der user_login_check Funktion siehst du ungefähr wie das funktioniert.

    Wenn dir diese Infos nicht ausreichen, muss du allerdings auch weitere Infos liefern zwinker
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    MisterN Mitglied
    Registriert seit
    19.11.2013
    Beiträge
    14
    Beitragswertungen
    0 Beitragspunkte
    Auslesen, Gruppenzuordnung usw. passen. In der config für die Bridge wird das alles angegeben. Die Daten werden auch richtig ausgelesen, es fehlt eben nur die überprüfung ob das eingegebene Kennwort (im eqdkp) dem entspricht das in der ic?_user Tabelle gespeichert ist. Und genau dieser Abgleich macht mir Kopfzerbrechen. Bei nem einfachen md5 oder sha1 geht das mit
    if (sha1($password) == $hash){
    			return true;
    		}
    		return false;

    Aber hier wrid das Pw doch etwas mehr verwurstelt lächeln. Ich hab versucht die user_pw_check rein zu kopieren und die Variablen an zu passen. Hat leider nicht funktioniert traurig

    Hier noch meine komplette Bridge mit "nur" md5.
    <?php
     
    if ( !defined('EQDKP_INC') ){
    	header('HTTP/1.0 404 Not Found');exit;
    }
     
    class ilch_bridge extends bridge_generic {
     
    	public function __construct(){
    		parent::__construct();
     
    		$this->name = "ilch";
     
    		$this->data = array(
    			'user'	=> array(
    				'table'	=> 'user',
    				'id'	=> 'id',
    				'name'	=> 'name',
    				'where'	=> 'name',
    				'password' => 'pass',
    				'email'	=> 'email',
    				'salt'	=> '',
    				'QUERY'	=> '',
    			),
    			'groups' => array(
    				'table'	=> 'grundrechte', //without prefix
    				'id'	=> 'id',
    				'name'	=> 'name',
    				'QUERY'	=> '',
    			),
    			'user_group' => array(
    				'table'	=> 'user',
    				'group'	=> 'recht',
    				'user'	=> 'id',
    				'QUERY'	=> '',
    			),
     
    		);
     
    		$this->functions = array(
    			'login'	=> array(
    				'callbefore'	=> '',
    				'function' 	=> '',
    				'callafter'	=> '',
    			),
    			'logout' 	=> '',
    			'autologin'     => '',	
    			'sync'		=> 'ilch_sync',
    		);
     
    		$this->settings = array(
    			'cmsbridge_disable_sync' => array(
    				'fieldtype'	=> 'checkbox',
    				'name'		=> 'cmsbridge_disable_sync',
    			),
    		);
     
    		$this->sync_fields = array(
    			'user_email',
    			'username',
    		);
    	}
     
    	//Needed function
    
    	public function check_password($password, $hash, $strSalt = '', $boolUseHash = false){
    		if (sha1($password) == $hash){
    			return true;
    		}
    		return false;
    	}
    	
    	public function ilch_sync($arrUserdata){
    		global $core;
    		if ($core->config['cmsbridge_disable_sync'] == '1'){
    			return false;
    		}
    		$sync_array = array(
    			'user_email' 		=> $arrUserdata['email'],
    			'username'		=> $arrUserdata['name'],
    		);
    		return $sync_array;
    	}
    }
    
    ?>

    Ich liefer dir gene mehr Infos wenn du mir sagst was du brauchst. Info von eqdkp bezüglich Bridge gibts hier
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Ok dann wird ein "klein wenig" komplizierter. Bei Ilch wird nun die PwCrypt Klasse verwendet, um Passworthashes zu erstellen.

    Diese muss bei deinem eqdkp also verfügbar sein. Wenn du auf die Dateien von ilch zugreifen kannst, müsstest du halt ein

    require 'pfad/zu/ilch/include/includes/class/pwcrypt.php';


    über der Klassendefinition einfügen, um die Datei zu laden.
    Alternativ kannst du die pwcrypt.php in den Ordner der Datei für die Bridge kopieren und
    require __DIR__ . 'pwcrypt.php';
    verwenden.
    Besser wäre direkter Zugriff auf die Datei bei ilch, falls mal was eingestellt werden soll, oder sich die Datei ändern sollte, bei einem Update oder so.

    Dann müsste die check_password Methode natürlich angepasst werden, ich vermute mal, diese Lösung sollte passen.

    public function check_password($password, $hash, $strSalt = '', $boolUseHash = false){
        if (version_compare(PHP_VERSION, '5.0') !== -1) {
            $pwCrypt = new PwCrypt();
            return $pwCrypt->checkPasswd($plainPassword, $passwordHash);
        }
        return md5($plainPassword) === $passwordHash;
    }



    Zuletzt modifiziert von Mairu am 22.11.2013 - 18:33:07
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    1 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    MisterN Mitglied
    Registriert seit
    19.11.2013
    Beiträge
    14
    Beitragswertungen
    0 Beitragspunkte
    Danke Mairu, eqdkp prüft immer die Bridge-datei auf Fehler bevor sie geladen wird. Ich musste beim require __DIR__ noch ein / davor machen dann hat er die Bridge geladen. Allerdings meint er jetzt

    no direct access

    Hast du ne idee was er mir damit sagen will?
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Ja, das hab ich vergessen, füge über dem Include noch
    define('main', true);
    ein.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    1 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    MisterN Mitglied
    Registriert seit
    19.11.2013
    Beiträge
    14
    Beitragswertungen
    0 Beitragspunkte
    So, jetzt mach glaub ich das script von eqdkp einen Fehler lächeln sobald die Bridge geladen wurde kommt:
    call to not listed class: pwcrypt_bridge
    hab dann mal einfach die class pwcrypt umbenannt und dann kann ich alles einstellen, allerdings bleibt es dann hängen wenn der User/Pass abgleich läuft.

    Ich dank dir für die Hilfe, aber ich glaub jetzt muss ich bei eqdkp nachfragen was die da so anstellen.
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    MisterN Mitglied
    Registriert seit
    19.11.2013
    Beiträge
    14
    Beitragswertungen
    0 Beitragspunkte
    Hmmm...
    Die Antwort von einem eqdkp Dev ist
    ZitatZitat
    ist nicht umsetzbar, zumind nicht allgemeingültig.
    vor die zeile mit dem "new PwCrypt" muss ein include_once('file_mit_pw_crypt_class');


    hab ich auch probiert... geht nicht.
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    MisterN Mitglied
    Registriert seit
    19.11.2013
    Beiträge
    14
    Beitragswertungen
    0 Beitragspunkte
    So jetzt ist's erledigt. Musste die pwcrypt class in die bridge rein kopieren und die Variablen anpassen. Danke nochmal für die Hilfe.
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    zyntex Mitglied
    Registriert seit
    09.03.2014
    Beiträge
    4
    Beitragswertungen
    0 Beitragspunkte
    Hallo,

    ich stehe auch vor dem Problem eqdkp mit ilch zu verbinden.

    Wäre es möglich das du deine Lösung mitm ir teilst?
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    MisterN Mitglied
    Registriert seit
    19.11.2013
    Beiträge
    14
    Beitragswertungen
    0 Beitragspunkte
    Hallo zyntex,

    die Bridge findest du im Forum von EQdkp Plus. Hier der Link zum ForumPost:
    eqdkp-plus.eu/forum/index.php/Thread/1327-Bridge-f%C3%BCr-ilch/?postID=8998&highlight=ilch#post8998

    Du musst das File "ilch.bridge.class.zip" ganz unten nehmen.

    lg MisterN
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten