Emulador Telnet con Php?

Iniciado por Drakegon, 19 Diciembre 2007, 01:17 AM

0 Miembros y 1 Visitante están viendo este tema.

Drakegon

Alguien puede darme una luz sobre como puedo programar un Emulador Telnet en Php.

(un Script que me permita hacer una conexion Telnet a un servidor y puerto especifico y   enviar- recibir mensajes)

O si alguien sabe de un script ya hecho pues mucho mejor... xD


Please!! ayuda...

alone-in-the-chat

Lee sobre manejo de sockets

Saludos
Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b

Drakegon

Alguna otra guia mas especifica?¿  :-\

Drakegon

Olvidenlo...
Lo he logrado  ;D

Ahora alguien sabe de algun host que permita abrir sockets?¿


Drakegon


Tengo un problema con el emulador de telnet que estoy creando:

el problema es el siguiente:

Tengo la conexión con el servidor abierta, un inputbox donde ingreso el comando que le enviare al servidor, y el textarea donde se deben ver todos los comandos enviados y las respuestas recibidas. Pero para enviar un comando lo envio a la misma pagina en forma de formulario con Post y luego lo trato de enviar con fputs, pero al hacerlo me da error:

"Warning: fputs(): supplied argument is not a valid stream resource in ****\***.php on line 138"  huh

imagino que esto ocurre debido a que en el momento en que llamo de nuevo a la pagina para enviarle un nuevo comando la conexión que he abierto en un principio se pierde, y el identificador de la conexión que le paso a fputs no es valido.

Alguien sabe como puedo recoger el comando del input box y actualizar el contenido del textarea sin perder la conexión???  rolleyes

Ayuda...  tongue

alone-in-the-chat

Puedes meterlo en variables de Session
primero hazte una clase simple para manejo de sockets
las operaciones basicas conectar , cerrar la conexion, recoger datos , enviar datoss y lo que creas necesario  , despues haz un include de esa clase y crea una variable session de una instancia de esa clase
asi la session se encargara de hacer perdurar tu objeto

Saludos

 
Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b

WHK

Código (php) [Seleccionar]
<?php
$da 
fsockopen("$HOST"23$errno$errstr30);
if (!
$da) {
    echo 
"$errstr ($errno)<br />\n";
} else {
    
$salida "$USER\r\n";
    
$salida .= "$PASS\r\n";
    
$salida .= "$COMANDOS\r\n";
    
$salida .= "exit\r\n";

    
fwrite($da$salida);
    while (!
feof($da)) {
        echo 
fgets($da128);
    }
    
fclose($da);
}
?>


Defines host, user, pass y los comandos.

Drakegon

Cita de: alone-in-the-chat en 20 Diciembre 2007, 18:03 PM
Puedes meterlo en variables de Session
primero hazte una clase simple para manejo de sockets
las operaciones basicas conectar , cerrar la conexion, recoger datos , enviar datoss y lo que creas necesario  , despues haz un include de esa clase y crea una variable session de una instancia de esa clase
asi la session se encargara de hacer perdurar tu objeto

Saludos

 

Intente lo de las sesiones y no funciono..  :-\
El identificador de la conexion se me desaparace en cuanto intento enviar un comandp..  :P

Aca lo basico del codigo para ver si alguien detecta cual es el error..  :-[

Code: Page.php
Obtengo el servidor al que me voy a conectar...

Citar

<?php
session_start();//Start  session
header("Cache-control: provate");//Fix the IE6 Sessions problem
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form action="page2.php" method=post>
<input name="server" type="text" id="text" />
<input type="submit" name="Submit" value="Submit" />
</form>
</body>
</html>



CODE: page2.php
Aqui hago todo el manejo... El problema es que el identificador del Socket de la conexion se desaparece en cuanto intento enviar un commando..  :-\\

Citar

<?php
session_start();//Start out session
header("Cache-control: provate");//Fix the IE6 Sessions problem
?>

<?php

if($HTTP_POST_VARS["server"])
   {
   $_SESSION['server'] = $HTTP_POST_VARS["server"];
   $_SESSION['conection'] = fsockopen($_SESSION['server'],25);
   $_SESSION['screen']=fgets($_SESSION['conection'],256);
   }
   
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Typer" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.style1 {font-family: Verdana, Arial, Helvetica, sans-serif}
-->
</style>
</head>

<body>
<p align="center" class="style1">SERVER: <?php print($_SESSION['server']) ?> </p>
<p align="center" class="style1">CONECTION: <?php print($_SESSION['conection']) ?> </p>
<p align="center">

<?php

if($HTTP_POST_VARS["command"])
   {
   fwrite($_SESSION['conection'], $HTTP_POST_VARS["command"]);
   $response=fgets($_SESSION['conection'],256) ;
   $_SESSION['screen'] = $_SESSION['screen']."\r\n". $HTTP_POST_VARS["command"]."\r\n".$response;
   }
   
?>


<form action="page2.php" method=post>
  <div align="center">
  <textarea name="Tex" cols="40" rows="10" id="Tex"><?php print($_SESSION['screen'])?>
</textarea>
  </p>
  </div>
<p align="center">
  <input name="command" type="command" id="command" />
</p>
<p align="center">
  <input type="submit" name="Submit" value="Submit" />
</p>
</body>
</html>





alone-in-the-chat

Bueno por lo que parece la conexion abierto mediante sockets se cierra apenas termina de ejecutarse el script

por lo tanto intentar mantener una conexion  socket por session es imposible

Estoy intentando hacerlo manteniendo los comandos que vas ingresando
:-\
veremos como va la cosa te voy poniendo un avance .
Aun hay que modificarlo  aver si mas tarde me doy un toke

sockets.php
Código (php) [Seleccionar]

<?php 
class CI_Sockets {

var $socket;

function createSock($server,$port)
{
$direccion gethostbyname($server);
$this->socket socket_create(AF_INETSOCK_STREAMSOL_TCP);
$resultado socket_connect($this->socket$direccion$port);
if ($resultado 0
{
return false;
}else{
return true;
}
}
function up($string)
{
return socket_write($this->socket$string);
}
function get()
{
if(!socket_last_error($this->socket))
{
   
if($buffer=socket_read($this->socket,4096,PHP_NORMAL_READ))
   
{
      
return $buffer;
   
}
}
}
function closeSocket()
{
return socket_close($this->socket);
}
}
?>




page1.php

Código (php) [Seleccionar]

<?php 
session_start();
session_destroy();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Define</title>
</head>
<body>
<form action="page2.php" method="post">
<input name="server" type="text" id="text" />
<input type="submit" name="Submit" value="Submit" />
</form>
</body>
</html>



page2.php

Código (php) [Seleccionar]

<?php 
include(
"sockets.php");
session_start();
if (!session_is_registered("Srv") && isset($_POST['server']))
{
session_register("Srv","Commands");
$_SESSION['Srv'] = $_POST['server'];
$_SESSION['Commands'] = array();
}
$ci_socket = new CI_Sockets();
$ci_socket->createSock($_SESSION['Srv'],PUERTO,$socket);
if (isset($_POST['command']))
{
$_SESSION['Commands'][] = $_POST['command'];
$_SESSION['Commands'] = array_unique($_SESSION['Commands']); 
$cadena "";
foreach($_SESSION['Commands'] as $var)
{
$ci_socket->up(trim($var));
$cadena .= $ci_socket->get();
}
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Typer" content="text/html; charset=iso-8859-1" />
<title> =_= </title>
</head>
<body>
<form method=post>
  <div align="center">
  <textarea name="command" cols="40" rows="10" id="command" />
  <?php
  
echo $cadena;
  
?>

  </textarea>
  </div>
<p align="center">
  <input name="command" type="command" id="command" />
</p>
<p align="center">
  <input type="submit" name="Submit" value="Submit" />
</p>
</body>
</html>
<?php
$ci_socket->closeSocket();
?>




ya voy saliendo del trabajo X) veamos si llegando a mi casa continuo buscando en foros eh encontrado que varios se chocaron con esto

Veremos si puedo darle solucion  :-\
Se aceptan sugerencias

;D
Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b