From 33d071edeb006b27ae1ca864b5fc55973aad9aec Mon Sep 17 00:00:00 2001 From: Nicolas Roman Date: Tue, 2 Apr 2019 11:37:04 +0200 Subject: [PATCH] added select element to link a new alias to a domain --- inc/webadmin-edit.php | 252 +++++++++++++++++++++--------------------- 1 file changed, 129 insertions(+), 123 deletions(-) diff --git a/inc/webadmin-edit.php b/inc/webadmin-edit.php index b52a528..fa63863 100644 --- a/inc/webadmin-edit.php +++ b/inc/webadmin-edit.php @@ -1,11 +1,11 @@ * @author Thomas Martin @@ -68,10 +68,10 @@ if (isset($params[2]) && $params[2] == "delete") { sudoexec($exec_cmd, $exec_output, $exec_return); if ($exec_return == 0) { - if (! $bdd->del_serveralias($serveralias)) + if (! $bdd->del_serveralias($serveralias)) print "

La suppression a échouée. Veuillez contacter votre administrateur.

"; printf ('

Alias %s est supprimé.

', $serveralias['alias']); - } else + } else print "

La suppression a échouée. Veuillez contacter votre administrateur.

"; } @@ -108,141 +108,147 @@ elseif (isset($params[2]) && $params[2] == "add") { include_once EVOADMIN_BASE . '../tpl/header.tpl.php'; include_once EVOADMIN_BASE . '../tpl/menu.tpl.php'; - $form = new FormPage("Ajout d'un alias", FALSE); - $form->addField('domain_alias', new DomainInputFormField("Alias", TRUE)); + $cmd_servername = 'web-add.sh list-servername' . ' ' . htmlspecialchars(basename($_SERVER['REDIRECT_URL'])); + sudoexec($cmd_servername, $data_output_servername, $exec_return_servername); - if (!empty($_POST)) { - $form->isCurrentPage(TRUE); - $form->initFields(); - - if ($form->verify(TRUE)) { - if ($conf['cluster']) { - if (is_mcluster_mode()) { - // If the user has not yet selected a cluster, redirect-it to home page. - if (empty($_SESSION['cluster'])) { - http_redirect('/'); - } - $cache = str_replace('%cluster_name%', $_SESSION['cluster'], $conf['cache']); - } - else { - $cache = $conf['cache']; - } - $bdd = new bdd(); - $bdd->open($cache); - - $serveralias = array ( - 'domain' => htmlspecialchars(basename($_SERVER['REDIRECT_URL'])), - 'alias' => $form->getField('domain_alias')->getValue(), - ); - - $account_name=$serveralias['domain']; - $account = $bdd->get_account($account_name); - - - if (sizeof($account) == 0) - die("Anomalie... Contactez votre administrateur."); - - $master = $bdd->get_server_from_roleid($account['id_master']); - $slave = $bdd->get_server_from_roleid($account['id_slave']); - - - if ( $bdd->is_serveralias( $account_name, $serveralias['alias'] ) == 0 ) { - - /* web-add-cluster addalias */ - $exec_cmd = 'web-add-cluster.sh add-alias '.$serveralias['domain'].' '.$serveralias['alias'].' '.$master.' '.$slave; - sudoexec($exec_cmd, $exec_output, $exec_return); - - - - if ($exec_return == 0) { - /* Ajout BDD */ - $bdd->add_serveralias($serveralias); - - domain_add($serveralias['alias'], gethostbyname($master) , false); - - # Si le compte en question est en replication temps - # reel, il faut faire un restart manuel de lsyncd - # pour prendre en compte le nouveau domaine. - if ($account['replication'] == "realtime") { - mail('tech@evolix.fr', "[TAF] Redemarrer lsyncd sur $master", wordwrap('killer tous les processus lsyncd lancé par vmail pour le compte '.$account['name'].' et les relancer (cf. la ligne correspondante à ce compte dans la crontab de vmail).\n', 70)); - } - - print "
"; - printf ('

L\'alias %s du domaine %s a bien été créé

', $serveralias['alias'], $serveralias['domain']); - printf ('

Retour à la liste des alias

', $_SERVER['REDIRECT_URL']); - print "
"; - } else { - print "
"; - printf ('

Echec dans la creation de l\'alias %s du domaine %s

', $serveralias['alias'], $serveralias['domain']); - printf ('

Retour à la liste des alias

', $_SERVER['REDIRECT_URL']); - print "
"; - } - } else { - print "
"; - printf ('

Alias %s du domaine %s deja existant !

', $serveralias['alias'], $serveralias['domain']); - printf ('

Retour à la liste des alias

', $_SERVER['REDIRECT_URL']); - print "
"; + $form = new FormPage("Ajout d'un alias", FALSE); + $form->addField('domain_alias', new DomainInputFormField("Alias", TRUE)); + $form->addField('domain_linked', new SelectFormField("Domaine lié", True, $data_output_servername)); + if (!empty($_POST)) { + $form->isCurrentPage(TRUE); + $form->initFields(); + + if ($form->verify(TRUE)) { + if ($conf['cluster']) { + if (is_mcluster_mode()) { + // If the user has not yet selected a cluster, redirect-it to home page. + if (empty($_SESSION['cluster'])) { + http_redirect('/'); } + $cache = str_replace('%cluster_name%', $_SESSION['cluster'], $conf['cache']); } else { - $serveralias = array ( - 'domain' => $params[1], - 'alias' => $form->getField('domain_alias')->getValue(), - ); + $cache = $conf['cache']; + } + $bdd = new bdd(); + $bdd->open($cache); - $account_name=$serveralias['domain']; + $serveralias = array ( + 'domain' => htmlspecialchars(basename($_SERVER['REDIRECT_URL'])), + 'alias' => $form->getField('domain_alias')->getValue(), + ); - $is_alias_present = check_occurence_name($serveralias['alias']); + $account_name=$serveralias['domain']; + $account = $bdd->get_account($account_name); - if (!$is_alias_present) { - $exec_cmd = 'web-add.sh add-alias ' . $serveralias['domain'] . ' ' . $serveralias['alias']; - sudoexec($exec_cmd, $exec_output, $exec_return); - if ($exec_return == 0) { - //domain_add($serveralias['alias'], gethostbyname($master) , false); TODO avec l'IP du load balancer - print "
"; - printf ('

L\'alias %s du domaine %s a bien été créé

', $serveralias['alias'], $serveralias['domain']); - printf ('

Retour à la liste des alias

', $redirect_url); - print "
"; - } - else { - print "
"; - printf ('

Echec dans la creation de l\'alias %s du domaine %s

', $serveralias['alias'], $serveralias['domain']); - printf ('

Retour à la liste des alias

', $redirect_url); - print "
"; - } - } - else { - print "
"; - printf ('

Echec dans la creation de l\'alias %s du domaine %s

', $serveralias['alias'], $serveralias['domain']); - print ('

L\'alias existe dans d\'autres vhosts.'); - printf ('

Retour à la liste des alias

', $redirect_url); - print "
"; + + if (sizeof($account) == 0) + die("Anomalie... Contactez votre administrateur."); + + $master = $bdd->get_server_from_roleid($account['id_master']); + $slave = $bdd->get_server_from_roleid($account['id_slave']); + + + if ( $bdd->is_serveralias( $account_name, $serveralias['alias'] ) == 0 ) { + + /* web-add-cluster addalias */ + $exec_cmd = 'web-add-cluster.sh add-alias '.$serveralias['domain'].' '.$serveralias['alias'].' '.$master.' '.$slave; + sudoexec($exec_cmd, $exec_output, $exec_return); + + + + if ($exec_return == 0) { + /* Ajout BDD */ + $bdd->add_serveralias($serveralias); + + domain_add($serveralias['alias'], gethostbyname($master) , false); + + # Si le compte en question est en replication temps + # reel, il faut faire un restart manuel de lsyncd + # pour prendre en compte le nouveau domaine. + if ($account['replication'] == "realtime") { + mail('tech@evolix.fr', "[TAF] Redemarrer lsyncd sur $master", wordwrap('killer tous les processus lsyncd lancé par vmail pour le compte '.$account['name'].' et les relancer (cf. la ligne correspondante à ce compte dans la crontab de vmail).\n', 70)); + } + + print "
"; + printf ('

L\'alias %s du domaine %s a bien été créé

', $serveralias['alias'], $serveralias['domain']); + printf ('

Retour à la liste des alias

', $_SERVER['REDIRECT_URL']); + print "
"; + } else { + print "
"; + printf ('

Echec dans la creation de l\'alias %s du domaine %s

', $serveralias['alias'], $serveralias['domain']); + printf ('

Retour à la liste des alias

', $_SERVER['REDIRECT_URL']); + print "
"; } + } else { + print "
"; + printf ('

Alias %s du domaine %s deja existant !

', $serveralias['alias'], $serveralias['domain']); + printf ('

Retour à la liste des alias

', $_SERVER['REDIRECT_URL']); + print "
"; + } } else { - print "

Ajout d'un serveralias


"; - print "
"; - print "
"; - print " Ajout d'un serveralias"; - print $form; - print "

"; - print "
"; - print "
"; + $serveralias = array ( + 'domain' => htmlspecialchars(basename($_SERVER['REDIRECT_URL'])), + 'alias' => $form->getField('domain_alias')->getValue(), + 'domain_linked' => $data_output_servername[$form->getField('domain_linked')->getValue()], + ); + $account_name=$serveralias['domain']; + + $is_alias_present = check_occurence_name($serveralias['alias']); + + if (!$is_alias_present) { + $exec_cmd = 'web-add.sh add-alias ' . $serveralias['domain'] . ' ' . $serveralias['alias'] . ' ' . $serveralias['domain_linked']; + sudoexec($exec_cmd, $exec_output, $exec_return); + + if ($exec_return == 0) { + //domain_add($serveralias['alias'], gethostbyname($master) , false); TODO avec l'IP du load balancer + print "
"; + printf ('

L\'alias %s du domaine %s a bien été créé

', $serveralias['alias'], $serveralias['domain']); + printf ('

Retour à la liste des alias

', $_SERVER['REDIRECT_URL']); + print "
"; + } + else { + print "
"; + printf ('

Echec dans la creation de l\'alias %s du domaine %s

', $serveralias['alias'], $serveralias['domain']); + printf ('

Retour à la liste des alias

', $_SERVER['REDIRECT_URL']); + print "
"; + } + } + else { + print "
"; + printf ('

Echec dans la creation de l\'alias %s du domaine %s

', $serveralias['alias'], $serveralias['domain']); + print ('

L\'alias existe dans d\'autres vhosts.'); + printf ('

Retour à la liste des alias

', $_SERVER['REDIRECT_URL']); + print "
"; + } } - } else { - print "

Ajout d'un serveralias


"; - print "
"; - print "
"; - print " Ajout d'un serveralias"; - print $form; - print "

"; - print "
"; - print "
"; + } + else { + print "

Ajout d'un serveralias


"; + print "
"; + print "
"; + print " Ajout d'un serveralias"; + print $form; + print "

"; + print "
"; + print "
"; } + } else { + print "

Ajout d'un serveralias


"; + print "
"; + print "
"; + print " Ajout d'un serveralias"; + print $form; + print "

"; + print "
"; + print "
"; + + } include_once EVOADMIN_BASE . '../tpl/footer.tpl.php'; }