delete alias with provided servername

This commit is contained in:
Nicolas Roman 2019-04-18 18:09:59 +02:00
parent 8c44478643
commit e83a1e8432
4 changed files with 47 additions and 60 deletions

View file

@ -60,7 +60,7 @@ if (!array_key_exists('auth', $_SESSION) || $_SESSION['auth']!=1) {
include_once EVOADMIN_BASE . '../inc/webadmin-php.php';
} elseif (preg_match('#^/webadmin/(.*)/alias/?(add|delete)?/?(.*)?/$#', $uri, $params)) {
} elseif (preg_match('#^/webadmin/(.*)/alias/?(add)?/$#', $uri, $params) || preg_match('#^/webadmin/(.*)/alias/(add|delete)/(.*)/(.*)/$#', $uri, $params)) {
include_once EVOADMIN_BASE . '../inc/webadmin-edit.php';

View file

@ -21,12 +21,12 @@ global $conf;
$redirect_url = "/webadmin/" . $params[1] . "/alias/";
if (isset($params[2]) && $params[2] == "delete") {
if (isset($params[3]) && $params[3] == "") http_redirect($redirect_url);
if ((isset($params[3]) && $params[3] == "") || (isset($params[4]) && $params[4] == "")) http_redirect($redirect_url);
include_once EVOADMIN_BASE . '../tpl/header.tpl.php';
include_once EVOADMIN_BASE . '../tpl/menu.tpl.php';
$alias = $params[3];
$alias = $params[4];
if (isset($_POST["confirm-delete-alias"])) {
@ -36,6 +36,7 @@ if (isset($params[2]) && $params[2] == "delete") {
$serveralias = array (
'domain' => $params[1],
'linked_domain' => $params[3],
'alias' => $alias
);
@ -76,12 +77,12 @@ if (isset($params[2]) && $params[2] == "delete") {
}
else {
$exec_cmd = 'web-add.sh del-alias ' . $serveralias['domain'] . ' ' . $serveralias['alias'];
$exec_cmd = 'web-add.sh del-alias ' . $serveralias['domain'] . ' ' . $serveralias['alias'] . ' ' . $serveralias['linked_domain'];
sudoexec($exec_cmd, $exec_output, $exec_return);
if ($exec_return == 0) {
printf ('<p>Alias %s est supprimé.</p>', $serveralias['alias']);
} else
print "<p>La suppression a échouée. Veuillez contacter votre administrateur.</p>";
print "<p>La suppression a échoué. Veuillez contacter votre administrateur.</p>";
}
printf ('<p><a href="%s">Retour à la liste des alias</a></p>', $redirect_url);
@ -256,8 +257,7 @@ elseif (isset($params[2]) && $params[2] == "add") {
else {
$domain = $params[1];
$alias_list = array();
$alias_list2 = array();
$vhost_list = array();
if ($conf['cluster']) {
if (is_mcluster_mode()) {
@ -280,49 +280,27 @@ else {
$alias_list = $bdd->list_serveralias($domain);
}
else {
$cmd = 'web-add.sh list-vhost';
if(!is_superadmin()) {
$cmd = sprintf('%s %s', $cmd, $_SESSION['user']);
}
sudoexec($cmd, $data_output, $exec_return);
$cmd = 'web-add.sh list-alias ' . $domain;
sudoexec($cmd, $data_output, $exec_return);
$cmd2 = 'web-add.sh list-alias ' . $domain;
sudoexec($cmd2, $data_output2, $exec_return2);
$vhost_detail = array();
foreach($data_output2 as $data_line2) {
$data_split2 = explode(' ', $data_line2);
// var_dump($data_split2);
$vhost_detail['servername'] = $data_split2[0];
unset($data_split2[0]);
foreach($data_output as $data_line) {
$vhost_detail = array();
$data_split = explode(' ', $data_line);
$vhost_detail['servername'] = $data_split[0];
unset($data_split[0]);
# si des aliases sont présents
if (count($data_split2) > 0) {
if (count($data_split) > 0) {
$vhost_detail['aliases'] = array();
foreach($data_split2 as $alias_split2) {
array_push($vhost_detail['aliases'], $alias_split2);
foreach($data_split as $alias_split) {
array_push($vhost_detail['aliases'], $alias_split);
}
}
array_push($alias_list2, $vhost_detail);
array_push($vhost_list, $vhost_detail);
}
echo '<pre>';
var_dump($alias_list2);
echo '</pre>';
// var_dump($vhost_detail);
/* Récupération de cette liste dans le tableau $vhost_list */
$vhost_list = array();
foreach($data_output as $data_line) {
$data_split = explode(':', $data_line);
if ($data_split[0] == $domain && $data_split[3] != '') {
$alias_split = explode(',', $data_split[3]);
foreach($alias_split as $alias) {
$alias_array['alias'] = $alias;
array_push($alias_list, $alias_array);
}
}
}
}
include_once EVOADMIN_BASE . '../tpl/header.tpl.php';

View file

@ -114,6 +114,10 @@ check-vhosts -f
List suggested changes to vhosts, apply fixes with -f
list-alias VHOST
List aliases and their respective domains
add-alias VHOST ALIAS DOMAIN
Add a ServerAlias to an Apache vhost
@ -750,15 +754,15 @@ arg_processing() {
check-vhosts)
op_checkvhosts "$@"
;;
list-alias)
op_listalias "$@"
;;
add-alias)
op_aliasadd "$@"
;;
del-alias)
op_aliasdel "$@"
;;
list-alias)
op_listalias "$@"
;;
list-servername)
op_listservername "$@"
;;
@ -839,13 +843,17 @@ op_aliasadd() {
}
op_aliasdel() {
if [ $# -eq 2 ]; then
if [ $# -eq 3 ]; then
vhost="${1}.conf"
alias=$2
servername=$3
vhost_file="${VHOST_PATH}/${vhost}"
if [ -f "${vhost_file}" ]; then
sed -i -e "/ServerAlias $alias$/d" "${vhost_file}" --follow-symlinks
sed -i -e "/ServerName $servername/,/\/VirtualHost>/{/ServerAlias $alias/d}" $vhost_file --follow-symlinks
#sed -i -e "/ServerAlias $alias$/d" "${vhost_file}" --follow-symlinks
else
echo "VHost file \`${vhost_file}' not found'" >&2
return 1
@ -864,17 +872,13 @@ op_aliasdel() {
fi
}
# The Holy Grail, do not touch, even if you're Indiana Jones
# TODO: ne pas prendre en compte les lignes commentées
# ajouter la fonction dans le usage
# awk '/^<VirtualHost*/,/^<\/VirtualHost>/{if(/^<\/VirtualHost>/)p=1;if(/ServerName|ServerAlias/)out = out (out?OFS:"") ($2)}p{print out;p=0;out=""}' /etc/apache2/sites-enabled/test.conf
op_listalias() {
if [ $# -eq 1 ]; then
vhost_file="$VHOST_PATH/${1}.conf";
if [ -f "${vhost_file}" ]; then
aliases=$(awk '/^<VirtualHost*/,/^<\/VirtualHost>/{if(/^<\/VirtualHost>/)p=1;if(/ServerName|ServerAlias/)out = out (out?OFS:"") ($2)}p{print out;p=0;out=""}' "$vhost_file")
aliases=$(awk '/^<VirtualHost*/,/^<\/VirtualHost>/{if(/^<\/VirtualHost>/)p=1;if(/^[[:space:]]*ServerName|^[[:space:]]*ServerAlias/)out = out (out?OFS:"") ($2)}p{print out;p=0;out=""}' "$vhost_file")
echo "$aliases";
else
echo "VHost file \`${vhost_file}' not found'" >&2

View file

@ -29,6 +29,7 @@
<thead>
<tr>
<th>Alias</th>
<th>Domaine</th>
<?php if (is_superadmin()) {
print '<th>Action</th>';
} ?>
@ -36,14 +37,18 @@
</thead>
<tbody>
<?php
for ( $i=0; $i < count($alias_list); ++$i ) {
print '<tr>';
printf('<td><a href="http://%s">http://%s</a></td>',
$alias_list[$i]['alias'], $alias_list[$i]['alias']);
if (is_superadmin())
printf('<td><a href="/webadmin/%s/alias/delete/%s/">Supprimer</a></td>',
$domain, $alias_list[$i]['alias']);
print '</tr>';
for ( $i=0; $i < count($vhost_list); ++$i ) {
for ($y = 0; $y < count($vhost_list[$i]['aliases']); $y++) {
print '<tr>';
printf('<td><a href="http://%s">http://%s</a></td>',
$vhost_list[$i]['aliases'][$y], $vhost_list[$i]['aliases'][$y]);
printf('<td>%s</td>',
$vhost_list[$i]['servername']);
if (is_superadmin())
printf('<td><a href="/webadmin/%s/alias/delete/%s/%s/">Supprimer</a></td>',
$domain, $vhost_list[$i]['servername'], $vhost_list[$i]['aliases'][$y]);
print '</tr>';
}
} ?>
</tbody>
</table>