phpbb2egg Mod macht Probleme

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Benutzeravatar
Marc Hoff
Beiträge: 169
Registriert: Mo 09.Aug, 2004 10:59
Wohnort: Krefeld

phpbb2egg Mod macht Probleme

Beitrag von Marc Hoff »

Hallo,

ein cooler Mod, dieser phpbb2egg. Neue Beiträge aus dem Board werden direkt von einem Eggdrop in einen IRC-Channel geschrieben. So verpassen Chatter die neuen Beiträge nicht.

Leider hat dieses Teil doch noch einige Macken. Immerhin habe ich es zum Laufen bekommen - allerdings werden nur EINZEILIGE Beiträge veröffentlicht. Dann funktioniert das nach 300 Zeichen Abschneiden des Beitrags nicht, bei mehrzeiligen Beiträgen wird der Forenlink nicht mitübergeben und der User sowie das Forum, in dem der Beitrag geschrieben wurde, werden nicht angezeigt.

Leider bin ich kein wirklicher php-Master. Wer kennt den Mod oder kann Hilfe bieten. Hier einmal der Code der zugehörigen phpbb2egg.php Datei. Das passende tcl Script kann ich, falls das Problem gelöst wird, mit dem kompletten Mod hier releasen, wenn Ihr wollt.

Code: Alles auswählen

<?php
// version 1.0.1 beta[development]

$channel = "#MEIN_IRC_CHANNEL";
$ids = "43"; // forums to display posts from MEIN TESTFORUM, DAS ÜBERWACHT WIRD
$botip = "192.168.0.0"; // your bot's ip
$botport = "13481"; // a nice port
$boardurl = "www.MEIN_SCHÖNES_BOARD.de";

function send2egg($mode, $forumid, $topic_id, $user_id, $subject, $message, $poll_title, $channel, $ids, $botip, $botport, $boardurl )
{
        global $userdata;

        $nick = $userdata[$user_id];

		//strip BBCode off
        $message = preg_replace("#\[(.*?)]#si", "", $message);

        // shorten longer postings to 300 signs
        $text = wordwrap($message, 300, "\0") . ' ...';


		//here we ask for several cases and do some formating stuff with tcl readable colors.
		if ( $poll_title != '' )
		{
			$text2  = "\00300,02 Neue Umfrage! \00301,99 im Forum:<br>";
		}
		else if ( $mode = 'newtopic' )
		{
			$text2  = "\00300,02 Neuer Beitrag! \00301,99 im Forum:<br>";
		}
		else
		{
			$text2  = "\00300,02 Neuer Beitrag! \00301,99 im Forum:<br>";
 		}

        if ( $poll_title != '' )
        {
	        $text2  .= "\00300,04 $nick \00302,99 fragt: $poll_title <br>";
        }

 		else if ( $subject != '' )
 		{
	        $text2  .= "\00300,04 $nick \00302,99 zum Thema $subject :<br>";
	        $text2 .= " \00302,99 $message <br>";
        }

        else
        {
	        $text2  .= "\00300,04 $nick".":";
        	$text2 .= " \00302,99 $message <br>";
        }



        	$text2 .= " Link: \00312,99 $boardurl/viewtopic.php?t=$topic_id ";

        $chan = checkid( $forumid, $channel, $ids );

        phpbb2egg($chan, $text=$text2, $botip, $botport );

}



function phpbb2egg( $channel, $text, $botip, $botport)
{
        if ( $channel == '' || $text == '') {
        return;
        }

        $text = ereg_replace(";", ":", $text);
        $text = ereg_replace("<br>", ";", $text);

        $line = "$channel $text";

        $socket = @fsockopen ($botip, $botport, $null, $null, 60);

        if (!$socket)
        {
	        echo " no connection made ";
        }
        if ($socket) {
        @fputs($socket,"$line\n");

              for($i=0;$i<400000;$i++)
            {
                $g=$i;
            }
            fclose($socket);
        }
}


	// a little tricky from unknown
function checkid($forumid, $channel, $ids )
{

        $public[forumids]   = " $ids ";
        $public[chan]       = " $channel ";

        $forumids=explode(" ", $public[forumids]);

        while ( list($n, $id) = each($forumids))
        {

            if ($forumid == $id)
            {
				return "$public[chan]";
            }

        }

        return "";
}



?>
Gruß,

Marc
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Hier stehts doch:

Code: Alles auswählen

     $text = wordwrap($message, 300, "\0") . ' ...';
Zeile auskommentieren (2 Schrägstriche voranstellen) oder löschen und neu testen.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Marc Hoff
Beiträge: 169
Registriert: Mo 09.Aug, 2004 10:59
Wohnort: Krefeld

Beitrag von Marc Hoff »

Jo, dann wird nicht mehr abgeschnitten und ich bekomme die ganze 1.000.000 Zeichen Nachricht in den channel *spam*

Neeeee - das mein ich nicht.

Ich würde gern z.B. folgende Nachricht generieren:

Neue Nachricht von OXPUS im Board:

phpBB Support Board + Mods - phpbb2egg macht Probleme

Link: http://www.oxpus.de/ftopic-2679.html

###########

So würde ich das gut finden. Stell Dir vor, die GANZE Nachricht (mit meinem Codeschnipsel drin) würde in den Chat gepostet. Mein Bot würde wegen Spammens aus dem Channel gekickt :P

Hast Du nicht noch ne Idee?

Gruß,

Marc
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Von wo aus soll denn diese Nachricht erzeugt werden, bzw. wann?
Wenn doch nur dieser Inhalt gesendet werden soll, müsste

Code: Alles auswählen

phpbb2egg($chan, $text=$text2, $botip, $botport );
so lauten:

Code: Alles auswählen

phpbb2egg($chan, $text2, $botip, $botport );
Damit wäre dann auch der Beitrag selber nicht enthalten.

EDIT
Und alle Zeilen mit

Code: Alles auswählen

$text2 .= " \00302,99 $message <br>";
entfernen!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Marc Hoff
Beiträge: 169
Registriert: Mo 09.Aug, 2004 10:59
Wohnort: Krefeld

Beitrag von Marc Hoff »

Die Nachricht ist dann auch noch da. Ich frage mich auch, warum denn der Username z.B. nicht angezeigt wird. Ich muss da wohl nochmal ran. Aber irgendwie versteh ich das nicht alles.

Gruß,

Marc
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Lösche auch noch die Zeilen

Code: Alles auswählen

      //strip BBCode off 
        $message = preg_replace("#\[(.*?)]#si", "", $message); 

        // shorten longer postings to 300 signs 
        $text = wordwrap($message, 300, "\0") . ' ...'; 
damit auch wirklich kein Text mehr übergeben werden kann...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Marc Hoff
Beiträge: 169
Registriert: Mo 09.Aug, 2004 10:59
Wohnort: Krefeld

Beitrag von Marc Hoff »

Stimmt - jetzt sind die Messages raus - allerdings wird der Nick des Posters, der Forentitel und das Subject des Threads, in den gepostet wurde, nicht mit angezeigt.

Ich schau morgen nochmal intensiv rein.
Benutzeravatar
Marc Hoff
Beiträge: 169
Registriert: Mo 09.Aug, 2004 10:59
Wohnort: Krefeld

Beitrag von Marc Hoff »

So - da meine php und sql Fähigkeiten mehr als begrenzt sind, ich aber ziemlich scharf auf diesen mod bin, habe ich mich entschlossen, das Ding jetzt anzupassen. Ist bestimmt etwas Arbeit.

Wer kann mir helfen und sagen, wie ich an den Usernamen drankomme. Die Art, wie es da gemacht wird, ist offensichtlich falsch. Die USER_ID ist gefüllt - das habe ich ausprobiert. Wie kann ich den Usernamen abfragen?

Wenn ich das habe, müsste ich anhand des vorhandenen Codes den Rest selbst durch Ausprobieren und Tüfteln schaffen, denke ich.

Danke schonmal für Eure Hilfe.
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Code: Alles auswählen

$nick = $userdata[$user_id];
durch

Code: Alles auswählen

$user_data = get_userdata($user_id);
$nick = $user_data['username'];
ersetzen.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Marc Hoff
Beiträge: 169
Registriert: Mo 09.Aug, 2004 10:59
Wohnort: Krefeld

Beitrag von Marc Hoff »

Wow! Super Oxpus. Das klappt total gut. Wenn ich mich jetzt an den Threadtitel und an den Forennamen begebe, brauche ich da ne sql Abfrage oder sind das auch globale Variablen, an die ich rankomme?

Keine Ahnung, ob der mod später gebraucht wird aber ich werd ihn mal mit allen Credits releasen, wenn er fertig ist.
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Forum- und Topic-Titel müsstest Du wirklich abfragen.
Vergiss dann aber nicht, global $db; einzutragen, damit SQL-Abfragen durchgeführt werden können ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Marc Hoff
Beiträge: 169
Registriert: Mo 09.Aug, 2004 10:59
Wohnort: Krefeld

Beitrag von Marc Hoff »

Ach oxpus, ich bin zu na sagen wir unbedarft :P

Ich bekomme die notwendige sql Anweisung trotz Spickens in den anderen PHP Dateien nicht hin. Könntest Du mir bei der ersten noch behilflich sein? Die anderen werd ich dann hinbekommen - zumindest sollte das möglich sein :-)

Also global $db ist klar. Aber die Abfrage ist weniger klar :P

Gruß,

Marc
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Den gesamten Code?
Bitte sehr:

Code: Alles auswählen

<?php 
// version 1.0.1 beta[development] 

$channel = "#MEIN_IRC_CHANNEL"; 
$ids = "43"; // forums to display posts from MEIN TESTFORUM, DAS ÜBERWACHT WIRD 
$botip = "192.168.0.0"; // your bot's ip 
$botport = "13481"; // a nice port 
$boardurl = "www.MEIN_SCHÖNES_BOARD.de"; 

function send2egg($mode, $forumid, $topic_id, $user_id, $subject, $message, $poll_title, $channel, $ids, $botip, $botport, $boardurl ) 
{ 
	global $userdata, $db; 

	$user_data = get_userdata($user_id);
	$nick = $user_data['username'];

	$sql = "SELECT forum_name FROM " . FORUMS_TABLE . " WHERE forum_id = $forumid;
	if (!$result = $db->sql_query($sql))
	{
		message_die(GENERAL_ERROR, 'Could not get forum title', '', __LINE__, __FILE__, $sql);
	}

	while ($row = $db->sql_fetchrow($result))
	{
		$forum_name = $row['forum_name'];
	}
	$db->sql_freeresult($result);

	$sql = "SELECT topic_title FROM " . TOPICS_TABLE . " WHERE topic_id = $topic_id;
	if (!$result = $db->sql_query($sql))
	{
		message_die(GENERAL_ERROR, 'Could not get topic title', '', __LINE__, __FILE__, $sql);
	}

	while ($row = $db->sql_fetchrow($result))
	{
		$topic_title = $row['topic_title'];
	}
	$db->sql_freeresult($result);

	//here we ask for several cases and do some formating stuff with tcl readable colors. 
	if ( $poll_title != '' ) 
	{ 
		$text2  = "\00300,02 Neue Umfrage! \00301,99 im Forum:<br>".$forum_name; 
	} 
	else if ( $mode = 'newtopic' ) 
	{ 
		$text2  = "\00300,02 Neuer Beitrag! \00301,99 im Forum:<br>".$forum_name; 
	} 
	else 
	{ 
		$text2  = "\00300,02 Neuer Beitrag! \00301,99 im Forum:<br>".$forum_name; 
	} 

	if ( $poll_title != '' ) 
	{ 
		$text2  .= "\00300,04 $nick \00302,99 fragt: $poll_title <br>"; 
	} 
	else if ( $subject != '' ) 
	{ 
		$text2  .= "\00300,04 $nick \00302,99 zum Thema $subject<br>"; 
	} 
	else 
	{ 
		$text2  .= "\00300,04 $nick: ".$topic_title; 
	} 



	$text2 .= " Link: \00312,99 $boardurl/viewtopic.php?t=$topic_id "; 

	$chan = checkid( $forumid, $channel, $ids ); 

	phpbb2egg($chan, $text2, $botip, $botport ); 
} 

function phpbb2egg( $channel, $text, $botip, $botport) 
{ 
        if ( $channel == '' || $text == '') { 
		return; 
        } 

        $text = ereg_replace(";", ":", $text); 
        $text = ereg_replace("<br>", ";", $text); 

        $line = "$channel $text"; 

        $socket = @fsockopen ($botip, $botport, $null, $null, 60); 

        if (!$socket) 
        { 
		echo " no connection made "; 
        } 
        if ($socket)
        { 
		@fputs($socket,"$line\n"); 

		for($i=0;$i<400000;$i++) 
		{ 
			$g=$i; 
		} 
		fclose($socket); 
        } 
} 

// a little tricky from unknown 
function checkid($forumid, $channel, $ids ) 
{ 
	$public[forumids]   = " $ids "; 
	$public[chan]       = " $channel "; 

	$forumids=explode(" ", $public[forumids]); 

	while ( list($n, $id) = each($forumids)) 
	{ 
		if ($forumid == $id) 
		{ 
			return "$public[chan]"; 
		} 
	} 

	return ""; 
} 

?> 
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Marc Hoff
Beiträge: 169
Registriert: Mo 09.Aug, 2004 10:59
Wohnort: Krefeld

Beitrag von Marc Hoff »

Oxpus, Du bist der Knaller!

Vielen Dank für Deine extrem gute und schnelle Hilfe!

Jetzt steht einem Release nichts mehr im Weg. Ich schreibe noch das Readme und gebe die Credits, kommentiere noch ein bisschen und schicke es Dir dann zum Hochladen, wenn Du das möchtest.

Ich habe noch 2 Änderungen vorgenommen:

1. Bei Deinem Code hattest Du noch zwei Anführungszeichen am Ende der beiden SQL-Abfragen vergessen und das Script lief auf einen Fehler. Die habe ich noch ergänzt.
2. Dann habe ich bei der einen SQL-Abfrage den Wert des "forum_last_post_id" mit eingebunden, dann ist der Ausgabelink besser - es wird nicht auf das erste Posting des Threads, sondern auf das betreffende Posting direkt verlinkt.

Also nochmal DANKE! Das war wie üblich hier obergeil!

Gruß,

Marc
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

1. Sorry :!:
2. Gute Idee.
Also nochmal DANKE! Das war wie üblich hier obergeil!
:( danke danke :(
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Marc Hoff
Beiträge: 169
Registriert: Mo 09.Aug, 2004 10:59
Wohnort: Krefeld

Beitrag von Marc Hoff »

Hallo Oxpus,

das Release ist jetzt fertig, wartet nur noch auf ein Review Deinerseits und kann dann gern von Dir in den Downloadbereich gestellt werden. Wenn Du mit den Texten in den Dateien so einverstanden bist, kann ich ihn auch gern bei phpbb.de bzw. phpbb.com anbieten.

Gruß,

Marc
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ist soweit okay. Korrigiere mal noch meine Email-Adresse ("webmaster@oxpus.de" anstelle "info@oxpus.de"), dann veröffentliche ich das in den Downloads hier.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Marc Hoff
Beiträge: 169
Registriert: Mo 09.Aug, 2004 10:59
Wohnort: Krefeld

Beitrag von Marc Hoff »

Ok. Danke. Hier die geänderte Datei.
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Zuletzt geändert von oxpus am Mo 30.Okt, 2006 09:04, insgesamt 1-mal geändert.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Marc Hoff
Beiträge: 169
Registriert: Mo 09.Aug, 2004 10:59
Wohnort: Krefeld

Beitrag von Marc Hoff »

Cool - Thx :-)
Benutzeravatar
ChaosLord
Beiträge: 1
Registriert: Di 26.Apr, 2005 20:31

Beitrag von ChaosLord »

hallo

ich hab ein prob mit dem phpbb2egg-V1.0

ich krieg immer ne fehlermeldung beim posten.
der bot ist auf meinem rechner(noch).

no connection made
Warning: Cannot modify header information - headers already sent by (output started at /data/members/paid/s/p/space-hunters.de/htdocs/www/phpBB2/includes/phpbb2egg.php:117) in /data/members/paid/s/p/space-hunters.de/htdocs/www/phpBB2/includes/page_header.php on line 534

Warning: Cannot modify header information - headers already sent by (output started at /data/members/paid/s/p/space-hunters.de/htdocs/www/phpBB2/includes/phpbb2egg.php:117) in /data/members/paid/s/p/space-hunters.de/htdocs/www/phpBB2/includes/page_header.php on line 536

Warning: Cannot modify header information - headers already sent by (output started at /data/members/paid/s/p/space-hunters.de/htdocs/www/phpBB2/includes/phpbb2egg.php:117) in /data/members/paid/s/p/space-hunters.de/htdocs/www/phpBB2/includes/page_header.php on line 537


ich bin für jede hilfe dankbar
Zuletzt geändert von ChaosLord am Di 26.Apr, 2005 20:38, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

no connection made
Channel-Daten falsch?
Der Bot scheint sich bei Dir nicht anmelden zu können...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
wastl
Beiträge: 43
Registriert: So 29.Okt, 2006 21:22

Beitrag von wastl »

hi, bin auch sehr an diesem mod interessiert. bevor ich hier aber 25 nachrichten "spamen" muss, würden mich die anforderungen dazu interessieren. besonders bezüglich server, da ich keinen root-zugriff habe. ist das ein problem?

gruß wastl
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Wieso spammen?
Hier ist er doch: http://www.oxpus.de/viewtopic.php?p=26621#26621
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
wastl
Beiträge: 43
Registriert: So 29.Okt, 2006 21:22

Beitrag von wastl »

wow du bist ja schnell mit antworten =)

ja den link hab ich schon gesehen, leider scheint er tot zu sein?!

das mit dem spamen war spaß. glaube, ich hab wo gelesen, dass ich mind. 25 posts brauche um downloaden zu können?!

EDIT:
wenn ich auf den link klicke kommt:
Fehler: Umleitungsfehler

Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.

* Dieses Problem kann manchmal auftreten, wenn Cookies deaktiviert oder abgelehnt werden.
Zuletzt geändert von wastl am Mo 30.Okt, 2006 09:01, insgesamt 1-mal geändert.
Antworten