Comunidad de diseño web y desarrollo en internet online

socket ftp error 2048

Citar            
MensajeEscrito el 14 May 2008 06:50 pm
Hola a todos!
Con mucho esfuerzo logre realizar mi primera conexion ftp en as3.
Ahora bien, si bien se conecta me sale un error de Seguridad
Error #2048
Yo hice un crossdomain.xml

Código :

<?xml version="1.0"?>
   <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
   <cross-domain-policy>
   <allow-access-from domain="*" />
</cross-domain-policy>


De esta manera entran todos, pero aun asi sale el error 2048
En este mismo foro alguien ya pregunto por ello pero sin suerte.
A ver si yo tengo?

editado por eldervaz

Por claudia

103 de clabLevel



 

msie
Citar            
MensajeEscrito el 14 May 2008 07:06 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 May 2008 07:30 pm

Por eldervaz

BOFH

10964 de clabLevel

39 tutoriales
56 articulos

Genero:Masculino  



Ultima edición por eldervaz el 15 May 2008 04:09 pm, editado 1 vez

en algún lugar del mundo

firefox
Citar            
MensajeEscrito el 14 May 2008 10:39 pm
Gracias chicos!
Hola Jorge, estuve leyendo tu enlace aun no he podido descifrarlo todo.
Pero tanto para ti como para Eldervaz tengo preguntas (y para todo aquel que me quiera y pueda ayudar)
1-Por que necesito un crossdomain si el swf esta en el mismo dominio al que quiero acceder por ftp?

2-Me sigue sin funcionar, mas o menos yo me había guiado por el archivo de lessrain.com
En mi maquina me llega a establecer la conexion, me da la hora y casi me sirve un cafe :lol:
Pero cuando lo subo (esto lo he leido mil veces) no me funciona.

Puse asi
En el crossdomain.xml:

Código :

<?xml version="1.0"?>
   <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
   <cross-domain-policy>
   <allow-access-from domain='*' to-ports='80' />
   </cross-domain-policy>


En el codigo:

Código :

 public function initialize():void{
            if(ENABLE_TRACE) trace("Tratando de conectar..."+_host);
            Globales._messageField.addText("tratando de conectar:"+_host+"policyPort:"+_policyPort);

            Security.loadPolicyFile("xmlsocket://"+_host+":"+_policyPort);
            _socket = new Socket();
            configureListeners();
         }


Y recibo en pantalla (luego de una eternidad)
tratando de conectar:hableweb.compolicyPort:80
configurando listeners
error de seguridadError #2048

Creo que no llega a leer el policyFile.

Algun tutorial completo estaria muy bueno!
Claro le quitaria toda la diversion :lol: pero...

Por claudia

103 de clabLevel



 

msie
Citar            
MensajeEscrito el 15 May 2008 12:32 pm
1. Asegúrate de haber cargado el archivo de policy antes de intentar conectar (como pone en el blog, la connection tiene que estar en un bloque try y repetirse)
2. No pongas wildcard en el domain, sino el dominio exacto que quieres autorizar

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 May 2008 01:18 pm
El socket sobre el puerto 80 está devolviendo el crossdomain. Recuerda que no vale con poner el archivo allí, la conexión es via socket, que no es lo mismo que http

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 May 2008 01:48 pm
Hice las dos cosas que me dijiste...
Puse este crossdomain:

Código :

<?xml version="1.0"?>
   <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
   <cross-domain-policy>
   <allow-access-from domain='www.imk.es' to-ports='80' />
   </cross-domain-policy>


Luego hago un try and catch para ver si tomo el crossdomain:


Código :

  try {
                Globales._messageField.addText("estoy en try");
                Security.loadPolicyFile("xmlsocket://"+_host+":"+_policyPort);
             }
             catch (e:IOError) {
                 Globales._messageField.addText("estoy en catch");
            }finally{
                 Globales._messageField.addText("estoy en finally");
                _socket = new Socket();
                configureListeners();
            }


Hasta ahi va, pero luego en los listeners:

Código :

private function configureListeners():void{
           Globales._messageField.addText("configurando listeners");
            _socket.addEventListener(ProgressEvent.SOCKET_DATA,progressDataHandler);
            _socket.addEventListener(Event.CLOSE,closeHandler);
            _socket.addEventListener(Event.CONNECT, connectHandler);
            _socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            _socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
         }


Creo que es ahi donde salta el error que se ve.

Código :

private function securityErrorHandler(event:SecurityErrorEvent):void{
             Globales._messageField.addText("error de seguridad desde el listener"+event.text);
}

Este evento demora muchisimo en tomarlo. :zzz:
Asi quedan los mensajes desplegados en el campo de texto

tratando de conectar:hableweb.compolicyPort:80
estoy en try
estoy en finally
configurando listeners
error de seguridadError #2048

Gracias por enseñarme!

Por claudia

103 de clabLevel



 

msie
Citar            
MensajeEscrito el 15 May 2008 03:21 pm
puerto 80? que no te deberias de conectar por el puerto 21?

Por master_of_puppetz

Claber

2483 de clabLevel

7 tutoriales
3 articulos

Genero:Masculino   Premio_Secretos

WebDev (Flex + PHP + JS)

firefox
Citar            
MensajeEscrito el 15 May 2008 04:55 pm
Hola master!
En realidad no se.
Vi en algunos ejemplos dos puertos, uno para el policyFile y otro para la conexion.
mmmmmmmmm, tenes razon tal vez en el xml deba poner 21?
voy a probar

Por claudia

103 de clabLevel



 

msie
Citar            
MensajeEscrito el 15 May 2008 06:23 pm
En teoría, para puertos menores al 1024, el policy se debe cargar desde puertos menores al 1024, no necesariamente desde el mismo al que te vas a conectar (aunque ese debe figurar en el crossdomain)

Así que esta línea del policy:

<allow-access-from domain='www.imk.es' to-ports='80' />

Debería ser

<allow-access-from domain='www.imk.es' to-ports='21' />

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 May 2008 08:09 pm
No hay caso...
Actualizo lo que tengo:
Crossdomain en la raiz de hableweb
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain='www.imk.es' to-ports='21' />
</cross-domain-policy>

Swf con codigo de acceso en imk.es
public function SocketConnection(host_:String="localhost",port_:uint=21, policyPort_:uint=80){

Estos son los valores que dejo para la conexion

Y sigo igual
tratando de conectar:hableweb.com port:21 policyPort:80
estoy en try
estoy en finally
configurando listeners
error de seguridad desde el listenerError #2048

Por claudia

103 de clabLevel



 

msie
Citar            
MensajeEscrito el 15 May 2008 09:13 pm
El socket sobre el puerto 80 está devolviendo el crossdomain. Recuerda que no vale con poner el archivo allí, la conexión es via socket, que no es lo mismo que http

Jorge que significa esto?

Por claudia

103 de clabLevel



 

msie
Citar            
MensajeEscrito el 15 May 2008 09:25 pm
Que si usas xmlsocket como protocolo, el diálogo es

Flash Player

<policy-file-request/>

A lo que el servidor devuelve el crossdomain en formato ASCII mas un byte 0 (o ASCII null) y cierra la conexión. Luego ya te puedes conectar normalmente. Sino tienes este thread escuchando, cárgalo usando http

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 May 2008 09:32 pm
[SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"]

Estos datos extras los obtuve al poner _socket.toString();
No entiendo que es bubbles...

Por claudia

103 de clabLevel



 

msie
Citar            
MensajeEscrito el 15 May 2008 09:43 pm
Si el evento es propagado hacie el resto de los elementos en el displaylist

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 May 2008 12:56 pm
Hola de nuevo, y gracias por tanta ayuda pero aun no lo logro. No sè qué hago mal. Por eso me voy a atraver a copiar y pegar la clase que estoy usando con modificaciones porque no me funcionaba.
En negrita pongo donde creo que salta el error.

Este es mi crossdomain.xml
<?xml version=\"1.0\"?>
<!DOCTYPE cross-domain-policy SYSTEM \"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd\">
<cross-domain-policy>
<allow-access-from domain=\'www.imk.es\' to-ports=\'21\' />
</cross-domain-policy>

CLASE
package com.lessrain.policyreader.net {
import flash.errors.IOError;
import flash.events.DataEvent;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.Socket;
import flash.system.Security;
import flash.utils.ByteArray;
import es.imk.utils.ftp.OutputField;
import Globales;

public class SocketConnection extends EventDispatcher{
public const ENABLE_TRACE:Boolean=true;

private var _socket:Socket;
private var _host:String;
private var _port:uint;
private var _policyPort:uint;
private var _path:String;

public static var _messageField:OutputField;

public function SocketConnection(host_:String=\"localhost\",port_:uint=21, policyPort_:uint=80){


_host=host_;
_port=port_;
_policyPort=policyPort_;

}

public function initialize():void{
if(ENABLE_TRACE) trace(\"Tratando de conectar...\"+_host);
Globales._messageField.addText(\"tratando de conectar:\"+_host+\"port:\"+_port+\" policyPort:\"+_policyPort);

//Globales._messageField.reset();
_socket=new Socket();
try {
Globales._messageField.addText(\"estoy en try\");
Security.loadPolicyFile(\"xmlsocket://\"+_host+\":\"+_policyPort);
}
catch (e:IOError) {
Globales._messageField.addText(\"estoy en catch\");
}finally{
Globales._messageField.addText(\"estoy en finally\");
conectar();
}
}

public function conectar(){
Globales._messageField.addText(\"estoy en conectar\");
try{
_socket.connect(_host,_port);
}catch(e:SecurityError){
Globales._messageField.addText(\"problemas de conexion\");
}finally{
configureListeners();
}
}

public function sendRequest():void{
var request:String=\"\";
request+=\"GET \"+_path+\" HTTP/1.1\"+\"\\n\";
request+=\"HOST: localhost\"+\"\\n\";
request+=\"\"+\"\\n\"
Globales._messageField.addText(request);
sendMultiByte(request);
}

private function configureListeners():void{
//Globales._messageField.reset();
Globales._messageField.addText(\"configurando listeners\");
_socket.addEventListener(ProgressEvent.SOCKET_DATA,progressDataHandler);
_socket.addEventListener(Event.CLOSE,closeHandler);
_socket.addEventListener(Event.CONNECT, connectHandler);
_socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
_socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
}
public function sendMultiByte(str_:String):void{
try{
Globales._messageField.addText(\"sendMultiByet\");
_socket.writeMultiByte(str_, \"iso-8859-1\");
_socket.flush();

dispatchEvent( new SocketDataEvent( SocketDataEvent.DATA_OUTPUT, str_));

Globales._messageField.addText(\"Enviado\"+str_);
if(ENABLE_TRACE)trace(\"Enviado:\");
if(ENABLE_TRACE) trace(str_);

}catch(e:IOError){
//var str:String=e.text;
Globales._messageField.addText(str_+\"error\");

}
}

private function readMultiByte():String{
var str:String = _socket.readMultiByte( _socket.bytesAvailable, \"iso-8859-1\" );
if(ENABLE_TRACE) trace(\"Recibido:\");
Globales._messageField.addText(\"Recibido:\"+str);
return str;
}

private function progressDataHandler(event:ProgressEvent):void{
Globales._messageField.addText(\"progress\");
dispatchEvent( new SocketDataEvent( SocketDataEvent.DATA_INPUT,readMultiByte()));
}
private function socketDataHandler(event:ProgressEvent):void{

}

private function closeHandler(event:Event){
if (ENABLE_TRACE) trace(\"Connection cerrada: \"+event);

Globales._messageField.addText(\"close Handler\");
sendRequest();
}

private function connectHandler(event:Event):void {
Globales._messageField.addText(\"Connection established\");
if (ENABLE_TRACE) trace(\"Connection established: \" + event);
sendRequest();
}

private function ioErrorHandler(event:IOErrorEvent):void{
Globales._messageField.addText(\"ioErrorHandler\");
if(ENABLE_TRACE) trace(\"Conexion establecida \" + event);
sendRequest();
}



private function securityErrorHandler(event:SecurityErrorEvent):void{
SecurityErrorEvent.SECURITY_ERROR
Globales._messageField.addText(\"error de seguridad desde el listener\"+event.text);
Globales._messageField.addText(event.toString());
if(ENABLE_TRACE) trace(\"Connection SecurityError: \" + event);
}

}
}

Por claudia

103 de clabLevel



 

msie
Citar            
MensajeEscrito el 16 May 2008 01:00 pm
Probaste con

Security.loadPolicyFile("http://"+_host+"/crossdomain.xml");

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 May 2008 05:20 pm
Acabo de probar con http y el mismo error:
tratando de conectar:hableweb.comport:21 policyPort:80
estoy en try
estoy en finally
estoy en conectar
configurando listeners
error de seguridad desde el listenerError #2048

:crap:

Por claudia

103 de clabLevel



 

msie
Citar            
MensajeEscrito el 08 Jul 2008 11:06 am

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.