Russian Qt Forum

Qt => Работа с сетью => Тема начата: Денис от Январь 24, 2014, 19:52



Название: Проблема с Ssl
Отправлено: Денис от Январь 24, 2014, 19:52
Есть строка кода для доступа к сайту https:
Код:
connect(reply, SIGNAL(sslErrors(QList<QSslError>)), reply, SLOT(ignoreSslErrors()));

В результате обращение к сайту заканчивается ошибкой, а в выводе приложения следующая строка:
QObject::connect: No such signal QNetworkReplyImpl::sslErrors(QList<QSslError>)

Что я не так сделал, что ошибки Ssl не перехватываются ?


Название: Re: Проблема с Ssl
Отправлено: gil9red от Январь 24, 2014, 19:57
Написано же, что у объекта reply нет сигнала sslErrors(QList<QSslError>)  :)


Название: Re: Проблема с Ssl
Отправлено: Денис от Январь 24, 2014, 20:02
Как раз он у него есть, но за макросом:
Код:
Q_SIGNALS:
    void metaDataChanged();
    void finished();
    void error(QNetworkReply::NetworkError);
#ifndef QT_NO_SSL
    void encrypted();
    void sslErrors(const QList<QSslError> &errors);
#endif

но где он определяется ( QT_NO_SSL ) ???


Название: Re: Проблема с Ssl
Отправлено: gil9red от Январь 24, 2014, 20:14
А если в лоб: раньше вызыва инклуда класса, написать #undef QT_NO_SSL ?


Название: Re: Проблема с Ssl
Отправлено: Денис от Январь 24, 2014, 20:53
Не помогло, даже если его внутрь класса вставить, все равно не видит сигнала и запрос к сайте заканчивается с ошибкой ...


Название: Re: Проблема с Ssl
Отправлено: Figaro от Январь 25, 2014, 07:37
А Кутя точно откомпилирована с поддержкой SSL?


Название: Re: Проблема с Ssl
Отправлено: Денис от Январь 25, 2014, 13:23
а зачем его компилировать с поддержкой SSL, я так понимаю он как макрос в настройках компилятора ?


Название: Re: Проблема с Ssl
Отправлено: lesav от Январь 25, 2014, 14:05
Если Qt собран без опции -openssl то поддержки оного не будет.

Примерно как-то так
Код:
configure.exe   .......   -openssl -I C:\OpenSSL-Win32\Include -L C:\OpenSSL-Win32\Lib


Название: Re: Проблема с Ssl
Отправлено: Денис от Январь 25, 2014, 14:41
А без пересборки никак нельзя получить доступ к HTTPS ?


Название: Re: Проблема с Ssl
Отправлено: Serr500 от Январь 25, 2014, 18:26
Можно. Берём OpenSSL, QTcpSocket и прикручиваем...  ;) Но проще перекомпилировать.


Название: Re: Проблема с Ssl
Отправлено: Figaro от Январь 26, 2014, 07:02
Точнее QTcpSocket не будет работать... но если ручками - тогда ssl либо и нативными функциями работаем


Название: Re: Проблема с Ssl
Отправлено: Денис от Февраль 06, 2014, 21:48
Мужики, помоги щеэ, перекомпилил, но разрослась библиотека примеров example ?
Она, аж 21 ГБ весит ... Можно было в настройках при компиляции ограничить размер примеров ?
Или я как-то неправильно перекомпилировал ?


Название: Re: Проблема с Ssl
Отправлено: Serr500 от Февраль 06, 2014, 21:52
Мусор от компилятора остался. *.obj и т.п. Думаю, ещё и две версии собрались - debug и release. Помогает make clean.


Название: Re: Проблема с Ssl
Отправлено: Денис от Февраль 06, 2014, 22:57
Спасибо, уже почистил. Но что-то перекомпиляция особо не помогла. Старые ошибки исчезли, а новые появились:
Код:
QSslSocket: cannot call unresolved function SSLv23_client_method
QSslSocket: cannot call unresolved function SSL_CTX_new
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function ERR_get_error


Название: Re: Проблема с Ssl
Отправлено: Денис от Февраль 07, 2014, 00:19
Для тех кому интересно, исправляются ошибки добавлением файлов libeay32.dll and ssleay32.dll в System32.
Но вот вопрос, ошибок нету но сервер отвечает мне браузерным скриптом:
Код:
<html>
<head><title>Loading</title></head>
<body>
<p>Please wait...</p>
<script>function xdec(data){
var o="HkKw2qhsBZXouyvDVTfxQ6ELIU4N8RztJag5Y-_mG1pOiAFlM7jS0nbrcCP39deW=";
var o1,o2,o3,h1,h2,h3,h4,bits,i=0,ac=0,dec="",tmp_arr=[];
if(!data)
{
     return data
}

data+='';

do
{
     h1=o.indexOf(data.charAt(i++));
     h2=o.indexOf(data.charAt(i++));
     h3=o.indexOf(data.charAt(i++));
     h4=o.indexOf(data.charAt(i++));
     bits=h1<<18|h2<<12|h3<<6|h4;
     o1=bits>>16&0xff;
     o2=bits>>8&0xff;
     o3=bits&0xff;
     if(h3==64){tmp_arr[ac++]=String.fromCharCode(o1)
}
else if(h4==64)
{
    tmp_arr[ac++]=String.fromCharCode(o1,o2)
}
else
{
    tmp_arr[ac++]=String.fromCharCode(o1,o2,o3)
}
}

while(i<data.length);

dec=tmp_arr.join('');
return dec};
document.cookie=xdec('u_ZgI5V7ywRYvwBSywa-vhuruSk-uSuCIxRYywICywVdVb7lzh-mNY8').replace(String.fromCharCode(0),'').split('').reverse().join('');
location.href='/';</script></body></html>\n

Есть ли класс для его исполнения ?


Название: Re: Проблема с Ssl
Отправлено: gil9red от Февраль 07, 2014, 00:45
Скрипты? Браузер?
QtScript и QtWebKit :)

UPDATE.
WebKit:
Qt 4: QT += webkit (тут (http://doc.crossplatform.ru/qt/4.5.0/qtwebkit.html))
А для 5-й: QT += webkitwidgets (тут (http://qt-project.org/doc/qt-5.0/qtwebkit/qtwebkitwidgets-index.html))

Добавление QtScript для 4-й и 5-й одинаково: QT += script
(тут (http://qt-project.org/doc/qt-5.0/qtscript/qtscript-module.html) тут (http://doc.crossplatform.ru/qt/4.6.x/qtscript.html))


Название: Re: Проблема с Ssl
Отправлено: Денис от Февраль 07, 2014, 01:08
Чето не подключается :
:-1: ошибка: Unknown module(s) in QT: script

Код:
QT       += core gui network script


Название: Re: Проблема с Ssl
Отправлено: lesav от Февраль 07, 2014, 05:54
Нескроомный вопрос.   А зачем собирать Qt ?   Из коробки все работает

http://download.qt-project.org/official_releases/qt/


Название: Re: Проблема с Ssl
Отправлено: Figaro от Февраль 07, 2014, 10:47
когда Вам нужен ssl... например... смотрите параметры configure.. сейчас не знаю как, но раньше надо было точно указывать, с чем Вы будете иметь или трахаться с каким вариантом сборки... так что лучше собирать самому


Название: Re: Проблема с Ssl
Отправлено: Денис от Февраль 07, 2014, 11:51
Скрипты? Браузер?
QtScript и QtWebKit :)

UPDATE.
WebKit:
Qt 4: QT += webkit (тут (http://doc.crossplatform.ru/qt/4.5.0/qtwebkit.html))
А для 5-й: QT += webkitwidgets (тут (http://qt-project.org/doc/qt-5.0/qtwebkit/qtwebkitwidgets-index.html))

Добавление QtScript для 4-й и 5-й одинаково: QT += script
(тут (http://qt-project.org/doc/qt-5.0/qtscript/qtscript-module.html) тут (http://doc.crossplatform.ru/qt/4.6.x/qtscript.html))
Та, а я как сделал !!! Я именно так и сделал:
Код:
QT += script

#include <QtScript>

Я уже давно залез в документацию и вычитал эти строки, ток они не работают, толи надо предварительно скомпилировать проект QtScript, толи подвязать исходники к проекту ?


Название: Re: Проблема с Ssl
Отправлено: OKTA от Февраль 07, 2014, 13:56
Если не указывал при сборке -no-script, то ошибки не должно быть. Он по умолчанию включен в сборку.


Название: Re: Проблема с Ssl
Отправлено: Денис от Февраль 07, 2014, 15:29
Если не указывал при сборке -no-script, то ошибки не должно быть. Он по умолчанию включен в сборку.

Код:
set LIB=
set INCLUDE=
SET QTDIR=D:\_Program_Files\Qt\Qt5.1.0\5.1.0\Src\qtbase
SET QMAKESPEC=win32-g++
SET PATH=D:\_Program_Files\Python\Python27;D:\_Program_Files\Perl\bin;D:\_Program_Files\Qt\Qt5.1.0\5.1.0\mingw48_3 2\bin;D:\_Program_Files\Qt\Qt5.1.0\5.1.0\Src\qtbase\bin;%PATH%
pause
configure.exe -debug-and-release -opensource -c++11 -static -opengl -desktop -no-angle -no-vcproj -openssl -I D:\_Program_Files\OpenSSL-Win32\Include -L D:\_Program_Files\OpenSSL-Win32\Lib
pause
mingw32-make.exe
pause

Вот параметры компиляции. -no-sript - не ставил при компиляции.
?


Название: Re: Проблема с Ssl
Отправлено: OKTA от Февраль 07, 2014, 15:39
Ой, кажется я тебя обманул.

Код:
-script	Build the QtScript module.	This option denotes a default value and needs to be evaluated. If the evaluation succeeds, the feature is included.

на сколько позволяет мой английский, это значит, что надо намеренно писать -script в опциях, хотя я может и ошибаюсь.


Название: Re: Проблема с Ssl
Отправлено: Денис от Февраль 07, 2014, 15:49
Ой, кажется я тебя обманул.

Код:
-script	Build the QtScript module.	This option denotes a default value and needs to be evaluated. If the evaluation succeeds, the feature is included.

на сколько позволяет мой английский, это значит, что надо намеренно писать -script в опциях, хотя я может и ошибаюсь.

Два наряда вне очереди !
А где можно про нее почитать, про параметры компиляции ?


Название: Re: Проблема с Ssl
Отправлено: OKTA от Февраль 07, 2014, 15:55
http://qt.developpez.com/doc/5.0-snapshot/configure-options/ (http://qt.developpez.com/doc/5.0-snapshot/configure-options/)
ось тут читай. И попробуй все-таки версию Qt из коробки. Ssl будет работать - ему нужны только библиотеки OpenSSL и все. Или нужна статическая сборка обязательно?


Название: Re: Проблема с Ssl
Отправлено: Денис от Февраль 07, 2014, 16:01
Я уже нашел эту ссылку )
Правда не нашел там флага -nomake example или правильно -no-make example ?


Название: Re: Проблема с Ssl
Отправлено: OKTA от Февраль 07, 2014, 16:35
-nomake examples


Название: Re: Проблема с Ssl
Отправлено: Денис от Февраль 07, 2014, 16:42
-nomake examples

Я опять уже нашел, но все равно спасибо !
Но тогда вопрос, по той ссылке нету этих специфических флагов при компиляции, где про них можно почитать ?
На сайте флага -nomake нету, но его использование уменьшает время компиляции, но в описаниях его нету !


Название: Re: Проблема с Ssl
Отправлено: Денис от Февраль 07, 2014, 23:42
Единственное не понятно почему примеры все равно компилируются, хотя в строке конфига указано:

Код:
configure.exe -debug-and-release -opensource -c++11 -nomake examples -no-vcproj -no-angle -static -opengl desktop -script -scripttools -webkit -openssl -I D:\_Program_Files\OpenSSL-Win32\Include -L D:\_Program_Files\OpenSSL-Win32\Lib

Я же написал ему примеры не make-ать, а вместо этого растет в объеме папка:
D:\_Program_Files\Qt\Qt5.1.0\5.1.0\Src\qtbase\examples

И какждый раз компиляция прерывается из-за недостаточности объема памяти !
На все эти examples уходит 21 ГБ !


Название: Re: Проблема с Ssl
Отправлено: OKTA от Февраль 08, 2014, 00:02
сначала make clean, + добавь -nomake demos
Да, если все-таки пытаешься сделать статическую сборку, судя по -static, то webkit статически у тебя не соберется и соответственно фурычить врядли будет, если попытаешься его подключить.


Название: Re: Проблема с Ssl
Отправлено: gil9red от Февраль 08, 2014, 00:07
Проще скачать с официального сайта установщик qt и радоваться тому есть :)


Название: Re: Проблема с Ssl
Отправлено: Денис от Февраль 08, 2014, 00:12
Так я и скачал, но мне нужна была сборка статическая, пришлось перекомпилировать !

А тут полезли различные косяки, типа отсутствия SSL, Script и т.д.

Script кстати все равно не поддерживается, может из-за того что не все скомпилировалось, может быть надо еще какой-то флаг установить ?


Название: Re: Проблема с Ssl
Отправлено: Денис от Февраль 15, 2014, 00:55
Ау, есть кто живой ? Как откомпилировать, чтобы папка Qt\Qt5.1.0\5.1.0\Src\qtbase\examples не росла ? Параметр -nomake examples не помагает !?


Название: Re: Проблема с Ssl
Отправлено: lesav от Февраль 15, 2014, 11:28
... чтобы qtbase\examples не росла ? Параметр -nomake examples не помагает !?

Можно изменить qtbase\examples\examples.pro   
Оставить в нем две строки
Код:
TEMPLATE = subdirs
SUBDIRS  =

Заодно и файл qtbase\demos\demos.pro   подправить

Затем:
configure
mingw32-make -j5


 


Название: Re: Проблема с Ssl
Отправлено: Денис от Февраль 15, 2014, 16:42
... чтобы qtbase\examples не росла ? Параметр -nomake examples не помагает !?

Можно изменить qtbase\examples\examples.pro   
Оставить в нем две строки
Код:
TEMPLATE = subdirs
SUBDIRS  =

Заодно и файл qtbase\demos\demos.pro   подправить

Затем:
configure
mingw32-make -j5


А что это за параметр -j5 ?

А qtbase\demos\demos.pro нету ?


Название: Re: Проблема с Ssl
Отправлено: Денис от Февраль 15, 2014, 17:06
Ну проблему с examples убрал, но осталась проблема с обработкой скрипта:

(http://www.fotolink.su/pic_s/d0c0e5cb2fdd6c16a499ec115e2d194b.jpg)
996x738(95.23 kB) (http://www.fotolink.su/v.php?id=d0c0e5cb2fdd6c16a499ec115e2d194b)
хостинг изображений (http://www.fotolink.su)


(http://www.fotolink.su/pic_s/682ddfb756a4988d47cfde33fc84fc4a.jpg)
446x295(19.08 kB) (http://www.fotolink.su/v.php?id=682ddfb756a4988d47cfde33fc84fc4a)
хостинг изображений (http://www.fotolink.su)

На первом скрине нету даже такой дериктории со скриптом для include-а ?


Название: Re: Проблема с Ssl
Отправлено: lesav от Февраль 15, 2014, 17:27
Так я и скачал, но мне нужна была сборка статическая, пришлось перекомпилировать !
Покажи все параметры configure


Название: Re: Проблема с Ssl
Отправлено: lesav от Февраль 16, 2014, 03:47
Вот мой скрипт сборки qt5.2.0-static.  Все собирается (кроме WebKit)
Код:
rem Каталог с исходниками (без пробелов)
set QT_SOURCE=c:\Qt\Qt5.2.0\5.2.0\Src

rem Каталог будущей Qt после make install (без пробелов)
set QTDIR=e:\QT_WORK_DIR\qt5.2.0-mingw48-stat\5.2.0\mingw48_32

rem Путь до каталога с компилятором (без пробелов)
set MINGW_ROOT=e:\QT_WORK_DIR\MinGW_480

set QMAKESPEC=win32-g++

rem директория с библиотекой ICU  ( можно попробовать добавить в configure -no-icu )
set ICU_DIR=C:\Qt\icu4c-51_2-Win32-msvc10


set INCLUDE=%ICU_DIR%\include;C:\OpenSSL-Win32\Include;%INCLUDE%
set LIB=%ICU_DIR%\lib;C:\OpenSSL-Win32\Lib;%LIB%
set PATH=%MINGW_ROOT%\bin;%QTDIR%\bin;%QT_SOURCE%\qtbase\bin;%PATH%;%ICU_DIR%\bin;%QT_SOURCE%\gnuwin32\bin

@echo off
cd %QT_SOURCE%
configure -opensource -confirm-license -static -release -prefix "%QTDIR%" -platform "%QMAKESPEC%" -opengl desktop -nomake examples -nomake tests -openssl -I C:\OpenSSL-Win32\Include -L C:\OpenSSL-Win32\Lib
mingw32-make -j9
mingw32-make install
rem ===========================================
rem Для WebKit  нужно:  ( но в статике не собирается )

rem Установленный ActivePerl  http://www.activestate.com/activeperl/downloads
rem Установленный Python 2.7  http://www.python.org/download/releases/2.7.3/
rem Установленный Ruby        http://rubyinstaller.org/downloads/
rem Установленный ICU.
rem    сайт официальный     http://www.npcglib.org/~stathis/blog/2012/06/17/windows-task-build-the-icu-library-for-32-bit-and-64-bit/
rem    сайт не официальный  http://site.icu-project.org/
rem ===========================================

@echo on

Сохранить скрипт под именем C:\Qt\configureQt.cmd
Затем выполнить в командной строке
call C:\Qt\configureQt.cmd

Если последуешь этому совету (п.2) (http://www.prog.org.ru/index.php?topic=8037.msg114910#msg114910), существенно сократишь время сборки


Название: Re: Проблема с Ssl
Отправлено: Денис от Февраль 20, 2014, 01:05
Вот все параметры компиляции :

Код:
set LIB=
set INCLUDE=
SET QTDIR=D:\_Program_Files\Qt\Qt5.1.0\5.1.0\Src\qtbase
SET QMAKESPEC=win32-g++
SET PATH=D:\_Program_Files\Python\Python27;D:\_Program_Files\Perl\bin;D:\_Program_Files\Qt\Qt5.1.0\5.1.0\mingw48_3 2\bin;D:\_Program_Files\Qt\Qt5.1.0\5.1.0\Src\qtbase\bin;%PATH%
pause
configure.exe -debug-and-release -opensource -c++11 -static -opengl desktop -script -scripttools -webkit -openssl -I D:\_Program_Files\OpenSSL-Win32\Include -L D:\_Program_Files\OpenSSL-Win32\Lib -no-angle -no-vcproj -nomake examples -nomake tests -nomake demos -nomake tools
pause
mingw32-make.exe
pause


Название: Re: Проблема с Ssl
Отправлено: lesav от Февраль 20, 2014, 12:42
Вот мой скрипт сборки qt5.2.0-static.  Все собирается (кроме WebKit)
Есть результат ?