From e0929fe3c2245bdcc7118aa2440802ab14203ba2 Mon Sep 17 00:00:00 2001
From: loiclau <loic.lau@gmail.com>
Date: Mon, 5 Feb 2018 11:02:41 +0100
Subject: [PATCH] Add CURLOPT_SSL_ to bypass certificate (#6027)

* Add CURLOPT_SSL_ to bypass certificat

* feat(kb) add ignore ssl certificate option
---
 www/class/centreon-knowledge/wikiApi.class.php              | 6 ++++++
 www/include/Administration/parameters/DB-Func.php           | 4 +++-
 .../parameters/knowledgeBase/formKnowledgeBase.html         | 4 ++++
 .../parameters/knowledgeBase/formKnowledgeBase.php          | 1 +
 .../Administration/parameters/knowledgeBase/help.php        | 4 ++++
 5 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/www/class/centreon-knowledge/wikiApi.class.php b/www/class/centreon-knowledge/wikiApi.class.php
index 32759cd838..952c476441 100644
--- a/www/class/centreon-knowledge/wikiApi.class.php
+++ b/www/class/centreon-knowledge/wikiApi.class.php
@@ -50,6 +50,7 @@ class WikiApi
     private $loggedIn;
     private $tokens;
     private $cookies;
+    private $noSslCertificate;
 
     /**
      * WikiApi constructor.
@@ -62,6 +63,7 @@ class WikiApi
         $this->url = $config['kb_wiki_url'] . '/api.php';
         $this->username = $config['kb_wiki_account'];
         $this->password = $config['kb_wiki_password'];
+        $this->noSslCertificate = $config['kb_wiki_certificate'];
         $this->curl = $this->getCurl();
         $this->version = $this->getWikiVersion();
         $this->cookies = array();
@@ -74,6 +76,10 @@ class WikiApi
         curl_setopt($curl, CURLOPT_URL, $this->url);
         curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
         curl_setopt($curl, CURLOPT_POST, true);
+        if($this->noSslCertificate == 1){
+            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
+            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
+        }
 
         return $curl;
     }
diff --git a/www/include/Administration/parameters/DB-Func.php b/www/include/Administration/parameters/DB-Func.php
index 9c28f11b3c..46248a4413 100644
--- a/www/include/Administration/parameters/DB-Func.php
+++ b/www/include/Administration/parameters/DB-Func.php
@@ -925,7 +925,9 @@ function updateBackupConfigData($db, $form, $centreon)
 function updateKnowledgeBaseData($db, $form, $centreon)
 {
     $ret = $form->getSubmitValues();
-
+    if (!isset($ret['kb_wiki_certificate'])){
+        $ret['kb_wiki_certificate'] = 0;
+    }
     foreach ($ret as $key => $value) {
         if (preg_match('/^kb_/', $key)) {
                 updateOption($db, $key, $value);
diff --git a/www/include/Administration/parameters/knowledgeBase/formKnowledgeBase.html b/www/include/Administration/parameters/knowledgeBase/formKnowledgeBase.html
index 8b3840b8f5..9a03dd8766 100644
--- a/www/include/Administration/parameters/knowledgeBase/formKnowledgeBase.html
+++ b/www/include/Administration/parameters/knowledgeBase/formKnowledgeBase.html
@@ -47,6 +47,10 @@
             <td class="FormRowField"><img class="helpTooltip" name="tip_knowledge_wiki_account_password">&nbsp;{$form.kb_wiki_password.label}</td>
             <td class="FormRowValue">{$form.kb_wiki_password.html}</td>
         </tr>
+        <tr class="list_two">
+            <td class="FormRowField"><img class="helpTooltip" name="tip_knowledge_wiki_certificate">&nbsp;{$form.kb_wiki_certificate.label}</td>
+            <td class="FormRowValue">{$form.kb_wiki_certificate.html}</td>
+        </tr>
     </table>
     {if !$valid}
     <div id="validForm"><p>{$form.submitC.html}&nbsp;&nbsp;&nbsp;{$form.reset.html}</p></div>
diff --git a/www/include/Administration/parameters/knowledgeBase/formKnowledgeBase.php b/www/include/Administration/parameters/knowledgeBase/formKnowledgeBase.php
index 80e6e2a9ed..9b028da08a 100644
--- a/www/include/Administration/parameters/knowledgeBase/formKnowledgeBase.php
+++ b/www/include/Administration/parameters/knowledgeBase/formKnowledgeBase.php
@@ -72,6 +72,7 @@ $form->addElement('text', 'kb_wiki_account', _("Knowledge wiki account (with del
 $form->addRule('kb_wiki_account', _("Mandatory field"), 'required');
 $form->addElement('password', 'kb_wiki_password', _("Knowledge wiki account password"));
 $form->addRule('kb_wiki_password', _("Mandatory field"), 'required');
+$form->addElement('checkbox', 'kb_wiki_certificate', 'ssl certificate', _("Ignore ssl certificate"));
 
 $form->addElement('hidden', 'gopt_id');
 $redirect = $form->addElement('hidden', 'o');
diff --git a/www/include/Administration/parameters/knowledgeBase/help.php b/www/include/Administration/parameters/knowledgeBase/help.php
index 6fb26733df..0c82677be8 100644
--- a/www/include/Administration/parameters/knowledgeBase/help.php
+++ b/www/include/Administration/parameters/knowledgeBase/help.php
@@ -33,6 +33,10 @@ $help['tip_knowledge_wiki_account'] = dgettext(
     'help',
     "Wiki account with delete right."
 );
+$help['tip_knowledge_wiki_certificate'] = dgettext(
+    'help',
+    "Ignore ssl certificate."
+);
 $help['tip_knowledge_wiki_account_password'] = dgettext(
     'help',
     "Wiki account password."
-- 
GitLab