<?php
/* 
// Class:       telnet_log
//
//
// Description: Reads a UNIX telnet tracefile's termdata which is saved in hex
//              and output it ASCII readable format. 
//
//
// Author:      Warren Jay Eggly
// Email:       warren.eggly@sun.com
//
// Version:	0.1
//
// .telnetrc file should look like this
//
//	DEFAULT set tracefile <dir>/<filename> 
//	DEFAULT set termdata
//
//
// Usage: 
//	
//	$text = new telnet_log( "<dir>/<filename>" );
//
//	echo $text->get();
//	echo $text->get_html();
*/
class telnet_log {
	var $text;
	
	function telnet_log( $file ) {
		if ( $this->open_file ( $fp, $file ) )  {
			$this->transfile ( $fp, $this->text );
		$this->close_file ( $fp );
		}
	}
	
	function get() {
		
		return $this->text;
	}
	
	function get_html() {
		 return "\n<pre>" . htmlspecialchars( $this->text ) . "</pre>\n";
	}
//
//  
//      private function - do not call
//
//
      		
	function transfile ( &$fp, &$text ) {	
		while ( $this->getline ( $fp, $input )) {
			if ( $this->is_output_line( $input )) {
				$text .= $this->transdata ( $input );
			}
		}
	
	}
//
//  
//      private function - do not call
//
//
	
	function open_file ( &$fp, $file ) {
		$status = true;
		if ( is_file( $file ) && filesize( $file ) > 0 ) {
			$fp = fopen ( $file, "r" );
		} else {
			$status = false;
		}
		
		if ( $fp && $status ) {
			return true;
		} else {
			return false;
		}
	}
//
//  
//      private function - do not call
//
//
	
	function close_file ( &$fp ) {
		fclose ( $fp );
	}
//
//  
//      private function - do not call
//
//
	
	function transdata ( $input ) {
		$output = "";
		$input = $this->getdata( $input );
		for ( $i = 0; $i < strlen( $input ); $i += 2 ) {
			$output .= $this->getchar( substr($input, $i, 2 ) );
		}
		return $output;
	}		
	
//
//  
//      private function - do not call
//
//
	function getchar( $char ) {
		return  chr(hexdec($char));
	}
//
//  
//      private function - do not call
//
//
	
	function getline ( &$fp, &$input ) {
		if ( ! feof( $fp ) ) {
			$input = fgets ( $fp, 4096 );
			return true;
		} else {
			return false;
		}
		
	}
//
//  
//      private function - do not call
//
//
	function getdata( $line ) {
		 $array = preg_split ( "/\s+/", $line );
		 return $array[2];
	}
	
//
//  
//      private function - do not call
//
//
	function is_output_line( $line ) {
		if ( preg_match ( "/^>/", $line ) ) {
			return true;
		} else {
			return false;
		}
	}
}
?>
 
  |