update ServerName / ITK Status / And more... #47
|
@ -187,8 +187,9 @@ class FormPage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addField($name, $obj) {
|
public function addField($name, $obj, $default_value="") {
|
||||||
$obj->setName($name);
|
$obj->setName($name);
|
||||||
|
if ($default_value != "") $obj->setValue($default_value);
|
||||||
array_push($this->fields, array($name, $obj));
|
array_push($this->fields, array($name, $obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -462,9 +463,10 @@ class DomainInputFormField extends FormField {
|
||||||
protected $mandatory = NULL;
|
protected $mandatory = NULL;
|
||||||
protected $textsize = NULL;
|
protected $textsize = NULL;
|
||||||
|
|
||||||
public function __construct($label, $mandatory=TRUE) {
|
public function __construct($label, $mandatory=TRUE, $hidden=FALSE) {
|
||||||
parent::__construct($label);
|
parent::__construct($label);
|
||||||
$this->mandatory = $mandatory;
|
$this->mandatory = $mandatory;
|
||||||
|
$this->hidden = $hidden;
|
||||||
$this->textsize = $textsize;
|
$this->textsize = $textsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -484,7 +486,10 @@ class DomainInputFormField extends FormField {
|
||||||
|
|
||||||
public function getInputHTML() {
|
public function getInputHTML() {
|
||||||
$input = '';
|
$input = '';
|
||||||
$input .= '<input type="text" id="'.$this->name.'"';
|
if ($this->hidden)
|
||||||
|
$input .= '<input type="hidden" id="'.$this->name.'"';
|
||||||
|
else
|
||||||
|
$input .= '<input type="text" id="'.$this->name.'"';
|
||||||
$input .= ' name="'.$this->name.'" value="'.htmlspecialchars($this->value,ENT_QUOTES).'"';
|
$input .= ' name="'.$this->name.'" value="'.htmlspecialchars($this->value,ENT_QUOTES).'"';
|
||||||
$input .= ' maxlength="'.$this->textsize[1].'" size="'.$this->textsize[0].'" ';
|
$input .= ' maxlength="'.$this->textsize[1].'" size="'.$this->textsize[0].'" ';
|
||||||
if($this->read_only) { $input .= 'readonly="readonly="'; }
|
if($this->read_only) { $input .= 'readonly="readonly="'; }
|
||||||
|
@ -496,9 +501,13 @@ class DomainInputFormField extends FormField {
|
||||||
public function __toString() {
|
public function __toString() {
|
||||||
$out = '';
|
$out = '';
|
||||||
$out .= "<p>\n";
|
$out .= "<p>\n";
|
||||||
$out .= $this->getLabelHTML();
|
if ($this->hidden) {
|
||||||
$out .= $this->getInputHTML();
|
$out .= $this->getInputHTML();
|
||||||
$out .= $this->getErrorHTML();
|
} else {
|
||||||
|
$out .= $this->getLabelHTML();
|
||||||
|
$out .= $this->getInputHTML();
|
||||||
|
$out .= $this->getErrorHTML();
|
||||||
|
}
|
||||||
$out .= "</p>\n\n";
|
$out .= "</p>\n\n";
|
||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
|
@ -870,7 +879,7 @@ class SelectFormField extends FormField {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function verify($set_error) {
|
public function verify($set_error) {
|
||||||
if($this->mandatory && empty($this->value)) {
|
if($this->mandatory && strlen($this->value) === 0) {
|
||||||
if($set_error) $this->error = 'Champ obligatoire';
|
if($set_error) $this->error = 'Champ obligatoire';
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -885,7 +894,7 @@ class SelectFormField extends FormField {
|
||||||
$input .= ' <option value="">-- Choisissez --</option>'."\n";
|
$input .= ' <option value="">-- Choisissez --</option>'."\n";
|
||||||
foreach ($this->list as $value => $label) {
|
foreach ($this->list as $value => $label) {
|
||||||
$input .= ' <option value="'.htmlspecialchars($value,ENT_QUOTES).'"';
|
$input .= ' <option value="'.htmlspecialchars($value,ENT_QUOTES).'"';
|
||||||
if ($this->value == $value) $input.=' selected="selected"';
|
if ($this->value == $value && strlen($this->value) !== 0) $input.=' selected="selected"';
|
||||||
$input .= '>'.$label.'</option>'."\n";
|
$input .= '>'.$label.'</option>'."\n";
|
||||||
}
|
}
|
||||||
$input .= "</select>\n";
|
$input .= "</select>\n";
|
||||||
|
|
|
@ -87,6 +87,16 @@ function load_config_cluster($cluster) {
|
||||||
$conf = array_merge($conf, $clusterconf);
|
$conf = array_merge($conf, $clusterconf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return wether or not this evoadmin install is a multi PHP install
|
||||||
|
*
|
||||||
|
* @return boolean - True when it's a multi PHP system
|
||||||
|
*/
|
||||||
|
function is_multiphp()
|
||||||
|
{
|
||||||
|
return array_key_exists('php_versions', $conf) && count($conf['php_versions']) > 1;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Includes
|
* Includes
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
* common DirectoryIndex page
|
* common DirectoryIndex page
|
||||||
*
|
*
|
||||||
* Copyright (c) 2009 Evolix - Tous droits reserves
|
* Copyright (c) 2009 Evolix - Tous droits reserves
|
||||||
*
|
*
|
||||||
* vim: expandtab softtabstop=4 tabstop=4 shiftwidth=4 showtabline=2
|
* vim: expandtab softtabstop=4 tabstop=4 shiftwidth=4 showtabline=2
|
||||||
*
|
*
|
||||||
* @author Gregory Colpart <reg@evolix.fr>
|
* @author Gregory Colpart <reg@evolix.fr>
|
||||||
|
@ -24,7 +24,7 @@ define('EVOADMIN_BASE','./');
|
||||||
session_name('EVOADMINWEB_SESS');
|
session_name('EVOADMINWEB_SESS');
|
||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
error_reporting(E_ALL | E_NOTICE);
|
error_reporting(E_ALL);
|
||||||
header('Content-Type: text/html; charset=utf-8');
|
header('Content-Type: text/html; charset=utf-8');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -48,6 +48,18 @@ if (!array_key_exists('auth', $_SESSION) || $_SESSION['auth']!=1) {
|
||||||
|
|
||||||
include_once EVOADMIN_BASE . '../inc/webadmin.php';
|
include_once EVOADMIN_BASE . '../inc/webadmin.php';
|
||||||
|
|
||||||
|
} elseif (preg_match('#^/webadmin/servername/(.*)/?$#', $uri, $params)) {
|
||||||
|
|
||||||
|
include_once EVOADMIN_BASE . '../inc/webadmin-servername.php';
|
||||||
|
|
||||||
|
} elseif (preg_match('#^/webadmin/itk/(.*)/?$#', $uri, $params)) {
|
||||||
|
|
||||||
|
include_once EVOADMIN_BASE . '../inc/webadmin-itk.php';
|
||||||
|
|
||||||
|
} elseif (preg_match('#^/webadmin/php/(.*)/?$#', $uri, $params)) {
|
||||||
|
|
||||||
|
include_once EVOADMIN_BASE . '../inc/webadmin-php.php';
|
||||||
|
|
||||||
} elseif (preg_match('#^/webadmin/edit/(.*)/?$#', $uri, $params)) {
|
} elseif (preg_match('#^/webadmin/edit/(.*)/?$#', $uri, $params)) {
|
||||||
|
|
||||||
include_once EVOADMIN_BASE . '../inc/webadmin-edit.php';
|
include_once EVOADMIN_BASE . '../inc/webadmin-edit.php';
|
||||||
|
@ -75,4 +87,3 @@ if (!array_key_exists('auth', $_SESSION) || $_SESSION['auth']!=1) {
|
||||||
} else {
|
} else {
|
||||||
die ("Cette page n'existe pas !!!");
|
die ("Cette page n'existe pas !!!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -348,7 +348,7 @@ if ($conf['bindadmin']) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (array_key_exists('php_versions', $conf) && count($conf['php_versions']) > 1) {
|
if (array_key_exists('php_versions', $conf) && count($conf['php_versions']) > 1) {
|
||||||
$form->addField('php_version', new SelectFormField("Version de PHP", FALSE, $conf['php_versions']));
|
$form->addField('php_version', new SelectFormField("Version de PHP", TRUE, $conf['php_versions']));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($conf['quota']) {
|
if ($conf['quota']) {
|
||||||
|
@ -388,11 +388,22 @@ if(!empty($_POST)) {
|
||||||
|
|
||||||
/* Test de validation du formulaire */
|
/* Test de validation du formulaire */
|
||||||
if($form->verify(TRUE)) {
|
if($form->verify(TRUE)) {
|
||||||
|
$errors_check = array();
|
||||||
|
|
||||||
|
if(check_occurence_name($form->getField('domain')->getValue())){
|
||||||
|
array_push($errors_check, "Domaine déjà présent dans d'autres vhosts.");
|
||||||
|
}
|
||||||
|
if(check_occurence_name($form->getField('domain_alias')->getValue())){
|
||||||
|
array_push($errors_check, "Alias déjà présent(s) dans d'autres vhosts.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($errors_check) === 0) {
|
||||||
if ($conf['cluster'])
|
if ($conf['cluster'])
|
||||||
$exec_info = web_add_cluster($form, $conf['admin']['mail']);
|
$exec_info = web_add_cluster($form, $conf['admin']['mail']);
|
||||||
else
|
else
|
||||||
$exec_info = web_add($form, $conf['admin']['mail']);
|
$exec_info = web_add($form, $conf['admin']['mail']);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
include_once EVOADMIN_BASE . '../tpl/header.tpl.php';
|
include_once EVOADMIN_BASE . '../tpl/header.tpl.php';
|
||||||
|
|
|
@ -185,23 +185,34 @@ if (isset($_GET['del']) ) {
|
||||||
'domain' => htmlspecialchars(basename($_SERVER['REDIRECT_URL'])),
|
'domain' => htmlspecialchars(basename($_SERVER['REDIRECT_URL'])),
|
||||||
'alias' => $form->getField('domain_alias')->getValue(),
|
'alias' => $form->getField('domain_alias')->getValue(),
|
||||||
);
|
);
|
||||||
|
|
||||||
$account_name=$serveralias['domain'];
|
$account_name=$serveralias['domain'];
|
||||||
|
|
||||||
$exec_cmd = 'web-add.sh add-alias ' . $serveralias['domain'] . ' ' . $serveralias['alias'];
|
$is_alias_present = check_occurence_name($serveralias['alias']);
|
||||||
sudoexec($exec_cmd, $exec_output, $exec_return);
|
|
||||||
if ($exec_return == 0) {
|
if (!$is_alias_present) {
|
||||||
//domain_add($serveralias['alias'], gethostbyname($master) , false); TODO avec l'IP du load balancer
|
$exec_cmd = 'web-add.sh add-alias ' . $serveralias['domain'] . ' ' . $serveralias['alias'];
|
||||||
print "<center>";
|
sudoexec($exec_cmd, $exec_output, $exec_return);
|
||||||
printf ('<p>L\'alias %s du domaine %s a bien été créé</p>', $serveralias['alias'], $serveralias['domain']);
|
if ($exec_return == 0) {
|
||||||
printf ('<p><a href="%s">Retour à la liste des alias</a></p>', $_SERVER['REDIRECT_URL']);
|
//domain_add($serveralias['alias'], gethostbyname($master) , false); TODO avec l'IP du load balancer
|
||||||
print "</center>";
|
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>";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print "<center>";
|
||||||
|
printf ('<p>Echec dans la creation de l\'alias %s du domaine %s</p>', $serveralias['alias'], $serveralias['domain']);
|
||||||
|
printf ('<p><a href="%s">Retour à la liste des alias</a></p>', $_SERVER['REDIRECT_URL']);
|
||||||
|
print "</center>";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
print "<center>";
|
print "<center>";
|
||||||
printf ('<p>Echec dans la creation de l\'alias %s du domaine %s</p>', $serveralias['alias'], $serveralias['domain']);
|
printf ('<p>Echec dans la creation de l\'alias %s du domaine %s</p>', $serveralias['alias'], $serveralias['domain']);
|
||||||
printf ('<p><a href="%s">Retour à la liste des alias</a></p>', $_SERVER['REDIRECT_URL']);
|
print ('<p>L\'alias existe dans d\'autres vhosts.');
|
||||||
print "</center>";
|
printf ('<p><a href="%s">Retour à la liste des alias</a></p>', $_SERVER['REDIRECT_URL']);
|
||||||
|
print "</center>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
129
inc/webadmin-itk.php
Normal file
129
inc/webadmin-itk.php
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apache VirtualHost Management Page
|
||||||
|
*
|
||||||
|
* Copyright (c) 2009 Evolix - Tous droits reserves
|
||||||
|
*
|
||||||
|
* vim: expandtab softtabstop=4 tabstop=4 shiftwidth=4 showtabline=2
|
||||||
|
*
|
||||||
|
* @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';
|
||||||
|
require_once EVOADMIN_BASE . '../lib/domain.php';
|
||||||
|
|
||||||
|
global $conf;
|
||||||
|
|
||||||
|
if (isset($_GET['enable']) ) {
|
||||||
|
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['enable']
|
||||||
|
);
|
||||||
|
|
||||||
|
$enable_cmd = 'web-add.sh enable-user-itk ' . $servername['servername'] . ' ' . $servername['domain'];
|
||||||
|
|
||||||
|
sudoexec($enable_cmd, $enable_cmd_output, $enable_cmd_return);
|
||||||
|
|
||||||
|
if ($enable_cmd_return == 0) {
|
||||||
|
print 'Sécurité ITK activée.';
|
||||||
|
printf ('<p><a href="%s">Retour à la gestion ITK</a></p>', $_SERVER['REDIRECT_URL']);
|
||||||
|
}
|
||||||
|
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/footer.tpl.php';
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
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'];
|
||||||
|
|
||||||
|
sudoexec($disable_cmd, $disable_cmd_output, $disable_cmd_return);
|
||||||
|
|
||||||
|
if ($disable_cmd_return == 0) {
|
||||||
|
print 'Sécurité ITK désactivée';
|
||||||
|
printf ('<p><a href="%s">Retour à la gestion ITK</a></p>', $_SERVER['REDIRECT_URL']);
|
||||||
|
}
|
||||||
|
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/footer.tpl.php';
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
$domain = $params[1];
|
||||||
|
$data_list = array();
|
||||||
|
|
||||||
|
// TODO: adapt for cluster mode
|
||||||
|
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'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$alias_list = array();
|
||||||
|
|
||||||
|
/* parcours de la table Serveralias */
|
||||||
|
$bdd = new bdd();
|
||||||
|
$bdd->open($cache);
|
||||||
|
|
||||||
|
$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;
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
94
inc/webadmin-php.php
Normal file
94
inc/webadmin-php.php
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apache VirtualHost Management Page
|
||||||
|
*
|
||||||
|
* Copyright (c) 2009 Evolix - Tous droits reserves
|
||||||
|
*
|
||||||
|
* vim: expandtab softtabstop=4 tabstop=4 shiftwidth=4 showtabline=2
|
||||||
|
*
|
||||||
|
* @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';
|
||||||
|
require_once EVOADMIN_BASE . '../lib/domain.php';
|
||||||
|
require_once EVOADMIN_BASE . '../evolibs/Form.php';
|
||||||
|
|
||||||
|
global $conf;
|
||||||
|
|
||||||
|
$form = new FormPage("Modification de la version de PHP", FALSE);
|
||||||
|
$form->addField('php_version', new SelectFormField("Nouvelle version de PHP", True, $conf['php_versions']));
|
||||||
|
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/header.tpl.php';
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/menu.tpl.php';
|
||||||
|
|
||||||
|
$domain = $params[1];
|
||||||
|
|
||||||
|
// TODO: adapt for cluster mode
|
||||||
|
if ($conf['cluster']) {
|
||||||
|
print "<center>";
|
||||||
|
printf ('<h2>ERREUR</h2>');
|
||||||
|
printf ('<p>Cette action n\'est pas encore supportée en mode cluster</p>');
|
||||||
|
printf ('<p><a href="/webadmin">Retour à liste des comptes</a></p>');
|
||||||
|
print "</center>";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$cmd = 'web-add.sh list-vhost ' . escapeshellarg($domain);
|
||||||
|
sudoexec($cmd, $data_output, $exec_return);
|
||||||
|
|
||||||
|
$data_split = explode(':', $data_output[0]);
|
||||||
|
$current_PHP_version = $data_split[7];
|
||||||
|
|
||||||
|
if (!empty($_POST)) {
|
||||||
|
$form->isCurrentPage(TRUE);
|
||||||
|
$form->initFields();
|
||||||
|
|
||||||
|
if ($form->verify(TRUE)) {
|
||||||
|
if (isset($conf['php_versions'][$form->getField('php_version')->getValue()]))
|
||||||
|
{
|
||||||
|
$selected_php_version = $conf['php_versions'][$form->getField('php_version')->getValue()];
|
||||||
|
$exec_cmd = 'web-add.sh setphpversion '.escapeshellarg($domain).' '.escapeshellarg($selected_php_version);
|
||||||
|
sudoexec($exec_cmd, $exec_output, $exec_return);
|
||||||
|
|
||||||
|
if ($exec_return == 0) {
|
||||||
|
|
||||||
|
print "<center>";
|
||||||
|
printf ('<p>La version de PHP bien été modifié</p>');
|
||||||
|
printf ('<p><a href="/webadmin">Retour à liste des comptes</a></p>');
|
||||||
|
print "</center>";
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print "<center>";
|
||||||
|
printf ('<h2>ERREUR</h2>');
|
||||||
|
printf ('<p>Une erreur innatendue s\'est produite </p>');
|
||||||
|
|
||||||
|
if ($conf['debug'] == TRUE) {
|
||||||
|
print '<pre>';
|
||||||
|
foreach($exec_output as $exec_line) {
|
||||||
|
printf("%s\n", $exec_line);
|
||||||
|
}
|
||||||
|
print '</pre>';
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ('<p><a href="/webadmin">Retour à liste des comptes</a></p>');
|
||||||
|
print "</center>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/webadmin-php.tpl.php';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/webadmin-php.tpl.php';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/webadmin-php.tpl.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/footer.tpl.php';
|
||||||
|
}
|
216
inc/webadmin-servername.php
Normal file
216
inc/webadmin-servername.php
Normal file
|
@ -0,0 +1,216 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apache VirtualHost Management Page
|
||||||
|
*
|
||||||
|
* Copyright (c) 2009 Evolix - Tous droits reserves
|
||||||
|
*
|
||||||
|
* vim: expandtab softtabstop=4 tabstop=4 shiftwidth=4 showtabline=2
|
||||||
|
*
|
||||||
|
* @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';
|
||||||
|
require_once EVOADMIN_BASE . '../lib/domain.php';
|
||||||
|
|
||||||
|
global $conf;
|
||||||
|
|
||||||
|
if (isset($_GET['edit']) ) {
|
||||||
|
require_once EVOADMIN_BASE . '../evolibs/Form.php';
|
||||||
|
|
||||||
|
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->addField('previous_servername', new DomainInputFormField("", TRUE, TRUE), $_GET['edit']);
|
||||||
|
|
||||||
|
if (!empty($_POST)) {
|
||||||
|
$form->isCurrentPage(TRUE);
|
||||||
|
$form->initFields();
|
||||||
|
|
||||||
|
if ($form->verify(TRUE)) {
|
||||||
|
// TODO: Adapt the script for cluster mode
|
||||||
|
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);
|
||||||
|
|
||||||
|
$servername = array (
|
||||||
|
'domain' => htmlspecialchars(basename($_SERVER['REDIRECT_URL'])),
|
||||||
|
'servername' => $form->getField('domain_servername')->getValue(),
|
||||||
|
'previous_servername' => $form->getField('previous_servername')->getValue(),
|
||||||
|
);
|
||||||
|
|
||||||
|
$account_name=$servername['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 "<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>";
|
||||||
|
} else {
|
||||||
|
print "<center>";
|
||||||
|
printf ('<p>Echec dans la creation de l\'alias %s du domaine %s</p>', $serveralias['alias'], $serveralias['domain']);
|
||||||
|
printf ('<p><a href="%s">Retour à la liste des alias</a></p>', $_SERVER['REDIRECT_URL']);
|
||||||
|
print "</center>";
|
||||||
|
}
|
||||||
|
} 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>";
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$servername = array (
|
||||||
|
'domain' => htmlspecialchars(basename($_SERVER['REDIRECT_URL'])),
|
||||||
|
'servername' => $form->getField('domain_servername')->getValue(),
|
||||||
|
'previous_servername' => $form->getField('previous_servername')->getValue(),
|
||||||
|
);
|
||||||
|
|
||||||
|
$account_name=$servername['domain'];
|
||||||
|
|
||||||
|
$is_servername_present = check_occurence_name($servername['servername']);
|
||||||
|
|
||||||
|
if (!$is_servername_present) {
|
||||||
|
$exec_cmd = 'web-add.sh update-servername ' . $servername['domain'] . ' ' . $servername['servername'] . ' ' . $servername['previous_servername'];
|
||||||
|
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>Le ServerName %s a bien été modifié</p>', $servername['servername']);
|
||||||
|
printf ('<p><a href="%s">Retour à la liste des ServerNames</a></p>', $_SERVER['REDIRECT_URL']);
|
||||||
|
print "</center>";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print "<center>";
|
||||||
|
printf ('<p>Echec dans la modification du ServerName %s</p>', $servername['servername']);
|
||||||
|
printf ('<p><a href="%s">Retour à la liste des ServerNames</a></p>', $_SERVER['REDIRECT_URL']);
|
||||||
|
print "</center>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print "<center>";
|
||||||
|
printf ('<p>Echec dans la modification du ServerName %s</p>', $servername['servername']);
|
||||||
|
print ('<p>Le domaine existe déjà dans d\'autres vhosts.');
|
||||||
|
printf ('<p><a href="%s">Retour à la liste des ServerNames</a></p>', $_SERVER['REDIRECT_URL']);
|
||||||
|
print "</center>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print "<h2>Modification du ServerName</h2><hr>";
|
||||||
|
print "<form name=\"form-add\" id=\"form-add\" action=\"\" method=\"POST\">";
|
||||||
|
print " <fieldset>";
|
||||||
|
print " <legend>Modification du ServerName</legend>";
|
||||||
|
print $form;
|
||||||
|
print " <p><input type=\"submit\" value=\"Modifier\"/></p>";
|
||||||
|
print " </fieldset>";
|
||||||
|
print "</form>";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print "<h2>Modification du ServerName</h2><hr>";
|
||||||
|
print "<form name=\"form-add\" id=\"form-add\" action=\"\" method=\"POST\">";
|
||||||
|
print " <fieldset>";
|
||||||
|
print " <legend>Modification du ServerName</legend>";
|
||||||
|
print $form;
|
||||||
|
print " <p><input type=\"submit\" value=\"Modifier\"/></p>";
|
||||||
|
print " </fieldset>";
|
||||||
|
print "</form>";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/footer.tpl.php';
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$domain = $params[1];
|
||||||
|
$servername_list = array();
|
||||||
|
|
||||||
|
// TODO: adapt for cluster mode
|
||||||
|
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'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$alias_list = array();
|
||||||
|
|
||||||
|
/* parcours de la table Serveralias */
|
||||||
|
|||||||
|
$bdd = new bdd();
|
||||||
|
$bdd->open($cache);
|
||||||
|
|
||||||
|
$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);
|
||||||
|
|
||||||
|
foreach($data_output as $data_line) {
|
||||||
|
array_push($servername_list, $data_line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/header.tpl.php';
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/menu.tpl.php';
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/webadmin-servername.tpl.php';
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/footer.tpl.php';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -17,13 +17,37 @@ function domain_add($name, $IP, $with_mxs, $gmail=false) {
|
||||||
$exec_cmd .= ' -m mail,10';
|
$exec_cmd .= ' -m mail,10';
|
||||||
$exec_cmd .= ' -m backup.quai13.net.,20';
|
$exec_cmd .= ' -m backup.quai13.net.,20';
|
||||||
}
|
}
|
||||||
# mail('tech@evolix.fr', '[TAF] Ajouter '.$name.' sur quai13-backup', wordwrap('Ajouter le domaine '.$name.' à la directive relay_domains dans le fichier /etc/postfix/main.cf sur quai13-backup, pour mettre en place le MX secondaire du domaine.', 70));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$exec_cmd .= " -a $IP $name";
|
$exec_cmd .= " -a $IP $name";
|
||||||
|
|
||||||
//echo $exec_cmd."\n";
|
|
||||||
sudoexec($exec_cmd, $exec_output, $exec_return);
|
sudoexec($exec_cmd, $exec_output, $exec_return);
|
||||||
return array($exec_cmd, $exec_return, $exec_output);
|
return array($exec_cmd, $exec_return, $exec_output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ensure that the domain (or list of domains) do no exists in any other
|
||||||
|
* apache config file. Either as a ServerName or ServerAlias
|
||||||
|
*
|
||||||
|
* @param string $name Domain (or list of domains separated by commas)
|
||||||
|
*
|
||||||
|
* @return boolean True if one occurence is found. Else otherwise
|
||||||
|
*/
|
||||||
|
function check_occurence_name($name) {
|
||||||
|
|
||||||
|
// If no domain are given, that should be okay
|
||||||
|
if(strlen($name) === 0){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$exploded_names = explode(',', $name);
|
||||||
|
|
||||||
|
foreach ($exploded_names as $current_name) {
|
||||||
|
$check_occurence_cmd = 'web-add.sh check-occurence ' . escapeshellarg($current_name);
|
||||||
|
|
||||||
|
sudoexec($check_occurence_cmd, $check_occurence_output, $check_occurence_return);
|
||||||
|
if ($check_occurence_return == 0) return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
|
@ -109,8 +109,9 @@ del LOGIN [DBNAME]
|
||||||
list-vhost LOGIN
|
list-vhost LOGIN
|
||||||
|
|
||||||
List Apache vhost for user LOGIN
|
List Apache vhost for user LOGIN
|
||||||
|
|
||||||
check-vhosts -f
|
check-vhosts -f
|
||||||
|
|
||||||
List suggested changes to vhosts, apply fixes with -f
|
List suggested changes to vhosts, apply fixes with -f
|
||||||
|
|
||||||
add-alias VHOST ALIAS
|
add-alias VHOST ALIAS
|
||||||
|
@ -121,6 +122,31 @@ del-alias VHOST ALIAS
|
||||||
|
|
||||||
Del a ServerAlias from an Apache vhost
|
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
|
||||||
|
|
||||||
|
check-occurence NAME
|
||||||
|
|
||||||
|
List all occurences of NAME in vhosts
|
||||||
|
|
||||||
|
list-user-itk DOMAIN LOGIN
|
||||||
|
|
||||||
|
List the assigned ITK user for the DOMAIN specified
|
||||||
|
|
||||||
|
enable-user-itk DOMAIN LOGIN
|
||||||
|
|
||||||
|
Enable the assigned ITK user for the DOMAIN specified
|
||||||
|
|
||||||
|
disable-user-itk DOMAIN LOGIN
|
||||||
|
|
||||||
|
Disable the assigned ITK user for the DOMAIN specified
|
||||||
|
|
||||||
setphpversion LOGIN VERSION
|
setphpversion LOGIN VERSION
|
||||||
|
|
||||||
Change PHP version for LOGIN
|
Change PHP version for LOGIN
|
||||||
|
@ -261,7 +287,7 @@ create_www_account() {
|
||||||
${in_gid:+'--gid' "$in_gid"} \
|
${in_gid:+'--gid' "$in_gid"} \
|
||||||
--force-badname \
|
--force-badname \
|
||||||
--home "$HOME_DIR_USER" >/dev/null
|
--home "$HOME_DIR_USER" >/dev/null
|
||||||
|
|
||||||
[ -z "$in_sshkey" ] \
|
[ -z "$in_sshkey" ] \
|
||||||
&& echo "$in_login:$in_passwd" | chpasswd
|
&& echo "$in_login:$in_passwd" | chpasswd
|
||||||
|
|
||||||
|
@ -272,7 +298,7 @@ create_www_account() {
|
||||||
&& chmod -R u=rwX,g=,o= "$HOME_DIR_USER/.ssh/authorized_keys" \
|
&& chmod -R u=rwX,g=,o= "$HOME_DIR_USER/.ssh/authorized_keys" \
|
||||||
&& chown -R "$in_login":"$in_login" "$HOME_DIR_USER/.ssh"
|
&& chown -R "$in_login":"$in_login" "$HOME_DIR_USER/.ssh"
|
||||||
|
|
||||||
if [ "$WEB_SERVER" == "apache" ]; then
|
if [ "$WEB_SERVER" == "apache" ]; then
|
||||||
# Create www user and force UID if specified
|
# Create www user and force UID if specified
|
||||||
/usr/sbin/adduser \
|
/usr/sbin/adduser \
|
||||||
--gecos "WWW $in_login" \
|
--gecos "WWW $in_login" \
|
||||||
|
@ -486,25 +512,25 @@ EOT
|
||||||
|
|
||||||
if [ "$in_dbname" ]; then
|
if [ "$in_dbname" ]; then
|
||||||
sed -e "
|
sed -e "
|
||||||
s/LOGIN/$in_login/g ;
|
s/LOGIN/$in_login/g ;
|
||||||
s/SERVERNAME/$in_wwwdomain/ ;
|
s/SERVERNAME/$in_wwwdomain/ ;
|
||||||
s/PASSE1/$in_passwd/ ;
|
s/PASSE1/$in_passwd/ ;
|
||||||
s/PASSE2/$in_dbpasswd/ ;
|
s/PASSE2/$in_dbpasswd/ ;
|
||||||
s/RANDOM/$random/ ;
|
s/RANDOM/$random/ ;
|
||||||
s/QUOTA/$quota/ ;
|
s/QUOTA/$quota/ ;
|
||||||
s/RCPTTO/$in_mail/ ;
|
s/RCPTTO/$in_mail/ ;
|
||||||
s/DBNAME/$in_dbname/ ;
|
s/DBNAME/$in_dbname/ ;
|
||||||
s#HOME_DIR#$HOME_DIR#" \
|
s#HOME_DIR#$HOME_DIR#" \
|
||||||
< $TPL_MAIL | /usr/lib/sendmail -oi -t -f "$CONTACT_MAIL"
|
< $TPL_MAIL | /usr/lib/sendmail -oi -t -f "$CONTACT_MAIL"
|
||||||
else
|
else
|
||||||
sed -e "
|
sed -e "
|
||||||
s/LOGIN/$in_login/g ;
|
s/LOGIN/$in_login/g ;
|
||||||
s/SERVERNAME/$in_wwwdomain/ ;
|
s/SERVERNAME/$in_wwwdomain/ ;
|
||||||
s/PASSE1/$in_passwd/ ;
|
s/PASSE1/$in_passwd/ ;
|
||||||
s/RANDOM/$random/ ;
|
s/RANDOM/$random/ ;
|
||||||
s/QUOTA/$quota/ ;
|
s/QUOTA/$quota/ ;
|
||||||
s/RCPTTO/$in_mail/ ;
|
s/RCPTTO/$in_mail/ ;
|
||||||
s#HOME_DIR#$HOME_DIR# ;
|
s#HOME_DIR#$HOME_DIR# ;
|
||||||
39,58d" \
|
39,58d" \
|
||||||
< $TPL_MAIL | /usr/lib/sendmail -oi -t -f "$CONTACT_MAIL"
|
< $TPL_MAIL | /usr/lib/sendmail -oi -t -f "$CONTACT_MAIL"
|
||||||
fi
|
fi
|
||||||
|
@ -719,7 +745,7 @@ arg_processing() {
|
||||||
;;
|
;;
|
||||||
list-vhost)
|
list-vhost)
|
||||||
op_listvhost "$@"
|
op_listvhost "$@"
|
||||||
;;
|
;;
|
||||||
check-vhosts)
|
check-vhosts)
|
||||||
op_checkvhosts "$@"
|
op_checkvhosts "$@"
|
||||||
;;
|
;;
|
||||||
|
@ -729,6 +755,24 @@ arg_processing() {
|
||||||
del-alias)
|
del-alias)
|
||||||
op_aliasdel "$@"
|
op_aliasdel "$@"
|
||||||
;;
|
;;
|
||||||
|
list-servername)
|
||||||
|
op_listservername "$@"
|
||||||
|
;;
|
||||||
|
update-servername)
|
||||||
|
op_servernameupdate "$@"
|
||||||
|
;;
|
||||||
|
check-occurence)
|
||||||
|
op_checkoccurencename "$@"
|
||||||
|
;;
|
||||||
|
list-user-itk)
|
||||||
|
op_listuseritk "$@"
|
||||||
|
;;
|
||||||
|
enable-user-itk)
|
||||||
|
op_enableuseritk "$@"
|
||||||
|
;;
|
||||||
|
disable-user-itk)
|
||||||
|
op_disableuseritk "$@"
|
||||||
|
;;
|
||||||
setphpversion)
|
setphpversion)
|
||||||
op_setphpversion "$@"
|
op_setphpversion "$@"
|
||||||
;;
|
;;
|
||||||
|
@ -793,13 +837,146 @@ op_aliasdel() {
|
||||||
if [ $# -eq 2 ]; then
|
if [ $# -eq 2 ]; then
|
||||||
vhost="${1}.conf"
|
vhost="${1}.conf"
|
||||||
alias=$2
|
alias=$2
|
||||||
|
vhost_file="${VHOST_PATH}/${vhost}"
|
||||||
|
|
||||||
[ -f $VHOST_PATH/"$vhost" ] && sed -i -e "/ServerAlias $alias/d" $VHOST_PATH/"$vhost" --follow-symlinks
|
if [ -f "${vhost_file}" ]; then
|
||||||
|
sed -i -e "/ServerAlias $alias/d" "${vhost_file}" --follow-symlinks
|
||||||
|
else
|
||||||
|
echo "VHost file \`${vhost_file}' not found'" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
apache2ctl configtest 2>/dev/null
|
configtest_out=$(apache2ctl configtest)
|
||||||
/etc/init.d/apache2 force-reload >/dev/null
|
configtest_rc=$?
|
||||||
|
|
||||||
else usage
|
if [ "$configtest_rc" = "0" ]; then
|
||||||
|
/etc/init.d/apache2 force-reload >/dev/null
|
||||||
|
else
|
||||||
|
echo $configtest_out >&2
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
usage
|
||||||
|
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"
|
||||||
|
servername=$2
|
||||||
|
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
|
||||||
|
fi
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
op_checkoccurencename() {
|
||||||
|
if [ $# -eq 1 ]; then
|
||||||
|
name=${1}
|
||||||
|
configlist="$VHOST_PATH/*";
|
||||||
|
servernames=''
|
||||||
|
aliases=''
|
||||||
|
|
||||||
|
for configfile in $configlist; do
|
||||||
|
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
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "$servernames" "$aliases" | grep -w "$name"
|
||||||
|
else
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
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)
|
||||||
|
|
||||||
|
sed -i "/$domain/,/<\/VirtualHost>/ s/^ *AssignUserID $group/ AssignUserID www-$group/" "$configfile" --follow-symlinks
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
sed -i "/$domain/,/<\/VirtualHost>/ s/^ *AssignUserID www-$group/ AssignUserID ${group}/" "$configfile" --follow-symlinks
|
||||||
|
|
||||||
|
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
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1006,7 +1183,7 @@ op_add() {
|
||||||
op_checkvhosts() {
|
op_checkvhosts() {
|
||||||
ln_vhosts_dir="$(sed 's/available/enabled/' <<< "$VHOST_PATH")"
|
ln_vhosts_dir="$(sed 's/available/enabled/' <<< "$VHOST_PATH")"
|
||||||
non_ln_vhosts="$(find "$ln_vhosts_dir"/* ! -type l)"
|
non_ln_vhosts="$(find "$ln_vhosts_dir"/* ! -type l)"
|
||||||
|
|
||||||
while getopts f opt; do
|
while getopts f opt; do
|
||||||
case "$opt" in
|
case "$opt" in
|
||||||
f)
|
f)
|
||||||
|
@ -1018,7 +1195,7 @@ op_checkvhosts() {
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
for ln_path in $non_ln_vhosts
|
for ln_path in $non_ln_vhosts
|
||||||
do
|
do
|
||||||
vhost_name=$(basename "$ln_path")
|
vhost_name=$(basename "$ln_path")
|
||||||
|
|
|
@ -13,9 +13,7 @@
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
?>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
if(!empty($exec_info)) {
|
if(!empty($exec_info)) {
|
||||||
print '<pre>';
|
print '<pre>';
|
||||||
if ($conf['debug'] == TRUE)
|
if ($conf['debug'] == TRUE)
|
||||||
|
@ -23,7 +21,7 @@
|
||||||
|
|
||||||
if ($exec_info[1]) {
|
if ($exec_info[1]) {
|
||||||
print "La commande a <strong>échoué</strong>\n";
|
print "La commande a <strong>échoué</strong>\n";
|
||||||
print_r($exec_info);
|
print_r($exec_info);
|
||||||
}
|
}
|
||||||
else print "Le compte a été créé avec succès\n";
|
else print "Le compte a été créé avec succès\n";
|
||||||
|
|
||||||
|
@ -34,12 +32,21 @@
|
||||||
|
|
||||||
print '</pre>';
|
print '</pre>';
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
// If there is validation errors, display them
|
||||||
|
if (isset($errors_check)) {
|
||||||
|
print '<p class="form-error"><strong>Erreur(s) : </strong><br>';
|
||||||
|
foreach ($errors_check as $error) {
|
||||||
|
printf('%s<br>', $error);
|
||||||
|
}
|
||||||
|
print '</p>';
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<form name="form-add" id="form-add" action="" method="POST">
|
<form name="form-add" id="form-add" action="" method="POST">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>Ajout d'un compte</legend>
|
<legend>Ajout d'un compte</legend>
|
||||||
<?php print $form; ?>
|
<?= $form ?>
|
||||||
<p><input type="submit" value="Créer"/></p>
|
<p><input type="submit" value="Créer"/></p>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|
61
tpl/webadmin-itk.tpl.php
Normal file
61
tpl/webadmin-itk.tpl.php
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Edition d'un domaine
|
||||||
|
*
|
||||||
|
* Copyright (c) 2009 Evolix - Tous droits reserves
|
||||||
|
*
|
||||||
|
* vim: expandtab softtabstop=4 tabstop=4 shiftwidth=4 showtabline=2
|
||||||
|
*
|
||||||
|
* @author Thomas Martin <tmartin@evolix.fr>
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<h2>Sécurité ITK</h2>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
if(count($data_list) > 0) { ?>
|
||||||
|
|
||||||
|
<table id="tab-list">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>ServerName</th>
|
||||||
|
<th>Utilisateur</th>
|
||||||
|
<?php if (is_superadmin()) {
|
||||||
|
print '<th>Action</th>';
|
||||||
|
} ?>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php
|
||||||
|
for ( $i=0; $i < count($data_list); ++$i ) {
|
||||||
|
print '<tr>';
|
||||||
|
printf('<td>%s</td>',
|
||||||
|
$data_list[$i]['servername']);
|
||||||
|
printf('<td>%s</td>',
|
||||||
|
$data_list[$i]['user']);
|
||||||
|
if (is_superadmin()) {
|
||||||
|
|
||||||
|
if (strpos($data_list[$i]['user'], 'www') !== false) {
|
||||||
|
$action = ['disable', 'Désactiver'];
|
||||||
|
} else {
|
||||||
|
$action = ['enable', 'Activer'];
|
||||||
|
}
|
||||||
|
|
||||||
|
printf('<td><a href="/webadmin/itk/%s?%s=%s">'.$action[1].'</a></td>',
|
||||||
|
$domain, $action[0], $data_list[$i]['servername']);
|
||||||
|
}
|
||||||
|
print '</tr>';
|
||||||
|
} ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<?php
|
||||||
|
} else {
|
||||||
|
print "<p>La sécurité ITK ne semble pas en place pour le domaine $domain</p>";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
26
tpl/webadmin-php.tpl.php
Normal file
26
tpl/webadmin-php.tpl.php
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Edition d'un domaine
|
||||||
|
*
|
||||||
|
* Copyright (c) 2009 Evolix - Tous droits reserves
|
||||||
|
*
|
||||||
|
* vim: expandtab softtabstop=4 tabstop=4 shiftwidth=4 showtabline=2
|
||||||
|
*
|
||||||
|
* @author Thomas Martin <tmartin@evolix.fr>
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<h2>Version PHP</h2>
|
||||||
|
|
||||||
|
<p>Version actuelle de PHP : <?= preg_replace("/^(\d)(\d)$/", '\1.\2', $current_PHP_version) ?></p>
|
||||||
|
|
||||||
|
<form name="form-add" id="form-add" action="" method="POST">
|
||||||
|
<fieldset>
|
||||||
|
<legend>Changement de version de PHP</legend>
|
||||||
|
<?= $form ?>
|
||||||
|
<p><input type="submit" value="Changer"/></p>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
50
tpl/webadmin-servername.tpl.php
Normal file
50
tpl/webadmin-servername.tpl.php
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Edition d'un domaine
|
||||||
|
*
|
||||||
|
* Copyright (c) 2009 Evolix - Tous droits reserves
|
||||||
|
*
|
||||||
|
* vim: expandtab softtabstop=4 tabstop=4 shiftwidth=4 showtabline=2
|
||||||
|
*
|
||||||
|
* @author Thomas Martin <tmartin@evolix.fr>
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<h2>ServerNames</h2>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
if(count($servername_list) > 0) { ?>
|
||||||
|
|
||||||
|
<table id="tab-list">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>ServerName</th>
|
||||||
|
<?php if (is_superadmin()) {
|
||||||
|
print '<th>Action</th>';
|
||||||
|
} ?>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php
|
||||||
|
for ( $i=0; $i < count($servername_list); ++$i ) {
|
||||||
|
print '<tr>';
|
||||||
|
printf('<td>%s</td>',
|
||||||
|
$servername_list[$i]);
|
||||||
|
if (is_superadmin())
|
||||||
|
printf('<td><a href="/webadmin/servername/%s?edit=%s">Modifier</a></td>',
|
||||||
|
$domain, $servername_list[$i]);
|
||||||
|
print '</tr>';
|
||||||
|
} ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<?php
|
||||||
|
} else {
|
||||||
|
print "<p>Aucun ServerName existant pour le domaine $domain !</p>";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
|
@ -5,7 +5,7 @@
|
||||||
*
|
*
|
||||||
* Copyright (c) 2009 Evolix - Tous droits reserves
|
* Copyright (c) 2009 Evolix - Tous droits reserves
|
||||||
*
|
*
|
||||||
* vim: expandtab softtabstop=4 tabstop=4 shiftwidth=4 showtabline=2
|
* vim: expandtab softtabstop=4 tabstop=4 shiftwidth=4 showtabline=2
|
||||||
*
|
*
|
||||||
* @author Gregory Colpart <reg@evolix.fr>
|
* @author Gregory Colpart <reg@evolix.fr>
|
||||||
* @author Thomas Martin <tmartin@evolix.fr>
|
* @author Thomas Martin <tmartin@evolix.fr>
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<h2>Domaines</h2>
|
<h2>Liste des comptes web</h2>
|
||||||
|
|
||||||
<?php if(count($vhost_list) > 0) { ?>
|
<?php if(count($vhost_list) > 0) { ?>
|
||||||
<table id="tab-list">
|
<table id="tab-list">
|
||||||
|
@ -39,7 +39,12 @@
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<th> Actif ? </th>
|
<th> Actif ? </th>
|
||||||
<th> Action </th>
|
|
||||||
|
<?php if(is_superadmin()) {
|
||||||
|
print '<th>Administration</th>';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
<!--<th>Opérations</th>-->
|
<!--<th>Opérations</th>-->
|
||||||
<?php if($conf['cluster']) { ?>
|
<?php if($conf['cluster']) { ?>
|
||||||
<th>Bdd</th>
|
<th>Bdd</th>
|
||||||
|
@ -58,7 +63,7 @@
|
||||||
}
|
}
|
||||||
printf('<td><a href="http://%s">http://%s</a></td>',
|
printf('<td><a href="http://%s">http://%s</a></td>',
|
||||||
$vhost_info['server_name'], $vhost_info['server_name']);
|
$vhost_info['server_name'], $vhost_info['server_name']);
|
||||||
|
|
||||||
if ($conf['cluster']) {
|
if ($conf['cluster']) {
|
||||||
if (empty($vhost_info['bdd']))
|
if (empty($vhost_info['bdd']))
|
||||||
printf('<td bgcolor="#696969"/>');
|
printf('<td bgcolor="#696969"/>');
|
||||||
|
@ -94,9 +99,15 @@
|
||||||
printf('<td>%s</td>', preg_replace("/^(\d)(\d)$/", '\1.\2', $vhost_info['php_version']));
|
printf('<td>%s</td>', preg_replace("/^(\d)(\d)$/", '\1.\2', $vhost_info['php_version']));
|
||||||
}
|
}
|
||||||
printf('<td>%s</td>', ($vhost_info['is_enabled'] ? 'Activé' : 'Désactivé' ));
|
printf('<td>%s</td>', ($vhost_info['is_enabled'] ? 'Activé' : 'Désactivé' ));
|
||||||
|
|
||||||
if (is_superadmin()) {
|
if (is_superadmin()) {
|
||||||
printf('<td><a href="/webadmin/edit/%s">Lister/Modifier les alias</a></td>',
|
printf('<td>');
|
||||||
$vhost_info['owner']);
|
printf('<a href="/webadmin/edit/%s">Alias</a> - ', $vhost_info['owner']);
|
||||||
|
printf('<a href="/webadmin/servername/%s">Servername</a> - ', $vhost_info['owner']);
|
||||||
|
printf('<a href="/webadmin/itk/%s">ITK</a> - ', $vhost_info['owner']);
|
||||||
|
printf('<a href="/webadmin/php/%s">PHP</a>', $vhost_info['owner']);
|
||||||
|
printf('</td>');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
Loading…
Reference in a new issue
We really should pick a language
Whut ?