2015-08-25 16:54:13 +02:00
< ? php
/**
2019-04-02 11:37:04 +02:00
* Apache VirtualHost Management Page
2015-08-25 16:54:13 +02:00
*
* Copyright ( c ) 2009 Evolix - Tous droits reserves
*
2019-04-02 11:37:04 +02:00
* vim : expandtab softtabstop = 4 tabstop = 4 shiftwidth = 4 showtabline = 2
2015-08-25 16:54:13 +02:00
*
* @ author Gregory Colpart < reg @ evolix . fr >
* @ author Thomas Martin < tmartin @ evolix . fr >
* @ author Sebastien Palma < spalma @ evolix . fr >
* @ version 1.0
*/
require_once EVOADMIN_BASE . '../lib/bdd.php' ;
2015-08-31 15:17:10 +02:00
require_once EVOADMIN_BASE . '../lib/domain.php' ;
2015-08-25 16:54:13 +02:00
global $conf ;
2019-04-01 17:09:05 +02:00
$redirect_url = " /webadmin/ " . $params [ 1 ] . " /alias/ " ;
if ( isset ( $params [ 2 ]) && $params [ 2 ] == " delete " ) {
2019-04-18 18:09:59 +02:00
if (( isset ( $params [ 3 ]) && $params [ 3 ] == " " ) || ( isset ( $params [ 4 ]) && $params [ 4 ] == " " )) http_redirect ( $redirect_url );
2015-08-25 16:54:13 +02:00
include_once EVOADMIN_BASE . '../tpl/header.tpl.php' ;
include_once EVOADMIN_BASE . '../tpl/menu.tpl.php' ;
2019-04-18 18:09:59 +02:00
$alias = $params [ 4 ];
2015-08-25 16:54:13 +02:00
2019-04-01 17:09:05 +02:00
if ( isset ( $_POST [ " confirm-delete-alias " ])) {
2015-08-25 16:54:13 +02:00
print " <center> " ;
print " <p>Suppression de $alias ...</p> " ;
$serveralias = array (
2019-04-01 17:09:05 +02:00
'domain' => $params [ 1 ],
2019-04-18 18:09:59 +02:00
'linked_domain' => $params [ 3 ],
2015-08-25 16:54:13 +02:00
'alias' => $alias
);
if ( $conf [ 'cluster' ]) {
2015-08-31 15:17:10 +02:00
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' ];
}
2015-08-25 16:54:13 +02:00
$bdd = new bdd ();
$bdd -> open ( $cache );
2015-08-31 15:17:10 +02:00
$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' ]);
/* web-add-cluster addalias */
$exec_cmd = 'web-add-cluster.sh del-alias ' . $serveralias [ 'domain' ] . ' ' . $serveralias [ 'alias' ] . ' ' . $master . ' ' . $slave ;
sudoexec ( $exec_cmd , $exec_output , $exec_return );
if ( $exec_return == 0 ) {
2019-04-02 11:37:04 +02:00
if ( ! $bdd -> del_serveralias ( $serveralias ))
2015-08-31 15:17:10 +02:00
print " <p>La suppression a échouée. Veuillez contacter votre administrateur.</p> " ;
printf ( '<p>Alias %s est supprimé.</p>' , $serveralias [ 'alias' ]);
2019-04-02 11:37:04 +02:00
} else
2015-08-25 16:54:13 +02:00
print " <p>La suppression a échouée. Veuillez contacter votre administrateur.</p> " ;
2015-08-31 15:17:10 +02:00
2017-08-22 18:32:33 +02:00
}
else {
2019-04-18 18:09:59 +02:00
$exec_cmd = 'web-add.sh del-alias ' . $serveralias [ 'domain' ] . ' ' . $serveralias [ 'alias' ] . ' ' . $serveralias [ 'linked_domain' ];
2017-08-22 18:32:33 +02:00
sudoexec ( $exec_cmd , $exec_output , $exec_return );
if ( $exec_return == 0 ) {
printf ( '<p>Alias %s est supprimé.</p>' , $serveralias [ 'alias' ]);
2019-04-01 17:09:05 +02:00
} else
2019-04-18 18:09:59 +02:00
print " <p>La suppression a échoué. Veuillez contacter votre administrateur.</p> " ;
2017-08-22 18:32:33 +02:00
2015-08-25 16:54:13 +02:00
}
2019-04-01 17:09:05 +02:00
printf ( '<p><a href="%s">Retour à la liste des alias</a></p>' , $redirect_url );
2015-08-25 16:54:13 +02:00
print " </center> " ;
2019-04-01 17:09:05 +02:00
} else {
2015-08-25 16:54:13 +02:00
print " <center> " ;
2019-04-01 17:09:05 +02:00
print " <form name= \" form-confirm-delete-alias \" id= \" form-confirm-delete-alias \" action= \" \" method= \" POST \" > " ;
2015-08-25 16:54:13 +02:00
print " <p>Confirmez vous la suppression de $alias ?</p> " ;
2019-04-01 17:09:05 +02:00
print " <p><input type= \" hidden \" name= \" confirm-delete-alias \" value= \" confirm \" > " ;
print " <p><input type= \" submit \" value= \" Confirmer la suppression \" / style= \" margin-left:0px; \" ></p> " ;
print " </form> " ;
printf ( '<p><a href="%s">Retour à la liste des alias</a></p>' , $redirect_url );
2015-08-25 16:54:13 +02:00
print " </center> " ;
}
include_once EVOADMIN_BASE . '../tpl/footer.tpl.php' ;
2019-04-01 17:09:05 +02:00
}
elseif ( isset ( $params [ 2 ]) && $params [ 2 ] == " add " ) {
2015-08-25 16:54:13 +02:00
require_once EVOADMIN_BASE . '../evolibs/Form.php' ;
include_once EVOADMIN_BASE . '../tpl/header.tpl.php' ;
include_once EVOADMIN_BASE . '../tpl/menu.tpl.php' ;
2019-04-08 17:47:59 +02:00
$cmd_servername = 'web-add.sh list-servername' . ' ' . $params [ 1 ];
2019-04-02 11:37:04 +02:00
sudoexec ( $cmd_servername , $data_output_servername , $exec_return_servername );
2015-08-25 16:54:13 +02:00
2019-04-02 11:37:04 +02:00
$form = new FormPage ( " Ajout d'un alias " , FALSE );
$form -> addField ( 'domain_alias' , new DomainInputFormField ( " Alias " , TRUE ));
2019-04-23 10:32:38 +02:00
$form -> addField ( 'domain_linked' , new SelectFormField ( " Servername lié " , True , $data_output_servername ));
2015-08-25 16:54:13 +02:00
2019-04-02 11:37:04 +02:00
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 ( '/' );
2015-08-31 15:17:10 +02:00
}
2019-04-02 11:37:04 +02:00
$cache = str_replace ( '%cluster_name%' , $_SESSION [ 'cluster' ], $conf [ 'cache' ]);
}
else {
$cache = $conf [ 'cache' ];
}
$bdd = new bdd ();
$bdd -> open ( $cache );
2015-08-25 16:54:13 +02:00
2019-04-02 11:37:04 +02:00
$serveralias = array (
'domain' => htmlspecialchars ( basename ( $_SERVER [ 'REDIRECT_URL' ])),
'alias' => $form -> getField ( 'domain_alias' ) -> getValue (),
);
2015-08-25 16:54:13 +02:00
2019-04-02 11:37:04 +02:00
$account_name = $serveralias [ 'domain' ];
$account = $bdd -> get_account ( $account_name );
2015-08-31 15:17:10 +02:00
2015-08-25 16:54:13 +02:00
2019-04-02 11:37:04 +02:00
if ( sizeof ( $account ) == 0 )
die ( " Anomalie... Contactez votre administrateur. " );
2015-08-25 16:54:13 +02:00
2019-04-02 11:37:04 +02:00
$master = $bdd -> get_server_from_roleid ( $account [ 'id_master' ]);
$slave = $bdd -> get_server_from_roleid ( $account [ 'id_slave' ]);
2015-08-25 16:54:13 +02:00
2019-04-02 11:37:04 +02:00
if ( $bdd -> is_serveralias ( $account_name , $serveralias [ 'alias' ] ) == 0 ) {
2015-08-25 16:54:13 +02:00
2019-04-02 11:37:04 +02:00
/* 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 );
2015-08-25 16:54:13 +02:00
2015-08-31 15:17:10 +02:00
2019-04-02 11:37:04 +02:00
if ( $exec_return == 0 ) {
/* Ajout BDD */
$bdd -> add_serveralias ( $serveralias );
2015-08-31 15:17:10 +02:00
2019-04-02 11:37:04 +02:00
domain_add ( $serveralias [ 'alias' ], gethostbyname ( $master ) , false );
2015-08-31 15:17:10 +02:00
2019-04-02 11:37:04 +02:00
# 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 ));
2015-08-31 15:17:10 +02:00
}
2019-04-02 11:37:04 +02:00
print " <center> " ;
printf ( '<p>L\'alias %s du domaine %s a bien été créé</p>' , $serveralias [ 'alias' ], $serveralias [ 'domain' ]);
printf ( '<p><a href="%s">Retour à la liste des alias</a></p>' , $_SERVER [ 'REDIRECT_URL' ]);
print " </center> " ;
2015-08-25 16:54:13 +02:00
} else {
print " <center> " ;
2019-04-02 11:37:04 +02:00
printf ( '<p>Echec dans la creation de l\'alias %s du domaine %s</p>' , $serveralias [ 'alias' ], $serveralias [ 'domain' ]);
2015-08-31 15:17:10 +02:00
printf ( '<p><a href="%s">Retour à la liste des alias</a></p>' , $_SERVER [ 'REDIRECT_URL' ]);
2015-08-25 16:54:13 +02:00
print " </center> " ;
}
2019-04-02 11:37:04 +02:00
} else {
print " <center> " ;
printf ( '<p>Alias %s du domaine %s deja existant !</p>' , $serveralias [ 'alias' ], $serveralias [ 'domain' ]);
printf ( '<p><a href="%s">Retour à la liste des alias</a></p>' , $_SERVER [ 'REDIRECT_URL' ]);
print " </center> " ;
2015-08-25 16:54:13 +02:00
}
2019-04-02 11:37:04 +02:00
}
else {
$serveralias = array (
2019-04-02 11:37:04 +02:00
'domain' => $params [ 1 ],
2019-04-02 11:37:04 +02:00
'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 " <center> " ;
printf ( '<p>L\'alias %s du domaine %s a bien été créé</p>' , $serveralias [ 'alias' ], $serveralias [ 'domain' ]);
2019-04-17 10:09:10 +02:00
printf ( '<p><a href="%s">Retour à la liste des alias</a></p>' , $redirect_url );
2019-04-02 11:37:04 +02:00
print " </center> " ;
}
else {
2019-03-25 12:04:55 +01:00
print " <center> " ;
printf ( '<p>Echec dans la creation de l\'alias %s du domaine %s</p>' , $serveralias [ 'alias' ], $serveralias [ 'domain' ]);
2019-04-17 10:09:10 +02:00
printf ( '<p><a href="%s">Retour à la liste des alias</a></p>' , $redirect_url );
2019-03-25 12:04:55 +01:00
print " </center> " ;
2019-04-02 11:37:04 +02:00
}
}
else {
print " <center> " ;
printf ( '<p>Echec dans la creation de l\'alias %s du domaine %s</p>' , $serveralias [ 'alias' ], $serveralias [ 'domain' ]);
print ( '<p>L\'alias existe dans d\'autres vhosts.' );
2019-04-17 10:09:10 +02:00
printf ( '<p><a href="%s">Retour à la liste des alias</a></p>' , $redirect_url );
2019-04-02 11:37:04 +02:00
print " </center> " ;
2017-08-22 18:32:33 +02:00
}
2015-08-25 16:54:13 +02:00
}
2019-04-02 11:37:04 +02:00
}
else {
2019-04-23 10:32:38 +02:00
print " <h2>Ajout d'un alias</h2><hr> " ;
2019-04-02 11:37:04 +02:00
print " <form name= \" form-add \" id= \" form-add \" action= \" \" method= \" POST \" > " ;
print " <fieldset> " ;
2019-04-23 10:32:38 +02:00
print " <legend>Ajout d'un alias</legend> " ;
2019-04-02 11:37:04 +02:00
print $form ;
print " <p><input type= \" submit \" value= \" Créer \" /></p> " ;
print " </fieldset> " ;
print " </form> " ;
2015-08-25 16:54:13 +02:00
}
2019-04-02 11:37:04 +02:00
} else {
2019-04-23 10:32:38 +02:00
print " <h2>Ajout d'un alias</h2><hr> " ;
2019-04-02 11:37:04 +02:00
print " <form name= \" form-add \" id= \" form-add \" action= \" \" method= \" POST \" > " ;
print " <fieldset> " ;
2019-04-23 10:32:38 +02:00
print " <legend>Ajout d'un alias</legend> " ;
2019-04-02 11:37:04 +02:00
print $form ;
print " <p><input type= \" submit \" value= \" Créer \" /></p> " ;
print " </fieldset> " ;
print " </form> " ;
}
2015-08-25 16:54:13 +02:00
include_once EVOADMIN_BASE . '../tpl/footer.tpl.php' ;
2019-04-01 17:09:05 +02:00
}
2019-04-01 17:09:05 +02:00
2019-04-01 17:09:05 +02:00
else {
2015-08-25 16:54:13 +02:00
$domain = $params [ 1 ];
2019-04-18 18:09:59 +02:00
$vhost_list = array ();
2015-08-25 16:54:13 +02:00
if ( $conf [ 'cluster' ]) {
2015-08-31 15:17:10 +02:00
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' ];
}
2015-08-25 16:54:13 +02:00
$alias_list = array ();
/* parcours de la table Serveralias */
$bdd = new bdd ();
$bdd -> open ( $cache );
$alias_list = $bdd -> list_serveralias ( $domain );
}
2017-08-22 18:32:33 +02:00
else {
2019-04-18 18:09:59 +02:00
$cmd = 'web-add.sh list-alias ' . $domain ;
sudoexec ( $cmd , $data_output , $exec_return );
foreach ( $data_output as $data_line ) {
$vhost_detail = array ();
$data_split = explode ( ' ' , $data_line );
$vhost_detail [ 'servername' ] = $data_split [ 0 ];
unset ( $data_split [ 0 ]);
2019-04-17 18:11:33 +02:00
# si des aliases sont présents
2019-04-18 18:09:59 +02:00
if ( count ( $data_split ) > 0 ) {
2019-04-17 18:11:33 +02:00
$vhost_detail [ 'aliases' ] = array ();
2019-04-18 18:09:59 +02:00
foreach ( $data_split as $alias_split ) {
array_push ( $vhost_detail [ 'aliases' ], $alias_split );
2019-04-17 18:11:33 +02:00
}
}
2019-04-18 18:09:59 +02:00
array_push ( $vhost_list , $vhost_detail );
2019-04-17 18:11:33 +02:00
}
2017-08-22 18:32:33 +02:00
}
2015-08-25 16:54:13 +02:00
include_once EVOADMIN_BASE . '../tpl/header.tpl.php' ;
include_once EVOADMIN_BASE . '../tpl/menu.tpl.php' ;
include_once EVOADMIN_BASE . '../tpl/webadmin-edit.tpl.php' ;
include_once EVOADMIN_BASE . '../tpl/footer.tpl.php' ;
}
?>