sanchezzzhak / kak-clickhouse

Yii2 ext. ClickHouse
69 stars 43 forks source link

Невозможность использования https подключения #39

Closed reynholm closed 5 years ago

reynholm commented 5 years ago

Приветствую,

в Connection::open() некорректно собирается url для подключения. Независимо от требуемого типа подключения (http или https) добавляется http://

Логичным выглядит отказаться от параметров user, password и port, а вместо них использовать dsn по-полной:

[
    'dsn' => 'https://admin:*******@example.com:8444'
]
sanchezzzhak commented 5 years ago

Привет, сделаем. завтра будет.

sanchezzzhak commented 5 years ago

Добавил подержу https

return [
   'class' => kak\clickhouse\Connection::class,
   'dsn' => 'https://db.local',
    'database' => 'default',
   'port' => '8123',
   'username' => 'web',
   'password' => 'password',
   'enableSchemaCache' => true,
   'schemaCache' => 'cache',
   'schemaCacheDuration' => 86400
];

Добавил подключения в виде dsn строки подключение через, этот способ работает — если в строке есть собачка.

reynholm commented 5 years ago

Проверил, работает. Спасибо!

zentavr commented 1 month ago

@sanchezzzhak How to set up the connection to the server with self signed cert? Currently I'm getting an exception like Query error: Curl error: #60 - SSL: no alternative certificate subject name matches target host name '10.93.79.54'

sanchezzzhak commented 1 month ago

@zentavr hi set two params for requestConfig

          CURLOPT_SSL_VERIFYHOST => false,
          CURLOPT_SSL_VERIFYPEER => false,

example

'clickhouse => [
      'class' => 'kak\clickhouse\Connection',
      'dsn' => 'localhost',
      'port' => '8123',
      'username' => 'web',
      'password' => '',
      'database' => 'my-db',
      'requestConfig' = [
          'class' => 'kak\clickhouse\httpclient\Request',
          'options' => [
              CURLOPT_SSL_VERIFYHOST => false,
              CURLOPT_SSL_VERIFYPEER => false,
          ],
      ],
],

more params https://github.com/yiisoft/yii2-httpclient/blob/master/docs/guide/usage-request-options.md

zentavr commented 1 month ago

@sanchezzzhak should it be 'requestConfig' = [ or 'requestConfig' => [, like = vs. =>?

I have this right now and it does not work:

        'clickhouse_pmm' => [
            'class'               => kak\clickhouse\Connection::class,
            'dsn'                 => $_ENV['CH_PMM_HOST'],
            'port'                => $_ENV['CH_PMM_PORT'],
            'database'            => $_ENV['CH_PMM_NAME'],  // use other database name
            'username'            => $_ENV['CH_PMM_USERNAME'],
            'password'            => $_ENV['CH_PMM_PASSWORD'],

            'enableSchemaCache'   => true,
            'schemaCache'         => 'cache',
            'schemaCacheDuration' => 86400,

            // Ref.: https://github.com/sanchezzzhak/kak-clickhouse/issues/45#issuecomment-507998623
            'requestConfig' => [
                'class' => 'kak\clickhouse\httpclient\Request',
                'options' => [
                    'sslVerifyPeer' => false,
                    CURLOPT_CONNECTTIMEOUT => 15,
                    CURLOPT_SSL_VERIFYPEER => false,
                    CURLOPT_SSL_VERIFYHOST => false,
                ],
            ],

            'enableLogging'        => false,
            'enableProfiling'      => false,
        ],
sanchezzzhak commented 1 month ago

try it like this:

'clickhouse_pmm' => [
    'class' => 'kak\clickhouse\Connection',
    'dsn' => sprintf(
        'https://%s:%s@%s:%d',
        $_ENV['CH_PMM_USERNAME'],
        $_ENV['CH_PMM_PASSWORD'],
        $_ENV['CH_PMM_HOST'],
        $_ENV['CH_PMM_PORT']   // 8443 ?
    ),
    'database' => $_ENV['CH_PMM_NAME'],
    'enableSchemaCache'   => true,
    'schemaCache'         => 'cache',
    'schemaCacheDuration' => 86400,

    'requestConfig' => [
        'class' => 'kak\clickhouse\httpclient\Request',
        'options' => [
            CURLOPT_SSL_VERIFYHOST => 0, // or false
            CURLOPT_SSL_VERIFYPEER => 0,  // or false
        ]
    ],

    'enableLogging'        => false,
    'enableProfiling'      => false,
]
zentavr commented 1 month ago

@sanchezzzhak thank you for the assistance very much. The example works.