Clarion и SSL

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Clarion и SSL

Сообщение Admin »

Туда же. Функция получения IP по имени домена:
Исправленная функция из QuickSock.CLW, забыли в LStrCpy функцию ADDRESS использовать.

Код: Выделить всё

SSLClass.GetMachineIpAddress    PROCEDURE(STRING host)!,STRING
lMachineName                    CSTRING(101)
lIPAddress                      CSTRING(101)
llpHostBuf                      LONG
lPtr5                           LONG
lStrPtr                         LONG
lIPAddr                         LONG
  CODE
  lMachineName = host
  IF LEN(CLIP(lMachineName)) > 0
     llpHostBuf = GetHostByName(ADDRESS(lMachineName))
     IF llpHostBuf <> 0
        Memcpy(ADDRESS(lPtr5),llpHostBuf+12,4)
        IF lPtr5 <> 0
           Memcpy(ADDRESS(lStrPtr),lPtr5,4)
           IF lStrPtr <> 0
              Memcpy(ADDRESS(lIPAddr),lStrPtr,4)
              lStrPtr = WS_INet_NToA(lIPAddr)
              MESSAGE(lIPAddr,1)
              IF lStrPtr <> 0
                 Err# = LStrCpy(ADDRESS(lIPAddress),lStrPtr)
              END
           END
        END
     END
  END
  RETURN CLIP(lIPAddress)

Код: Выделить всё

    MODULE('')
      memcpy(long lpDest, long lpSource, long nCount),long,proc,name('_memcpy')
    END

Код: Выделить всё

SSLClass                CLASS,TYPE
...
GetMachineIpAddress       PROCEDURE(STRING host),STRING
                        END
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1412
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 12 раз
Поблагодарили: 2 раза
Контактная информация:

Clarion и SSL

Сообщение RaFaeL »

УРА, благодаря помощи Admin'a непонятные "вылеты" удалось побороть. Причина описана тут: http://forum.clarionlife.net/phpbb/view ... f=1&t=3502 . После описания прототипов через С вместо Pascal все замечательно работает с библиотеками OpenSSL

Код: Выделить всё

        MODULE('WinSSL.DLL')
          SSL_library_init(),LONG,RAW,C,NAME('SSL_library_init')
          SSL_CTX_new(LONG Method),LONG,RAW,C,NAME('SSL_CTX_new')
          SSL_CTX_free(LONG),RAW,C,NAME('SSL_CTX_free')
          SSLv23_client_method(),LONG,RAW,C,NAME('SSLv23_client_method')
          SSL_new(LONG),LONG,RAW,C,NAME('SSL_new')
          SSL_free(LONG SSL),RAW,C,NAME('SSL_free')
          SSL_shutdown(LONG SSL),RAW,C,NAME('SSL_shutdown')
          SSL_set_fd(LONG SSL, LONG Sock),LONG,RAW,C,NAME('SSL_set_fd')
          SSL_connect(LONG SSL),LONG,RAW,C,NAME('SSL_connect')
          SSL_write(LONG SSL, LONG Buffer, LONG BufferSize),LONG,RAW,C,NAME('SSL_write')
          SSL_read(LONG SSL, LONG Buffer, LONG BufferSize),LONG,RAW,C,NAME('SSL_read')
          SSL_get_error(LONG SSL, LONG ret),LONG,RAW,C,NAME('SSL_get_error')
         END
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Clarion и SSL

Сообщение Admin »

Ну и + при применении SSL_read написать LEN(LOC:Buffer) а не SIZE(LOC:Buffer) :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1412
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 12 раз
Поблагодарили: 2 раза
Контактная информация:

Clarion и SSL

Сообщение RaFaeL »

Admin писал(а): Ну и + при применении SSL_read написать LEN(LOC:Buffer) а не SIZE(LOC:Buffer)
Только не в SSL_read а в SSL_Write
Чтение то нормально идет через size
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Clarion и SSL

Сообщение Admin »

RaFaeL писал(а): Только не в SSL_read а в SSL_Write
Да, да. Кончено. Но что то думаю SSL в "нашей разработке" никому нафиг не нужен :)
Тебе помогло ну и ладно!
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить