Skip to content
Commits on Source (2)
<?php <?php
/** /**
* mail_domain_barracuda_plugin * mail_domain_barracuda_plugin plugin
* *
* @author Gody - ORM 2016 * @author: LEVEILLE Cédric (web@oricom.org) - Oricom Internet Inc.
*/ */
class mail_domain_barracuda_plugin { class mail_domain_barracuda_plugin {
var $plugin_name = 'mail_domain_barracuda_plugin'; var $plugin_name = 'mail_domain_barracuda_plugin';
...@@ -14,7 +13,6 @@ class mail_domain_barracuda_plugin { ...@@ -14,7 +13,6 @@ class mail_domain_barracuda_plugin {
/* /*
This function is called when the plugin is loaded This function is called when the plugin is loaded
*/ */
function onLoad() { function onLoad() {
global $app; global $app;
...@@ -25,10 +23,15 @@ class mail_domain_barracuda_plugin { ...@@ -25,10 +23,15 @@ class mail_domain_barracuda_plugin {
$app->plugin->registerEvent('mail:mail_domain:on_after_insert', 'mail_domain_barracuda_plugin', 'mail_domain_barracuda_edit'); $app->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_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){ private function cuda($xml_params, $cuda_methode){
global $conf; global $conf;
...@@ -54,53 +57,68 @@ class mail_domain_barracuda_plugin { ...@@ -54,53 +57,68 @@ class mail_domain_barracuda_plugin {
return $resultat; return $resultat;
} }
/*
Function to edit domain name into barracuda by api
*/
function mail_domain_barracuda_edit($event_name, $page_form){ function mail_domain_barracuda_edit($event_name, $page_form){
global $app, $conf; global $app, $conf;
// Récupération des variables
$domain = $page_form->dataRecord["domain"] ; $domain = $page_form->dataRecord["domain"] ;
// If domain is in the excluded list, do nothing
if(!in_array($domain, $conf['bsf_excluded']))
{
$chk_active = $page_form->dataRecord["active"] ; $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 = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ".$page_form->dataRecord["server_id"]);
$server_name = $server_name['server_name']; $server_name = $server_name['server_name'];
// Ajout si checkbox non coché sinon suppression // Verify if domain is enable in ISPConfig
if ( $chk_active == 'y' ) { if ( $chk_active == 'y' ) {
// Generate XML
// Génération des xmls
$xml_params_add = new xmlrpcval (array ( $xml_params_add = new xmlrpcval (array (
"domain" => new xmlrpcval($domain, "string") "domain" => new xmlrpcval($domain, "string")
), "struct"); ), "struct");
$xml_params_set = new xmlrpcval (array ( $xml_params_set = new xmlrpcval (array (
"mta_relay_advanced_use_mx" => new xmlrpcval(1, "boolean"), "mta_relay_advanced_use_mx" => new xmlrpcval(0, "boolean"),
"mta_relay_advanced_host" => new xmlrpcval($server_name, "string"), "mta_relay_advanced_host" => new xmlrpcval($server_name, "string"),
"path" => new xmlrpcval($domain, "string"), "path" => new xmlrpcval($domain, "string"),
"type" => new xmlrpcval("domain", "string"), "type" => new xmlrpcval("domain", "string"),
), "struct"); ), "struct");
// TODO ajout gestion erreur en cas de plantage coté barracuda $add=$this->cuda($xml_params_add, 'domain.add'); // Add domain name to the barracuda
$add=$this->cuda($xml_params_add, 'domain.add'); $set=$this->cuda($xml_params_set, 'config.set'); // Update domain name destination inside barracuda
$set=$this->cuda($xml_params_set, 'config.set');
// TODO : Log in case of error (WIP)
} }
else { else {
$this->mail_domain_barracuda_del($event_name, $page_form) ; $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){ function mail_domain_barracuda_del($event_name, $page_form){
global $app, $conf; global $app, $conf;
// Récupération des variables
$domain = $page_form->dataRecord["domain"] ; $domain = $page_form->dataRecord["domain"] ;
// Génération xmls // If domain is in the excluded list, do nothing
if(!in_array($domain, $conf['bsf_excluded']))
{
// Generate XML
$xml_params_del = new xmlrpcval (array ( $xml_params_del = new xmlrpcval (array (
"domain" => new xmlrpcval($domain, "string") "domain" => new xmlrpcval($domain, "string")
), "struct"); ), "struct");
// Suppresion domaine du barracuda // Remove domain name from the barracuda
// TODO ajout gestion erreur en cas de plantage coté barracuda
$del=$this->cuda($xml_params_del, 'domain.delete'); $del=$this->cuda($xml_params_del, 'domain.delete');
// TODO : Log in case of error (WIP)
}
} }
} // end class } // end class
...@@ -108,8 +126,6 @@ class mail_domain_barracuda_plugin { ...@@ -108,8 +126,6 @@ class mail_domain_barracuda_plugin {
//################# XMLRPC fonction and Class ####################### //################# XMLRPC fonction and Class #######################
// by Edd Dumbill (C) 1999-2002 // by Edd Dumbill (C) 1999-2002
......