2010-12-21 13 views
5

Estoy tratando de hacer que FTP-SSL funcione con Qt 4.6.3. Ya compilé Qt con soporte OpenSSL. ¿Hay algún buen recurso sobre FTPS con Qt? Parece que QFtp no proporciona soporte SSL. Realmente no quiero crear mi propia implementación FTPS.FTPS (FTP-SSL) en Qt 4.6

// edit: Descubrí QNetworkAccessManager (ty @ frank) pero no puedo encontrar ninguna documentación útil o ejemplos para SSL con él. Eso es lo que estoy intentando:

QUrl url = QUrl("ftp://localhost/filex.txt"); 
url.setUserName("root"); 
url.setPassword("root"); 
QNetworkRequest request(url); 
QSslConfiguration SslConfiguration(QSslConfiguration::defaultConfiguration()); 
request.setSslConfiguration(SslConfiguration); 
manager->get(request); 

Pero FileZilla no me deja conectarme. La consola FZ dice:

(000035) 21.12.2010 17:31:46 - (no conectado) (127.0.0.1)> usuario root

(000035) 21.12.2010 17:31: 46 - (no conectado) (127.0.0.1)> 530 SSL requiere

configuración

FileZilla:

  • FTP sobre SSL/TLS habilitado
  • FTP sobre TLS explícito habilitado
  • normal sin cifrar FTP anulado
  • SSL forzado de las raíces sesión

yo al menos esperaba algún tipo de sslErrors señales desde el usuario/PW está muy bien y falla SSL, pero yo sólo estoy haciendo señales authenticationRequired .

Gracias por su ayuda!

+0

¿Has comprobado QNetworkAccessManager? –

+0

@frank muchas gracias por su pista franca, vea mi pregunta actualizada – atamanroman

+0

¿Cuál es su configuración de SSL/TLS en FileZilla? –

Respuesta

4

Desafortunadamente no hay una solución lista para usar para FTPS en Qt.

  • QFtp implementa muchos comandos ftp pero no admite el cifrado.
  • QNetworkAccessManager admite solo funciones básicas de ftp (archivo descarga/carga) y no admite cifrado en caso de ftp, tampoco. Es vale mencionar que es compatible con el cifrado para HTTP, que es el protocolo para el que está diseñado principalmente.
  • QSslSocket implementa SSL, pero no protocolo específico, como FTP o HTTP

Tomando en consideración la información por encima de una idea viene a la mente para mezclar con QFtpQSslSocket para obtener FTP cifrado. El problema es QFtp La clase no tiene ningún método que permita hacer que QFtp use el socket suministrado por el usuario. Por comparación QHttp tiene dicho método - int QHttp::setSocket(QTcpSocket * socket)

Línea inferior; de acuerdo con Thiago Macieira (diseñador de QNetworkAccessManager) el camino a seguir es implementar el protocolo FTP usando QSslSocket.

+0

Será mejor que diga a thiago que implemente esto para Qt 4.8;) – ismail

+0

¡Muchas gracias! Su respuesta confirma absolutamente lo que descubrí hasta ahora. No me gusta mucho la idea de volver a implementar FTP, por lo que haremos QFtp o QNetworkAccessManager SSL-Ready o compraremos la biblioteca de chilkats FTP2. Alguien debería mencionar que el problema FTPS en los manuales Qt - QNetworkAccessManagers FTP- y SSL-support implica soporte FTPS. – atamanroman