This is a partial code from my new EQ Editor release fixing to come out. This is built in a class, have fun. Feel free to ask questions.
Also some of the telnet code I copied from someone else, I have changed most of it but the majority is still intact.
PHP Code:
class telnet {
// Variables
var $message = array();
var $connection;
// Connects to the World Telnet Server
function connect(){
global $cfg;
// Open Socket Connection
$this->connection = fsockopen($cfg['telnet']['address'], $cfg['telnet']['port']);
if(!$this->connection){
$this->message[] = "Error connecting to World Telnet Server";
return false;
}else{
fputs($this->connection, sprintf("%s\r", unserialize($_SESSION['EQ_EDT_USR'])));
usleep(125000);
fputs($this->connection, sprintf("%s\r", unserialize($_SESSION['EQ_EDT_PWD'])));
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->connection, sprintf("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->connection, sprintf("tell %s %s\r", $character, $message));
sleep(4);
fputs($this->connection, sprintf("kick %s\r", $character));
$this->message[] = "Character has been kicked from server";
sleep(1);
}
// Send Character a Tell
function tell($character, $message){
fputs($this->connection, sprintf("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->connection, sprintf("ooc %s\r", $message));
sleep(1);
$this->message[] = "Message sent to OOC";
}
// Broadcast Message Server Wide
function broadcast($message){
fputs($this->connection, sprintf("broadcast %s\r", $message));
sleep(1);
$this->message[] = "Broadcast Message Sent to World Server";
}
// Who/Who All
function whoall($who=''){
fputs ($this->connection, sprintf("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], 8, 3);
}
}
// Return Player Array
return $players;
}
}