Neues Modul: 70_Jabber.pm

Begonnen von BioS, 18 Januar 2014, 11:51:20

Vorheriges Thema - Nächstes Thema

BioS

Ahoi MDegelmann5455,

was kommt denn in den Statis von deinem definiertem Modul, speziell CONNINFO?
Sprich ist der Client überhaupt verbunden und funktioniert das senden von fhem aus?

FHEM auf Debian in ESXi5 VM
Homematic mit HMLAN
Raspi mit Pilight für Relais der Heizung

DannyP

Hallo zusammen,

nachdem ich das Modul längere Zeit nicht mehr genutzt hatte, will ich es nun in meiner Installation wieder reaktivieren und wieder nutzen.
Leider bekomme ich nun allerdings keine Verbindung mehr zu meinem Jabber Server.
In der CONNINFO steht als Meldung: Jabber authentication error: error invalid-mechanism

FHEM läuft auf einem BeagleBoneBlack. Perl Module, die in der Doku angegeben sind, habe ich auch alle installiert. Im Log taucht keine Meldung auf.

Beim Server handelt es sich um Prosody Version 0.9.7. Der läuft auch einwandfrei. Hier kann ich mich sowohl mit dem FHEM Account als auch mit anderen Jabber Accounts problemlos anmelden. Die FHEM Anmeldung kommt beim Server nicht an, in den Logs finde ich auch hier keine Meldung.

Jemand eine Idee, womit das zusammenhängen kann?

Vielen Dank & schöne Grüße
Daniel

BioS

Hi Daniel, die Fehlermeldung invalid-mechanism kommt vor wenn dich der Server zurückweist weil er die Authentifizierungsmethode nicht unterstützt. Du solltest mal schauen was der Server so an auth Mechanismen unterstützt  (CRAM-MD5, PLAIN, etc.) und check nochmal gehen ob das Perl Modul Authen::SASL installiert ist.

Grüße

Gesendet von meinem Handy

FHEM auf Debian in ESXi5 VM
Homematic mit HMLAN
Raspi mit Pilight für Relais der Heizung

DannyP

Hi,

ich habe parallel mich nun auch noch mal mit ejabberd als Server versucht, allerdings auch ohne Erfolg.
Mittlerweile bekomme ich die Meldung bei CONNINFO: Jabber authentication error: error no-mechanism

Der Server unterstützt SASL PLAIN und SASL SCRAM-SHA-1

Perl Module sehen aus meiner Sicht auch alle okay aus:

ii  libauthen-sasl-perl                    2.1500-1                 all                      Authen::SASL - SASL Authentication framework
ii  libdigest-sha-perl                     5.71-2+deb7u1            armhf                    Perl extension for SHA-1/224/256/384/512, SHA-512/224 and SHA-512/256
ii  libnet-jabber-perl                     2.0-5                    all                      Perl modules for accessing the Jabber protocol
ii  libnet-ssleay-perl                     1.48-1+b1                armhf                    Perl module for Secure Sockets Layer (SSL)
ii  libnet-xmpp-perl                       1.02-3                   all                      XMPP Perl library
ii  libxml-stream-perl                     1.23-2                   all                      module for manipulating streaming XML data


Schöne Grüße
Daniel

BioS

Ahoi,

Zitat von: DannyP am 15 Juni 2015, 15:44:53
ich habe parallel mich nun auch noch mal mit ejabberd als Server versucht, allerdings auch ohne Erfolg.
Mittlerweile bekomme ich die Meldung bei CONNINFO: Jabber authentication error: error no-mechanism

Der Server unterstützt SASL PLAIN und SASL SCRAM-SHA-1

Mein ejabberd läuft bisher ohne Probleme.
kannst du mal in dem Modul selber bei Zeile 62 den $debug = 1 setzen und mir die fhem logfile und die /tmp/jabberdebug.log per PN zuschicken?

Ich schau mir das mal an, aber les dir die logs vorher durch und schwärze die Passwörter ;)

FHEM auf Debian in ESXi5 VM
Homematic mit HMLAN
Raspi mit Pilight für Relais der Heizung

DannyP

Hallo zusammen,

Durch klasse Unterstützung von bioS ist der Fehler gefunden und XMPP läuft wieder :-)
Falls noch jemand auf solche Probleme läuft, hier zur Doku, was zum Erfolg geführt hatte:

Der xmpp Server muss als Authentifizierungs-Methode DIGEST-MD5 anbieten. Das war bei mir zuerst nicht der Fall.
Auf Serverseite muss in der ejabberd Konfiguration daher gesetzt sein:

  • der Parameter fqdn für den Hostnamen des XMPP Servers
  • der Parameter auth_method muss auf internatl stehen
  • der Parameter auth_password_format muss auf plain stehen. In der Vergangenheit darf er auch nie mal auf scram gestanden haben

Das war bei mir alles der Fall, trotzdem wurde kein DIGEST-MD5 angeboten. Geholfen hat letztendlich die Erweiterung der DNS Einträge für die Domain, auf der der ejabberd Server läuft. Folgnde Einträge habe ich neu hinzugefügt:

_xmpp-client._tcp.domain.tld. 86400 IN SRV     5 0 5222 domain.tld.
_xmpp-server._tcp.domain.tld. 86400 IN SRV     5 0 5269 domain.tld.


domain.tld ist natürlich durch die entsprechende Domain zu ersetzen. 5222 und 5269 sind die Standard Ports und müssen ggf. auch angepasst werden, wenn man eigene hat.
Danach klappt auch der SRV Lookup vom Jabber Modul und danach wird auch als Authentifizierungs-Methode DIGEST-MD5 angeboten.

Zwar ein Schritt weiter, aber immer noch nicht am Ziel. Nun gab es nämlich die Fehlermeldung "no-mechanism". Erster Gedanke waren veraltete Pakete auf dem FHEM Rechner. Der Rechner lief unter Debian whezzy. Also erstmal alle Pakete aktualisiert. Leider ohne Erfolg.
Im zweiten Versuch dann ein Update von whezzy nach jessie gemacht und gehofft, dass es dann aktuellere Pakete gibt. Auch kein Erfolg (ausser dass ich die lange verschobene Umstellung nach jessie nun endlich durch habe ;-) ).
Anschließend die Net::Jabber, Net::XMPP und Authen::SASL Module die ich per apt-get installiert hatte wieder runtergeschmissen. Aus dem CPAN habe ich dann die Pakete dann neu installiert. Und siehe da! Verbindung kann sofort hergestellt werden.

Im Endeffekt fehlten also die DNS Einträge und die Pakete aus dem Debian Repository haben kein DIGEST-MD5 unterstützt.

Schöne Grüße
Daniel

hexenmeister

Hallo BioS,

ich musste mein System neu aufsetzen. Seitdem funktioniert Jabber-Modul nur zu Hälfte. Senden klappt, empfengen leider nicht mehr.
Mit aktivierten Debug sehe ich in /tmp/jabberdebug.log die Ankunft der Nachrichten mit Inhalt und scheibar allem, was dazugehört. Allerdings klappt CallBack nicht. Hast Du eine Idee, was ich dagegen tun kann?
Danke und Grüße,

Alexander



...
XMPP::Conn: Connected: (1)
XMPP::Conn: Process: timeout(1)
XML::Stream: Read: buff(<message id='8Us7l-9' type='chat' to='test2@jabber.de' from='test1@jabber.de/androidkCcF4yTq'><body>Test</body><thread>wtH2f1dVxg2a</thread><active xmlns='http://jabber.org/protocol/chatstates'/><request xmlns='urn:xmpp:receipts'/></message>)
XML::Stream: Node: _handle_element: sid(8b8d9ae4-5c34-4e12-8b65-5a32c9f4daec) sax(XML::Stream::Parser=HASH(0xe59cc0)) tag(message) att( from test1@jabber.de/androidkCcF4yTq to test2@jabber.de id 8Us7l-9 type chat )
XML::Stream: Node: _handle_element: check( -1 )
XML::Stream: Node: _handle_element: sid(8b8d9ae4-5c34-4e12-8b65-5a32c9f4daec) sax(XML::Stream::Parser=HASH(0xe59cc0)) tag(body) att( )
XML::Stream: Node: _handle_element: check( 0 )

...

XML::Stream: Node: _handle_close: check( 0 )
XML::Stream: Node: _handle_close: check2( -1 )
XMPP::Conn: CallBack: sid(8b8d9ae4-5c34-4e12-8b65-5a32c9f4daec) received(<message from='test1@jabber.de/androidkCcF4yTq' id='8Us7l-9' to='test2@jabber.de' type='chat'><body>Test</body><thread>wtH2f1dVxg2a</thread><active xmlns='http://jabber.org/protocol/chatstates'/><request xmlns='urn:xmpp:receipts'/></message>)
XMPP::Conn: CallBack: tag(message)
XMPP::Conn: CallBack: id(8Us7l-9)
XMPP::Conn: CheckID: tag(message) id(8Us7l-9)
XMPP::Conn: CheckID: we have that here somewhere...
XMPP::Conn: CallBack: a packet that no one wants... how sad. =(
XML::Stream: Process: block(0)
XMPP::Conn: Connected: (1)
...

BioS

Hi Alexander,

Zitat von: hexenmeister am 24 August 2015, 23:56:26
ich musste mein System neu aufsetzen.

Uh oh, das tut mir leid, hoffentlich muss ich das nie machen :)

Du bist mittlerweile der 2. bei dem Callback nicht geht und du benutzt auch die Debian Repository, richtig?

Bei deinem Vorposter hat es geholfen die Module, die benötigt werden, zu löschen und per CPAN nochmal frisch zu installieren.

Bevor du dass aber tust wäre ich dir dankbar wenn du mir die Versionsnummern zukommen lassen könntest, damit ich einen eventuellen Bug in den Modulen suchen und reporten kann. 

Ich hoffe dass hilft dir.

Grüße BioS

Gesendet von meinem Handy

FHEM auf Debian in ESXi5 VM
Homematic mit HMLAN
Raspi mit Pilight für Relais der Heizung

hexenmeister

Hi!
Danke für die schnelle Meldung!
War bei mir ein typischer Fall von "Verkettung unglücklicher Umstände". Habe (selbstverschuldet) mein System zerschossen, der 20 Stunden alte Backup war (wie der Zufall so will) auch nicht brauchbar. Das neuste, was ich gefunden habe, war 3 Monate alt. Also hab ich beschlossen, neu aufzusetzen. Daten/Konfig habe ich nicht verloren, da extra nochmal gesichert :)

Leider trift die Vermutung bei meinem System nicht zu, ich habe die Module frisch per CPAN installiert :(

Grüße,

Alexander

Zitat$ sudo cpan -D  Net::Jabber Net::XMPP Authen::SASL XML::Stream Net::SSLeay
Reading '/root/.cpan/Metadata'
  Database was generated on Mon, 24 Aug 2015 20:17:02 GMT
Net::Jabber
-------------------------------------------------------------------------
        (no description)
        R/RE/REATMON/Net-Jabber-2.0.tar.gz
        /usr/local/share/perl/5.20.2/Net/Jabber.pm
        Installed: 2.0
        CPAN:      2.0  up to date
        Ryan Eatmon (REATMON)
        reatmon@mail.com

Net::XMPP
-------------------------------------------------------------------------
        (no description)
        D/DA/DAPATRICK/Net-XMPP-1.05.tar.gz
        /usr/local/share/perl/5.20.2/Net/XMPP.pm
        Installed: 1.05
        CPAN:      1.05  up to date
        Darian Anthony Patrick (DAPATRICK)
        dapatrick@cpan.org

Authen::SASL
-------------------------------------------------------------------------
        (no description)
        G/GB/GBARR/Authen-SASL-2.16.tar.gz
        /usr/local/share/perl/5.20.2/Authen/SASL.pm
        Installed: 2.16
        CPAN:      2.16  up to date
        Graham Barr (GBARR)
        gbarr@pobox.com

XML::Stream
-------------------------------------------------------------------------
        (no description)
        D/DA/DAPATRICK/XML-Stream-1.24.tar.gz
        /usr/local/share/perl/5.20.2/XML/Stream.pm
        Installed: 1.24
        CPAN:      1.24  up to date
        Darian Anthony Patrick (DAPATRICK)
        dapatrick@cpan.org

Net::SSLeay
-------------------------------------------------------------------------
        (no description)
        M/MI/MIKEM/Net-SSLeay-1.70.tar.gz
        /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2/Net/SSLeay.pm
        Installed: 1.70
        CPAN:      1.70  up to date
        Mike McCauley (MIKEM)
        mikem@airspayce.com

BioS

Ahoi,

Zwar mach ich vor größeren Änderungen immer Snapshots und ich hab tägliche Replizierung von allen Daten zu einem externen Datenspeicher aber wenn ich mal in fhem was falsch konfiguriere bringt mir das alles nichts weil dann meistens der aktuelle (mist-)stand schon weggeschrieben wurde bis ich das merke..

Eiei, wenn ich so recht überlege ist mein letztes full backup bestimmt schon 3 Monate alt ;)
Ich glaube ich sollte da mal wieder eins machen.. hehe

Zum Thema:
Ich hab mal alle meine letzten Posts durchforstetet und es lief immer wieder mal auf diese Callbacks raus.
Das ganze findet im Modul XML::Stream statt.

Verglichen mit der Version die ich benutze (1.23), haben sich da einige Änderungen bezüglich TLS und Callbacks getan.
Bei einem User hat TLS so gut wie gar nicht funktioniert und wir mussten einige hacks basteln damit eine sichere Verbindung überhaut aufgebaut werden konnte.

Wenn du möchtest, installiere vom CPAN doch mal die 1.23 anstatt der 1.24 vom XML::Stream und versuche es dann nochmal.
FHEM auf Debian in ESXi5 VM
Homematic mit HMLAN
Raspi mit Pilight für Relais der Heizung

hexenmeister

Hi!
Zitat von: BioS am 25 August 2015, 10:09:53
Wenn du möchtest, installiere vom CPAN doch mal die 1.23 anstatt der 1.24 vom XML::Stream und versuche es dann nochmal.
Würde ich gerne tut, weiß Du zufällig, wo ich die ältere Version her bekomme und wie kann sie installiert werden? cpan führt scheinbar nur die letzte...

Grüße,

Alexander

hexenmeister

So, jetzt weiß ich, wie man mit CPAN ältere Versionen installiert ;)
XML::Stream ist jetzt in der Version 1.23

sudo cpan -D XML::Stream
Going to read '/root/.cpan/Metadata'
  Database was generated on Wed, 26 Aug 2015 15:41:02 GMT
XML::Stream
-------------------------------------------------------------------------
        (no description)
        D/DA/DAPATRICK/XML-Stream-1.24.tar.gz
        /usr/local/share/perl/5.14.2/XML/Stream.pm
        Installed: 1.23
        CPAN:      1.24  Not up to date
        Darian Anthony Patrick (DAPATRICK)
        dapatrick@cpan.org


Genutzt hat nur leider nichts. Kannst Du mir bitte die Nummer der anderen benötigeten Module, die bei Dir funktionieren, nennen?
Danke!


BioS

Ahoi!

Sorry ich hatte gestern Kindergeburtstag meiner kleinen zu feiern, ich hatte keine Chance an den PC zu sitzen ^^

Hier sind die Versionsnummern:

  • This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi
  • XML::Stream  Installed: 1.23
  • Net::XMPP    Installed: 1.02
  • Net::Jabber  Installed: 2.0
  • Authen::SASL Installed: 2.15
  • Digest::SHA1 Installed: 2.13
  • Net::SSLeay  Installed: 1.57


Könntest du mir deine Versionen von den Modulen und perl, bevor du downgradest, auch kurz per PM vielleicht schicken?
Ich würde den Fehler gerne nachstellen, bisher geht bei mir das aber *immer* :/

Grüße,
BioS
FHEM auf Debian in ESXi5 VM
Homematic mit HMLAN
Raspi mit Pilight für Relais der Heizung

hexenmeister

Moin!
Danke und gar kein Problem, Familie geht vor :)

Ich werde heute abends zuhause ausprobieren.
Die Versionsnummer greife ich vorher ab und schicke Dir zu, sind aber vermutlich die gleichen, wie ich schon gepostet habe.

Grüße,

Alexander

BioS

So, ich hab das Problem jetzt nachstellen können nachdem ich alle Module einzeln up- und downgegraded hab.

Es ist also so:

  • XML::Stream 1.24 mit Net::XMPP 1.05 = Verbindung OK, aber keine Callbacks (presence, message, etc.)
  • XML::Stream 1.24 mit Net::XMPP 1.02 = Keine Verbindung (SSL probleme)
  • XML::Stream 1.23 mit Net::XMPP 1.02 = alles gut

Die haben in der neueren Net::XMPP irgendwas mit einem "weaken" call gemacht, den ich nicht so richtig kapiere.
Auf jeden Fall hab ich das Problem rausisolieren können und einen Workaround im 70_Jabber geschrieben.

Damit solltest du also deine Versionen wieder auf aktuellen CPAN level upgraden können und mein Modul sollte dann auch laufen... endlich :D

Ich hab den fix eben eingecheckt, könnte also heute Abend mit einem fhem update schon bei dir landen.

Grüße,
BioS
FHEM auf Debian in ESXi5 VM
Homematic mit HMLAN
Raspi mit Pilight für Relais der Heizung