.Net FTPS Connection истекает после отправки команды 'CCC'

В последние несколько дней я много боролся с сервером FTPS, которому требуется команда "CCC", к которой я пытаюсь получить доступ через.Net

Я использую библиотеку AlexFTPS. У меня есть возможность подключаться и открывать AUTH TLS, я могу сменить каталог, но когда я пытаюсь отобразить каталог или загрузить файлы, сервер запрашивает команду "CCC". Когда я отправляю команду "CCC", я получаю ответ "200 CCC Context Enabled", но затем я не могу отправить что-либо еще, каждый раз, когда я получаю исключение тайм-аута сервера.

Я сделал дальнейшие тесты:

  • WS_FTP: работает, если я отмечаю опцию "Использовать незашифрованный канал команд после SSL-аутентификации"
  • Filezilla: не работает, даже если я добавлю "CCC" в качестве команды после входа в систему
  • http://www.componentpro.com/ftp.net/: работает, но не с открытым исходным кодом

Любая помощь будет так ценится... Извините, я не свободно FTP

Вот мой код:

    Using Client As New AlexPilotti.FTPS.Client.FTPSClient

        AddHandler Client.LogCommand, Sub(sender As Object, args As AlexPilotti.FTPS.Common.LogCommandEventArgs)
                                          Console.WriteLine(args.CommandText)
                                      End Sub

        AddHandler Client.LogServerReply, Sub(sender As Object, args As AlexPilotti.FTPS.Common.LogServerReplyEventArgs)
                                              Console.WriteLine(args.ServerReply)
                                          End Sub

        Dim cred = New Net.NetworkCredential("login", "password")
        Client.Connect("ftps.server.com", cred, AlexPilotti.FTPS.Client.ESSLSupportMode.CredentialsRequired)

        Client.SendCustomCommand("SYST")
        Client.SendCustomCommand("PBSZ 0")
        Client.SendCustomCommand("PROT P")
        Client.SendCustomCommand("FEAT")
        Client.SendCustomCommand("PWD")
        Client.SendCustomCommand("TYPE A")
        Client.SendCustomCommand("PASV")
        Client.SendCustomCommand("CCC")
        Client.SendCustomCommand("LIST")

        Console.ReadKey()

    End Using

Спасибо!

1 ответ

CCC ("Clear Command Channel") - это специальная команда, которая понижает соединение с SSL (начинается с AUTH TLS) снова в незашифрованном виде. Так что недостаточно просто объявить ее как пользовательскую команду, которая получает отправку по установленному управляющему соединению, она должна обрабатываться аналогично AUTH TLS библиотекой FTPS, чтобы после выполнения команды произошло понижение TLS.

Другие вопросы по тегам