From 9351c758b02bffe43cabe5839b18a7bb6e2e5a69 Mon Sep 17 00:00:00 2001 From: Nicolas Roman Date: Thu, 4 Apr 2019 11:52:18 +0200 Subject: [PATCH 01/11] first draft --- scripts/web-add.sh | 61 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 49 insertions(+), 12 deletions(-) diff --git a/scripts/web-add.sh b/scripts/web-add.sh index dc0528f..c1c5c62 100755 --- a/scripts/web-add.sh +++ b/scripts/web-add.sh @@ -612,19 +612,59 @@ EOT } op_del() { - if [ $# -lt 1 ]; then - usage - exit 1 - else + + # + # Mode interactif + # + + if [ $# -eq 0 ]; then + echo + echo "Suppression d'un compte WEB" + echo + + until [ "$login" ]; do + echo -n "Entrez le login du compte à supprimer : " + read -r tmp + login="$tmp" + done + + echo -n "Voulez-vous aussi supprimer un compte/base MySQL ? [y|N]" + read -r confirm + + if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then + echo -n "Entrez le nom de la base de donnees ($login par defaut) : " + read -r tmp + + if [ -z "$tmp" ]; then + dbname=$login + else + dbname="$tmp" + fi + fi + + echo -n "Continuer la suppression du compte $login ? [y/N] : " + read -r tmp + echo + if [ "$tmp" != "y" ] && [ "$tmp" != "Y" ]; then + echo "Annulation..." + echo + exit 1 + fi + + # + # Mode non interactif + # + + elif [ $# -gt 0 ] && [ $# -le 2 ]; then login=$1 if [ $# -eq 2 ]; then dbname=$2 fi + else + usage + exit 1 fi - echo "Deleting account $login. Continue ?" - read -r - set -x if [ "$WEB_SERVER" == "apache" ]; then userdel www-"$login" @@ -681,9 +721,6 @@ op_del() { set +x if [ -n "$dbname" ]; then - echo "Deleting mysql DATABASE $dbname and mysql user $login. Continue ?" - read -r - set -x echo "DROP DATABASE $dbname; delete from mysql.user where user='$login' ; FLUSH PRIVILEGES;" | mysql $MYSQL_OPTS set +x @@ -915,7 +952,7 @@ op_checkoccurencename() { if [ -r "$configfile" ]; then alias=$(perl -ne 'print "$1 " if /^[[:space:]]*ServerAlias (.*)/' "$configfile" | head -n 1) aliases="$aliases $alias" - + servername=$(awk '/^[[:space:]]*ServerName (.*)/ { print $2 }' "$configfile" | uniq) servernames="$servernames $servername" fi @@ -931,7 +968,7 @@ op_listuseritk() { if [ $# -eq 2 ]; then domain=${1} configfile="$VHOST_PATH/${2}.conf" - + sed -n "/$domain/,/<\/VirtualHost>/p" "$configfile" | awk '/AssignUserID/ {print $2}' | uniq else usage -- 2.39.2 From 063af4de57e564dc286718fb2889e2123aac9eb3 Mon Sep 17 00:00:00 2001 From: Nicolas Roman Date: Fri, 5 Apr 2019 10:49:23 +0200 Subject: [PATCH 02/11] added force-confirm option for del script --- scripts/web-add.sh | 66 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 51 insertions(+), 15 deletions(-) diff --git a/scripts/web-add.sh b/scripts/web-add.sh index c1c5c62..37d1948 100755 --- a/scripts/web-add.sh +++ b/scripts/web-add.sh @@ -100,12 +100,18 @@ add [ [OPTIONS] LOGIN WWWDOMAIN ] Example : web-add.sh add -m testdb -r 56 testlogin testdomain.com -del LOGIN [DBNAME] +del [ [OPTIONS] LOGIN [DBNAME] ] Delete account and all files related (Apache, Awstats, etc) Archive home directory. Remove MySQL database only if DBNAME is specified. + -y + Don't ask for confirmation + + Example : web-add.sh del -y testlogin testdatabase + + list-vhost LOGIN List Apache vhost for user LOGIN @@ -642,7 +648,50 @@ op_del() { fi fi - echo -n "Continuer la suppression du compte $login ? [y/N] : " + # + # Mode non interactif + # + + else + while getopts hy opt; do + case "$opt" in + y) + force_confirm=1 + ;; + h) + usage + exit 1 + ;; + ?) + usage + exit 1 + ;; + esac + done + + shift $((OPTIND - 1)) + if [ $# -gt 0 ] && [ $# -le 2 ]; then + login=$1 + if [ $# -eq 2 ]; then + dbname=$2 + fi + else + usage + exit 1 + fi + fi + + echo + echo "----------------------------------------------" + echo "Nom du compte : $login" + if [ "$dbname" ]; then + echo "Base de données MySQL : $dbname" + fi + echo "----------------------------------------------" + echo + + if [ -z "$force_confirm" ]; then + echo -n "Confirmer la suppression ? [y/N] : " read -r tmp echo if [ "$tmp" != "y" ] && [ "$tmp" != "Y" ]; then @@ -650,19 +699,6 @@ op_del() { echo exit 1 fi - - # - # Mode non interactif - # - - elif [ $# -gt 0 ] && [ $# -le 2 ]; then - login=$1 - if [ $# -eq 2 ]; then - dbname=$2 - fi - else - usage - exit 1 fi set -x -- 2.39.2 From eb2f107b027d7e44ff18601e8dd6e0788c3c5598 Mon Sep 17 00:00:00 2001 From: Nicolas Roman Date: Fri, 5 Apr 2019 15:07:01 +0200 Subject: [PATCH 03/11] added delete webpage --- htdocs/inc/js/webadmin.js | 6 ++++ htdocs/index.php | 4 +++ inc/webadmin-delete.php | 72 +++++++++++++++++++++++++++++++++++++ tpl/webadmin-delete.tpl.php | 36 +++++++++++++++++++ 4 files changed, 118 insertions(+) create mode 100644 inc/webadmin-delete.php create mode 100644 tpl/webadmin-delete.tpl.php diff --git a/htdocs/inc/js/webadmin.js b/htdocs/inc/js/webadmin.js index 77bb78f..4a78df5 100644 --- a/htdocs/inc/js/webadmin.js +++ b/htdocs/inc/js/webadmin.js @@ -21,6 +21,12 @@ function switch_disabled(name) { } document.observe("dom:loaded", function() { + if (document.getElementById('vhost-delete-db') != null) { + document.getElementById('vhost-delete-db').onclick = function() { + console.log("clicked box"); + switch_disabled('vhost-dbname'); + } + } document.getElementById('password_random').onclick = function() { switch_disabled('password'); } diff --git a/htdocs/index.php b/htdocs/index.php index 62d2a65..a036261 100755 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -64,6 +64,10 @@ if (!array_key_exists('auth', $_SESSION) || $_SESSION['auth']!=1) { include_once EVOADMIN_BASE . '../inc/webadmin-edit.php'; +} elseif (preg_match('#^/webadmin/(.*)/delete/$#', $uri, $params)) { + + include_once EVOADMIN_BASE . '../inc/webadmin-delete.php'; + } elseif (preg_match('#^/webadmin/suppr/(.*)/?$#', $uri, $params)) { include_once EVOADMIN_BASE . '../inc/webadmin-suppr.php'; diff --git a/inc/webadmin-delete.php b/inc/webadmin-delete.php new file mode 100644 index 0000000..85b9e03 --- /dev/null +++ b/inc/webadmin-delete.php @@ -0,0 +1,72 @@ + + * @author Thomas Martin + * @author Sebastien Palma + * @version 1.0 + */ + +require_once EVOADMIN_BASE . '../lib/bdd.php'; +require_once EVOADMIN_BASE . '../lib/domain.php'; + +global $conf; + +include_once EVOADMIN_BASE . '../tpl/header.tpl.php'; +include_once EVOADMIN_BASE . '../tpl/menu.tpl.php'; + +if (isset($_POST['delete-vhost'])) { + $domain = $params[1]; + + while(true) { + // Errors handling + if (empty($_POST['vhost-name'])) { + print "

Veuillez entrer le nom du compte web à supprimer.

"; + printf ('

Retour

', $_SERVER['REDIRECT_URL']); + break; + } + + if ($_POST['vhost-name'] !== $domain) { + print "Le nom de compte ne correspond pas."; + printf ('

Retour

', $_SERVER['REDIRECT_URL']); + break; + } + + if (isset($_POST['vhost-delete-db']) && empty($_POST['vhost-dbname'])) { + print "Veuillez spécifier un nom de base de données."; + printf ('

Retour

', $_SERVER['REDIRECT_URL']); + break; + } + + // Shell arguments + if (!empty($_POST['vhost-dbname'])) + $exec_cmd = "web-add.sh del -y " . $domain . " " . $_POST['vhost-dbname']; + else + $exec_cmd = "web-add.sh del -y " . $domain; + + // Execute script + sudoexec($exec_cmd, $exec_output, $exec_return); + + // Deal with response code + if ($exec_return == 0) + print "

Compte supprimé.

"; + else + print "

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

"; + + break; + } + + include_once EVOADMIN_BASE . '../tpl/footer.tpl.php'; + +} else { + include_once EVOADMIN_BASE . '../tpl/webadmin-delete.tpl.php'; + include_once EVOADMIN_BASE . '../tpl/footer.tpl.php'; +} + +?> diff --git a/tpl/webadmin-delete.tpl.php b/tpl/webadmin-delete.tpl.php new file mode 100644 index 0000000..58338bc --- /dev/null +++ b/tpl/webadmin-delete.tpl.php @@ -0,0 +1,36 @@ + + * @version 1.0 + */ + +?> + +

Suppression du compte web

+ +
+
+

+ + +

+

+ + +

+

+ + +

+

+ +

+
+
-- 2.39.2 From 0d014191583076f1fd915aebe17d49026bf98256 Mon Sep 17 00:00:00 2001 From: Nicolas Roman Date: Fri, 5 Apr 2019 15:25:01 +0200 Subject: [PATCH 04/11] added delete link --- tpl/webadmin-delete.tpl.php | 2 +- tpl/webadmin.tpl.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tpl/webadmin-delete.tpl.php b/tpl/webadmin-delete.tpl.php index 58338bc..9a0081d 100644 --- a/tpl/webadmin-delete.tpl.php +++ b/tpl/webadmin-delete.tpl.php @@ -1,7 +1,7 @@ ITK', $vhost_info['owner']); } + printf(' - Supprimer', $vhost_info['owner']); printf(''); } -- 2.39.2 From ad35d56491b9101df96d71cdca1333dabd65e4f4 Mon Sep 17 00:00:00 2001 From: Nicolas Roman Date: Thu, 16 May 2019 10:57:05 +0200 Subject: [PATCH 05/11] normalize title names --- inc/webadmin-edit.php | 8 ++++---- inc/webadmin-servername.php | 24 ++++++++++++------------ tpl/webadmin-edit.tpl.php | 12 ++++++------ tpl/webadmin-itk.tpl.php | 2 +- tpl/webadmin-servername.tpl.php | 6 +++--- tpl/webadmin.tpl.php | 14 +++++++------- 6 files changed, 33 insertions(+), 33 deletions(-) diff --git a/inc/webadmin-edit.php b/inc/webadmin-edit.php index c8a579f..6ae1795 100644 --- a/inc/webadmin-edit.php +++ b/inc/webadmin-edit.php @@ -217,10 +217,10 @@ if (isset($_GET['del']) ) { } } else { - print "

Ajout d'un serveralias


"; + print "

Ajout d'un alias


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

"; print "
"; @@ -228,10 +228,10 @@ if (isset($_GET['del']) ) { } } else { - print "

Ajout d'un serveralias


"; + print "

Ajout d'un alias


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

"; print "
"; diff --git a/inc/webadmin-servername.php b/inc/webadmin-servername.php index a68d7c2..c8915f6 100644 --- a/inc/webadmin-servername.php +++ b/inc/webadmin-servername.php @@ -24,8 +24,8 @@ if (isset($_GET['edit']) ) { include_once EVOADMIN_BASE . '../tpl/header.tpl.php'; include_once EVOADMIN_BASE . '../tpl/menu.tpl.php'; - $form = new FormPage("Modification du ServerName", FALSE); - $form->addField('domain_servername', new DomainInputFormField("ServerName", TRUE), $_GET['edit']); + $form = new FormPage("Modification du Servername", FALSE); + $form->addField('domain_servername', new DomainInputFormField("Servername", TRUE), $_GET['edit']); $form->addField('previous_servername', new DomainInputFormField("", TRUE, TRUE), $_GET['edit']); if (!empty($_POST)) { @@ -122,40 +122,40 @@ if (isset($_GET['edit']) ) { if ($exec_return == 0) { //domain_add($serveralias['alias'], gethostbyname($master) , false); TODO avec l'IP du load balancer print "
"; - printf ('

Le ServerName %s a bien été modifié

', $servername['servername']); - printf ('

Retour à la liste des ServerNames

', $_SERVER['REDIRECT_URL']); + printf ('

Le Servername %s a bien été modifié

', $servername['servername']); + printf ('

Retour à la liste des Servernames

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

Echec dans la modification du ServerName %s

', $servername['servername']); - printf ('

Retour à la liste des ServerNames

', $_SERVER['REDIRECT_URL']); + printf ('

Echec dans la modification du Servername %s

', $servername['servername']); + printf ('

Retour à la liste des Servernames

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

Echec dans la modification du ServerName %s

', $servername['servername']); + printf ('

Echec dans la modification du Servername %s

', $servername['servername']); print ('

Le domaine existe déjà dans d\'autres vhosts.'); - printf ('

Retour à la liste des ServerNames

', $_SERVER['REDIRECT_URL']); + printf ('

Retour à la liste des Servernames

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

Modification du ServerName


"; + print "

Modification du Servername


"; print ""; print "
"; - print " Modification du ServerName"; + print " Modification du Servername"; print $form; print "

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

Modification du ServerName


"; + print "

Modification du Servername


"; print "
"; print "
"; - print " Modification du ServerName"; + print " Modification du Servername"; print $form; print "

"; print "
"; diff --git a/tpl/webadmin-edit.tpl.php b/tpl/webadmin-edit.tpl.php index 146dfdc..d1402c5 100644 --- a/tpl/webadmin-edit.tpl.php +++ b/tpl/webadmin-edit.tpl.php @@ -35,19 +35,19 @@ - '; - printf('http://%s', + printf('%s', $alias_list[$i]['alias'], $alias_list[$i]['alias']); - if (is_superadmin()) - printf('Supprimer', + if (is_superadmin()) + printf('Supprimer', $domain, $alias_list[$i]['alias']); print ''; } ?> -Aucun alias existant pour le domaine $domain !

"; if (is_superadmin()) { diff --git a/tpl/webadmin-itk.tpl.php b/tpl/webadmin-itk.tpl.php index 7d1f596..9554eea 100644 --- a/tpl/webadmin-itk.tpl.php +++ b/tpl/webadmin-itk.tpl.php @@ -22,7 +22,7 @@ - + Action'; diff --git a/tpl/webadmin-servername.tpl.php b/tpl/webadmin-servername.tpl.php index 5e218cb..90930a9 100644 --- a/tpl/webadmin-servername.tpl.php +++ b/tpl/webadmin-servername.tpl.php @@ -13,7 +13,7 @@ ?> -

ServerNames

+

Servernames

- + Action'; } ?> @@ -43,7 +43,7 @@
ServerNameServername Utilisateur
ServerNameServername
Aucun ServerName existant pour le domaine $domain !

"; + print "

Aucun Servername existant pour le domaine $domain !

"; } diff --git a/tpl/webadmin.tpl.php b/tpl/webadmin.tpl.php index 67e6981..1d1f52d 100755 --- a/tpl/webadmin.tpl.php +++ b/tpl/webadmin.tpl.php @@ -22,9 +22,9 @@ Propriétaire'; + print 'Virtual Host'; } ?> - Domaine + Servername Alias'; } @@ -61,7 +61,7 @@ if(is_superadmin()) { printf('%s', $vhost_info['owner']); } - printf('http://%s', + printf('%s', $vhost_info['server_name'], $vhost_info['server_name']); if ($conf['cluster']) { @@ -87,7 +87,7 @@ printf('%s', $vhost_info['slave']); } - printf('%s', preg_replace('/,/','
',$vhost_info['server_alias'])); + printf('%s', preg_replace('/,/','
',$vhost_info['server_alias'])); if ($conf['quota']) { printf('%s', $vhost_info['size']); @@ -105,11 +105,11 @@ printf('Alias - ', $vhost_info['owner']); printf('Servername - ', $vhost_info['owner']); if(is_multiphp()) { - printf('PHP', $vhost_info['owner']); + printf('PHP - ', $vhost_info['owner']); } else { - printf('ITK', $vhost_info['owner']); + printf('ITK - ', $vhost_info['owner']); } - printf(' - Supprimer', $vhost_info['owner']); + printf('Supprimer', $vhost_info['owner']); printf(''); } -- 2.39.2 From 7a32409abd579eb48e62d872f5197f9c743b2cbf Mon Sep 17 00:00:00 2001 From: Nicolas Roman Date: Thu, 16 May 2019 11:19:43 +0200 Subject: [PATCH 06/11] normalize text --- inc/webadmin-edit.php | 6 +++--- inc/webadmin-servername.php | 8 ++++---- tpl/webadmin-servername.tpl.php | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/inc/webadmin-edit.php b/inc/webadmin-edit.php index 6ae1795..a0fb753 100644 --- a/inc/webadmin-edit.php +++ b/inc/webadmin-edit.php @@ -196,20 +196,20 @@ if (isset($_GET['del']) ) { 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 ('

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

', $serveralias['alias']); 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 ('

Echec dans la creation de l\'alias %s

', $serveralias['alias']); 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 ('

Echec dans la creation de l\'alias %s

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

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

Retour à la liste des alias

', $_SERVER['REDIRECT_URL']); print "
"; diff --git a/inc/webadmin-servername.php b/inc/webadmin-servername.php index c8915f6..d2e4d5c 100644 --- a/inc/webadmin-servername.php +++ b/inc/webadmin-servername.php @@ -123,21 +123,21 @@ if (isset($_GET['edit']) ) { //domain_add($serveralias['alias'], gethostbyname($master) , false); TODO avec l'IP du load balancer print "
"; printf ('

Le Servername %s a bien été modifié

', $servername['servername']); - printf ('

Retour à la liste des Servernames

', $_SERVER['REDIRECT_URL']); + printf ('

Retour à la gestion du Servername

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

Echec dans la modification du Servername %s

', $servername['servername']); - printf ('

Retour à la liste des Servernames

', $_SERVER['REDIRECT_URL']); + printf ('

Retour à la gestion du Servername

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

Echec dans la modification du Servername %s

', $servername['servername']); - print ('

Le domaine existe déjà dans d\'autres vhosts.'); - printf ('

Retour à la liste des Servernames

', $_SERVER['REDIRECT_URL']); + print ('

Le Servername existe déjà dans d\'autres vhosts.'); + printf ('

Retour à la gestion du Servername

', $_SERVER['REDIRECT_URL']); print "
"; } } diff --git a/tpl/webadmin-servername.tpl.php b/tpl/webadmin-servername.tpl.php index 90930a9..8b27c8b 100644 --- a/tpl/webadmin-servername.tpl.php +++ b/tpl/webadmin-servername.tpl.php @@ -13,7 +13,7 @@ ?> -

Servernames

+

Servername

Date: Thu, 16 May 2019 11:55:52 +0200 Subject: [PATCH 07/11] revert multiple virtualhosts mgmt for ITK --- inc/webadmin-itk.php | 40 ++++++---------------------------------- scripts/web-add.sh | 25 +++++++++++-------------- tpl/webadmin-itk.tpl.php | 35 ++++++++++++++++------------------- 3 files changed, 33 insertions(+), 67 deletions(-) diff --git a/inc/webadmin-itk.php b/inc/webadmin-itk.php index 680c653..0fcc14a 100644 --- a/inc/webadmin-itk.php +++ b/inc/webadmin-itk.php @@ -24,14 +24,11 @@ if (isset($_GET['enable']) ) { include_once EVOADMIN_BASE . '../tpl/header.tpl.php'; include_once EVOADMIN_BASE . '../tpl/menu.tpl.php'; - - # TODO: sanitize $_GET $servername = array ( 'domain' => htmlspecialchars(basename($_SERVER['REDIRECT_URL'])), - 'servername' => $_GET['enable'] ); - $enable_cmd = 'web-add.sh enable-user-itk ' . $servername['servername'] . ' ' . $servername['domain']; + $enable_cmd = 'web-add.sh enable-user-itk ' . $servername['domain']; sudoexec($enable_cmd, $enable_cmd_output, $enable_cmd_return); @@ -42,22 +39,17 @@ if (isset($_GET['enable']) ) { include_once EVOADMIN_BASE . '../tpl/footer.tpl.php'; - -} -elseif (isset($_GET['disable']) ) { +} elseif (isset($_GET['disable']) ) { require_once EVOADMIN_BASE . '../evolibs/Form.php'; include_once EVOADMIN_BASE . '../tpl/header.tpl.php'; include_once EVOADMIN_BASE . '../tpl/menu.tpl.php'; - - # TODO: sanitize $_GET $servername = array ( 'domain' => htmlspecialchars(basename($_SERVER['REDIRECT_URL'])), - 'servername' => $_GET['disable'] ); - $disable_cmd = 'web-add.sh disable-user-itk ' . $servername['servername'] . ' ' . $servername['domain']; + $disable_cmd = 'web-add.sh disable-user-itk ' . $servername['domain']; sudoexec($disable_cmd, $disable_cmd_output, $disable_cmd_return); @@ -68,12 +60,8 @@ elseif (isset($_GET['disable']) ) { include_once EVOADMIN_BASE . '../tpl/footer.tpl.php'; - -} -else { - +} else { $domain = $params[1]; - $data_list = array(); // TODO: adapt for cluster mode if ($conf['cluster']) { @@ -97,33 +85,17 @@ else { $alias_list = $bdd->list_serveralias($domain); } else { - - $cmd = 'web-add.sh list-servername ' . $domain; - - if(!is_superadmin()) { - $cmd = sprintf('%s %s', $cmd, $_SESSION['user']); - } - sudoexec($cmd, $data_output, $exec_return); - - # à revérifier (notamment gestion erreurs) - if ($exec_return == 0) { - foreach($data_output as $data_line) { - $cmd_itk = 'web-add.sh list-user-itk ' . $data_line . ' ' . $domain; + $cmd_itk = 'web-add.sh list-user-itk ' . $domain; sudoexec($cmd_itk, $data_output_itk, $exec_return_itk); - # on prend le premier résultat du tableau, ne fonctionne pas s'il y a plusieurs la même ligne ou des commentaires etc. - array_push($data_list, ['servername' => $data_line, 'user' => $data_output_itk[0]]); - unset($data_output_itk); # reset variable pour éviter conflits - } - } + $user_itk = $data_output_itk[0]; } include_once EVOADMIN_BASE . '../tpl/header.tpl.php'; include_once EVOADMIN_BASE . '../tpl/menu.tpl.php'; include_once EVOADMIN_BASE . '../tpl/webadmin-itk.tpl.php'; include_once EVOADMIN_BASE . '../tpl/footer.tpl.php'; - } ?> diff --git a/scripts/web-add.sh b/scripts/web-add.sh index 37d1948..5a560c8 100755 --- a/scripts/web-add.sh +++ b/scripts/web-add.sh @@ -1001,23 +1001,21 @@ op_checkoccurencename() { } op_listuseritk() { - if [ $# -eq 2 ]; then - domain=${1} - configfile="$VHOST_PATH/${2}.conf" + if [ $# -eq 1 ]; then + configfile="$VHOST_PATH/${1}.conf" - sed -n "/$domain/,/<\/VirtualHost>/p" "$configfile" | awk '/AssignUserID/ {print $2}' | uniq + awk '/AssignUserID/ {print $2}' "$configfile" | uniq else usage fi } op_enableuseritk() { - if [ $# -eq 2 ]; then - domain=${1} - configfile="$VHOST_PATH/${2}.conf" - group=$(sed -n "/$domain/,/<\/VirtualHost>/p" "$configfile" | awk '/AssignUserID/ {print $3}' | uniq) + if [ $# -eq 1 ]; then + configfile="$VHOST_PATH/${1}.conf" + group=$(awk '/AssignUserID/ {print $3}' "$configfile" | uniq) - sed -i "/$domain/,/<\/VirtualHost>/ s/^ *AssignUserID $group/ AssignUserID www-$group/" "$configfile" --follow-symlinks + sed -i "s/^ *AssignUserID $group/ AssignUserID www-$group/" "$configfile" --follow-symlinks configtest_out=$(apache2ctl configtest) configtest_rc=$? @@ -1033,12 +1031,11 @@ op_enableuseritk() { } op_disableuseritk() { - if [ $# -eq 2 ]; then - domain=${1} - configfile="$VHOST_PATH"/"${2}".conf - group=$(sed -n "/$domain/,/<\/VirtualHost>/p" $configfile | awk '/AssignUserID/ {print $3}' | uniq) + if [ $# -eq 1 ]; then + configfile="$VHOST_PATH"/"${1}".conf + group=$(awk '/AssignUserID/ {print $3}' "$configfile" | uniq) - sed -i "/$domain/,/<\/VirtualHost>/ s/^ *AssignUserID www-$group/ AssignUserID ${group}/" "$configfile" --follow-symlinks + sed -i "s/^ *AssignUserID www-$group/ AssignUserID ${group}/" "$configfile" --follow-symlinks configtest_out=$(apache2ctl configtest) configtest_rc=$? diff --git a/tpl/webadmin-itk.tpl.php b/tpl/webadmin-itk.tpl.php index 9554eea..e5ca180 100644 --- a/tpl/webadmin-itk.tpl.php +++ b/tpl/webadmin-itk.tpl.php @@ -17,12 +17,11 @@ 0) { ?> + if(!empty($user_itk)) { ?> - Action'; @@ -31,25 +30,23 @@ '; - printf('', - $data_list[$i]['servername']); - printf('', - $data_list[$i]['user']); - if (is_superadmin()) { - if (strpos($data_list[$i]['user'], 'www') !== false) { - $action = ['disable', 'Désactiver']; - } else { - $action = ['enable', 'Activer']; - } + print ''; + printf('', + $user_itk); + if (is_superadmin()) { - printf('', - $domain, $action[0], $data_list[$i]['servername']); - } - print ''; - } ?> + if (strpos($user_itk, 'www') !== false) { + $action = ['disable', 'Désactiver']; + } else { + $action = ['enable', 'Activer']; + } + + printf('', + $domain, $action[0]); + } + print ''; + ?>
Servername Utilisateur
%s%s
%s'.$action[1].'
'.$action[1].'
Date: Thu, 16 May 2019 12:06:35 +0200 Subject: [PATCH 08/11] normalize add-alias with del-alias --- scripts/web-add.sh | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/scripts/web-add.sh b/scripts/web-add.sh index 5a560c8..3229072 100755 --- a/scripts/web-add.sh +++ b/scripts/web-add.sh @@ -866,7 +866,6 @@ op_listvhost() { configlist="$VHOST_PATH/*"; fi - for configfile in $configlist; do if [ -r "$configfile" ] && echo "$configfile" |grep -qvE "/(000-default|default-ssl|evoadmin)\\.conf$"; then servername="$(awk '/^[[:space:]]*ServerName (.*)/ { print $2 }' "$configfile" | head -n 1)" @@ -896,12 +895,23 @@ op_aliasadd() { if [ $# -eq 2 ]; then vhost="${1}.conf" alias=$2 + vhost_file="${VHOST_PATH}/${vhost}" - [ -f $VHOST_PATH/"$vhost" ] && sed -i "/ServerName .*/a \\\tServerAlias $alias" "$VHOST_PATH"/"$vhost" --follow-symlinks + if [ -f "${vhost_file}" ]; then + sed -i "/ServerName .*/a \\\tServerAlias $alias" "${vhost_file}" --follow-symlinks + else + echo "VHost file \`${vhost_file}' not found'" >&2 + return 1 + fi - apache2ctl configtest 2>/dev/null - /etc/init.d/apache2 force-reload >/dev/null + configtest_out=$(apache2ctl configtest) + configtest_rc=$? + if [ "$configtest_rc" = "0" ]; then + /etc/init.d/apache2 force-reload >/dev/null + else + echo $configtest_out >&2 + fi else usage fi } -- 2.39.2 From 48168c534e9eb353d3daf0ea0cb24bcfe791d074 Mon Sep 17 00:00:00 2001 From: Nicolas Roman Date: Thu, 16 May 2019 14:40:30 +0200 Subject: [PATCH 09/11] delete list-servername function --- inc/webadmin-servername.php | 8 +++---- scripts/web-add.sh | 41 ++++++--------------------------- tpl/webadmin-servername.tpl.php | 19 ++++++++------- 3 files changed, 19 insertions(+), 49 deletions(-) diff --git a/inc/webadmin-servername.php b/inc/webadmin-servername.php index d2e4d5c..fc82e08 100644 --- a/inc/webadmin-servername.php +++ b/inc/webadmin-servername.php @@ -193,17 +193,15 @@ if (isset($_GET['edit']) ) { $alias_list = $bdd->list_serveralias($domain); } else { - - $cmd = 'web-add.sh list-servername ' . $domain; + $cmd = 'web-add.sh list-vhost ' . $domain; if(!is_superadmin()) { $cmd = sprintf('%s %s', $cmd, $_SESSION['user']); } sudoexec($cmd, $data_output, $exec_return); - foreach($data_output as $data_line) { - array_push($servername_list, $data_line); - } + $data_vhost = explode(':', $data_output[0]); + $servername = $data_vhost[2]; } include_once EVOADMIN_BASE . '../tpl/header.tpl.php'; diff --git a/scripts/web-add.sh b/scripts/web-add.sh index 3229072..e3d5df9 100755 --- a/scripts/web-add.sh +++ b/scripts/web-add.sh @@ -128,30 +128,26 @@ del-alias VHOST ALIAS Del a ServerAlias from an Apache vhost -list-servername LOGIN - - List ServerName(s) for user LOGIN - update-servername VHOST SERVERNAME OLD_SERVERNAME Replace the OLD_SERVERNAME with the SERVERNAME for an Apache vhost - Also apply to rules + Also apply to rewrite rules check-occurence NAME List all occurences of NAME in vhosts -list-user-itk DOMAIN LOGIN +list-user-itk LOGIN - List the assigned ITK user for the DOMAIN specified + List the assigned ITK user for the LOGIN specified -enable-user-itk DOMAIN LOGIN +enable-user-itk LOGIN - Enable the assigned ITK user for the DOMAIN specified + Enable the assigned ITK user for the LOGIN specified -disable-user-itk DOMAIN LOGIN +disable-user-itk LOGIN - Disable the assigned ITK user for the DOMAIN specified + Disable the assigned ITK user for the LOGIN specified setphpversion LOGIN VERSION @@ -828,9 +824,6 @@ arg_processing() { del-alias) op_aliasdel "$@" ;; - list-servername) - op_listservername "$@" - ;; update-servername) op_servernameupdate "$@" ;; @@ -942,25 +935,6 @@ op_aliasdel() { fi } -op_listservername() { - if [ $# -eq 1 ]; then - vhost_file="$VHOST_PATH/${1}.conf"; - - if [ -f "${vhost_file}" ]; then - servernames=$(awk '/^[[:space:]]*ServerName (.*)/ { print $2 }' "$vhost_file" | uniq) - - for servername in $servernames; do - echo "$servername"; - done - else - echo "VHost file \`${vhost_file}' not found'" >&2 - return 1 - fi - else - usage - fi -} - op_servernameupdate() { if [ $# -eq 3 ]; then vhost="${1}.conf" @@ -968,7 +942,6 @@ op_servernameupdate() { old_servername=$3 vhost_file="${VHOST_PATH}/${vhost}" - # Remplacement de toutes les directives ServerName, on assume qu'il s'agit du même pour chaque vhost du fichier if [ -f "${vhost_file}" ]; then sed -i "/^ *ServerName/ s/$old_servername/$servername/g" "${vhost_file}" --follow-symlinks sed -i "/^ *RewriteCond/ s/$old_servername/$servername/g" "${vhost_file}" --follow-symlinks diff --git a/tpl/webadmin-servername.tpl.php b/tpl/webadmin-servername.tpl.php index 8b27c8b..50b87d3 100644 --- a/tpl/webadmin-servername.tpl.php +++ b/tpl/webadmin-servername.tpl.php @@ -17,7 +17,7 @@ 0) { ?> + if(!empty($servername)) { ?> @@ -30,15 +30,14 @@ '; - printf('', - $servername_list[$i]); - if (is_superadmin()) - printf('', - $domain, $servername_list[$i]); - print ''; - } ?> + print ''; + printf('', + $servername); + if (is_superadmin()) + printf('', + $domain, $servername); + print ''; + ?>
%sModifier
%sModifier
Date: Fri, 17 May 2019 11:53:21 +0200 Subject: [PATCH 10/11] block non-standard vhost modification --- htdocs/index.php | 35 +++++++++++++++++++++++------------ inc/webadmin.php | 11 +++++++++++ scripts/web-add.sh | 10 +++++++++- tpl/webadmin.tpl.php | 16 ++++++++++------ 4 files changed, 53 insertions(+), 19 deletions(-) diff --git a/htdocs/index.php b/htdocs/index.php index a036261..8e951b3 100755 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -48,30 +48,41 @@ if (!array_key_exists('auth', $_SESSION) || $_SESSION['auth']!=1) { include_once EVOADMIN_BASE . '../inc/webadmin.php'; -} elseif (preg_match('#^/webadmin/servername/(.*)/?$#', $uri, $params)) { +} elseif (preg_match('#^/webadmin?#', $uri)) { - include_once EVOADMIN_BASE . '../inc/webadmin-servername.php'; + // Redirect to /webadmin in order to set $_SESSION['non_stanard'] + if (!isset($_SESSION['non_standard'])) + http_redirect('/webadmin'); -} elseif (preg_match('#^/webadmin/itk/(.*)/?$#', $uri, $params)) { + // block the non-standard vhost modification + if (in_array(htmlspecialchars(basename($_SERVER['REDIRECT_URL'])), $_SESSION['non_standard'])) + http_redirect('/webadmin'); - include_once EVOADMIN_BASE . '../inc/webadmin-itk.php'; + if (preg_match('#^/webadmin/servername/(.*)/?$#', $uri, $params)) { -} elseif (preg_match('#^/webadmin/php/(.*)/?$#', $uri, $params)) { + include_once EVOADMIN_BASE . '../inc/webadmin-servername.php'; - include_once EVOADMIN_BASE . '../inc/webadmin-php.php'; + } elseif (preg_match('#^/webadmin/itk/(.*)/?$#', $uri, $params)) { -} elseif (preg_match('#^/webadmin/edit/(.*)/?$#', $uri, $params)) { + include_once EVOADMIN_BASE . '../inc/webadmin-itk.php'; - include_once EVOADMIN_BASE . '../inc/webadmin-edit.php'; + } elseif (preg_match('#^/webadmin/php/(.*)/?$#', $uri, $params)) { -} elseif (preg_match('#^/webadmin/(.*)/delete/$#', $uri, $params)) { + include_once EVOADMIN_BASE . '../inc/webadmin-php.php'; - include_once EVOADMIN_BASE . '../inc/webadmin-delete.php'; + } elseif (preg_match('#^/webadmin/edit/(.*)/?$#', $uri, $params)) { -} elseif (preg_match('#^/webadmin/suppr/(.*)/?$#', $uri, $params)) { + include_once EVOADMIN_BASE . '../inc/webadmin-edit.php'; - include_once EVOADMIN_BASE . '../inc/webadmin-suppr.php'; + } elseif (preg_match('#^/webadmin/delete/(.*)/?$#', $uri, $params)) { + include_once EVOADMIN_BASE . '../inc/webadmin-delete.php'; + + } elseif (preg_match('#^/webadmin/suppr/(.*)/?$#', $uri, $params)) { + + include_once EVOADMIN_BASE . '../inc/webadmin-suppr.php'; + + } } elseif (is_superadmin() && preg_match('#^/accounts/?#', $uri, $params)) { include_once EVOADMIN_BASE . '../inc/accounts.php'; diff --git a/inc/webadmin.php b/inc/webadmin.php index ad3ec23..bc61a7b 100644 --- a/inc/webadmin.php +++ b/inc/webadmin.php @@ -30,6 +30,12 @@ if (!$conf['cluster']) { /* Récupération de cette liste dans le tableau $vhost_list */ $vhost_list = array(); + + if (!isset($_SESSION['non_standard'])) { + $_SESSION['non_standard'] = array(); + } + + foreach($data_output as $data_line) { $data_split = explode(':', $data_line); @@ -72,6 +78,11 @@ if (!$conf['cluster']) { $occupation = ""; } + // current vhost isn't standard and thus not manageable by evoadmin-web + if (!$data_split[9]) { + array_push($_SESSION['non_standard'], $data_split[0]); + } + array_push($vhost_list, array( 'owner' => $data_split[0], 'configid' => $data_split[1], diff --git a/scripts/web-add.sh b/scripts/web-add.sh index e3d5df9..b4ca350 100755 --- a/scripts/web-add.sh +++ b/scripts/web-add.sh @@ -876,9 +876,17 @@ op_listvhost() { else is_enabled=0 fi + + count_virtualhosts="$(grep "'); - printf('Alias - ', $vhost_info['owner']); - printf('Servername - ', $vhost_info['owner']); - if(is_multiphp()) { - printf('PHP - ', $vhost_info['owner']); + if (!in_array($vhost_info['owner'], $_SESSION['non_standard'])) { + printf('Alias - ', $vhost_info['owner']); + printf('Servername - ', $vhost_info['owner']); + if(is_multiphp()) { + printf('PHP - ', $vhost_info['owner']); + } else { + printf('ITK - ', $vhost_info['owner']); + } + printf('Supprimer', $vhost_info['owner']); } else { - printf('ITK - ', $vhost_info['owner']); + print 'VirtualHost non standard'; } - printf('Supprimer', $vhost_info['owner']); printf(''); } -- 2.39.2 From 9b39d0658034a57a13f2b0229b8e0b7e61d369b2 Mon Sep 17 00:00:00 2001 From: Nicolas Roman Date: Mon, 3 Jun 2019 16:44:14 +0200 Subject: [PATCH 11/11] add .idea folder to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 6e9dadb..7d7f61e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ conf/config.local.php .vagrant +.idea -- 2.39.2