Violación de la seguridad Sandbox Flash
Buenas!
veran tengo este error
cuano subo el .swf y los .as al servidor apache y lo corro sale este error 2048 pero no se porque?
error
<code>Error #2044: SecurityErrorEvent no controlado: text=Error #2048: Violación de la seguridad Sandbox: http://201.245.2.158/skytel/SkyTel.swf no puede cargar datos desde 190.24.231.158:23.
at com.socket::Telnet()[\\Servidor\www\SkyTel\com\socket\Telnet.as:34]
at TelnetSocket/connect()[\\Servidor\www\SkyTel\TelnetSocket.as:16]</code>
el codigo del Telnet.as es
<code>package com.socket {
import flash.events.*;
import flash.net.Socket;
import flash.system.Security;
import flash.utils.ByteArray;
import flash.utils.setTimeout;
import fl.controls.TextArea;
import fl.core.UIComponent;
//output.setStyle( "backgroundColor", "white" );
public class Telnet {
private const CR:int = 13; // Carriage Return (CR)
private const WILL:int = 0xFB; // 251 - WILL (option code)
private const WONT:int = 0xFC; // 252 - WON'T (option code)
private const DO:int = 0xFD; // 253 - DO (option code)
private const DONT:int = 0xFE; // 254 - DON'T (option code)
private const IAC:int = 0xFF; // 255 - Interpret as Command (IAC)
private var serverURL:String;
private var portNumber:int;
private var socket:Socket;
private var ta:TextArea;
private var state:int = 0;
public function Telnet(server:String, port:int, output:TextArea) {
// set class variables to the values passed to the constructor.
serverURL = server;
portNumber = port;
ta = output;
// Create a new Socket object and assign event listeners.
socket = new Socket();
socket.addEventListener(Event.CONNECT, connectHandler);
socket.addEventListener(Event.CLOSE, closeHandler);
socket.addEventListener(ErrorEvent.ERROR, errorHandler);
socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
socket.addEventListener(ProgressEvent.SOCKET_DATA, dataHandler);
// Load policy file from remote server.
Security.loadPolicyFile("http://201.245.2.158/crossdomain.xml");
// Attempt to connect to remote socket server.
try {
msg("Conectando con " + serverURL + ":" + portNumber + "\n");
socket.connect(serverURL, portNumber);
} catch (error:Error) {
// Unable to connect to remote server, display error
// message and close connection.
//
msg(error.message + "\n");
socket.close();
}
}
/**
* This method is called if the socket encounters an ioError event.
*/
public function ioErrorHandler(event:IOErrorEvent):void {
msg("Imposible conectar: error en el socket o en el puerto 23.\n");
}
/**
* This method is called by our application and is used to send data
* to the server.
*/
public function writeBytesToSocket(ba:ByteArray):void {
socket.writeBytes(ba);
socket.flush();
}
private function connectHandler(event:Event):void {
if (socket.connected) {
msg("conectando...\n");
} else {
msg("desconectado\n");
}
}
/**
* This method is called when the socket connection is closed by
* the server.
*/
private function closeHandler(event:Event):void {
msg("desconectado...\n");
}
/**
* This method is called if the socket throws an error.
*/
private function errorHandler(event:ErrorEvent):void {
msg(event.text + "\n");
}
/**
* This method is called when the socket receives data from the server.
*/
private function dataHandler(event:ProgressEvent):void {
var n:int = socket.bytesAvailable;
// Loop through each available byte returned from the socket connection.
while (--n >= 0) {
// Read next available byte.
var b:int = socket.readUnsignedByte();
switch (state) {
case 0:
// If the current byte is the "Interpret as Command" code, set the state to 1.
if (b == IAC) {
state = 1;
// Else, if the byte is not a carriage return, display the character using the msg() method.
} else if (b != CR) {
msg(String.fromCharCode(b));
}
break;
case 1:
// If the current byte is the "DO" code, set the state to 2.
if (b == DO) {
state = 2;
} else {
state = 0;
}
break;
// Blindly reject the option.
case 2:
/*
Write the "Interpret as Command" code, "WONT" code,
and current byte to the socket and send the contents
to the server by calling the flush() method.
*/
socket.writeByte(IAC);
socket.writeByte(WONT);
socket.writeByte(b);
socket.flush();
state = 0;
break;
}
}
}
/**
* Append message to the TextArea component on the display list.
* After appending text, call the setScroll() method which controls
* the scrolling of the TextArea.
*/
private function msg(value:String):void {
ta.text += value;
ta.dispatchEvent(new Event(Event.CHANGE));
setTimeout(setScroll, 100);
}
/**
* Scroll the TextArea component to its maximum vertical scroll
* position so that the TextArea always shows the last line returned
* from the server.
*/
public function setScroll():void {
// ta.verticalScrollPosition = ta.maxVerticalScrollPosition;
ta.verticalScrollPosition = ta.maxVerticalScrollPosition;
}
}
}</code>
TelnetSocket.as
<code>package
{
import flash.display.Sprite;
import flash.utils.ByteArray;
import flash.events.MouseEvent;
import com.socket.Telnet;
public class TelnetSocket extends Sprite
{
private var telnetClient:Telnet;
public function TelnetSocket() {
setupUI();
}
private function connect(e:MouseEvent):void {
telnetClient = new Telnet(serverName.text, int("23"), output);
var ba:ByteArray = new ByteArray();
ba.writeMultiByte("admin" + "\n", "UTF-8");
telnetClient.writeBytesToSocket(ba);
var pass:ByteArray = new ByteArray();
pass.writeMultiByte("admin" + "\n", "UTF-8");
telnetClient.writeBytesToSocket(pass);
}
private function sendCommand(e:MouseEvent):void {
var ba:ByteArray = new ByteArray();
ba.writeMultiByte(command.text + "\n", "UTF-8");
telnetClient.writeBytesToSocket(ba);
command.text = "";
}
private function arp(e:MouseEvent):void {
var ba:ByteArray = new ByteArray();
ba.writeMultiByte("s i a" + "\n", "UTF-8");
telnetClient.writeBytesToSocket(ba);
command.text = "";
}
private function pe(e:MouseEvent):void {
var ba:ByteArray = new ByteArray();
ba.writeMultiByte("s i i" + "\n", "UTF-8");
telnetClient.writeBytesToSocket(ba);
command.text = "";
}
private function dns(e:MouseEvent):void {
var co:ByteArray = new ByteArray();
co.writeMultiByte("co" + "\n", "UTF-8");
telnetClient.writeBytesToSocket(co);
var dns:ByteArray = new ByteArray();
dns.writeMultiByte("dns view" + "\n", "UTF-8");
telnetClient.writeBytesToSocket(dns);
var q:ByteArray = new ByteArray();
q.writeMultiByte("q" + "\n", "UTF-8");
telnetClient.writeBytesToSocket(q);
}
private function maps(e:MouseEvent):void {
var co:ByteArray = new ByteArray();
co.writeMultiByte("co" + "\n", "UTF-8");
telnetClient.writeBytesToSocket(co);
var dns:ByteArray = new ByteArray();
dns.writeMultiByte("ip-maps view" + "\n", "UTF-8");
telnetClient.writeBytesToSocket(dns);
var q:ByteArray = new ByteArray();
q.writeMultiByte("q" + "\n", "UTF-8");
telnetClient.writeBytesToSocket(q);
}
private function hole(e:MouseEvent):void {
var co:ByteArray = new ByteArray();
co.writeMultiByte("co" + "\n", "UTF-8");
telnetClient.writeBytesToSocket(co);
var dns:ByteArray = new ByteArray();
dns.writeMultiByte("pinhole view" + "\n", "UTF-8");
telnetClient.writeBytesToSocket(dns);
var q:ByteArray = new ByteArray();
q.writeMultiByte("q" + "\n", "UTF-8");
telnetClient.writeBytesToSocket(q);
}
private function setupUI():void {
loginBtn.addEventListener(MouseEvent.CLICK,connect);
sendBtn.addEventListener(MouseEvent.CLICK,sendCommand);
arpBtn.addEventListener(MouseEvent.CLICK,arp);
peBtn.addEventListener(MouseEvent.CLICK,pe);
dnsBtn.addEventListener(MouseEvent.CLICK,dns);
mapsBtm.addEventListener(MouseEvent.CLICK,maps);
holeBtn.addEventListener(MouseEvent.CLICK,hole);
}
}
}</code>
dagi3d
para mi que eso es un espacio que mete el foro, que a veces se le va la olla
k1k3
Hola k epacio esta mal?
El servidor no repondio por que tenemos problemas tecnicos con el internet pero ya funciona xD
chilelogela
así por encima (porque no tengo tiempo para repasarme todo el codigo ese) tienes un espacio mal puesto. además que la política de seguridad apunta a una IP que parece de una red local (en internet no responde)
http://201.245.2.158/c rossdomain.xml
Usuario desconocido
k1k3, cuando pongas un código tan extenso, es mejor que lo subas en un .txt a un servidor. Gracias.