Skript zur Authentifizierung von ejabberd an phpbb

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Andreasx
Mitglied
Beiträge: 19
Registriert: 26.07.2010 00:27

Skript zur Authentifizierung von ejabberd an phpbb

Beitrag von Andreasx »

Hallo alle miteinander!

Ich würde gerne die Authentifizierung von ejabberd mit Hilfe der mysql-Datenbank von phpbb 3.08. bewerkstelligen.

Da mir leider die Kenntnisse der Programmierung fehlen, hoffe ich hier auf ein paar fähige Coder, für die das wahrscheinlich kein größeres Problem darstellen sollte.

Nach einigen Recherchen bin ich auf ein Skript gestoßen, das allerdings nur mit per Crypt verschlüsselten Passwörtern in Datenbanken zurecht kommt.
Somit sollte sich die Anpassungsarbeit in Grenzen halten.

Hinzugefügt habe ich bisher:

Code: Alles auswählen

use Digest::MD5 qw(md5 md5_hex md5_base64);
und

Code: Alles auswählen

bei 'auth' "crypt" durch "md5" ersetzt.
Allerdings funktioniert das bisher nicht.

Hier das vorläufige Skript:

Code: Alles auswählen


#!/usr/bin/perl

# Mysql external auth script
# Features: auth isUser and change password
# Password is an encrypted password !!

# Settings
my $sDatabaseHost='localhost';            # The hostname of the database server
my $sDatabaseUser="*********";            # The username to connect to mysql
my $sDatabasePass='*********';            # The password to connect to mysql
my $sDatabaseName="forum";            # The name of the database contain the user table
my $sUserTable="phpbb_users";                # The name of the table containing the username and password
my $sUsernameTableField="username";        # The name of the field that holds jabber user names
my $sPasswordTableField="user_password";    # The name of the field that holds jabber passwords

# Libs
use DBI;
use DBD::mysql;
use Digest::MD5 qw(md5 md5_hex md5_base64);

while(1) {
my $sBuffer = "";
my $readBuffer = sysread STDIN,$sBuffer,2;
my $iBufferLength = unpack "n",$sBuffer;
my $readBuffer    = sysread STDIN,$sBuffer,$iBufferLength;
my ($sOperation,$sUsername,$sDomain,$sPassword) = split /:/,$sBuffer;
my $bResult;

SWITCH: {
$sOperation eq 'auth' and do {
$bResult   = 0;
$connect   = DBI->connect('DBI:mysql:'.$sDatabaseName, $sDatabaseUser, $sDatabasePass) || die "Could not connect to database: $DBI::errstr";
$query     = "SELECT $sPasswordTableField FROM $sUserTable WHERE $sUsernameTableField='$sUsername';";
$statement = $connect->prepare($query);
$statement->execute();
while ($row = $statement->fetchrow_hashref()) {
$sCryptstring = md5($sPassword,$row->{$sPasswordTableField});
if ($row->{$sPasswordTableField} eq $sCryptstring) {
$bResult = 1;
}
}
},last SWITCH;

$sOperation eq 'setpass' and do {
$connect   = DBI->connect('DBI:mysql:'.$sDatabaseName, $sDatabaseUser, $sDatabasePass) || die "Could not connect to database: $DBI::errstr";
$myquery   = "UPDATE $sUserTable SET $sPasswordTableField=ENCRYPT('$sPassword') WHERE $sUsernameTableField='$sUsername';";
$statement = $connect->prepare($myquery);
$statement->execute();
$bResult = 1;
},last SWITCH;

$sOperation eq 'isuser' and do {
$bResult   = 0;
$connect   = DBI->connect('DBI:mysql:'.$sDatabaseName, $sDatabaseUser, $sDatabasePass) || die "Could not connect to database: $DBI::errstr";
$myquery   = "SELECT count(*) AS iCount FROM $sUserTable WHERE $sUsernameTableField='$sUsername';";
$statement = $connect->prepare($myquery);
$statement->execute();
$row = $statement->fetchrow_hashref();
if($row->{'iCount'} >= 1){
$bResult = 1;
}
},last SWITCH;
};

my $sOutput = pack "nn",2,$bResult ? 1 : 0;
syswrite STDOUT,$sOutput;
}
closelog;
Die Funktion der Passwortänderung muss für mich nicht zwingend funktionieren.
Wirklich wichtig ist nur ein funktionierende Authentifizierung.
Es gibt übrigens noch einige andere Personen die auch Interesse an diesem Skript hätten. Das ist mir beim suchen aufgefallen...

Nette Grüße

Andreas
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: Skript zur Authentifizierung von ejabberd an phpbb

Beitrag von cYbercOsmOnauT »

Hallo Andreasx,

nächstes Mal bitte direkt im richtigen Forum posten ;)

Grüße,
Tekin
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Andreasx
Mitglied
Beiträge: 19
Registriert: 26.07.2010 00:27

Re: Skript zur Authentifizierung von ejabberd an phpbb

Beitrag von Andreasx »

cYbercOsmOnauT hat geschrieben:Hallo Andreasx,

nächstes Mal bitte direkt im richtigen Forum posten ;)

Grüße,
Tekin
Alles klar, in die Entwickler-Ecke habe ich nicht reingeschaut.
Bin mal gespannt ob hier jemand was beitragen kann ;)
Andreasx
Mitglied
Beiträge: 19
Registriert: 26.07.2010 00:27

Re: Skript zur Authentifizierung von ejabberd an phpbb

Beitrag von Andreasx »

Hallo,

das Problem hat sich erledigt!


Nette Grüße

Andreas
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: Skript zur Authentifizierung von ejabberd an phpbb

Beitrag von cYbercOsmOnauT »

Vielleicht postest Du die Lösung auch rein? Das wäre für Leute die in Zukunft möglicherweise das Gleiche Problem haben und eine Lösung suchen hilfreich. :)

Grüße,
Tekin
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Andreasx
Mitglied
Beiträge: 19
Registriert: 26.07.2010 00:27

Re: Skript zur Authentifizierung von ejabberd an phpbb

Beitrag von Andreasx »

cYbercOsmOnauT hat geschrieben:Vielleicht postest Du die Lösung auch rein? Das wäre für Leute die in Zukunft möglicherweise das Gleiche Problem haben und eine Lösung suchen hilfreich. :)

Grüße,
Tekin
Mit "das Problem hat sich erledigt" meinte ich nicht dass ich es gelöst habe.
Ich bin momentan auf openfire umgestiegen, wo einige Plugins existieren um das zu realisieren.

Nette Grüße
KainsRache
Mitglied
Beiträge: 6
Registriert: 16.12.2007 19:49
Wohnort: Bremen-Neustadt
Kontaktdaten:

Re: Skript zur Authentifizierung von ejabberd an phpbb

Beitrag von KainsRache »

Hallo,

könntest Du bitte die Lösung via openfire hier reinposten? Im openfire-Supportforum findet sich offenbar nichts brauchbares, oder ich bin zu doof da richtig zu suchen. :)
Auf jeden Fall möchte ich auch das phpBB3.x an openfire als authentication engine anbinden und scheitere derzeit kläglich.


Liebe Grüße,
Folker
Antworten

Zurück zu „Coding & Technik“