Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Tools

Development::Tools 3rd Party Tools for EQEMu (DB management tools, front ends, etc...)

Reply
 
Thread Tools Display Modes
  #1  
Old 09-18-2008, 02:27 PM
spoon
Sarnak
 
Join Date: Aug 2007
Posts: 34
Default

Quote:
Originally Posted by cubber View Post
I have been trying to figure out how I go about using this "back end" script to display the server status on a web page but keep coming up blank. Do you mind shedding some insight on how this would be accomplished. I would guess that I would need to call this script within the webpage somehow to have it display the data.

I am still new to PHP. Like I said before I would only like to display server status, uptime, and a list of currently logged in characters with lvl/class info.

Thanks again.
You might try something like:
PHP Code:
$telnet = new telnet;
if(
$telnet->connect() ) {
    
// We are connected... yay!
    
echo "<h1>Server is <span style='background-color:green;'>UP</h1><p>" $telnet->uptime() . "</p>";
} else {
    
// OH NOS!
    
echo "<h1>Server is <span style='background-color:red;'>DOWN</h1><p>" $telnet->message[0] ."</p>";

Reply With Quote
  #2  
Old 09-18-2008, 02:58 PM
spoon
Sarnak
 
Join Date: Aug 2007
Posts: 34
Default

saw you wanted the players on as well:
PHP Code:
<?php
$telnet 
= new telnet;
if(
$telnet->connect() ) {
    
// We are connected... yay!
    
echo "<h1>Server is <span style='background-color:green;'>UP</span></h1>";
    echo 
"<p>" $telnet->uptime() . "</p>";
    echo 
"<table><tr><td>Name</td><td>Zone</td></tr>";
    
$players $telnet->whoall();
    foreach( 
array_keys($players) as $key) {
        echo 
"<tr><td>" $players[$key]['Name'] . "</td><td>" $players[$key]['ZoneLong'] . "</td><tr>";
    }
    echo 
"</table>";
} else {
    
// OH NOS!
    
echo "<h1>Server is <span style='background-color:red;'>DOWN</span></h1><p>" $telnet->message[0] ."</p>";
}  
?>
Reply With Quote
  #3  
Old 09-18-2008, 03:18 PM
cubber
Discordant
 
Join Date: Apr 2006
Posts: 374
Default

Spoon,

Thank you for that it looks perfect, but I am having issues integrating it. I tried to use the top part of the above script for the connection and authentication but it errored out at the beginning of your script. Here is what it looks like, I am sure I am doing something wrong.

PHP Code:
<?php
class telnet {

    
// Variables
    
var $message = array();
    var 
$connection;

    
// Connects to the World Telnet Server
    
function connect(){
        global 
$cfg;
        
        
// Open Socket Connection
        
$this->connection fsockopen('192.168.0.4'9000);

        if(!
$this->connection){
            
$this->message[] = "Error connecting to World Telnet Server";
            return 
false;
        }else{
            
fputs($this->connectionsprintf("%s\r"'username'));
            
usleep(125000);   
              
fputs($this->connectionsprintf("%s\r"'password'));
            
usleep(125000);
            return 
true;
        }
    }

$telnet = new telnet;
if(
$telnet->connect() ) {
    
// We are connected... yay!
    
echo "<h1>Server is <span style='background-color:green;'>UP</span></h1>";
    echo 
"<p>" $telnet->uptime() . "</p>";
    echo 
"<table><tr><td>Name</td><td>Zone</td></tr>";
    
$players $telnet->whoall();
    foreach( 
array_keys($players) as $key) {
        echo 
"<tr><td>" $players[$key]['Name'] . "</td><td>" $players[$key]['ZoneLong'] . "</td><tr>";
    }
    echo 
"</table>";
} else {
    
// OH NOS!
    
echo "<h1>Server is <span style='background-color:red;'>DOWN</span></h1><p>" $telnet->message[0] ."</p>";
}  
?>

And the error i get if I run php eqstatus.php from a command line on the server.

Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /var/www/localhost/htdocs/game-servers/eq/status/eqstatus.php on line 27
Reply With Quote
  #4  
Old 09-18-2008, 03:30 PM
spoon
Sarnak
 
Join Date: Aug 2007
Posts: 34
Default

You have a couple syntax errors. You didn't close out the class and were missing a required function in that class. Here is a more complete file. Don't forget to change the USER_NAME and PASSWORD.

PHP Code:
<?php

class telnet {

    
// Variables
    
var $message = array();
    var 
$connection;

    
// Connects to the World Telnet Server
    
function connect(){
        
        
// Open Socket Connection
        
$this->connection fsockopen('127.0.0.1'9000);

        if(!
$this->connection){
            
$this->message[] = "Error connecting to World Telnet Server";
            return 
false;
        }else{
            
fputs($this->connectionsprintf("%s\r"'USER_NAME'));
            
usleep(125000);   
              
fputs($this->connectionsprintf("%s\r"'PASSWORD'));
            
usleep(125000);
            return 
true;
        }
    }
    
    
    
// Close the Telnet Connection
    
function close(){
        
fclose($this->connection);
    }
    
    
    
// Server Uptime
    
function uptime(){
        
fputs ($this->connection"uptime\r"); 
        
usleep(125000);
            
        while (!
feof($this->connection)){
            
$ret fgets($this->connection);
            if (
ereg("Uptime"$ret)) {
                
$ret str_replace("$user"""$ret);
                return 
str_replace(">"""$ret);
                break;
            }
        }
    }
    
    
    
// Zone Status
    
function zonestatus($zone=''){
        
fputs ($this->connectionsprintf("zonestatus %s\r"$zone)); 
        
usleep(125000);
        
        while(!
feof($this->connection)){
            
$ret fgets($this->connection);
            
            if (
ereg("$Server:"$ret)){
                echo 
"$ret \n <br>";
            }
            
            if(
ereg("avail"$ret)){
                echo 
"$ret \n <br>";
                break;
            }                
        }
    }
    
    
// Kick Character from World Server
    
function kick($character$message='YOU ARE BEING KICKED FROM THE SERVER IN 4 SECONDS'){
        
fputs($this->connectionsprintf("tell %s %s\r"$character$message));
        
sleep(4); 
        
fputs($this->connectionsprintf("kick %s\r"$character));
        
$this->message[] = "Character has been kicked from server";
        
sleep(1);
    }
    
    
    
// Send Character a Tell
    
function tell($character$message){
        
fputs($this->connectionsprintf("tell %s %s\r"$character$message));
        
sleep(1);
        
$this->message[] = sprintf("Message Sent to Character: %s"$character);
    }
    
    
    
// Send Server a OOC Message
    
function ooc($message){
        
fputs($this->connectionsprintf("ooc %s\r"$message));
        
sleep(1);
        
$this->message[] = "Message sent to OOC";
    }
    
    
    
// Broadcast Message Server Wide
    
function broadcast($message){
        
fputs($this->connectionsprintf("broadcast %s\r"$message));
        
sleep(1);
        
$this->message[] = "Broadcast Message Sent to World Server";
    }
    
    
    
// Who/Who All
    
function whoall($who=''){
    
        
fputs ($this->connectionsprintf("who%s\r"$who)); 
        
usleep(125000);

        while (!
feof($this->connection)) {
            
$ret_tmp fgets($this->connection);

            if(
ereg("zone"$ret_tmp)){ 
                
$ret[++$x] = $ret_tmp;
            }
            
            if(
ereg("online"$ret_tmp)){
                break;
            }
        }

        
// Process each line of the returned results
        
foreach ($ret as $key => $value) {
        
            
// Original Return
            
$players[$key]['original'] = $value;

            
// GM Status
            
if (preg_match("/\*.*\*/"$value$matches)) {
                
$players[$key]['GM'] = trim($matches[0], "* ");
            }
        
            
// Role/Anon, Level & Class
            
if (preg_match("/\[.*\]/"$value$matches)) {
                
$tmp explode(" "trim($matches[0], "[] "));
                if (!
is_numeric($tmp[0])) {
                    
$players[$key]['Visible'] = $tmp[0];
                    
$players[$key]['Level'] = $tmp[1];
                    
$players[$key]['Class'] = rtrim($tmp[2] . " " $tmp[3], " ");
                } else {
                    
$players[$key]['Level'] = $tmp[0];
                    
$players[$key]['Class'] = rtrim($tmp[1] . " " $tmp[2], " ");
                }
            }
        
            
// Character's Name
            
if(preg_match("/\].*\(/"$value$matches)){
                
$players[$key]['Name'] = trim($matches[0], "] (");
            }
        
            
// Race
            
if(preg_match("/\(.*\)/"$value$matches)){
                
$players[$key]['Race'] = trim($matches[0], "( )");
            }
        
            
// Zone
            
if(preg_match("/zone:.*AccID:/"$value$matches)){
                
$players[$key]['ZoneLong'] = substr($matches[0], 6, -7);
            }
        
            
// Account ID
            
if(preg_match("/AccID:.*AccName:/"$value$matches)){
                
$players[$key]['AcctID'] = substr($matches[0], 7, -9);
            }
        
            
// Account Name
            
if(preg_match("/AccName:.*LSID:/"$value$matches)){
                
$players[$key]['AcctName'] = substr($matches[0], 9, -6);
            }
        
            
// Login Server ID
            
if(preg_match("/LSID:.*Status:/"$value$matches)){
                
$players[$key]['LSID'] = substr($matches[0], 6, -8);
            }
        
            
// Status
            
if(preg_match("/Status:.*/"$value$matches)){
                
$players[$key]['Status'] = substr($matches[0], 83);
            }
        }
        
        
// Return Player Array
        
return $players;
    }



$telnet = new telnet;
if(
$telnet->connect() ) {
    
// We are connected... yay!
    
echo "<h1>Server is <span style='background-color:green;'>UP</span></h1>";
    echo 
"<p>" $telnet->uptime() . "</p>";
    echo 
"<table><tr><td>Name</td><td>Zone</td></tr>";
    
$players $telnet->whoall();
    foreach( 
array_keys($players) as $key) {
        echo 
"<tr><td>" $players[$key]['Name'] . "</td><td>" $players[$key]['ZoneLong'] . "</td><tr>";
    }
    echo 
"</table>";
} else {
    
// OH NOS!
    
echo "<h1>Server is <span style='background-color:red;'>DOWN</span></h1><p>" $telnet->message[0] ."</p>";

?>
Reply With Quote
  #5  
Old 09-18-2008, 03:38 PM
cubber
Discordant
 
Join Date: Apr 2006
Posts: 374
Default

oooo closer... but still some errors. I used exactly what you posted but changed the IP address and the username / password. Here is what I get when I browse to the page.

Code:
Server is UP

USER_NAME uptime Worldserver Uptime: 01d 06h 00m 47s

Warning: Invalid argument supplied for foreach() in /var/www/localhost/htdocs/game-servers/eq/status/eqstatus.php on line 122

Warning: array_keys() [function.array-keys]: The first argument should be an array in /var/www/localhost/htdocs/game-servers/eq/status/eqstatus.php on line 194

Warning: Invalid argument supplied for foreach() in /var/www/localhost/htdocs/game-servers/eq/status/eqstatus.php on line 194
Name	Zone
It actually displays the username on the page. Where I put USER_NAME. It is however displaying the UP and uptime correctly.

Note: I can't log in a character for a few hours till I get home. So can't test that yet.
Reply With Quote
  #6  
Old 09-18-2008, 03:52 PM
spoon
Sarnak
 
Join Date: Aug 2007
Posts: 34
Default

Are there any players on your server right now?

give me a sec and I'll add a case for if there is nobody one and it wont list those warnings
Reply With Quote
  #7  
Old 09-18-2008, 03:53 PM
cubber
Discordant
 
Join Date: Apr 2006
Posts: 374
Default

no players at the moment.
Reply With Quote
  #8  
Old 09-18-2008, 04:01 PM
spoon
Sarnak
 
Join Date: Aug 2007
Posts: 34
Default

updated:

added check on line 121-3
added check on line 189
added class and level to player table

PHP Code:
<?php

class telnet {

    
// Variables
    
var $message = array();
    var 
$connection;

    
// Connects to the World Telnet Server
    
function connect(){
        
        
// Open Socket Connection
        
$this->connection fsockopen('127.0.0.1'9000);

        if(!
$this->connection){
            
$this->message[] = "Error connecting to World Telnet Server";
            return 
false;
        }else{
            
fputs($this->connectionsprintf("%s\r"'USER_NAME'));
            
usleep(125000);   
              
fputs($this->connectionsprintf("%s\r"'PASSWORD'));
            
usleep(125000);
            return 
true;
        }
    }
    
    
    
// Close the Telnet Connection
    
function close(){
        
fclose($this->connection);
    }
    
    
    
// Server Uptime
    
function uptime(){
        
fputs ($this->connection"uptime\r"); 
        
usleep(125000);
            
        while (!
feof($this->connection)){
            
$ret fgets($this->connection);
            if (
ereg("Uptime"$ret)) {
                
$ret str_replace("$user"""$ret);
                return 
str_replace(">"""$ret);
                break;
            }
        }
    }
    
    
    
// Zone Status
    
function zonestatus($zone=''){
        
fputs ($this->connectionsprintf("zonestatus %s\r"$zone)); 
        
usleep(125000);
        
        while(!
feof($this->connection)){
            
$ret fgets($this->connection);
            
            if (
ereg("$Server:"$ret)){
                echo 
"$ret \n <br>";
            }
            
            if(
ereg("avail"$ret)){
                echo 
"$ret \n <br>";
                break;
            }                
        }
    }
    
    
// Kick Character from World Server
    
function kick($character$message='YOU ARE BEING KICKED FROM THE SERVER IN 4 SECONDS'){
        
fputs($this->connectionsprintf("tell %s %s\r"$character$message));
        
sleep(4); 
        
fputs($this->connectionsprintf("kick %s\r"$character));
        
$this->message[] = "Character has been kicked from server";
        
sleep(1);
    }
    
    
    
// Send Character a Tell
    
function tell($character$message){
        
fputs($this->connectionsprintf("tell %s %s\r"$character$message));
        
sleep(1);
        
$this->message[] = sprintf("Message Sent to Character: %s"$character);
    }
    
    
    
// Send Server a OOC Message
    
function ooc($message){
        
fputs($this->connectionsprintf("ooc %s\r"$message));
        
sleep(1);
        
$this->message[] = "Message sent to OOC";
    }
    
    
    
// Broadcast Message Server Wide
    
function broadcast($message){
        
fputs($this->connectionsprintf("broadcast %s\r"$message));
        
sleep(1);
        
$this->message[] = "Broadcast Message Sent to World Server";
    }
    
    
    
// Who/Who All
    
function whoall($who=''){
    
        
fputs ($this->connectionsprintf("who%s\r"$who)); 
        
usleep(125000);

        while (!
feof($this->connection)) {
            
$ret_tmp fgets($this->connection);

            if(
ereg("zone"$ret_tmp)){ 
                
$ret[++$x] = $ret_tmp;
            }
            
            if(
ereg("online"$ret_tmp)){
                break;
            }
        }
        
        if( !
is_array($ret) ) {
            return;
        }

        
// Process each line of the returned results
        
foreach ($ret as $key => $value) {
        
            
// Original Return
            
$players[$key]['original'] = $value;

            
// GM Status
            
if (preg_match("/\*.*\*/"$value$matches)) {
                
$players[$key]['GM'] = trim($matches[0], "* ");
            }
        
            
// Role/Anon, Level & Class
            
if (preg_match("/\[.*\]/"$value$matches)) {
                
$tmp explode(" "trim($matches[0], "[] "));
                if (!
is_numeric($tmp[0])) {
                    
$players[$key]['Visible'] = $tmp[0];
                    
$players[$key]['Level'] = $tmp[1];
                    
$players[$key]['Class'] = rtrim($tmp[2] . " " $tmp[3], " ");
                } else {
                    
$players[$key]['Level'] = $tmp[0];
                    
$players[$key]['Class'] = rtrim($tmp[1] . " " $tmp[2], " ");
                }
            }
        
            
// Character's Name
            
if(preg_match("/\].*\(/"$value$matches)){
                
$players[$key]['Name'] = trim($matches[0], "] (");
            }
        
            
// Race
            
if(preg_match("/\(.*\)/"$value$matches)){
                
$players[$key]['Race'] = trim($matches[0], "( )");
            }
        
            
// Zone
            
if(preg_match("/zone:.*AccID:/"$value$matches)){
                
$players[$key]['ZoneLong'] = substr($matches[0], 6, -7);
            }
        
            
// Account ID
            
if(preg_match("/AccID:.*AccName:/"$value$matches)){
                
$players[$key]['AcctID'] = substr($matches[0], 7, -9);
            }
        
            
// Account Name
            
if(preg_match("/AccName:.*LSID:/"$value$matches)){
                
$players[$key]['AcctName'] = substr($matches[0], 9, -6);
            }
        
            
// Login Server ID
            
if(preg_match("/LSID:.*Status:/"$value$matches)){
                
$players[$key]['LSID'] = substr($matches[0], 6, -8);
            }
        
            
// Status
            
if(preg_match("/Status:.*/"$value$matches)){
                
$players[$key]['Status'] = substr($matches[0], 83);
            }
        }
        
        
// Return Player Array
        
return $players;
    }

}
Class

$telnet = new telnet;
if(
$telnet->connect() ) {
    
// We are connected... yay!
    
echo "<h1>Server is <span style='background-color:green;'>UP</span></h1>";
    echo 
"<p>" $telnet->uptime() . "</p>";
    
$players $telnet->whoall();
    if( 
is_array($players) ) {
        echo 
"<table><tr><td>Name</td><td>Class</td><td>Level</td><td>Zone</td></tr>";
        foreach( 
array_keys($players) as $key) {
            echo 
"<tr><td>" $players[$key]['Name'] . "</td>";
            echo 
"<td>" $players[$key]['Class']. "</td>";
            echo 
"<td>" $players[$key]['Level']. "</td>";
            echo 
"<td>" $players[$key]['ZoneLong']. "</td><tr>";
        }
        echo 
"</table>";
    } else {
        echo 
"<p>Nobody is on</p>";
    }
    
} else {
    
// OH NOS!
    
echo "<h1>Server is <span style='background-color:red;'>DOWN</span></h1><p>" $telnet->message[0] ."</p>";

?>
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 11:45 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3