Merge "Add SSL certificate support for http_check plugin"
diff --git a/collectd/files/collectd_http_check.conf b/collectd/files/collectd_http_check.conf
index d14af9f..c9e418e 100644
--- a/collectd/files/collectd_http_check.conf
+++ b/collectd/files/collectd_http_check.conf
@@ -11,6 +11,15 @@
   {%- if params.get('expected_content') %}
   ExpectedContent "{{ name }}" "{{ params.expected_content|replace('"','\\"') }}"
   {%- endif %}
+  {%- if params.verify is defined %}
+  Verify "{{ name }}" "{{ params.verify }}"
+  {%- endif %}
+  {%- if params.get('client_cert') %}
+  ClientCert "{{ name }}" "{{ params.client_cert }}"
+  {%- endif %}
+  {%- if params.get('client_key') %}
+  ClientKey "{{ name }}" "{{ params.client_key }}"
+  {%- endif %}
   {%- endfor %}
 </Module>
 {%- endif %}
diff --git a/collectd/files/plugin/collectd_http_check.py b/collectd/files/plugin/collectd_http_check.py
index 7747dc7..1ad78c5 100644
--- a/collectd/files/plugin/collectd_http_check.py
+++ b/collectd/files/plugin/collectd_http_check.py
@@ -32,6 +32,9 @@
         self.urls = {}
         self.expected_codes = {}
         self.expected_contents = {}
+        self.verify = {}
+        self.client_keys = {}
+        self.client_certs = {}
 
         self.timeout = 3
         self.max_retries = 2
@@ -58,6 +61,15 @@
                 self.expected_codes[node.values[0]] = int(node.values[1])
             elif node.key == 'ExpectedContent':
                 self.expected_contents[node.values[0]] = node.values[1]
+            elif node.key == 'Verify':
+                if node.values[1].lower() == 'false':
+                    self.verify[node.values[0]] = False
+                else:
+                    self.verify[node.values[0]] = node.values[1]
+            elif node.key == 'ClientCert':
+                self.client_certs[node.values[0]] = node.values[1]
+            elif node.key == 'ClientKey':
+                self.client_keys[node.values[0]] = node.values[1]
 
         for name, url in self.urls.items():
             session = requests.Session()
@@ -70,6 +82,13 @@
                     'https://',
                     requests.adapters.HTTPAdapter(max_retries=self.max_retries)
                 )
+
+                session.verify = self.verify.get(name, True)
+                if self.client_certs.get(name) and self.client_keys.get(name):
+                    session.cert = (self.client_certs.get(name), self.client_keys.get(name))
+                elif self.client_certs.get(name):
+                    session.cert = self.client_certs.get(name)
+
             self.sessions[name] = session
 
     def check_url(self, name, url):