Страница 19 из 30
					
				libcurl for Clarion
				Добавлено: 12 Ноябрь 2015, 20:11
				 Дед Пахом
				Вроде все основные функции закрыл:
- выгрузка файлов с сервера
- загрузка файлов на сервер
- HTTP GET/POST с возможностью прочитать ответ сервера
- Поддержка SSL
Тестировал на протоколах http, https, ftp, sftp, ftpes.
Краткий туториал в файле \doc\How-To.txt.
 
 
 
			 
			
					
				libcurl for Clarion
				Добавлено: 25 Август 2018, 14:05
				 Игорь Столяров
				Ура ! Господин назвал меня пользователем !
(C) Белое солнце пустыни
Спасибо ! 

 
			 
			
					
				libcurl for Clarion
				Добавлено: 26 Август 2018, 18:26
				 Игорь Столяров
				Добрый день !
Назрел вопрос по существу. 

 Про метод:
Код: Выделить всё
SetPostFields                   PROCEDURE(STRING pPostFields), CURLcode, PROC
Пытаюсь загонять картинки POST запросами (на самом деле таких задач с BIGDATA много). 
В принципе - всё работает. Создаю строку IDynStr, загоняю в неё картинку в BASE64, оборачиваю в XML и передаю. 
Смущает то, что приходится выполнять преобразование IDynStr в достаточно упитанный STRING
и дальше гнать его в LibCurl по значению. На строках от 10 MByte вызовы уже чувствуются … 
Может быть есть возможность рассмотреть пополнения зоопарка методом:
Код: Выделить всё
SetPostFields                   PROCEDURE(*IDynStr pPostFields), CURLcode, PROC
там только поменять параметр на pPostFields.Str(), а длина сразу известна pPostFields.StrLen() ... ?
Заранее спасибо за рассмотрение.
P/S: Про сабклассинг знаю, умею, но здесь ещё не созрел … 

 
			 
			
					
				libcurl for Clarion
				Добавлено: 26 Август 2018, 19:04
				 Дед Пахом
				Игорь Столяров писал(а): 26 Август 2018, 18:26Может быть есть возможность рассмотреть пополнения зоопарка методом:
Код: Выделить всё
SetPostFields                   PROCEDURE(*IDynStr pPostFields), CURLcode, PROC
 
Легко! v1.33 уже в продаже.
 
			 
			
					
				libcurl for Clarion
				Добавлено: 26 Август 2018, 19:50
				 Игорь Столяров
				Спасибо ! Сейчас будем запрягать … 

Ещё живёт один вопрос, но сразу скажу, что я им пока не занимался ...
Пиашписты, как-то возгоняют через POST файлы напрямую, вообще без загрузки в строку.
Например, как вот здесь: 
https://toster.ru/q/295743
Но то ли это возможности PHP, то ли CURL - я пока не понял ...
 
			 
			
					
				libcurl for Clarion
				Добавлено: 26 Август 2018, 20:10
				 Дед Пахом
				Не знаю PHP, но по-моему там как раз файл загоняется в массив (в одном месте написано array, в другом [...]), видимо это массив байт или что-то подобное.
А вообще надо не фантазировать, а читать документацию 
https://curl.haxx.se/libcurl/c/CURLOPT_POSTFIELDS.html 
			 
			
					
				libcurl for Clarion
				Добавлено: 27 Август 2018, 1:45
				 Admin
				Дед Пахом писал(а): 26 Август 2018, 20:10в одном месте написано array, в другом [...]
 
Начиная с PHP 5.4 возможно использовать короткий синтаксис определения массивов, 
который заменяет языковую конструкцию array() на []
 
			 
			
					
				libcurl for Clarion
				Добавлено: 31 Август 2018, 15:18
				 RaFaeL
				Дед Пахом писал(а): 31 Август 2018, 15:04Это появилось в v7.56, а у нас 7.52.
 
Ну так надо обновляться. Сейчас посмотрел, уже почти год как поставляю бинарники 7.55.1 в своем проекте
 
			 
			
					
				libcurl for Clarion
				Добавлено: 31 Август 2018, 15:18
				 Дед Пахом
				RaFaeL писал(а): 31 Август 2018, 15:18Ну так надо обновляться.
 
Да мне вроде не надо, не просил никто.
 
			 
			
					
				libcurl for Clarion
				Добавлено: 31 Август 2018, 15:48
				 Игорь Столяров
				Упс ! Т.е. LibCurl v.7.52 - это тупик карьерного роста ? 

 
			 
			
					
				libcurl for Clarion
				Добавлено: 31 Август 2018, 15:55
				 Дед Пахом
				Выходит так.
			 
			
					
				libcurl for Clarion
				Добавлено: 02 Сентябрь 2018, 0:55
				 Дед Пахом
				Доступна v1.34, много изменений.
			 
			
					
				libcurl for Clarion
				Добавлено: 14 Сентябрь 2018, 1:11
				 Дед Пахом
				Наконец удалось заставить работать SFTP с методом аутентификации "public key". Целый день угробил. Здесь опишу процесс на память.
В качестве 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)):
Код: Выделить всё
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)
 
для авторизации методом PublicKey поля в Accounts заполнены так:
Код: Выделить всё
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
 
 
			 
			
					
				libcurl for Clarion
				Добавлено: 03 Октябрь 2018, 9:11
				 Игорь Столяров
				Дед Пахом писал(а): 14 Сентябрь 2018, 1:11Наконец удалось заставить работать SFTP с методом аутентификации "public key"
 
Это круто ! Но вылетела вся работа с FTP ... 

 Что-то вокруг SSHSettings - пытаюсь разобраться ...
Примеры из штатного комплекта поставки FTPManager - тоже не собираются. 

Посмотрите пожалуйста ! Вы ведь быстрей разберёте проблему, чем я … 

 
			 
			
					
				libcurl for Clarion
				Добавлено: 03 Октябрь 2018, 10:00
				 Дед Пахом
				Читайте документацию (она же README.md).
			 
			
					
				libcurl for Clarion
				Добавлено: 03 Октябрь 2018, 10:15
				 Игорь Столяров
				Дед Пахом писал(а): 03 Октябрь 2018, 10:00Читайте документацию (она же README.md).
 
Всегда читаю ! 
 
Ага ... А во всех примерах, структура SSHSettings объявлена не через базовый тип TSSHSettings, а простым описанием полей.
И понёсся разнобой ... Понял. Спасибо. 
