AS3: согласование соединения FTP-ES - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь изменить библиотеку ActionScript 3 FTP для поддержки явных безопасных (FTP-ES) подключений.

При использовании FTP-ES клиент сначала устанавливает небезопасное соединение FTP, а затем явно просит сервер переключиться на безопасное соединение SSL / TLS.

Прямо сейчас я сначала подключаюсь к FTP-серверу с помощью обычного сокета, прошу сервер переключиться на TLS и затем пытаюсь подключиться с помощью SecureSocket после того, как сервер вернет код FTP 234:

if (code.indexOf('220 ') == 0 || code.indexOf('220-') == 0) { //Send user name
    if (_useTLS) {
        trace("AUTH TLS");
        cmdSocket.writeUTFBytes('AUTH TLS\r\n');
    } else {
        cmdSocket.writeUTFBytes('USER ' + _username + '\r\n');
    }
    cmdSocket.flush();
}

if (responseCode.indexOf('234 ') == 0) { //Auth OK, expecting SSL/TLS negotatiation
    if (SecureSocket.isSupported) {
        secureCommandSocket = new SecureSocket();
        secureCommandSocket.addEventListener(ProgressEvent.SOCKET_DATA, onReceivedSCmd);
        secureCommandSocket.addEventListener(Event.CONNECT, onConnectSCmd);
        secureCommandSocket.addEventListener(IOErrorEvent.IO_ERROR, onSocketError);
        secureCommandSocket.addEventListener(Event.CLOSE, onCloseSCmd);
        secureCommandSocket.connect(_host, _port);
    } else {
        throw new Error("Secure socket is not supported on this platform");
    }
}

Однако сокет возвращает ошибку IOError 2031 (ошибка сокета). Вот вывод:

MESSAGE: CONNECTED TO FTP
MESSAGE: Received command: 220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 50 allowed.

AUTH TLS
MESSAGE: Received command: 234 AUTH TLS OK.

MESSAGE: 2031:Error #2031: Socket Error. URL: xx.xx.xxx.xx
ERROR: Connection failed

Не имея больше информации о том, что происходит, я понятия не имею, почему происходит сбой безопасного сокета. Это потому, что я пытаюсь переключиться с обычного сокета на мидл-соединение SecureSocket? Если так, есть ли другой способ справиться с этим в AS3?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...