SASGIS - SAS.Планета
View Issue Details
0003422SAS.Планета[All Projects] Хотелкаpublic19-03-2019 07:1029-03-2021 18:18
zed 
zed 
normalminorhave not tried
resolvedfixed 
181221 
191221191221 
0003422: Добавить альтернативную реализацию IDownloader и IDownloaderAsync на основе libcurl
Реализация на основе WinInet перестала удовлетворять по нескольким причинам.
Наиболее веские:
- невозможно гибко ограничивать максимальное количество соединений с сервером (возможна только глобальная настройка для процесса)
- повсеместный переход сервисов на https и окончание поддержки WinXP/Win7 со стороны Microsoft, т.е. библиотека wininet не будет обновляться и вероятно, рано или поздно перестанет понимать новые алгоритмы/протоколы шифрования. И тут может сильно помочь внешняя библиотека в составе SAS (естественно, до тех пор, пока и в ней не дропнут поддержку этих операционок).
Заголовочники libcurl или даже обёртку можно взять, например, из mORMot https://github.com/synopse/mORMot/blob/master/SynCrtSock.pas#L2417

В том же mORMot, кстати говоря, есть унифицированные и взаимозаменяемые обёртки для WinInet, WinHttp и cUrl. Так что, вероятно, и нашу текущую обёртку WinInet от Alsinoe можно заменить на эту.
No tags attached.
parent of 0003421resolved zed SAS.Планета Сделать фабрику для создания IDownloader и IDownloaderAsync 
parent of 0001187closed Tolik SAS.Планета Не работают карты с длинным URL 
parent of 0003562resolved zed SAS.Планета Не работает поиск по кадастровому номеру росреестра 
related to 0003469resolved zed Доработка карты (ZMP) Не грузятся слои росреестра 
related to 0003587resolved zed SAS.Планета В Настройки добавить выбор типа прокси сервера 
related to 0001962resolved zed SAS.Планета Добавить возможность работы через SOCKS 5 прокси 
related to 0003753resolved zed SAS.Планета Не работает "скачивание" локального файла из скрипта 
? normaliz.dll (23,552) 06-11-2019 17:29
http://www.sasgis.org/mantis/file_download.php?file_id=2386&type=bug
zip Normaliz.WinXP.SP3.zip (13,557) 06-11-2019 17:51
http://www.sasgis.org/mantis/file_download.php?file_id=2387&type=bug
Issue History
19-03-2019 07:10zedNew Issue
19-03-2019 07:11zedStatusnew => confirmed
19-03-2019 07:11zedRelationship addedparent of 0003421
27-03-2019 12:24vdemidovRelationship addedparent of 0001187
23-07-2019 14:16vdemidovTarget Version190707 => 191221
23-07-2019 16:56vdemidovTarget Version191221 => 211230
26-07-2019 07:24zedRelationship addedrelated to 0003469
07-10-2019 19:00zedRelationship addedparent of 0003562
30-10-2019 10:52zedAssigned To => zed
30-10-2019 10:52zedStatusconfirmed => assigned
30-10-2019 10:52zedTarget Version211230 => 191221
30-10-2019 11:15zedNote Added: 0019406
30-10-2019 12:35TolikNote Added: 0019409
30-10-2019 14:07gera5Note Added: 0019411
31-10-2019 19:23zedNote Added: 0019418
01-11-2019 06:46TolikNote Added: 0019419
06-11-2019 17:15VMatveevNote Added: 0019434
06-11-2019 17:29VMatveevFile Added: normaliz.dll
06-11-2019 17:37VMatveevNote Edited: 0019434bug_revision_view_page.php?bugnote_id=19434#r7519
06-11-2019 17:51zedNote Added: 0019435
06-11-2019 17:51zedFile Added: Normaliz.WinXP.SP3.zip
14-11-2019 17:29zedNote Added: 0019440
15-11-2019 10:43zedNote Added: 0019443
17-11-2019 05:27TolikNote Added: 0019448
17-11-2019 06:58zedNote Added: 0019449
17-11-2019 12:53TolikNote Added: 0019450
17-11-2019 18:07zedNote Added: 0019451
21-11-2019 14:58zedRelationship addedrelated to 0003587
22-11-2019 16:31zedStatusassigned => resolved
22-11-2019 16:31zedFixed in Version => 191221
22-11-2019 16:31zedResolutionopen => fixed
15-01-2021 17:36zedRelationship addedrelated to 0001962
29-03-2021 18:18zedRelationship addedrelated to 0003753

Notes
(0019406)
zed   
30-10-2019 11:15   
В ночной версии можно начинать тестировать. Чтобы заработала новая качалка в папку с SAS нужно распаковать архив с библиотекой libcurl: https://yadi.sk/d/FR_7U7bbbiEr6w

Из известных недоделок:
- игнорируются настройки прокси
- игнорируются настройки максимального числа соединений с сервером

Если в процессе тестирования возникнут какие-либо ошибки, надо взять вот этот exe: https://yadi.sk/d/1ZuSPnnUEV6sfw воспроизвести ошибку на нём, закрыть SAS и приложить сюда (или выложить на обменник) содержимое папки HttpLog, которая появится в корне программы.
(0019409)
Tolik   
30-10-2019 12:35   
Супер! Спасибо!
Заработал слой Росреестра и поиск по нему.

Правда, слой отображается какими-то пятнами, надо подвигать туда-сюда, чтобы все тайлы скачались. Ошибка 503 вылезает иногда из кадастровой карты, а другие нормально работают, понаблюдаю ещё
(0019411)
gera5   
30-10-2019 14:07   
Ура заработал слой с земельными участками!!!
Спасибо Огромное!!!
(0019418)
zed   
31-10-2019 19:23   
> Ошибка 503 вылезает иногда из кадастровой карты
Возможно не нравится слишком большое число одновременных подключений к серверу. Задайте в настройках карты 1.

И кстати, оказывается, с лимитом числа соединений уже было всё в порядке. И есть улучшение по сравнению со старой качалкой: если у карты поставить лимит больше, чем задано глобально (на вкладке Настройка) число соединений увеличивается, как и задумано. А вот старая качалка не могла так - верхний лимит был всегда для всех карт задан этой глобальной настройкой.

Сегодня ещё кое-что поправил в коде и по сути, в качалке осталось только разобраться с настройками прокси. Следом ещё надо будет провести небольшой рефакторинг, убрать дублирование кода и, возможно, добавить в настройки переключатель - какую качалку использовать.
(0019419)
Tolik   
01-11-2019 06:46   
Поставил 1 подключение и даже паузу 1000 мс - все равно, один тайл скачивается, один - 503. Но это только Росреестр, с другими проблем нет, так что curl в порядке, я думаю.
(0019434)
VMatveev   
06-11-2019 17:15   
(edited on: 06-11-2019 17:37)
К сожалению, у меня эта долгожданная фича не работает — при запуске САС-а пишет: "Приложению не удалось запуститься, поскольку Normaliz.dll не был найден." :( Версия Nightly.191102.10051, ОС Windows XP SP2.
После пары минут гугления нашел-таки эту dll-ку, совместимую с моей версией винды, проверил её на вирусню в VirusTotal, кинул её в C:\WINDOWS\system32 - ура, заработало! Прикрепил её.
Я счастлив, что САС теперь умеет в https и на старушке XP! Спасибо огромное!

(0019435)
zed   
06-11-2019 17:51   
Для SP2 раньше был пакет idndlpackage.exe, который устанавливал эту библиотеку. Но сейчас он удалён с сайта MS.

У меня в тестовой WinXP SP3 эта библиотека есть, прикладываю её к тикету, попробуйте положить в папку с SAS.

Ну и я бы рекомендовал вам обновить винду до SP3.
(0019440)
zed   
14-11-2019 17:29   
Добавил поддержку прокси.
(0019443)
zed   
15-11-2019 10:43   
Добавил в гуй возможность выбора какую качалку использовать и немного реорганизовал настройки прокси.

Названия Network engine и используемых библиотек не переводил, т.к. пока не уверен, что выбрано удачные названия. Может кто-то предложит что-то другое?

Саму библиотеку libcurl пока в ночную версию не добавил, будет чуть позже.

На этом, можно сказать, что всё что я планировал сделать, сделано. Тикет пока не закрываю, на случай если вдруг всплывут неожиданные косяки.
(0019448)
Tolik   
17-11-2019 05:27   
> немного реорганизовал настройки прокси
Это в какой версии? В версии 15/11 вроде не изменились, а новее пока нет.

SOCKS прокси через curl не работает.
И надо нормально сделать настройку SOCKS, а то сейчас приходится вводить нетривиальную строку, например, socks=localhost:6262
Эта строка в версии 15/11 работает только через Wininet.

Переключалка Network engine работает, название годится.
(0019449)
zed   
17-11-2019 06:58   
Если есть переключалка, то и прокси будет.

В curl протокол прокси надо вводить в стандартном виде,а не через равно. Т.е. так: socks5://127.0.0.1:1025
(0019450)
Tolik   
17-11-2019 12:53   
Да, с такой строкой работает: socks5://localhost:6262
Тем более, хотелось бы настройку через ГУИ. Или, если лень, то хоть подсказку там.

Ещё заметил: при переключении с ручной настройки прокси на системную пишет, что надо перезапустить САС. На самом деле не надо (по крайней мере, с curl).
(0019451)
zed   
17-11-2019 18:07   
Да, можно сделать настройку и, кстати, WinInet поддерживает 2 типа прокси http и socks4, а curl умеет целых 6: http, https, socks4, socks4a, socks5, socks5h.