OSDN Git Service

Search static CA bundle files and set curl option for the CA bundle.
authorTatsuki Sugiura <sugi@nemui.org>
Tue, 22 Mar 2016 09:26:39 +0000 (18:26 +0900)
committerTatsuki Sugiura <sugi@nemui.org>
Tue, 22 Mar 2016 09:26:39 +0000 (18:26 +0900)
lib/osdn/cli/overrides.rb

index 6990268..165d309 100644 (file)
@@ -5,6 +5,22 @@ module Typhoeus
     alias_method :get_orig, :get
     def get(*args)
       easy = get_orig(*args)
+      if ENV['CURL_CA_BUNDLE']
+        Ethon::Curl.set_option(:cainfo, ENV['CURL_CA_BUNDLE'], easy.handle)
+      else
+        ["#{ENV['HOME']}/.config/osdn/ca-certificates.crt"] + %w(
+           /usr/local/share/curl/curl-ca-bundle.crt
+           /usr/share/curl/ca-bundle.crt
+           /etc/ssl/certs/ca-certificates.crt
+           /etc/ssl/certs/ca-certificates.pem
+           /etc/pki/tls/certs/ca-bundle.crt
+           /etc/pki/tls/certs/ca-bundle.pem
+           /etc/ssl/ca-bundle.pem
+        ).each do |ca|
+          next unless File.exists? ca
+          Ethon::Curl.set_option(:cainfo, ca, easy.handle)
+        end
+      end
       if OSDN::CLI._show_progress
         Ethon::Curl.set_option(:noprogress, false, easy.handle)
       else