Herzlichen Dank euch allen und ganz besonders Fry, für die schnelle Unterstützung. Mit der letzten Version (r2296) des Logikprozessors aus dem SVN funktioniert es wie es soll.
Ihr seid die Besten!
Beste Grüße!
Mike
Ankündigung
Einklappen
Keine Ankündigung bisher.
suche E-Mail Plugin
Einklappen
Dieses Thema ist geschlossen.
X
X
-
Patch ist in der SVN-Version des Logikprozessors eingecheckt.
VG, Fry
Einen Kommentar schreiben:
-
Ok, mit dem Patch klappt es
Allerdings wird $/ in den email-Scripts nicht unmittelbar verwendet. Vielleicht in der Lib Net::SMTP::SSL?Code:open FILE, "<$conf" || return "no config found"; [B]my $delim=$/;[/B] $/=undef; my $lines = <FILE>; $lines =~ s/((?:translate|\'translate\'|\"translate\")\s*=>\s*sub\s*\{)/$1 my \(\$state,\$input\)=\@\_;/sg; [B]$/=$delim;[/B] close FILE;
Einen Kommentar schreiben:
-
Noch wahrscheinlicher:
Die Variable $/ ist definitiv global. Speichere den Wert vorher ab (my $delim=$/; ) und schreibe ihn nach dem Einlesen der Config wieder zurück ($/=$delim; ).
(allerdings wäre es schlechter Stil, wenn das andere Plugin von einem bestimmten Wert von $/ abhängt. Da müsste man das andere Skript anpassen.)
VG, Fry
Einen Kommentar schreiben:
-
Sehr gut! Wir kommen der Ursache schon näher.
Versuch mal in deinem Minimal-Plugin den Deskriptor FILE durch was anderes (zB CONFIG) zu ersetzen. Immer noch ein Fehler?
Da ja nur der LP mit dem Email-Plugin kollidiert und andere Plugins nicht, vermute ich immer noch eine Namenskollision. Und Filedeskriptoren sind in Perl (glaube ich) global.
VG, Fry
PS. Ich glaube, das ist es nicht, siehe nächstes Posting, DAS wird es sein.
Einen Kommentar schreiben:
-
Ursache ist die Art, wie vom Logicprocessor-Skript die Konfiguration eingelesen wird.
Es reicht, das Skript anzuspecken (bei mir noch r898), bis man nur noch eine Minimal-Config einliest mittels:
und das Email-Skript bleibt hängen.Code:my %logic=(); my $conf="/etc/wiregate/plugin/generic/conf.d/$plugname"; $conf.='.conf' unless $conf=~s/\.pl$/.conf/; open FILE, "<$conf" || return "no config found"; $/=undef; my $lines = <FILE>; $lines =~ s/((?:translate|\'translate\'|\"translate\")\s*=>\s*sub\s*\{)/$1 my \(\$state,\$input\)=\@\_;/sg; close FILE; eval($lines); return "config error: $@" if $@;
Warum, ist nun eine Frage für Perl-Fortgeschrittene
Einen Kommentar schreiben:
-
Hallo Stefan... Du hast natürlich Recht..Zitat von StefanW Beitrag anzeigenEine Bitte hätte ich:
Solche Angaben wie:
sind nur im derzeitigen Kontext halbwegs verständlich. Derjenige, der dies in einem halben Jahr oder später liest, hat größte Mühe herauszufinden, auf welche Version sich das nun genau beziehen sollte vor einem halben Jahr.
Auch bei Angaben "WG mit neuesten Patches" usw. bitte ich sich die Mühe zu machen und die Versionsbezeichnungen jeweils genau anzugeben.
Der spätere Leser wird es danken.
lg
Stefan
WG Patchlevel 1.1.5
Logikprozessor Plugin r2295
Danke & Grüße,
Mike
Einen Kommentar schreiben:
-
Eine Bitte hätte ich:
Solche Angaben wie:
sind nur im derzeitigen Kontext halbwegs verständlich. Derjenige, der dies in einem halben Jahr oder später liest, hat größte Mühe herauszufinden, auf welche Version sich das nun genau beziehen sollte vor einem halben Jahr.Aktuell nutze ich die letzte Version aus dem SVN...
Auch bei Angaben "WG mit neuesten Patches" usw. bitte ich sich die Mühe zu machen und die Versionsbezeichnungen jeweils genau anzugeben.
Der spätere Leser wird es danken.
lg
Stefan
Einen Kommentar schreiben:
-
Ich habe leider auch keine Idee. Der LP nutzt eigentlich keine ungewöhnlichen Features... Versucht doch mal, die Subroutines verify und limit im LP umzubenennen, vielliehct gibt es da eine Namenskollision.
VG, Fry
Einen Kommentar schreiben:
-
Idealerweise sollte Fry was dazu sagen. Du hast ja schon hier ihn darum gebeten. Ansonsten Logicprocessor-Skipt analysieren und sukzessiv abspecken, um den Fehler zu isolieren. Immerhin gibt es wieder Hoffnung.
Einen Kommentar schreiben:
-
Hallo nipponichi,
ich habe verschiedene Logikprozessor Versionen durch. Der Effekt ist der gleiche. Aktuell nutze ich die letzte Version aus dem SVN...
Hatte zwischenzeitlich den Verdacht, dass die Namen der Variablen sich aus beiden Plugins beeinflussen, da diese zum Teil gleich sind. Hatte diese geändert, auch ohne Erfolg.
Bin am Ende mit meinem Latein.... Wer noch eine zündende Idee hat... ich nehme Sie gerne ;-)
Grüße,
Mike
Einen Kommentar schreiben:
-
Hallo,
danke, das kürzt meine Fehlersuche ab :-)
Ich habe gerade ausprobiert und kann bestätigen, daß Email-Senden möglich ist, sobald man das Logikprocessor-Script löscht. Return zu Beginn einfügen reicht nicht. Ich verwende eine recht alte Version (Release 898 von Juli 2012) für Primitivlogik.
(Und könnte es recht schnell rauswerfen, aber eine Lösung wäre natürlich besser.)
Grüße, Manuel
Einen Kommentar schreiben:
-
Selbst wenn ich das Plugin Logikprozessor mit
$plugin_info{$plugname.'_cycle'}=0; return 'deaktiviert';
deaktiviere und manuell über die ETS eine 1 auf die Trigger GA schicke, löst das Email Plugin nicht mehr aus. Lösche ich das Logikprozessor Plugin dagegen komplett, funzt es wieder wie es soll..... ?????
Grüße,
Mike
Einen Kommentar schreiben:
-
Hi Swiss,
danke für die schnelle Rückinfo.... hat leider nicht wirklich viel gebracht. das WG läuft mit allen aktuellen patches...
im daemon log schlagen nach wie vor folgende meldungen auf
Dec 26 11:45:00 wiregate723 /usr/sbin/wiregated.pl: INFO - Thread eiblisten Caught TERM, exiting:TIMEOUT running PLUGIN email_triggered_by_ga
Dec 26 11:45:07 wiregate723 /usr/sbin/wiregated.pl: INFO - *** reading config
Dec 26 11:45:07 wiregate723 /usr/sbin/wiregated.pl: INFO - connected to eibd local:/tmp/eib
Grüße,
Mike
Einen Kommentar schreiben:
-
Hallo mike
Da dein Plugin keine Subroutinen hat könntest du es ja auf vorkompilieren umstellen. Benötigt in deinem fall einzig und alleine irgend wo im Plugin folgende Zeile:
Der "compiler" sucht nach dieser Zeile und wenn sie vorhanden ist wird das plugin vorkopiliert was die ausführungsgeschindigkeit um einiges erhöhen kann... Wer das Plugin noch mit der alten WG Version benutzt hat dadurch keine Nachteile da diese Anweisung einfach als Komentar gewertet wirdCode:# COMPILE_PLUGIN
Einen Kommentar schreiben:


Einen Kommentar schreiben: