<?php Header("Content-type: text/plain\n"); $ast = new AstMan(); $ast->Login(); $query = $ast->Query("Action: QueueStatus\r\nQueue: osf-queue\r\n\r\n"); while ($query = $ast->Query("\r\n")) { print $query; if (strstr($query,"Event: QueueStatusComplete")) break; } class AstMan { var $socket; var $error; function AstMan() { $this->socket = FALSE; $this->error = ""; } function Login($host="localhost", $username="vtiger", $password="5558585"){ $this->socket = @fsockopen("10.0.10.55","5038", $errno, $errstr, 1); if (!$this->socket) { $this->error = "Could not connect - $errstr ($errno)"; return FALSE; }else{ stream_set_timeout($this->socket, 1); $wrets = $this->Query("Action: Login\r\nUserName: $username\r\nSecret: $password\r\nEvents: off\r\n\r\n"); if (strpos($wrets, "Message: Authentication accepted") != FALSE){ return true; }else{ $this->error = "Could not login - Authentication failed"; fclose($this->socket); $this->socket = FALSE; return FALSE; } } } function Logout(){ if ($this->socket){ fputs($this->socket, "Action: Logoff\r\n\r\n"); while (!feof($this->socket)) { $wrets .= fread($this->socket, 8192); } fclose($this->socket); $this->socket = "FALSE"; } return; } function Query($query){ $wrets = ""; if ($this->socket === FALSE) return FALSE; fputs($this->socket, $query); do { $line = fgets($this->socket, 4096); $wrets .= $line; $info = stream_get_meta_data($this->socket); }while ($line != "\r\n" && $info['timed_out'] == false ); return $wrets; } function GetError(){ return $this->error; } function GetDB($family, $key){ $value = ""; $wrets = $this->Query("Action: Command\r\nCommand: database get $family $key\r\n\r\n"); if ($wrets){ $value_start = strpos($wrets, "Value: ") + 7; $value_stop = strpos($wrets, "\n", $value_start); if ($value_start > 8){ $value = substr($wrets, $value_start, $value_stop - $value_start); } } return $value; } function PutDB($family, $key, $value){ $wrets = $this->Query("Action: Command\r\nCommand: database put $family $key $value\r\n\r\n"); if (strpos($wrets, "Updated database successfully") != FALSE){ return TRUE; } $this->error = "Could not updated database"; return FALSE; } function DelDB($family, $key){ $wrets = $this->Query("Action: Command\r\nCommand: database del $family $key\r\n\r\n"); if (strpos($wrets, "Database entry removed.") != FALSE){ return TRUE; } $this->error = "Database entry does not exist"; return FALSE; } function GetFamilyDB($family){ $wrets = $this->Query("Action: Command\r\nCommand: database show $family\r\n\r\n"); if ($wrets){ $value_start = strpos($wrets, "Response: Follows\r\n") + 19; $value_stop = strpos($wrets, "--END COMMAND--\r\n", $value_start); if ($value_start > 18){ $wrets = substr($wrets, $value_start, $value_stop - $value_start); } $lines = explode("\n", $wrets); foreach($lines as $line){ if (strlen($line) > 4){ $value_start = strpos($line, ": ") + 2; $value_stop = strpos($line, " ", $value_start); $key = trim(substr($line, strlen($family) + 2, strpos($line, " ") - strlen($family) + 2)); $value[$key] = trim(substr($line, $value_start)); } } return $value; } return FALSE; } } ?>