Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> socket и политики безопастности, пишет в сокет <policy-file-request/> 
:(
    Опции темы
Ramirez
Дата 31.12.2007, 04:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



Всем привет!

был уменя socket-клиент на as3.

и с определенного момента (видимо flash-плеер обновился) в сокет первым делом стал писать строку <policy-file-request/> и ожидает видимо что ему crossdomain.xml отдатут. какого черта?  во первых месяца полтора назад такого не наблюдалось, код не менялся. все происходит в рамках одного домена, порты выше 1024. из самого флеша ясен пень он такого не делает, а вот когда все кладешь на сервер и обращаешься браузером.... возможно обновился сам плеер (9,0,115,0), я то-то упустил в этой жизни?


PS: ФАК! похоже и правда изменили модель безопастности начиная с версии 9,0,115,0 http://www.adobe.com/devnet/flashplayer/ar...ecurity_04.html

A SWF file may no longer make a socket connection to its own domain without a socket policy file. Prior to version 9,0,115,0, a SWF file was permitted to make socket connections to ports 1024 or greater in its own domain without a policy file.

может кто-нибудь обьяснит мне на пальцах как его хотябы по http заставить брать эту политику? пихать поддержку этого в сокет-сервер нет никакого желания...

PPS: два раза ФАК!

HTTP policy files may no longer be used to authorize socket connections. Prior to version 9,0,115,0, an HTTP policy file, served from the master location of /crossdomain.xml on port 80, could be used to authorize a socket connection to any port 1024 or greater on the same host.

прям незнаю как дальше жить.... =(

Это сообщение отредактировал(а) Ramirez - 31.12.2007, 05:24
PM ICQ   Вверх
Ramirez
Дата 1.1.2008, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



мда.... теперь подключаться к сокетам, даже в рамках одного домена без политики нельзя. политики предлагается раздавать 2-мя способами:
 - Socket master policy file: предлагается вешать демон на 843 порт, который будет отвечать xml-файлом,в котором описано кто и к каким портам может на этом хосте подключаться. флеш плеер теперь всегда пытается получить плитику, если это неудается он никуда не коннектится без нее. этот демон по идее должен отвечать за все политики на этом сервере. 
 - при попытке открыть сокет, флеш плеер создает еще одно подключение на тот-же хост/порт и спрашивает файл политики там. если политика получена и там есть разрешение коннектиться к этому хосту/порту первое подключение не закрывается.

отсюда следует, что надо либо поднимать отдельного демона для раздачи политик, либо встраивать поддержку раздачи политик в сокет-сервер.... короче, непонятно зачем нужен был такой геморрой....

Да, и кстати:

Adobe is applying with IANA, the Internet Assigned Numbers Authority, to reserve TCP port 843 for the purpose of serving socket policy files. This process may take a long time, but in the meantime Adobe is documenting this intended use of port 843 as broadly as possible.

Это сообщение отредактировал(а) Ramirez - 1.1.2008, 19:32
PM ICQ   Вверх
Ramirez
Дата 2.1.2008, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



Вот пакость-то! Кто-нибудь работал с политиками на сокеты?

Сделал простенький сокет сервер на 843 порту. Единственное что он умеет получать запрос, смотреть что в этом запросе есть строка: "policy-file-request" и отвечать на нее:

Код

<cross-domain-policy>
    <allow-access-from domain="*" secure="true" to-ports="*" />
</cross-domain-policy>


Да, кстати, флеш-плеер сам на этот порт не ломится (несмотря на документацию от адоба), поэтому перед созданием подключения делаю:

Код

Security.loadPolicyFile("xmlsocket://mydomain.tld:843");


И все равно, нифига не работает....

смотрю тспдампом: флеш сначала честно идет на 843 порт, спрашивает там политику, получает ее, закрывает соединение, потом идет на нужныый мне порт, и снова спрашивает там политику... :( может ответ сервера политик надо как-то хитро сформировать?

где грабли?

PM ICQ   Вверх
Ramirez
Дата 21.1.2008, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



Я, конечно, извиняюсь за настойчивость, но неужели никто не знает? Хотя-бы предположения? Нигде не могу найти никакой информации =(
PM ICQ   Вверх
d3e
Дата 24.1.2008, 06:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 24.1.2008

Репутация: нет
Всего: нет



Цитата(Ramirez @  31.12.2007,  04:55 Найти цитируемый пост)
HTTP policy files may no longer be used to authorize socket connections. Prior to version 9,0,115,0, an HTTP policy file, served from the master location of /crossdomain.xml on port 80, could be used to authorize a socket connection to any port 1024 or greater on the same host.


Я конечно извиняюсь, но где Вы это прочитали? Во всей документации адоб что я смог найти об этом ни слова, более того у меня прекрасно работают следующие строки: 
Security.allowDomain("192.168.0.2");
Security.loadPolicyFile("http://192.168.0.2/crossdomain.xml");

в файле у меня:

<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-ports="80,6667,6669"/>
</cross-domain-policy>

соединяюсь классом Socket (import flash.net.Socket;) с клиента расположенного на другом хосте (192.168.0.1)

Работает.
Кстати сначала у меня было так: клиент сначала думает минуты две, а потом соединяется. В чем именно причина я не разобрался, однако сейчас работает нормально.

Но для меня проблема сокет безопасности не решена, ибо в моем проекте требуется чтобы флеш устанавливал сокет соединение с 80 портом(но там не веб сервер), следовательно crossdomain.xml туда уже не положишь.
буду пробовать встраивать в свой сервер ответ на request-policy, может быть что и получится

Добавлено через 3 минуты и 59 секунд
P.S. нашел где вы это прочитали, просто почему то гугл по дефолту на такой вот запрос:
http://www.google.ru/search?aq=-1&oq=&...1%D0%BA&lr=
не выводит ничего кроме вашего поста.
буду разбираться, но в любом случае конструкция выше работает у меня на последнем флеш плеере

Это сообщение отредактировал(а) d3e - 24.1.2008, 06:07
PM MAIL   Вверх
Ramirez
Дата 29.1.2008, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



d3e, а версия плеера какая?

Уменя по http он так и не захотел забирать политики на сокеты. Точнее политики полученные по http на сокеты не применяются.
Зато мне таки удалось раздавать политики отдельным сокет-сервером на 843 порту того-же хоста (как я писал выше).

как-то все это....
PM ICQ   Вверх
Diesel Draft
Дата 14.4.2008, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: нет
Всего: 5



d3e,  Ты наверно в IDE тестил. Ты попробуй забросить на сервер. 
У меня та же проблема. Я хочу чат написать для IRC. Роботу почти закончил а тут такой сюрприз :((


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
Ramirez
Дата 15.4.2008, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



нет, все работает на сервере
PM ICQ   Вверх
Diesel Draft
Дата 15.4.2008, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: нет
Всего: 5



можешь пример выложить?


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
Saharochek
Дата 22.4.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 24.1.2008

Репутация: нет
Всего: нет



2Ramirez:
Цитата

Вот пакость-то! Кто-нибудь работал с политиками на сокеты?

Сделал простенький сокет сервер на 843 порту. Единственное что он умеет получать запрос, смотреть что в этом запросе есть строка: "policy-file-request" и отвечать на нее:
Без подсветки
1:
2:
3:
  <cross-domain-policy>
    <allow-access-from domain="*" secure="true" to-ports="*" />
</cross-domain-policy>





Да, кстати, флеш-плеер сам на этот порт не ломится (несмотря на документацию от адоба), поэтому перед созданием подключения делаю:
Без подсветки
1:
  Security.loadPolicyFile("xmlsocket://mydomain.tld:843");





И все равно, нифига не работает....

смотрю тспдампом: флеш сначала честно идет на 843 порт, спрашивает там политику, получает ее, закрывает соединение, потом идет на нужныый мне порт, и снова спрашивает там политику... :( может ответ сервера политик надо как-то хитро сформировать?

где грабли?

Кажысь нужно делать всё то же самое только на одном порту
PM MAIL   Вверх
Nikro
Дата 22.4.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



Цитата(Saharochek @ 22.4.2008,  11:16)
2Ramirez:
Цитата

Вот пакость-то! Кто-нибудь работал с политиками на сокеты?

Сделал простенький сокет сервер на 843 порту. Единственное что он умеет получать запрос, смотреть что в этом запросе есть строка: "policy-file-request" и отвечать на нее:
Без подсветки
1:
2:
3:
  <cross-domain-policy>
    <allow-access-from domain="*" secure="true" to-ports="*" />
</cross-domain-policy>





Да, кстати, флеш-плеер сам на этот порт не ломится (несмотря на документацию от адоба), поэтому перед созданием подключения делаю:
Без подсветки
1:
  Security.loadPolicyFile("xmlsocket://mydomain.tld:843");





И все равно, нифига не работает....

смотрю тспдампом: флеш сначала честно идет на 843 порт, спрашивает там политику, получает ее, закрывает соединение, потом идет на нужныый мне порт, и снова спрашивает там политику... :( может ответ сервера политик надо как-то хитро сформировать?

где грабли?

Кажысь нужно делать всё то же самое только на одном порту

Нет, как написанно на сайте адоба грузить можно с любого порта... Я пробую запросить файл безопасности все происходит правильно, а при конете на порт уже рабочий повторного запроса файла нет так что все впорядке и рабоатет.

А да забыл http://www.adobe.com/devnet/flashplayer/ar...ecurity_04.html внимателней читали бы ченж лог...

Это сообщение отредактировал(а) Nikro - 22.4.2008, 12:34
PM MAIL   Вверх
Ramirez
Дата 30.4.2008, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



Цитата(Diesel Draft @ 15.4.2008,  18:37)
можешь пример выложить?

Если ты  про сокет-сервер, то там у меня засада была правильно конец строки в ответе сервера поставить.
Добавил к ответу:

Код

.chr(13).chr(0)


и флеш стал нормально понимать ответы от сервера. собственно, нулевого символа достаточно было-бы.
PM ICQ   Вверх
idti
Дата 1.3.2009, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 28.2.2009
Где: pnz

Репутация: нет
Всего: нет



Можно пример? А то у меня не работает=(
Код

printOut.println("<cross-domain-policy>");
printOut.println("site-control permitted-cross-domain-policies=\"master-only\"/>");
printOut.println("<allow-access-from domain=\"*\" secure=\"true\" to-ports=\"8080\"/>");
printOut.print("</cross-domain-policy>\0");


PM MAIL   Вверх
idti
Дата 20.3.2009, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 28.2.2009
Где: pnz

Репутация: нет
Всего: нет



import java.io.*;
import java.net.*;

class cross843 {
    private static cross843 server;
    ServerSocket socket;
    Socket incoming;
    BufferedReader readerIn;
    PrintStream printOut;
    
    public static void main(String[] args) {
        int port = 843;
        try    {
            port = Integer.parseInt(args[0]);
        } catch (ArrayIndexOutOfBoundsException e) {
            // Catch exception and keep going.
        }
        server = new cross843(port);
    }
    
    private cross843(int port) {
        out("Start cross843");
        try    {
            socket = new ServerSocket(port);
            for (;;) {
                incoming = socket.accept();
                readerIn = new BufferedReader(new InputStreamReader(incoming.getInputStream()));
                printOut = new PrintStream(incoming.getOutputStream());
                boolean done = false;
                while (!done) {
                    String StrRequest = "";
                    for (;;) {
                        if (StrRequest.compareTo("<policy-file-request/>\0") != 0) {
                            char BackChar = (char) readerIn.read();
                            StrRequest += BackChar;
                            if (StrRequest == null || StrRequest.charAt(0) != '<') {
                                done = true;
                                break;
                            }
                        } else {
                            InetAddress IA= incoming.getInetAddress();
                            out(IA.getHostName() + " [ " + IA.getHostAddress() + " ] " + "Write: " + StrRequest);
                            String str1;
                            str1 = "";
                            str1 += "<cross-domain-policy>\n";
                            str1 += "<allow-access-from domain=\"*\" to-ports=\"*\"/>\n";
                            str1 += "</cross-domain-policy>\0";
                            printOut.print(str1);
                            out(IA.getHostName() + " [ " + IA.getHostAddress() + " ] " + "Read: " + str1);
                            done = true;
                            break;
                        }
                    }
                }
                incoming.close();
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }
    
    private void out(String str)
    {
        System.out.println(str);
    }
}
crossdomain раздается у 843 порта=)

PM MAIL   Вверх
Fixin
Дата 21.3.2009, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 1
Всего: 18



Цитата
Можно пример?
Цитата
хочу чат написать для IRC

познавательно
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 3 | Следующая тема »


 




[ Время генерации скрипта: 0.1314 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.