From 2907b5ea7660bd646f4f113b626e372fd4f2c965 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LEVEILLE=20C=C3=A9dric?= Date: Thu, 21 Dec 2017 11:07:14 -0500 Subject: [PATCH] Add php file update --- mail_domain_barracuda_plugin.inc.php | 104 +++++++++++++++------------ 1 file changed, 60 insertions(+), 44 deletions(-) diff --git a/mail_domain_barracuda_plugin.inc.php b/mail_domain_barracuda_plugin.inc.php index da99966..b9e36f4 100644 --- a/mail_domain_barracuda_plugin.inc.php +++ b/mail_domain_barracuda_plugin.inc.php @@ -1,20 +1,18 @@ plugin->registerEvent('mail:mail_domain:on_after_insert', 'mail_domain_barracuda_plugin', 'mail_domain_barracuda_edit'); $app->plugin->registerEvent('mail:mail_domain:on_after_update', 'mail_domain_barracuda_plugin', 'mail_domain_barracuda_edit'); - $app->plugin->registerEvent('mail:mail_domain:on_after_delete', 'mail_domain_barracuda_plugin', 'mail_domain_barracuda_del'); + $app->plugin->registerEvent('mail:mail_domain:on_after_delete', 'mail_domain_barracuda_plugin', 'mail_domain_barracuda_del'); + + $app->plugin->registerEvent('mailpub:mail_domain:on_after_insert', 'mail_domain_barracuda_plugin', 'mail_domain_barracuda_edit'); + $app->plugin->registerEvent('mailpub:mail_domain:on_after_update', 'mail_domain_barracuda_plugin', 'mail_domain_barracuda_edit'); + $app->plugin->registerEvent('mailpub:mail_domain:on_after_delete', 'mail_domain_barracuda_plugin', 'mail_domain_barracuda_del'); } + /* - function to create and edit domain into barracuda by api + Function to create domain name into barracuda by api */ private function cuda($xml_params, $cuda_methode){ global $conf; $xml_methode = new xmlrpcmsg ($cuda_methode); - $xml_methode->addParam($xml_params); + $xml_methode ->addParam($xml_params); $barra_con = new xmlrpc_client("/cgi-mod/api.cgi?password={$conf['bsf_password']}", $conf['bsf_hostname']); $barra_con->setDebug(0); - $result = $barra_con->send($xml_methode); + $result = $barra_con ->send($xml_methode); if (!$result->faultcode()) { @@ -54,53 +57,68 @@ class mail_domain_barracuda_plugin { return $resultat; } + + /* + Function to edit domain name into barracuda by api + */ function mail_domain_barracuda_edit($event_name, $page_form){ global $app, $conf; - // Récupération des variables $domain = $page_form->dataRecord["domain"] ; - $chk_active = $page_form->dataRecord["active"] ; - $server_name = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ".$page_form->dataRecord["server_id"]); - $server_name = $server_name['server_name']; - // Ajout si checkbox non coché sinon suppression - if ( $chk_active == 'y' ) { - - // Génération des xmls - $xml_params_add = new xmlrpcval (array ( - "domain" => new xmlrpcval($domain, "string") + // If domain is in the excluded list, do nothing + if(!in_array($domain, $conf['bsf_excluded'])) + { + $chk_active = $page_form->dataRecord["active"] ; + $server_name = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ".$page_form->dataRecord["server_id"]); + $server_name = $server_name['server_name']; + + // Verify if domain is enable in ISPConfig + if ( $chk_active == 'y' ) { + // Generate XML + $xml_params_add = new xmlrpcval (array ( + "domain" => new xmlrpcval($domain, "string") + ), "struct"); + + $xml_params_set = new xmlrpcval (array ( + "mta_relay_advanced_use_mx" => new xmlrpcval(0, "boolean"), + "mta_relay_advanced_host" => new xmlrpcval($server_name, "string"), + "path" => new xmlrpcval($domain, "string"), + "type" => new xmlrpcval("domain", "string"), ), "struct"); - - $xml_params_set = new xmlrpcval (array ( - "mta_relay_advanced_use_mx" => new xmlrpcval(1, "boolean"), - "mta_relay_advanced_host" => new xmlrpcval($server_name, "string"), - "path" => new xmlrpcval($domain, "string"), - "type" => new xmlrpcval("domain", "string"), - ), "struct"); - - // TODO ajout gestion erreur en cas de plantage coté barracuda - $add=$this->cuda($xml_params_add, 'domain.add'); - $set=$this->cuda($xml_params_set, 'config.set'); - } - else { - $this->mail_domain_barracuda_del($event_name, $page_form) ; + + $add=$this->cuda($xml_params_add, 'domain.add'); // Add domain name to the barracuda + $set=$this->cuda($xml_params_set, 'config.set'); // Update domain name destination inside barracuda + + // TODO : Log in case of error (WIP) + } + else { + $this->mail_domain_barracuda_del($event_name, $page_form) ; + } } } + /* + Function to remove domain name from the barracuda by api + */ function mail_domain_barracuda_del($event_name, $page_form){ global $app, $conf; - // Récupération des variables $domain = $page_form->dataRecord["domain"] ; - // Génération xmls - $xml_params_del = new xmlrpcval (array ( - "domain" => new xmlrpcval($domain, "string") - ), "struct"); - - // Suppresion domaine du barracuda - // TODO ajout gestion erreur en cas de plantage coté barracuda - $del=$this->cuda($xml_params_del, 'domain.delete'); + // If domain is in the excluded list, do nothing + if(!in_array($domain, $conf['bsf_excluded'])) + { + // Generate XML + $xml_params_del = new xmlrpcval (array ( + "domain" => new xmlrpcval($domain, "string") + ), "struct"); + + // Remove domain name from the barracuda + $del=$this->cuda($xml_params_del, 'domain.delete'); + + // TODO : Log in case of error (WIP) + } } } // end class @@ -108,8 +126,6 @@ class mail_domain_barracuda_plugin { - - //################# XMLRPC fonction and Class ####################### // by Edd Dumbill (C) 1999-2002 -- GitLab