219 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			219 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| 	pageHeader(
 | |
| 		array('Ventrilo viewer'),
 | |
| 		array('Ventrilo viewer'=>'')
 | |
| 	);
 | |
| 
 | |
| 	require_once(PAGE_PATH . '/ventrilostatus.php');
 | |
| 	include (PAGE_PATH . '/voicecomm_serverlist.php');
 | |
| 
 | |
| 	$veId = valid_request($_GET['veId'],1);
 | |
| 
 | |
| function time_convert($time)
 | |
| { 
 | |
| 	$hours = floor($time/3600);
 | |
| 	$minutes = floor(($time%3600)/60);
 | |
| 	$seconds = floor(($time%3600)%60);
 | |
| 	
 | |
| 	if($hours>0) $time = $hours."h ".$minutes."m ".$seconds."s";
 | |
| 	else if($minutes>0) $time = $minutes."m ".$seconds."s";
 | |
| 	else $time = $seconds."s";
 | |
| 	 
 | |
|   	return $time;
 | |
| }
 | |
|   
 | |
| function VentriloDisplayEX1( &$stat, $name, $cid, $bgidx )
 | |
| {
 | |
| 	$chan = $stat->ChannelFind( $cid );
 | |
| 
 | |
| 
 | |
| 	$bg = "#000000";
 | |
| 
 | |
|     $fg = "#FE7200";
 | |
| 	if ( $chan->m_prot == "0" )
 | |
| 	{
 | |
|   		if ( $bgidx %2 ){
 | |
| 			$img = "pub_min";
 | |
| 		}
 | |
| 		else
 | |
| 		{
 | |
| 			$img = "pub_exp";
 | |
| 		}
 | |
| 	}
 | |
| 	else if ( $chan->m_prot == "1" )
 | |
| 	{
 | |
|   		if ( $bgidx %2 ){
 | |
| 			$img = "pass_min";
 | |
| 		}
 | |
| 		else
 | |
| 		{
 | |
| 			$img = "pass_exp";
 | |
| 		}
 | |
| 	}
 | |
| 	else if ( $chan->m_prot == "2" )
 | |
| 	{
 | |
|   		if ( $bgidx %2 ){
 | |
| 			$img = "auth_min";
 | |
| 		}
 | |
| 		else
 | |
| 		{
 | |
| 			$img = "auth_exp";
 | |
| 		}
 | |
| 	}
 | |
|   
 | |
| 	$disp_out .= "  <tr>\n";
 | |
| 	if($name != 'nil232143241432432131')
 | |
| 	{
 | |
| 		$disp_out .= "  <td style=\"padding-left:20px;border:0;\"><img src=\"".IMAGE_PATH."/ventrilo/".$img.".gif\" alt=\"\" class=\"tsicon\"/> <span style=\"color:$fg;font-weight:bold;\">";
 | |
| 		$disp_out .= $name;
 | |
| 		$disp_out .= "</span>\n";
 | |
| 	}
 | |
| 	else
 | |
| 	{
 | |
| 		$disp_out .= '<td style="padding-left:20px;">';
 | |
| 	}
 | |
| 	$clientcount = count( $stat->m_clientlist );
 | |
| 	$chancount = count($stat->m_channellist);
 | |
|   
 | |
| 	// Display Client for this channel.
 | |
| 	$found = 1;
 | |
| 	for ( $i = 0; $i < $clientcount; $i++ )
 | |
| 	{
 | |
| 		$client = $stat->m_clientlist[ $i ];
 | |
| 		
 | |
| 		if ( $client->m_cid != $cid )
 | |
| 			continue;
 | |
| 		if ($found == 1)
 | |
| 			$disp_out .= "      <table>\n";
 | |
| 		$found++;
 | |
| 		$disp_out .= "      <tr>\n";
 | |
| 		$disp_out .= "        <td style=\"border:0;\"><img src=\"".IMAGE_PATH."/ventrilo/user.gif\" alt=\"\" class=\"tsicon\"/> ";
 | |
| 
 | |
| 		$flags = "";
 | |
| 	
 | |
| 		if ( $client->m_admin )
 | |
| 			$flags .= "A";
 | |
| 		
 | |
| 		if ( $client->m_phan )
 | |
| 			$flags .= "P";
 | |
| 		
 | |
| 		if ( strlen( $flags ) )
 | |
| 			$disp_out .= "\"$flags\" ";
 | |
| 		
 | |
| 		$disp_out .= $client->m_name;
 | |
| 		if ( $client->m_comm )
 | |
| 			$disp_out .= " ($client->m_comm)";
 | |
| 		
 | |
| 		$disp_out .= "  </td>\n";
 | |
| 		$disp_out .= "      </tr>\n";
 | |
| 	}
 | |
| 	// Display sub-channels for this channel.
 | |
| 	for ( $i = 0; $i < $chancount; $i++ )
 | |
| 	{
 | |
| 		if ( $stat->m_channellist[ $i ]->m_pid == $cid )
 | |
| 		{
 | |
| 			$cn = $stat->m_channellist[ $i ]->m_name;
 | |
| 			if ( strlen( $stat->m_channellist[ $i ]->m_comm ) )
 | |
| 			{
 | |
| 				$cn .= " (";
 | |
| 				$cn .= $stat->m_channellist[ $i ]->m_comm;
 | |
| 				$cn .= ")";
 | |
| 			}
 | |
| 			$disp_out .= VentriloDisplayEX1( $stat, $cn, $stat->m_channellist[ $i ]->m_cid, $bgidx + 1 );		
 | |
| 		}
 | |
| 	}
 | |
| 	if ($found > 1)
 | |
| 		$disp_out .= "      </table>\n";
 | |
| 	
 | |
| 	$disp_out .= "    </td>\n";
 | |
| 	$disp_out .= "  </tr>\n";
 | |
|   
 | |
| 	return $disp_out;
 | |
| }
 | |
| 
 | |
|   
 | |
| function show($tpl, $array)
 | |
| {
 | |
|     $template = PAGE_PATH."/templates/ventrilo/".$tpl;
 | |
|   
 | |
|     if($fp = @fopen($template.".".html, "r"))
 | |
| 	{
 | |
| 		$tpl = @fread($fp, filesize($template.".".html));
 | |
| 	}
 | |
| 	else
 | |
| 	{
 | |
| 		die('no template');
 | |
| 	}
 | |
|     
 | |
|     foreach($array as $value => $code)
 | |
|     {
 | |
| 		$tpl = str_replace("[".$value."]", $code, $tpl);
 | |
|     }
 | |
| 	return $tpl;
 | |
| }
 | |
| 
 | |
| 
 | |
|     $db->query("SELECT addr, queryPort, password FROM hlstats_Servers_VoiceComm WHERE serverId=$veId");
 | |
|     $s = $db->fetch_array();
 | |
| 
 | |
|     $uip 	= $s['addr'];
 | |
|     $port 	= $s['queryPort'];
 | |
| 	$password = $s['password'];
 | |
| 	if (strlen($password < 1)){
 | |
| 		$password = '';
 | |
| 	}
 | |
| 
 | |
| 	$stat = new CVentriloStatus;
 | |
| 	$stat->m_cmdcode	= 2;					// Detail mode.
 | |
| 	$stat->m_cmdhost	= $uip;					// Assume ventrilo server on same machine.
 | |
| 	$stat->m_cmdport	= $port;				// Port to be statused.
 | |
| 	$stat->m_cmdpass	= $password;			// Status password if necessary.
 | |
| 
 | |
| 	$rc = $stat->Request();
 | |
| 	
 | |
| 	if ( $rc )
 | |
| 	{
 | |
| 		error("No Ventrilo", 1);
 | |
| 		echo "CVentriloStatus->Request() failed. <strong>$stat->m_error</strong><br><br>\n";
 | |
| 	}
 | |
| 	else
 | |
| 	{
 | |
| 		$name = $stat->m_name;
 | |
| 		$os = $stat->m_platform;
 | |
| 		$uptime = $stat->m_uptime;
 | |
| 		$cAmount = $stat->m_channelcount;
 | |
| 		$user = $stat->m_clientcount;
 | |
| 		$max = $stat->m_maxclients;
 | |
| 		$channels = VentriloDisplayEX1( $stat, 'nil232143241432432131', 0, 0 );
 | |
| 		$chan .= show("channel", array("channel" => $channels , "subchannels" => $subchan ));
 | |
|     }
 | |
| 
 | |
|     $outp_str = show("ventrilo", 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" => "Ventrilo 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;
 | |
| 
 | |
| ?>
 |