Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Авторизация через SSL


Автор: XavierElf 13.8.2008, 12:53
В общем суть такова: у нас на работе интернет подключается через web-интерфейс cisco-роутера. Каждый раз запускать браузер, открывать страницу авторизации как0то надоедает. Решил написать программу для аутентификации пользователя и слежения за статусом подключения. Проблема возникла такая: отсылаю запрос проверки статуса, а в ответ, как говорится тишина... В респонс ничего не приходит. Проверяю ошибки протокола, ошибок нету... В чём может быть косяк?
Код такого типа:
Код

void InetLogin::getStatus()
{
    statusHttp->setHost("someserver.ru", QHttp::ConnectionModeHttps, 1443);
    statusHttp->get("/netaccess/connstatus.html");
    connect(statusHttp,    SIGNAL(done(bool)),
            this,        SLOT(statusReceived(bool)));
}
void InetLogin::statusReceived(bool error)
{
    if (error)
    {
        QMessageBox::critical(0, "Error", statusHttp->errorString());
    }
    else
        QMessageBox::information(0, "Data", statusHttp->readAll());
}

Автор: neosapient 13.8.2008, 14:49
Посмотри мой вопрос http://forum.vingrad.ru/forum/topic-218922.html

Там удалось настроить протокол с SSL
Единственное отличие - надо указать порт 1443

Посмотри мой вопрос http://forum.vingrad.ru/forum/topic-223627.html

С кукисами пошли проблемы, так как появилась необходимость предварительно пропарсить все заголовки...

Автор: XavierElf 13.8.2008, 15:05
Куков нету, а насчёт поддержки OpenSSL я не понял, так эта либа включена в состав QT или нет? кроме того, такой код:
Код

#ifdef QT_NO_OPENSSL
    qDebug() << "oops!";
#endif

не приводит к выводу сообщения упс  smile 
зато когда делаю таким образом:
Код

    QSslSocket socket;
    socket.connectToHostEncrypted("someserver", 1443);
    socket.write("POST /netaccess/loginuser.html HTTP/1.1\r\n\r\n");
    while (socket.waitForReadyRead())
        qDebug() << socket.readAll().data();

в консоль вываливается:
Код

QSslSocket: cannot call unresolved function SSLv3_client_method
QSslSocket: cannot call unresolved function SSL_CTX_new
QSslSocket: cannot call unresolved function ERR_get_error
QSslSocket: cannot call unresolved function ERR_error_string


*удалено*

Автор: aspirin2003 14.8.2008, 10:51
Цитата(XavierElf @ 13.8.2008,  15:05)
Куков нету, а насчёт поддержки OpenSSL я не понял, так эта либа включена в состав QT или нет?

Насколько я понял, по умолчанию поддержки нет, нужно самому пересобирать qt.
Проверить, поддерживается у Вас OpenSSL или нет можно, запустив пример из examples/network/securesocketclient
Если запускается, то поддерживается.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)