254 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			254 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
	pageHeader(
 | 
						|
		array('Teamspeak viewer'),
 | 
						|
		array('Teamspeak viewer' => '')
 | 
						|
	);
 | 
						|
  include (PAGE_PATH.'/voicecomm_serverlist.php');
 | 
						|
  include (PAGE_PATH.'/teamspeak_query.php');
 | 
						|
 | 
						|
  $tsId = valid_request($_GET['tsId'],1);
 | 
						|
 | 
						|
 | 
						|
function show($tpl, $array)
 | 
						|
{
 | 
						|
    $template = PAGE_PATH."/templates/teamspeak/$tpl";
 | 
						|
  
 | 
						|
    if($fp = @fopen($template.".".html, "r"))
 | 
						|
      $tpl = @fread($fp, filesize($template.".".html));
 | 
						|
    
 | 
						|
    foreach($array as $value => $code)
 | 
						|
    {
 | 
						|
      $tpl = str_replace("[".$value."]", $code, $tpl);
 | 
						|
    }
 | 
						|
  return $tpl;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
  if(function_exists(fopen))
 | 
						|
  {
 | 
						|
    $db->query("SELECT addr, queryPort, UDPPort FROM hlstats_Servers_VoiceComm WHERE serverId=$tsId");
 | 
						|
    $s = $db->fetch_array();
 | 
						|
 | 
						|
    $uip 	= $s['addr'];
 | 
						|
    $tPort 	= $s['queryPort'];
 | 
						|
    $port 	= $s['UDPPort'];
 | 
						|
 | 
						|
  	$fp = fsockopen($uip, $tPort, $errno, $errstr, 2);
 | 
						|
 | 
						|
	  if(!$fp)
 | 
						|
    {
 | 
						|
      $index = error("No teamspeak", 1);
 | 
						|
    } else {
 | 
						|
	    $out = "";
 | 
						|
	    $fp = fsockopen($uip, $tPort, $errno, $errstr, 2);
 | 
						|
	    if($fp)
 | 
						|
      {
 | 
						|
		    fputs($fp, "sel $port\n");
 | 
						|
		    fputs($fp, "si\n");
 | 
						|
		    fputs($fp, "quit\n");
 | 
						|
		    while(!feof($fp))
 | 
						|
        {
 | 
						|
			    $out .= fgets($fp, 1024);
 | 
						|
		    }
 | 
						|
		    $out = str_replace('[TS]', '', $out);
 | 
						|
		    $out = str_replace('OK', '', $out);
 | 
						|
		    $out = trim($out);
 | 
						|
 | 
						|
  		$name=substr($out,indexOf($out,'server_name='),strlen($out));
 | 
						|
	  	$name=substr($name,0,indexOf($name,'server_platform=')-strlen('server_platform='));
 | 
						|
		  $os=substr($out,indexOf($out,'server_platform='),strlen($out));
 | 
						|
		  $os=substr($os,0,indexOf($os,'server_welcomemessage=')-strlen('server_welcomemessage='));
 | 
						|
		  $uptime=substr($out,indexOf($out,'server_uptime='),strlen($out));
 | 
						|
		  $uptime=substr($uptime,0,indexOf($uptime,'server_currrentusers=')-strlen('server_currrentusers='));
 | 
						|
		  $cAmount=substr($out,indexOf($out,'server_currentchannels='),strlen($out));
 | 
						|
		  $cAmount=substr($cAmount,0,indexOf($cAmount,'server_bwinlastsec=')-strlen('server_bwinlastsec='));
 | 
						|
		  $user=substr($out,indexOf($out,'server_currentusers='),strlen($out));
 | 
						|
		  $user=substr($user,0,indexOf($user,'server_currentchannels=')-strlen('server_currentchannels='));
 | 
						|
		  $max=substr($out,indexOf($out,'server_maxusers='),strlen($out));
 | 
						|
		  $max=substr($max,0,indexOf($max,'server_allow_codec_celp51=')-strlen('server_allow_codec_celp51='));
 | 
						|
      fclose($fp);
 | 
						|
  	}
 | 
						|
 | 
						|
  	$uArray = array();
 | 
						|
	  $innerArray = array();
 | 
						|
	  $out = "";
 | 
						|
	  $j = 0;
 | 
						|
	  $k = 0;
 | 
						|
 | 
						|
  	$fp = fsockopen($uip, $tPort, $errno, $errstr, 30);
 | 
						|
	  if($fp)
 | 
						|
    {
 | 
						|
		  fputs($fp, "pl ".$port."\n");
 | 
						|
		  fputs($fp, "quit\n");
 | 
						|
		  while(!feof($fp))
 | 
						|
      {
 | 
						|
			  $out .= fgets($fp, 1024);
 | 
						|
		  }
 | 
						|
		  $out = str_replace('[TS]', '', $out);
 | 
						|
		  $out = str_replace('loginname', "loginname\t", $out);
 | 
						|
		  $data	= explode("\t", $out);
 | 
						|
 | 
						|
		  for($i=0;$i<count($data);$i++)
 | 
						|
      {
 | 
						|
			  $innerArray[$j] = $data[$i];
 | 
						|
			  if($j>=15)
 | 
						|
			  {
 | 
						|
				  $uArray[$k]=$innerArray;
 | 
						|
				  $j = 0;
 | 
						|
				  $k = $k+1;
 | 
						|
			  } else {
 | 
						|
				  $j++;
 | 
						|
			  }
 | 
						|
		  }
 | 
						|
		  fclose($fp);
 | 
						|
	  }
 | 
						|
	  $debug = false;
 | 
						|
 | 
						|
    for($i=1;$i<count($uArray);$i++)
 | 
						|
    {
 | 
						|
	    $innerArray=$uArray[$i];
 | 
						|
      $p = setUserStatus($innerArray[12])." <span style=\"font-weight:bold;\">".removeChar($innerArray[14])."</span>
 | 
						|
            (".setPPriv($innerArray[11])."".setCPriv($innerArray[10]).")";
 | 
						|
           
 | 
						|
      $class = ($color % 2) ? "bg2" : "bg1"; $color++;
 | 
						|
      $userstats .= show("/userstats", array("player" => $p,
 | 
						|
                                                  "channel" => getChannelName($innerArray[1],$uip,$port,$tPort),
 | 
						|
                                                  "misc1" => $innerArray[6],
 | 
						|
                                                  "class" => $class,
 | 
						|
                                                  "misc2" => $innerArray[7],
 | 
						|
                                                  "misc3" => time_convert($innerArray[8]),
 | 
						|
                                                  "misc4" => time_convert($innerArray[9])));
 | 
						|
 | 
						|
	  }
 | 
						|
 | 
						|
  	$uArr = getTSChannelUsers($uip,$port,$tPort);
 | 
						|
	  $pcArr = Array();
 | 
						|
	  $ccArr = Array();
 | 
						|
	  $thisArr = Array();
 | 
						|
	  $listArr = Array();
 | 
						|
	  $usedArr = Array();
 | 
						|
	  $cArr	= getChannels($uip,$port,$tPort);
 | 
						|
	  $z = 0;
 | 
						|
	  $x = 0;
 | 
						|
 | 
						|
  	for($i=0;$i<count($cArr);$i++)
 | 
						|
	  {
 | 
						|
		  $innerArr=$cArr[$i];
 | 
						|
		  $listArr[$i]=$innerArr[3];
 | 
						|
	  }
 | 
						|
	  sort($listArr);
 | 
						|
	  for($i=0;$i<count($listArr);$i++)
 | 
						|
	  {
 | 
						|
		  for($j=0;$j<count($cArr);$j++)
 | 
						|
		  {
 | 
						|
			  $innArr=$cArr[$j];
 | 
						|
 | 
						|
			  if($innArr[3]==$listArr[$i] && usedID($usedArr,$innArr[0]))
 | 
						|
			  {
 | 
						|
				  if($innArr[2]==-1)
 | 
						|
				  {
 | 
						|
					  $thisArr[0] = $innArr[0];
 | 
						|
					  $thisArr[1] = $innArr[5];
 | 
						|
					  $thisArr[2] = $innArr[2];
 | 
						|
					  $pcArr[$z] = $thisArr;
 | 
						|
					  $usedArr[count($usedArr)] = $innArr[0];
 | 
						|
					  $z++;
 | 
						|
				  } else {
 | 
						|
					  $thisArr[0] = $innArr[0];
 | 
						|
					  $thisArr[1] = $innArr[5];
 | 
						|
					  $thisArr[2] = $innArr[2];
 | 
						|
					  $ccArr[$x] = $thisArr;
 | 
						|
					  $usedArr[count($usedArr)] = $innArr[0];
 | 
						|
					  $x++;
 | 
						|
				  }
 | 
						|
			  }
 | 
						|
		  }
 | 
						|
	  }
 | 
						|
 | 
						|
	  for($i=0;$i<count($pcArr);$i++)
 | 
						|
    {
 | 
						|
	    $innerArr=$pcArr[$i];
 | 
						|
 | 
						|
      $subchan = "";
 | 
						|
	    for($j=0;$j<count($ccArr);$j++)
 | 
						|
      {
 | 
						|
	      $innerCCArray=$ccArr[$j];
 | 
						|
	      if($innerArr[0]==$innerCCArray[2])
 | 
						|
        {
 | 
						|
   	      for($p=1;$p<count($uArr);$p++)
 | 
						|
          {
 | 
						|
            $subusers = "";
 | 
						|
            for($p=1;$p<count($uArr);$p++)
 | 
						|
            {
 | 
						|
			        $innerUArray=$uArr[$p];
 | 
						|
			        if($innerCCArray[0]==$innerUArray[1])
 | 
						|
			        {
 | 
						|
                $subusers .= "    <img src=\"".IMAGE_PATH."/teamspeak/trenner.gif\" alt=\"\" class=\"tsicon\" />".setUserStatus($innerUArray[12])." <span style=\"font-weight:bold;\">".removeChar($innerUArray[14])."</span> (".setPPriv($innerUArray[11])."".setCPriv($innerUArray[10]).")<br />";
 | 
						|
	            }
 | 
						|
		        }
 | 
						|
		      }
 | 
						|
          $subchannels = "<img src=\"".IMAGE_PATH."/teamspeak/trenner.gif\" alt=\"\" class=\"tsicon\" /><img src=\"".IMAGE_PATH."/teamspeak/channel.gif\" alt=\"\" class=\"tsicon\" /><a style=\"font-weight:normal\" href=\"hlstats.php?mode=teamspeak&game=$game&tsId=$tsId&cID=".$innerCCArray[0]."&type=1\"> ".removeChar($innerCCArray[1])." </a><br /> ".$subusers."";
 | 
						|
          $subchan .= show("subchannels", array("subchannels" => $subchannels));
 | 
						|
	      }
 | 
						|
      }
 | 
						|
      $users = "";
 | 
						|
      for($k=1;$k<count($uArr);$k++)
 | 
						|
      {
 | 
						|
		    $innerUArray=$uArr[$k];
 | 
						|
		    if($innerArr[0]==$innerUArray[1])
 | 
						|
        {
 | 
						|
          $users .= "<img src=\"".IMAGE_PATH."/teamspeak/trenner.gif\" alt=\"\" class=\"tsicon\" />".setUserStatus($innerUArray[12])."<span style=\"font-weight:bold;\">".removeChar($innerUArray[14])."</span> (".setPPriv($innerUArray[11])."".setCPriv($innerUArray[10]).")<br />";
 | 
						|
		    }
 | 
						|
	    }
 | 
						|
 | 
						|
      $channels = "<img src=\"".IMAGE_PATH."/teamspeak/channel.gif\" alt=\"\" class=\"tsicon\" /> <a style=\"font-weight:bold\" href=\"hlstats.php?mode=teamspeak&game=$game&tsId=$tsId&cID=".trim($innerArr[0])."&type=1\">".removeChar($innerArr[1])." </a><br /> ".$users."";
 | 
						|
 | 
						|
      $chan .= show("channel", array("channel" => $channels,
 | 
						|
                                           "subchannels" => $subchan));
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    if(isset($_GET['cID']))
 | 
						|
    {
 | 
						|
	    $cID 	= $_GET['cID'];
 | 
						|
	    $type	= $_GET['type'];
 | 
						|
    } else {
 | 
						|
	    $cID 	= 0;
 | 
						|
	    $type	= 0;
 | 
						|
    }
 | 
						|
 | 
						|
    if($type==0)     $info = defaultInfo($uip,$tPort,$port);
 | 
						|
    elseif($type==1) $info = channelInfo($uip,$tPort,$port,$cID);
 | 
						|
 | 
						|
    $outp_str = show("teamspeak", array("name" => $name,
 | 
						|
                                           "os" => $os,
 | 
						|
                                           "uptime" => time_convert($uptime),
 | 
						|
                                           "user" => $user,
 | 
						|
                                           "t_name" => "Server name",
 | 
						|
                                           "t_os" => "Operating system",
 | 
						|
                                           "uchannels" => $chan,
 | 
						|
                                           "info" => $info,
 | 
						|
                                           "t_uptime" => "Uptime",
 | 
						|
                                           "t_channels" => "Channels",
 | 
						|
                                           "t_user" => "Users",
 | 
						|
                                           "head" => "Teamspeak Overview",
 | 
						|
                                           "users_head" => "User Information",
 | 
						|
                                           "player" => "User",
 | 
						|
                                           "channel" => "Channel",
 | 
						|
                                           "channel_head" => "Channel Information",
 | 
						|
                                           "max" => $max,
 | 
						|
                                           "channels" => $cAmount,
 | 
						|
                                           "logintime" => "Login time",
 | 
						|
                                           "idletime" => "Idle time",
 | 
						|
                                           "channelstats" => $channelstats,
 | 
						|
                                           "userstats" => $userstats));
 | 
						|
					   
 | 
						|
    echo $outp_str;				   
 | 
						|
					   
 | 
						|
    }
 | 
						|
  } else {
 | 
						|
    echo "Error, function fopen not found";
 | 
						|
  }
 | 
						|
 | 
						|
?>
 |