libcurl for Clarion
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libcurl for Clarion
Ура ! Господин назвал меня пользователем !
(C) Белое солнце пустыни
Спасибо !
(C) Белое солнце пустыни
Спасибо !
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libcurl for Clarion
Добрый день !
Назрел вопрос по существу. Про метод:
Пытаюсь загонять картинки POST запросами (на самом деле таких задач с BIGDATA много).
В принципе - всё работает. Создаю строку IDynStr, загоняю в неё картинку в BASE64, оборачиваю в XML и передаю.
Смущает то, что приходится выполнять преобразование IDynStr в достаточно упитанный STRING
и дальше гнать его в LibCurl по значению. На строках от 10 MByte вызовы уже чувствуются …
Может быть есть возможность рассмотреть пополнения зоопарка методом:
там только поменять параметр на pPostFields.Str(), а длина сразу известна pPostFields.StrLen() ... ?
Заранее спасибо за рассмотрение.
P/S: Про сабклассинг знаю, умею, но здесь ещё не созрел …
Назрел вопрос по существу. Про метод:
Код: Выделить всё
SetPostFields PROCEDURE(STRING pPostFields), CURLcode, PROC
В принципе - всё работает. Создаю строку IDynStr, загоняю в неё картинку в BASE64, оборачиваю в XML и передаю.
Смущает то, что приходится выполнять преобразование IDynStr в достаточно упитанный STRING
и дальше гнать его в LibCurl по значению. На строках от 10 MByte вызовы уже чувствуются …
Может быть есть возможность рассмотреть пополнения зоопарка методом:
Код: Выделить всё
SetPostFields PROCEDURE(*IDynStr pPostFields), CURLcode, PROC
Заранее спасибо за рассмотрение.
P/S: Про сабклассинг знаю, умею, но здесь ещё не созрел …
За теми кто отстал - не возвращаться. (С) Кодекс
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
libcurl for Clarion
Легко! v1.33 уже в продаже.Игорь Столяров писал(а): ↑26 Август 2018, 18:26Может быть есть возможность рассмотреть пополнения зоопарка методом:Код: Выделить всё
SetPostFields PROCEDURE(*IDynStr pPostFields), CURLcode, PROC
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libcurl for Clarion
Спасибо ! Сейчас будем запрягать …
Ещё живёт один вопрос, но сразу скажу, что я им пока не занимался ...
Пиашписты, как-то возгоняют через POST файлы напрямую, вообще без загрузки в строку.
Например, как вот здесь: https://toster.ru/q/295743
Но то ли это возможности PHP, то ли CURL - я пока не понял ...
Ещё живёт один вопрос, но сразу скажу, что я им пока не занимался ...
Пиашписты, как-то возгоняют через POST файлы напрямую, вообще без загрузки в строку.
Например, как вот здесь: https://toster.ru/q/295743
Но то ли это возможности PHP, то ли CURL - я пока не понял ...
За теми кто отстал - не возвращаться. (С) Кодекс
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
libcurl for Clarion
Не знаю PHP, но по-моему там как раз файл загоняется в массив (в одном месте написано array, в другом [...]), видимо это массив байт или что-то подобное.Игорь Столяров писал(а): ↑26 Август 2018, 19:50Пиашписты, как-то возгоняют через POST файлы напрямую, вообще без загрузки в строку. Например, как вот здесь: https://toster.ru/q/295743
А вообще надо не фантазировать, а читать документацию
https://curl.haxx.se/libcurl/c/CURLOPT_POSTFIELDS.html
С уважением, ДП
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
libcurl for Clarion
Начиная с PHP 5.4 возможно использовать короткий синтаксис определения массивов,
который заменяет языковую конструкцию array() на []
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1377
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libcurl for Clarion
Ну так надо обновляться. Сейчас посмотрел, уже почти год как поставляю бинарники 7.55.1 в своем проекте
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libcurl for Clarion
Упс ! Т.е. LibCurl v.7.52 - это тупик карьерного роста ?
За теми кто отстал - не возвращаться. (С) Кодекс
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
libcurl for Clarion
Наконец удалось заставить работать SFTP с методом аутентификации "public key". Целый день угробил. Здесь опишу процесс на память.
В качестве SFTP сервера использую freeSSHd, генератор ключей PuTTYGen.
В качестве SFTP сервера использую freeSSHd, генератор ключей PuTTYGen.
- 1. PuTTYGen: RSA 2048 - сгенерировать ключ.
- 2. Passphrase не заполнять - freeSSHd не любит ключи с паролем.
- 3. Conversions > Export OpenSSH key, сохранить как e:\devtools\freeSSHd\PrivateKey.ppk.
- 4. В FreeSSHDService.ini указать этот файл: RSAKeyPath=e:\devtools\freeSSHd\PrivateKey.ppk.
- 5. Запустить freeSSHd, удостовериться на вкладке SSH, что RSA key в порядке (в противном случае будет написано "Failed to import key from file)".
- 6. Создать пользователя mike c Authorization=Public key (SSH only), разрешить SFTP.
- 7. Создать файл mike (имя пользователя, без расширения), скопировать в него Public key из окна PuTTYGen: e:\devtools\freeSSHd\mike.
- 8. В libcurl следующий код (настройки SSH берём из таблицы Accounts, PRE(ACC)):
для авторизации методом PublicKey поля в Accounts заполнены так:Код: Выделить всё
ssh LIKE(TSSHSettings), PRE(ssh) !- default protocol (ftp/sftp), if not defined in url IF ACC:AuthMethod = CURLSSH_AUTH_NONE curl.SetDefaultProtocol('ftp') ELSE curl.SetDefaultProtocol('sftp') END !- port IF ACC:Port curl.SetOpt(CURLOPT_PORT, ACC:Port) ELSIF NOT INSTRING(':', ACC:URL, 1, 1) IF ACC:AuthMethod = CURLSSH_AUTH_NONE curl.SetOpt(CURLOPT_PORT, 21) !ftp default port ELSE curl.SetOpt(CURLOPT_PORT, 22) !sftp default port END END !- user/pwd curl.SetUserPwd(ACC:UserId, ACC:UserPwd) !- SSH settings ssh.AuthMethod = ACC:AuthMethod ssh.KeyPassword = ACC:KeyPassword ssh.KnownHosts = ACC:KnownHosts ssh.PrivateKeyFile = ACC:PrivateKeyFile ssh.PublicKeyFile = ACC:PublicKeyFile ssh.PublicKeyMD5 = ACC:PublicKeyMD5 !aded in v1.37 curl.SSHAuth(ssh)
Код: Выделить всё
ACC:AuthMethod = CURLSSH_AUTH_PUBLICKEY ACC:UserId = 'mike' ACC:UserPwd = '' !не нужен в данном случае ACC:KeyPassword = '' !это та самая Passphrase ACC:PrivateKeyFile = 'e:\DevTools\freeSSHd\PrivateKey.ppk' ACC:PublicKeyFile = 'e:\DevTools\freeSSHd\mike'
- 9. Смотрим лог, убеждаемся, что работает:
[14616] [libcurl] TEXT: Trying 192.168.1.33...
[14616] [libcurl] TEXT: TCP_NODELAY set
[14616] [libcurl] TEXT: Connected to 192.168.1.33 (192.168.1.33) port 22 (#0)
[14616] [libcurl] TEXT: SSH MD5 fingerprint: cb41e224f048e963db28120b9a6d6ec7
[14616] [libcurl] TEXT: SSH authentication methods available: password,gssapi-with-mic,publickey
[14616] [libcurl] TEXT: Using SSH public key file 'e:\DevTools\freeSSHd\mike'
[14616] [libcurl] TEXT: Using SSH private key file 'e:\DevTools\freeSSHd\PrivateKey.ppk'
[14616] [libcurl] TEXT: Initialized SSH public key authentication
[14616] [libcurl] TEXT: Authentication complete
[14616] [libcurl] TEXT: Connection #0 to host 192.168.1.33 left intact
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libcurl for Clarion
Это круто ! Но вылетела вся работа с FTP ... Что-то вокруг SSHSettings - пытаюсь разобраться ...
Примеры из штатного комплекта поставки FTPManager - тоже не собираются.
Посмотрите пожалуйста ! Вы ведь быстрей разберёте проблему, чем я …
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
libcurl for Clarion
Всегда читаю !
Ага ... А во всех примерах, структура SSHSettings объявлена не через базовый тип TSSHSettings, а простым описанием полей.
И понёсся разнобой ... Понял. Спасибо.
За теми кто отстал - не возвращаться. (С) Кодекс