void MiniClient::connectToServer(const Jid &jid, bool legacy_ssl_probe, bool legacy_ssl, bool forcessl, const QString &_host, int _port, ProxyManager *pm, int proxy, QString *_pass) { j = jid; QString host; int port = -1; bool useHost = false; force_ssl = forcessl; if(!_host.isEmpty()) { useHost = true; host = _host; port = _port; } AdvancedConnector::Proxy p; if(proxy > 0) { const ProxyItem &pi = pm->getItem(proxy-1); if(pi.type == "http") // HTTP Connect p.setHttpConnect(pi.settings.host, pi.settings.port); else if(pi.type == "socks") // SOCKS p.setSocks(pi.settings.host, pi.settings.port); else if(pi.type == "poll") { // HTTP Poll QUrl u = pi.settings.url; if(u.queryItems().isEmpty()) { if (useHost) u.addQueryItem("server",host + ':' + QString::number(port)); else u.addQueryItem("server",jid.host()); } p.setHttpPoll(pi.settings.host, pi.settings.port, u.toString()); p.setPollInterval(2); } if(pi.settings.useAuth) p.setUserPass(pi.settings.user, pi.settings.pass); } conn = new AdvancedConnector; tls = new QCA::TLS; tls->setTrustedCertificates(CertUtil::allCertificates()); tlsHandler = new QCATLSHandler(tls); tlsHandler->setXMPPCertCheck(true); connect(tlsHandler, SIGNAL(tlsHandshaken()), SLOT(tls_handshaken())); conn->setProxy(p); if (useHost) { conn->setOptHostPort(host, port); conn->setOptSSL(legacy_ssl); } else { conn->setOptProbe(legacy_ssl_probe); } stream = new ClientStream(conn, tlsHandler); connect(stream, SIGNAL(connected()), SLOT(cs_connected())); connect(stream, SIGNAL(securityLayerActivated(int)), SLOT(cs_securityLayerActivated(int))); connect(stream, SIGNAL(needAuthParams(bool, bool, bool)), SLOT(cs_needAuthParams(bool, bool, bool))); connect(stream, SIGNAL(authenticated()), SLOT(cs_authenticated())); connect(stream, SIGNAL(connectionClosed()), SLOT(cs_connectionClosed())); connect(stream, SIGNAL(delayedCloseFinished()), SLOT(cs_delayedCloseFinished())); connect(stream, SIGNAL(warning(int)), SLOT(cs_warning(int))); connect(stream, SIGNAL(error(int)), SLOT(cs_error(int)), Qt::QueuedConnection); if(_pass) { auth = true; pass = *_pass; _client->connectToServer(stream, j); } else { auth = false; _client->connectToServer(stream, j, false); } }