diff --git a/public_html/deployment/classes/foremanapi.class.php b/public_html/deployment/classes/foremanapi.class.php index 2029c6d3a9baf6969ac48839335f68fe9d59db52..31fd9ddc8204005a40258e695b49ba405409dd24 100644 --- a/public_html/deployment/classes/foremanapi.class.php +++ b/public_html/deployment/classes/foremanapi.class.php @@ -247,8 +247,8 @@ class ForemanApi { curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - if (array_key_exists('ignore-ssl-error', $this->_aCfg) && !$this->_aCfg['ignore-ssl-error']){ - $this->log(__FUNCTION__ . " WARNING: SSL errors were ignored in the config.", 'warning'); + if (array_key_exists('ignore-ssl-error', $this->_aCfg) && $this->_aCfg['ignore-ssl-error']){ + $this->log(__FUNCTION__ . " WARNING: SSL errors will be ignored by config.", 'warning'); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); } diff --git a/public_html/deployment/classes/messenger.class.php b/public_html/deployment/classes/messenger.class.php index c41003b1f39190d51ce030208252ed4a97683413..52ed24e4edb0f3da42afb3e8e62c16eb5b091e18 100644 --- a/public_html/deployment/classes/messenger.class.php +++ b/public_html/deployment/classes/messenger.class.php @@ -12,6 +12,8 @@ class messenger { * @var type */ protected $_aCfg = array(); + + protected $sMessage = ''; /** * @@ -36,31 +38,45 @@ class messenger { } /** - * send a message to all targets - * @param string $sMessage + * send an email if _aCfg['email'] exists */ - public function sendMessage($sMessage) { - // echo '<pre>'.print_r($this->_aCfg, 1).'</pre>'.$sMessage.'<br>'; - + private function _sendEmail(){ if (array_key_exists('email', $this->_aCfg) && array_key_exists('to', $this->_aCfg['email']) ) { - preg_match('/^(.*)\n/', $sMessage, $aTmp); + preg_match('/^(.*)\n/', $this->sMessage, $aTmp); $sSubject = $aTmp[0]; - mail($this->_aCfg['email']['to'], $sSubject, $sMessage, "From: " . $this->_aCfg['email']['from'] . "\r\n" . + mail($this->_aCfg['email']['to'], $sSubject, $this->sMessage, "From: " . $this->_aCfg['email']['from'] . "\r\n" . "Reply-To: " . $this->_aCfg['email']['from'] . "\r\n" ); } + } + + /** + * send a message to slack if _aCfg['slack'] exists + */ + private function _sendToSlack(){ if (array_key_exists('slack', $this->_aCfg)) { require_once('./../vendor/shooker/shooker.php'); $shkr = new Shooker(); $shkr->setupIncoming($this->_aCfg['slack']['incomingurl']); - $shkr->sendMessage( - $sMessage, - $this->_aCfg['slack']['user'], - $this->_aCfg['slack']['icon'] - ); + $sUser=(array_key_exists('user', $this->_aCfg['slack'])? $this->_aCfg['slack']['user']: false); + $sIcon=(array_key_exists('icon', $this->_aCfg['slack'])? $this->_aCfg['slack']['icon']: false); + $shkr->sendMessage($this->sMessage, $sUser, $sIcon); } } + + /** + * send a message to all targets + * @param string $sMessage + */ + public function sendMessage($sMessage) { + $this->sMessage=$sMessage; + // echo '<pre>'.print_r($this->_aCfg, 1).'</pre>'.$sMessage.'<br>'; + $this->_sendEmail(); + $this->_sendToSlack(); + + } + } diff --git a/public_html/deployment/classes/project.class.php b/public_html/deployment/classes/project.class.php index 3231f40938ff90fdd85fe3b9ed46f42247924741..03cc31543cdec77880b987369b34db51896232f6 100644 --- a/public_html/deployment/classes/project.class.php +++ b/public_html/deployment/classes/project.class.php @@ -136,8 +136,13 @@ class project extends base { && array_key_exists('slack', $this->_aPrjConfig['messenger']) ){ $sSlack=$this->_aPrjConfig['messenger']['slack']; - $aConfig['slack']=$this->_aConfig['messenger']['slack']['presets'][$sSlack]; - } + $aConfig['slack']=array('incomingurl'=>$sSlack); + foreach(array('user', 'icon') as $sKey){ + if (array_key_exists($sKey, $this->_aConfig['messenger']['slack']['presets'][$sSlack])){ + $aConfig['slack'][$sKey]=$this->_aConfig['messenger']['slack']['presets'][$sSlack][$sKey]; + } + } + } if (array_key_exists('messenger', $this->_aPrjConfig) && array_key_exists('email', $this->_aPrjConfig['messenger']) @@ -154,9 +159,16 @@ class project extends base { if (!$this->oMessenger){ $this->oMessenger=new messenger($aConfig); } - $sText=$this->getLabel().': '.$sMessage."\n" - . "user: ".$this->oUser->getUsername()."\n" + + // add some metadata to the message body + $sText=$this->getLabel().': '.html_entity_decode($sMessage)."\n" + . t('page-login-username'). ": ".$this->oUser->getUsername()."\n" ; + if (isset($_SERVER) && is_array($_SERVER)) { + if(array_key_exists('HTTP_ORIGIN', $_SERVER)){ + $sText.= t('project-home').": <".$_SERVER['HTTP_ORIGIN'].'/deployment/'.$this->getId()."/>\n"; + } + } return $this->oMessenger->sendMessage($sText); } /** @@ -791,6 +803,13 @@ class project extends base { return $this->_aPrjConfig["description"]; } + /** + * get the id of the current project + * @return string + */ + public function getId(){ + return $this->_aConfig["id"]; + } /** * get deploy and queue infos for all phases * @return type @@ -3025,10 +3044,10 @@ class project extends base { ), ), ); - foreach($this->_aConfig['messenger']['slack']['presets'] as $sLabel=>$aSlackCfg){ - $bActive=$this->_aPrjConfig['messenger']['slack'] === $sLabel; - $aSelectSlack['options'][$sLabel] = array( - 'label' => $sLabel, + foreach($this->_aConfig['messenger']['slack']['presets'] as $sSlackUrl=>$aSlackCfg){ + $bActive=$this->_aPrjConfig['messenger']['slack'] === $sSlackUrl; + $aSelectSlack['options'][$sSlackUrl] = array( + 'label' => array_key_exists('label', $aSlackCfg) ? $aSlackCfg['label'] : $sSlackUrl, 'selected' => $bActive ? 'selected' : false, ); }