TeamSpeak Status

nfsmw15

Mitglied
Hallo,

ich will für unser Hosting eine Teamspeak Status anzeige Programmierung die über einen Link angesprochen wird so z.B.
Code:
http://www.server.de/status/ts-status.php?link=Server.ip:Port

Ich habe zwei scripte die ich irgendwie zu einem zusammen bringen will aber weiß nicht wie?

Einmal das:

PHP:
<?php
$live = "/status/on.gif";
$dead = "/status/off.gif";

$link = $_GET['link'].":";
$s_link = str_replace("::", ":", $link);
list($addr,$port)= explode (':',"$s_link");
if (empty($port)){
	$port = 80;
}

$churl = @fsockopen(server($addr), $port, $errno, $errstr, 20);
             if (!$churl){
			 //echo $errstr;
                header("Location: $dead");
                }
             else {
             	  header("Location: $live");
		  }
function server($addr){
         if(strstr($addr,"/")){$addr = substr($addr, 0, strpos($addr, "/"));}
         return $addr;
}
?>

und das TeamSpeak Status Script wo man noch die Daten im Script eingeben muss:

PHP:
<?php

function check_ts( $ip, $tcp, $udp, $timeout=1) {
  $fp = @fsockopen( $ip, $tcp, $errno, $errstr, $timeout);
  if (!$fp) {
    $stat = false;
  } else {
    if (fgets($fp) == "[TS]\r\n") {
      fputs($fp, "SEL $udp\r\n");
      if (fgets($fp) == "OK\r\n") {
        $stat = true;
    } else {
      $stat = false;
      }
    } else {
       $stat = false;
     }
     if (is_resource($fp))
     @fclose($fp);
     return $stat;
  }
}

if (check_ts("62.141.39.135", 25050, 2001)) {
  echo "<html><FONT COLOR=#00DD00><B>ONLINE</B></FONT></html>";
} else {
  echo "<html><FONT COLOR=#DD0000><B>OFFLINE</B></FONT></html>";
}
?>

Ich bedanke mich schonmal im vorraus für eure hilfe.
 
Code:
<?php
$link = $_GET['link'].":";
$s_link = str_replace("::", ":", $link);
list($addr,$port)= explode (':',"$s_link");
$sock = fsockopen($addr, $port, &$errno, &$errstr, 5); if(!is_resource($sock)) { echo "<font color=\"#FF0000\" size=\"1\">offline</font>"; } else { echo "<font color=\"#00BF00\" size=\"1\">online</font>"; }
?>

:) recht simple
 
Das klappt nicht du hast den TCP Port 25050 nicht bedacht. ^^

Siehe dieses Script
PHP:
<?php

function check_ts( $ip, $tcp, $udp, $timeout=1) {
  $fp = @fsockopen( $ip, $tcp, $errno, $errstr, $timeout);
  if (!$fp) {
    $stat = false;
  } else {
    if (fgets($fp) == "[TS]\r\n") {
      fputs($fp, "SEL $udp\r\n");
      if (fgets($fp) == "OK\r\n") {
        $stat = true;
    } else {
      $stat = false;
      }
    } else {
       $stat = false;
     }
     if (is_resource($fp))
     @fclose($fp);
     return $stat;
  }
}

if (check_ts("62.141.39.135", 25050, 2001)) {
  echo "<html><FONT COLOR=#00DD00><B>ONLINE</B></FONT></html>";
} else {
  echo "<html><FONT COLOR=#DD0000><B>OFFLINE</B></FONT></html>";
}
?>
 
Du könntest vielleicht auch erwähnen in wie weit du die beiden Scripte gerne zusammengefügt haben möchtest.

Das 2. Script macht ja genau das gleiche wie das 1. nur etwas mehr...

Bei beiden ist die ausgabe allerdings unterschiedlich, einmal wird auf die Bilder redirected und einmal wird HTML Code ausgegeben.

Was ist denn nun dein Problem mit den Funktionen?
 
Ja ich will das TeamSpeak Script:
PHP:
<?php

function check_ts( $ip, $tcp, $udp, $timeout=1) {
  $fp = @fsockopen( $ip, $tcp, $errno, $errstr, $timeout);
  if (!$fp) {
    $stat = false;
  } else {
    if (fgets($fp) == "[TS]\r\n") {
      fputs($fp, "SEL $udp\r\n");
      if (fgets($fp) == "OK\r\n") {
        $stat = true;
    } else {
      $stat = false;
      }
    } else {
       $stat = false;
     }
     if (is_resource($fp))
     @fclose($fp);
     return $stat;
  }
}

if (check_ts("62.141.39.135", 25050, 2001)) {
  echo "<html><FONT COLOR=#00DD00><B>ONLINE</B></FONT></html>";
} else {
  echo "<html><FONT COLOR=#DD0000><B>OFFLINE</B></FONT></html>";
}
?>



so haben das ich mit diesem befehl den Server Status raus bekomme:
Code:
http://www.server.de/status/ts-status.php?link=Server.ip:Port
 
Willst du nur die Server von ein Main-Server abfragen? Oder sollen Sub-Server von verschiedenen Main-Server abgefragt werden?

Wenn von mehreren Main-Server machen willst musst du noch den Query-Port übgeben. Wenn du den Status von den Sub-Server willst musst du auf UDP den Client Port ansprechen.
 
Zurück