PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit eggdrop & socket-verbindungen



Mr. Wolfenstein
07.03.10, 19:54
Hi,

ich hab auf meinem CentOS5-Server eggdrop laufen. In eggdrop ist ein Script eingebunden welches Daten von einem Shoutcast-Server laden soll und dann im Channel anzeigen.

Problem ist das beim Verbindungsaufbau zum Socket das ganze stehen bleibt. Durch einfügen von Ausgaben nach jedem Befehl habe ich das herausgefunden.
Hier mal die Funktion (in tcl geschrieben):


proc radio:pub:listen {nick host hand chan arg} {
global radio:chan radio:name radio:stream radio:port
if {$chan == ${radio:chan}} {
--------> if {[catch {set sock [socket ${radio:stream} ${radio:port}] } sockerror]} {
puthelp "NOTICE $nick :\002Problem beim Stream oeffnen $sockerror\002"
return 0
}
else {
puts $sock "GET /admin.cgi?pass=${radio:password}&mode=viewxml&page=1 HTTP/1.0"
puts $sock "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)"
puts $sock "Host: ${radio:stream}"
puts $sock "Connection: close"
puts $sock ""
flush $sock
while {[eof $sock] != 1} {
set bl [gets $sock]
if { [string first "CURRENTLISTENERS" $bl] != -1 } {
set streamstatus [string range $bl [shrink + 14 "<CURRENTLISTENERS>" 0 $bl] [shrink - 1 "</CURRENTLISTENERS>" 0 $bl]]
puthelp "NOTICE $nick : \002$streamstatus\002"
}
}
close $sock
}

}
}

Die mit dem Pfeil markierte Zeile macht das Problem. Muss ich damit das funktioniert eventuell in der Firewall was freischalten? Momentan ist sie so eingestellt das Verbindungen nach draussen durchgelassen, nur nach innen wird gefiltert. Eggdrop wird als normaler Benutzer ausgeführt, das dürfte doch ok sein?

Gruß Alex

Mr. Wolfenstein
07.03.10, 21:58
Habs hingekriegt. Wusste nicht das man das else direkt nach der schließenden Klammer vom if machen muss.

Mit dem debugmode von eggdrop bin ich drauf gestossen: eggdrop -n eggdrop.conf