Merge untracked code into evoadmin-web.
This commit is contained in:
parent
63a2f16b27
commit
e6edffd820
|
@ -1,20 +1,30 @@
|
||||||
|
#!/usr/bin/php
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
require '../lib/bdd.php';
|
require '../lib/bdd.php';
|
||||||
require_once '../conf/config.php';
|
require_once '../htdocs/common.php';
|
||||||
require_once '../conf/config.local.php';
|
|
||||||
|
|
||||||
|
|
||||||
if ($argc==1) {
|
|
||||||
echo "Specify a server name";
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
$conf = array_merge($oriconf, $localconf);
|
|
||||||
|
|
||||||
$bdd = new bdd();
|
$bdd = new bdd();
|
||||||
|
|
||||||
$file=$conf['cache'];
|
$file = '';
|
||||||
|
$server = '';
|
||||||
|
if (is_mcluster_mode()) {
|
||||||
|
if ($argc != 3) {
|
||||||
|
echo "Multi-cluster mode is enabled in your config file.\n";
|
||||||
|
echo "Usage: $argv[0] <cluster> <server>\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
$file = str_replace('%cluster_name%', $argv[1], $conf['cache']);
|
||||||
|
$server = $argv[2];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if ($argc != 2) {
|
||||||
|
echo "Usage: $argv[0] <server>\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
$file = $conf['cache'];
|
||||||
|
$server = $argv[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!file_exists($file)) {
|
if (!file_exists($file)) {
|
||||||
echo "$file doesn't exist\n";
|
echo "$file doesn't exist\n";
|
||||||
|
@ -22,13 +32,8 @@ if (!file_exists($file)) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$bdd->open($file);
|
$bdd->open($file);
|
||||||
|
|
||||||
$server = array("name" => $argv[1]);
|
|
||||||
|
|
||||||
$bdd->add_server(array("name" => "$server"));
|
$bdd->add_server(array("name" => "$server"));
|
||||||
exec('ssh -o "UserKnownHostsFile '.$conf['known_host'].'" '.$argv[1].' /bin/true');
|
echo "$server added in $file\n";
|
||||||
|
|
||||||
echo "$server added in cache\n";
|
|
||||||
exit(0);
|
exit(0);
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
|
|
@ -1,28 +1,31 @@
|
||||||
|
#!/usr/bin/php
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
require '../lib/bdd.php';
|
require '../lib/bdd.php';
|
||||||
require_once '../conf/config.php';
|
require_once '../htdocs/common.php';
|
||||||
require_once '../conf/config.local.php';
|
|
||||||
|
|
||||||
$conf = array_merge($oriconf, $localconf);
|
$files = array();
|
||||||
|
if (is_mcluster_mode()) {
|
||||||
|
foreach ($conf['clusters'] as $cluster) {
|
||||||
$bdd = new bdd();
|
array_push($files, str_replace('%cluster_name%', $cluster, $conf['cache']));
|
||||||
|
}
|
||||||
$file=$conf['cache'];
|
}
|
||||||
|
|
||||||
if (!file_exists($file))
|
|
||||||
$bdd->create($file);
|
|
||||||
else {
|
else {
|
||||||
echo "$file is already created";
|
array_push($files, $conf['cache']);
|
||||||
exit(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($conf['servers'] as $server) {
|
foreach ($files as $file) {
|
||||||
echo "$server added in cache\n";
|
|
||||||
$bdd->add_server(array("name" => "$server"));
|
$bdd = new bdd();
|
||||||
|
|
||||||
|
if (!file_exists($file)) {
|
||||||
|
$bdd->create($file);
|
||||||
|
echo "$file created.\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
echo "$file is already created.\n";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "Cache initialisé\n";
|
|
||||||
exit(0);
|
exit(0);
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -1,23 +1,33 @@
|
||||||
|
#!/usr/bin/php
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
require '../lib/bdd.php';
|
require '../lib/bdd.php';
|
||||||
require_once '../conf/config.php';
|
require_once '../htdocs/common.php';
|
||||||
require_once '../conf/config.local.php';
|
|
||||||
|
|
||||||
$conf = array_merge($oriconf, $localconf);
|
$file = '';
|
||||||
|
$server = '';
|
||||||
|
if (is_mcluster_mode()) {
|
||||||
$bdd = new bdd();
|
if ($argc != 2) {
|
||||||
|
echo "Multi-cluster mode is enabled in your config file.\n";
|
||||||
$file=$conf['cache'];
|
echo "Usage: $argv[0] <cluster>\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
$file = str_replace('%cluster_name%', $argv[1], $conf['cache']);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if ($argc != 1) {
|
||||||
|
echo "Usage: $argv[0]\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
$file = $conf['cache'];
|
||||||
|
}
|
||||||
|
|
||||||
if (!file_exists($file)) {
|
if (!file_exists($file)) {
|
||||||
echo "$file is not created\n";
|
echo "$file is not created\n";
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$bdd = new bdd();
|
||||||
$bdd->open($file);
|
$bdd->open($file);
|
||||||
|
|
||||||
$domains = $bdd->list_domains();
|
$domains = $bdd->list_domains();
|
||||||
print_r($domains);
|
print_r($domains);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Configuration page
|
||||||
|
*
|
||||||
|
* Copyright (c) 2009 Evolix - Tous droits reserves
|
||||||
|
*
|
||||||
|
* $Id: config.php 273 2009-05-12 13:54:50Z tmartin $
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
|
||||||
|
$clusterconf['noreplication'] = array('srv00');
|
||||||
|
$clusterconf['postponedreplication'] = array('srv00', 'srv01', 'srv04');
|
||||||
|
$clusterconf['immediatereplication'] = array('srv00', 'srv01');
|
||||||
|
$clusterconf['postponedreplication_mode'] = array('3 fois/jour', '1 fois/jour', '1 fois/heure');
|
||||||
|
// On specifie des serveurs pour certains modes de replication différés
|
||||||
|
//$clusterconf['1 fois/jour'] = array('srv03', 'srv01');
|
||||||
|
$clusterconf['1 fois/heure'] = array('srv01', 'srv00');
|
||||||
|
|
||||||
|
/* opcodes
|
||||||
|
* type indice array mode
|
||||||
|
|
||||||
|
noreplication 1 x
|
||||||
|
postponedrepl 2 x y m
|
||||||
|
immediaterepl 3 x y
|
||||||
|
*/
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Configuration page
|
||||||
|
*
|
||||||
|
* Copyright (c) 2009 Evolix - Tous droits reserves
|
||||||
|
*
|
||||||
|
* $Id: config.php 273 2009-05-12 13:54:50Z tmartin $
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
|
||||||
|
$clusterconf['noreplication'] = array('srv10');
|
||||||
|
$clusterconf['postponedreplication'] = array('srv10', 'srv11');
|
||||||
|
$clusterconf['immediatereplication'] = array('srv10', 'srv11');
|
||||||
|
$clusterconf['postponedreplication_mode'] = array('3 fois/jour', '1 fois/jour', '1 fois/heure');
|
||||||
|
$clusterconf['1 fois/heure'] = array('srv10', 'srv11');
|
|
@ -27,19 +27,7 @@ $oriconf['cache'] = '/home/evoadmin/www/cache.sqlite';
|
||||||
$localconf['known_host'] = '/home/evoadmin/www/known_host';
|
$localconf['known_host'] = '/home/evoadmin/www/known_host';
|
||||||
$oriconf['ftpadmin'] = TRUE;
|
$oriconf['ftpadmin'] = TRUE;
|
||||||
|
|
||||||
/* cluster mode
|
$oriconf['noreplication'] = array('srv00.example.com', 'srv01.example.com', 'srv02.example.com');
|
||||||
* $oriconf['noreplication'] = array('www00');
|
$oriconf['postponedreplication'] = array('srv00.example.com', 'srv01.example.com', 'srv02.example.com');
|
||||||
* $oriconf['postponedreplication'] = array('www00', 'www01');
|
$oriconf['immediatereplication'] = array('srv00.example.com', 'srv01.example.com');
|
||||||
* $oriconf['immediatereplication'] = array('www00', 'www01');
|
$oriconf['postponedreplication_mode'] = array('1 fois/jour', '3 fois/jour', '1 fois/jour');
|
||||||
* $oriconf['postponedreplication_mode'] = array('3 fois/jour', '1 fois/jour', '1 fois/heure');
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Il est possible de définir pour chaque mode de
|
|
||||||
* postponedreplication_mode une liste de serveurs,
|
|
||||||
* qui seront utilisés à la place des serveurs du
|
|
||||||
* tableau postponedreplication.
|
|
||||||
*
|
|
||||||
* $localconf['1 fois/jour'] = array('www00', 'www01');
|
|
||||||
* $localconf['1 fois/heure'] = array('www01', 'www00');
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
|
@ -373,7 +373,7 @@ class TextInputFormField extends FormField {
|
||||||
protected $mandatory = NULL;
|
protected $mandatory = NULL;
|
||||||
protected $textsize = NULL;
|
protected $textsize = NULL;
|
||||||
|
|
||||||
public function __construct($label, $mandatory=TRUE, $textsize=array(20, 40)) {
|
public function __construct($label, $mandatory=TRUE, $textsize=array(20, 80)) {
|
||||||
parent::__construct($label);
|
parent::__construct($label);
|
||||||
$this->mandatory = $mandatory;
|
$this->mandatory = $mandatory;
|
||||||
$this->textsize = $textsize;
|
$this->textsize = $textsize;
|
||||||
|
@ -422,7 +422,7 @@ class DateInputFormField extends TextInputFormField {
|
||||||
if($set_error) $this->error = 'Format de date non valide';
|
if($set_error) $this->error = 'Format de date non valide';
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
$arr_date = split('/', $this->value);
|
$arr_date = explode('/', $this->value);
|
||||||
if(!empty($this->value) &&
|
if(!empty($this->value) &&
|
||||||
!checkdate($arr_date[1],$arr_date[0],$arr_date[2])) {
|
!checkdate($arr_date[1],$arr_date[0],$arr_date[2])) {
|
||||||
if($set_error) $this->error = "La date saisie n'existe pas";
|
if($set_error) $this->error = "La date saisie n'existe pas";
|
||||||
|
|
|
@ -34,7 +34,7 @@ function http_redirect($path) {
|
||||||
function findexts ($filename)
|
function findexts ($filename)
|
||||||
{
|
{
|
||||||
$filename = strtolower($filename) ;
|
$filename = strtolower($filename) ;
|
||||||
$exts = split("[/\\.]", $filename) ;
|
$exts = explode("[/\\.]", $filename) ;
|
||||||
$n = count($exts)-1;
|
$n = count($exts)-1;
|
||||||
$exts = $exts[$n];
|
$exts = $exts[$n];
|
||||||
return $exts;
|
return $exts;
|
||||||
|
@ -49,7 +49,7 @@ function is_superadmin() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function sudoexec($cmd, &$output, &$return_var) {
|
function sudoexec($cmd, $output, $return_var) {
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
/* -H The -H (HOME) option sets the HOME environment variable to the
|
/* -H The -H (HOME) option sets the HOME environment variable to the
|
||||||
|
@ -60,6 +60,33 @@ function sudoexec($cmd, &$output, &$return_var) {
|
||||||
exec($cmd, $output, $return_var);
|
exec($cmd, $output, $return_var);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return TRUE is Evoadmin is installed in cluster mode.
|
||||||
|
*/
|
||||||
|
function is_cluster_mode() {
|
||||||
|
global $conf;
|
||||||
|
return $conf['cluster'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return TRUE is Evoadmin is installed in multi-cluster mode.
|
||||||
|
*/
|
||||||
|
function is_mcluster_mode() {
|
||||||
|
global $conf;
|
||||||
|
return is_cluster_mode() && array_key_exists('clusters', $conf) && is_array($conf['clusters']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load config file for the specified cluster.
|
||||||
|
*/
|
||||||
|
function load_config_cluster($cluster) {
|
||||||
|
global $conf;
|
||||||
|
$configfile = '../conf/config.'.$cluster.'.php';
|
||||||
|
test_exist($configfile);
|
||||||
|
require_once($configfile);
|
||||||
|
$conf = array_merge($conf, $clusterconf);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Includes
|
* Includes
|
||||||
*/
|
*/
|
||||||
|
@ -84,4 +111,3 @@ if (!(ini_set('include_path', ini_get('include_path')))) {
|
||||||
test_exist('/etc/shadow');
|
test_exist('/etc/shadow');
|
||||||
$conf = array_merge($oriconf, $localconf);
|
$conf = array_merge($oriconf, $localconf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 170 B |
Binary file not shown.
After Width: | Height: | Size: 112 B |
|
@ -52,6 +52,10 @@ if (!array_key_exists('auth', $_SESSION) || $_SESSION['auth']!=1) {
|
||||||
|
|
||||||
include_once EVOADMIN_BASE . '../inc/webadmin-edit.php';
|
include_once EVOADMIN_BASE . '../inc/webadmin-edit.php';
|
||||||
|
|
||||||
|
} elseif (preg_match('#^/webadmin/suppr/(.*)/?$#', $uri, $params)) {
|
||||||
|
|
||||||
|
include_once EVOADMIN_BASE . '../inc/webadmin-suppr.php';
|
||||||
|
|
||||||
} elseif (is_superadmin() && preg_match('#^/accounts/?#', $uri, $params)) {
|
} elseif (is_superadmin() && preg_match('#^/accounts/?#', $uri, $params)) {
|
||||||
|
|
||||||
include_once EVOADMIN_BASE . '../inc/accounts.php';
|
include_once EVOADMIN_BASE . '../inc/accounts.php';
|
||||||
|
|
|
@ -15,41 +15,20 @@
|
||||||
|
|
||||||
require_once EVOADMIN_BASE . '../evolibs/Form.php';
|
require_once EVOADMIN_BASE . '../evolibs/Form.php';
|
||||||
require_once EVOADMIN_BASE . '../lib/bdd.php';
|
require_once EVOADMIN_BASE . '../lib/bdd.php';
|
||||||
|
require_once EVOADMIN_BASE . '../lib/domain.php';
|
||||||
|
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
$servers=$conf['servers'];
|
if (is_mcluster_mode()) {
|
||||||
$servers_slave=$conf['servers'];
|
// If the user has not yet selected a cluster, redirect-it to home page.
|
||||||
|
if (empty($_SESSION['cluster'])) {
|
||||||
$servers_slave[]='Aucun';
|
http_redirect('/');
|
||||||
$cache=$conf['cache'];
|
|
||||||
|
|
||||||
|
|
||||||
function domain_add($name, $IP, $with_mxs, $gmail=false) {
|
|
||||||
|
|
||||||
$exec_cmd = 'bind-add-ng.sh';
|
|
||||||
|
|
||||||
if ( $with_mxs == true ) {
|
|
||||||
/* Quai13 specific: use Gmail MXs if wanted */
|
|
||||||
if ( $gmail ) {
|
|
||||||
$exec_cmd .= ' -m ASPMX.L.GOOGLE.com.,10';
|
|
||||||
$exec_cmd .= ' -m ALT1.ASPMX.L.GOOGLE.com.,20';
|
|
||||||
$exec_cmd .= ' -m ALT2.ASPMX.L.GOOGLE.com.,20';
|
|
||||||
$exec_cmd .= ' -m ASPMX2.GOOGLEMAIL.com.,30';
|
|
||||||
$exec_cmd .= ' -m ASPMX3.GOOGLEMAIL.com.,30';
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$exec_cmd .= ' -m mail,10';
|
|
||||||
$exec_cmd .= ' -m backup.quai13.net.,20';
|
|
||||||
}
|
|
||||||
mail($conf['techmail'], '[TAF] Ajouter '.$name.' sur le serveur de mail', wordwrap('Ajouter le domaine '.$name.' à la directive relay_domains dans le fichier /etc/postfix/main.cf sur le serveur mail, pour mettre en place le MX secondaire du domaine.', 70));
|
|
||||||
}
|
}
|
||||||
|
$cache = str_replace('%cluster_name%', $_SESSION['cluster'], $conf['cache']);
|
||||||
$exec_cmd .= " -a $IP $name";
|
load_config_cluster($_SESSION['cluster']);
|
||||||
|
}
|
||||||
//echo $exec_cmd."\n";
|
else {
|
||||||
sudoexec($exec_cmd, $exec_output, $exec_return);
|
$cache = $conf['cache'];
|
||||||
return array($exec_cmd, $exec_return, $exec_output);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function web_add($form, $admin_mail) {
|
function web_add($form, $admin_mail) {
|
||||||
|
@ -77,7 +56,22 @@ function web_add($form, $admin_mail) {
|
||||||
$form->getField('username')->getValue(),
|
$form->getField('username')->getValue(),
|
||||||
$form->getField('domain')->getValue());
|
$form->getField('domain')->getValue());
|
||||||
|
|
||||||
sudoexec($exec_cmd, $exec_output, $exec_return);
|
//domain_add($form, $_SERVER['SERVER_ADDR'], true);
|
||||||
|
//sudoexec($exec_cmd, $exec_output, $exec_return);
|
||||||
|
|
||||||
|
/* Gestion des noms de domaines supplementaires */
|
||||||
|
if ( $form->getField('domain_alias')->getValue() ) {
|
||||||
|
$domain_alias = preg_split('/,/', $form->getField('domain_alias')->getValue());
|
||||||
|
foreach ( $domain_alias as $domain ) {
|
||||||
|
$exec_cmd = 'web-add.sh add-alias '.$form->getField('domain')->getValue().' ';
|
||||||
|
$domain = trim($domain);
|
||||||
|
$exec_cmd .= $domain.' '.$master.' '.$slave;
|
||||||
|
sudoexec($exec_cmd, $exec_output, $exec_return);
|
||||||
|
//domain_add($form, gethostbyname($master), false);
|
||||||
|
}
|
||||||
|
$exec_return |= $exec_return2; // $exec_return == 0 if $exec_return == 0 && $exec_return2 == 0
|
||||||
|
array_push($exec_output, $exec_output2);
|
||||||
|
}
|
||||||
|
|
||||||
return array($exec_cmd, $exec_return, $exec_output);
|
return array($exec_cmd, $exec_return, $exec_output);
|
||||||
}
|
}
|
||||||
|
@ -205,6 +199,10 @@ function web_add_cluster($form, $admin_mail) {
|
||||||
|
|
||||||
$account['name'] = $form->getField('username')->getValue();
|
$account['name'] = $form->getField('username')->getValue();
|
||||||
$account['domain'] = $form->getField('domain')->getValue();
|
$account['domain'] = $form->getField('domain')->getValue();
|
||||||
|
if ($form->getField('use_gmail_mxs')->getValue())
|
||||||
|
$account['mail'] = 'gmail';
|
||||||
|
else
|
||||||
|
$account['mail'] = 'evolix';
|
||||||
|
|
||||||
$bdd->add_account($account);
|
$bdd->add_account($account);
|
||||||
|
|
||||||
|
@ -242,7 +240,7 @@ function web_add_cluster($form, $admin_mail) {
|
||||||
|
|
||||||
/* Construction du formulaire d'ajout */
|
/* Construction du formulaire d'ajout */
|
||||||
$form = new FormPage("Ajout d'un compte web", FALSE);
|
$form = new FormPage("Ajout d'un compte web", FALSE);
|
||||||
$form->addField('username', new TextInputFormField("Nom d'utilisateur", TRUE));
|
$form->addField('username', new TextInputFormField("Nom d'utilisateur", TRUE, array(20,16)));
|
||||||
$form->addField('domain', new TextInputFormField("Nom de domaine", TRUE));
|
$form->addField('domain', new TextInputFormField("Nom de domaine", TRUE));
|
||||||
$form->addField('domain_alias', new TextInputFormField("Alias (séparés par une virgule)", FALSE));
|
$form->addField('domain_alias', new TextInputFormField("Alias (séparés par une virgule)", FALSE));
|
||||||
$form->addField('password_random',
|
$form->addField('password_random',
|
||||||
|
@ -255,7 +253,7 @@ $form->addField('mysql_db',
|
||||||
FALSE));
|
FALSE));
|
||||||
$form->getField('mysql_db')->setValue(TRUE);
|
$form->getField('mysql_db')->setValue(TRUE);
|
||||||
$form->addField('mysql_dbname',
|
$form->addField('mysql_dbname',
|
||||||
new TextInputFormField("Nom de la base MySQL", FALSE));
|
new TextInputFormField("Nom de la base MySQL", FALSE, array(20,16)));
|
||||||
//$form->getField('mysql_dbname')->setDisabled();
|
//$form->getField('mysql_dbname')->setDisabled();
|
||||||
$form->addField('mysql_password_random',
|
$form->addField('mysql_password_random',
|
||||||
new CheckboxInputFormField("Mot de passe MySQL aléatoire ?",
|
new CheckboxInputFormField("Mot de passe MySQL aléatoire ?",
|
||||||
|
|
|
@ -30,7 +30,7 @@ if ((empty($_GET['form']) || $_GET['form']!=1) && !empty($_POST)) {
|
||||||
|
|
||||||
$user = posix_getpwnam($username);
|
$user = posix_getpwnam($username);
|
||||||
// On nettoie le nom complet
|
// On nettoie le nom complet
|
||||||
$gecos = split(',',$user['gecos']);
|
$gecos = explode(',',$user['gecos']);
|
||||||
$user['gecos'] = $gecos[0];
|
$user['gecos'] = $gecos[0];
|
||||||
$_SESSION['user_id'] = $user['uid'];
|
$_SESSION['user_id'] = $user['uid'];
|
||||||
$_SESSION['user_gid'] = $user['gid'];
|
$_SESSION['user_gid'] = $user['gid'];
|
||||||
|
|
|
@ -182,14 +182,14 @@ if ($action=="add") {
|
||||||
|
|
||||||
foreach ($account_list as $account) {
|
foreach ($account_list as $account) {
|
||||||
|
|
||||||
$infos = split(':', $account);
|
$infos = explode(':', $account);
|
||||||
|
|
||||||
|
|
||||||
if (!empty($infos[0])) {
|
if (!empty($infos[0])) {
|
||||||
$table[$num_line]['owner'] = $infos[0];
|
$table[$num_line]['owner'] = $infos[0];
|
||||||
$table[$num_line]['name'] = $infos[1];
|
$table[$num_line]['name'] = $infos[1];
|
||||||
|
|
||||||
$path = split("/", $infos[2]);
|
$path = explode("/", $infos[2]);
|
||||||
$rel_path='';
|
$rel_path='';
|
||||||
foreach($path as $id => $folder) {
|
foreach($path as $id => $folder) {
|
||||||
if ($id>2) $rel_path.='/'.$folder;
|
if ($id>2) $rel_path.='/'.$folder;
|
||||||
|
|
16
inc/home.php
16
inc/home.php
|
@ -13,6 +13,22 @@
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
require_once EVOADMIN_BASE . '../evolibs/Form.php';
|
||||||
|
|
||||||
|
if (is_mcluster_mode()) {
|
||||||
|
$form = new FormPage("Sélection du cluster", FALSE);
|
||||||
|
$form->addField('cluster_name', new SelectFormField('cluster', FALSE, $conf['clusters']));
|
||||||
|
|
||||||
|
if (!empty($_POST)) {
|
||||||
|
$form->isCurrentPage(TRUE);
|
||||||
|
$form->initFields();
|
||||||
|
|
||||||
|
if ($form->verify(TRUE)) {
|
||||||
|
$_SESSION['cluster'] = $form->getField('cluster_name')->getReadableValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
include_once EVOADMIN_BASE . '../tpl/header.tpl.php';
|
include_once EVOADMIN_BASE . '../tpl/header.tpl.php';
|
||||||
include_once EVOADMIN_BASE . '../tpl/menu.tpl.php';
|
include_once EVOADMIN_BASE . '../tpl/menu.tpl.php';
|
||||||
include_once EVOADMIN_BASE . '../tpl/home.tpl.php';
|
include_once EVOADMIN_BASE . '../tpl/home.tpl.php';
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require_once EVOADMIN_BASE . '../lib/bdd.php';
|
require_once EVOADMIN_BASE . '../lib/bdd.php';
|
||||||
|
require_once EVOADMIN_BASE . '../lib/domain.php';
|
||||||
|
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
|
@ -31,28 +32,55 @@ if (isset($_GET['del']) ) {
|
||||||
|
|
||||||
|
|
||||||
$serveralias = array (
|
$serveralias = array (
|
||||||
'domain' => htmlspecialchars(basename($_SERVER['REDIRECT_SCRIPT_URL'])),
|
'domain' => htmlspecialchars(basename($_SERVER['REDIRECT_URL'])),
|
||||||
'alias' => $alias
|
'alias' => $alias
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($conf['cluster']) {
|
if ($conf['cluster']) {
|
||||||
|
|
||||||
$cache = $conf['cache'];
|
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 = new bdd();
|
||||||
$bdd->open($cache);
|
$bdd->open($cache);
|
||||||
|
|
||||||
if (! $bdd->del_serveralias($serveralias))
|
$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) {
|
||||||
|
if (! $bdd->del_serveralias($serveralias))
|
||||||
|
print "<p>La suppression a échouée. Veuillez contacter votre administrateur.</p>";
|
||||||
|
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ée. Veuillez contacter votre administrateur.</p>";
|
||||||
|
|
||||||
}
|
}
|
||||||
printf ('<p><a href="%s">Retour à la liste des alias</a></p>', $_SERVER['REDIRECT_SCRIPT_URL']);
|
printf ('<p><a href="%s">Retour à la liste des alias</a></p>', $_SERVER['REDIRECT_URL']);
|
||||||
print "</center>";
|
print "</center>";
|
||||||
|
|
||||||
} else if ( ! isset($_GET['modif']) ) {
|
} else if ( ! isset($_GET['modif']) ) {
|
||||||
|
|
||||||
print "<center>";
|
print "<center>";
|
||||||
print "<p>Confirmez vous la suppression de $alias ?</p>";
|
print "<p>Confirmez vous la suppression de $alias ?</p>";
|
||||||
printf ('<p><a href="%s?del=%s&modif=yes">Confirmer la suppression</a></p>', $_SERVER['REDIRECT_SCRIPT_URL'], $alias);
|
printf ('<p><a href="%s?del=%s&modif=yes">Confirmer la suppression</a></p>', $_SERVER['REDIRECT_URL'], $alias);
|
||||||
printf ('<p><a href="%s">Retour à la liste des alias</a></p>', $_SERVER['REDIRECT_SCRIPT_URL']);
|
printf ('<p><a href="%s">Retour à la liste des alias</a></p>', $_SERVER['REDIRECT_URL']);
|
||||||
print "</center>";
|
print "</center>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,57 +103,72 @@ if (isset($_GET['del']) ) {
|
||||||
|
|
||||||
if ($form->verify(TRUE)) {
|
if ($form->verify(TRUE)) {
|
||||||
if ($conf['cluster']) {
|
if ($conf['cluster']) {
|
||||||
$cache = $conf['cache'];
|
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 = new bdd();
|
||||||
$bdd->open($cache);
|
$bdd->open($cache);
|
||||||
|
|
||||||
$serveralias = array (
|
$serveralias = array (
|
||||||
'domain' => htmlspecialchars(basename($_SERVER['REDIRECT_SCRIPT_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'];
|
||||||
$account = $bdd->get_account($account_name);
|
$account = $bdd->get_account($account_name);
|
||||||
|
|
||||||
|
|
||||||
if (sizeof($account) == 0)
|
if (sizeof($account) == 0)
|
||||||
die("Anomalie... Contactez votre administrateur.");
|
die("Anomalie... Contactez votre administrateur.");
|
||||||
|
|
||||||
$master = $bdd->get_server_from_roleid($account['id_master']);
|
$master = $bdd->get_server_from_roleid($account['id_master']);
|
||||||
$slave = $bdd->get_server_from_roleid($account['id_slave']);
|
$slave = $bdd->get_server_from_roleid($account['id_slave']);
|
||||||
|
|
||||||
/* 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);
|
|
||||||
|
|
||||||
/* bind add */
|
if ( $bdd->is_serveralias( $account_name, $serveralias['alias'] ) == 0 ) {
|
||||||
$exec_cmd = 'bind-add-ng.sh';
|
|
||||||
$exec_cmd .= ' -a '. gethostbyname($master) .' '.$serveralias['alias'];
|
|
||||||
sudoexec($exec_cmd, $exec_output, $exec_return2);
|
|
||||||
|
|
||||||
$exec_return |= $exec_return2;
|
|
||||||
|
|
||||||
if ($exec_return == 0) {
|
/* web-add-cluster addalias */
|
||||||
/* Ajout BDD */
|
$exec_cmd = 'web-add-cluster.sh add-alias '.$serveralias['domain'].' '.$serveralias['alias'].' '.$master.' '.$slave;
|
||||||
$bdd->add_serveralias($serveralias);
|
sudoexec($exec_cmd, $exec_output, $exec_return);
|
||||||
|
|
||||||
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
|
if ($exec_return == 0) {
|
||||||
# pour prendre en compte le nouveau domaine.
|
/* Ajout BDD */
|
||||||
if ($account['replication'] == "realtime") {
|
$bdd->add_serveralias($serveralias);
|
||||||
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));
|
|
||||||
|
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>";
|
||||||
}
|
}
|
||||||
|
|
||||||
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_SCRIPT_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>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_SCRIPT_URL']);
|
printf ('<p><a href="%s">Retour à la liste des alias</a></p>', $_SERVER['REDIRECT_URL']);
|
||||||
print "</center>";
|
print "</center>";
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -150,8 +193,16 @@ if (isset($_GET['del']) ) {
|
||||||
$alias_list = array();
|
$alias_list = array();
|
||||||
|
|
||||||
if ($conf['cluster']) {
|
if ($conf['cluster']) {
|
||||||
|
if (is_mcluster_mode()) {
|
||||||
$cache = $conf['cache'];
|
// 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();
|
$alias_list = array();
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,198 @@
|
||||||
|
<?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['del']) ) {
|
||||||
|
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/header.tpl.php';
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/menu.tpl.php';
|
||||||
|
|
||||||
|
$alias = htmlspecialchars($_GET['del']);
|
||||||
|
|
||||||
|
if (isset($_GET['modif']) && ($_GET['modif'] == 'yes')) {
|
||||||
|
|
||||||
|
print "<center>";
|
||||||
|
print "<p>Suppression de $alias...</p>";
|
||||||
|
|
||||||
|
|
||||||
|
$serveralias = array (
|
||||||
|
'domain' => htmlspecialchars(basename($_SERVER['REDIRECT_SCRIPT_URL'])),
|
||||||
|
'alias' => $alias
|
||||||
|
);
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
$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) {
|
||||||
|
if (! $bdd->del_serveralias($serveralias))
|
||||||
|
print "<p>La suppression a échouée. Veuillez contacter votre administrateur.</p>";
|
||||||
|
printf ('<p>Alias %s est supprimé.</p>', $serveralias['alias']);
|
||||||
|
} else
|
||||||
|
print "<p>La suppression a échouée. Veuillez contacter votre administrateur.</p>";
|
||||||
|
|
||||||
|
}
|
||||||
|
printf ('<p><a href="%s">Retour à la liste des alias</a></p>', $_SERVER['REDIRECT_SCRIPT_URL']);
|
||||||
|
print "</center>";
|
||||||
|
|
||||||
|
} else if ( ! isset($_GET['modif']) ) {
|
||||||
|
|
||||||
|
print "<center>";
|
||||||
|
print "<p>Confirmez vous la suppression de $alias ?</p>";
|
||||||
|
printf ('<p><a href="%s?del=%s&modif=yes">Confirmer la suppression</a></p>', $_SERVER['REDIRECT_SCRIPT_URL'], $alias);
|
||||||
|
printf ('<p><a href="%s">Retour à la liste des alias</a></p>', $_SERVER['REDIRECT_SCRIPT_URL']);
|
||||||
|
print "</center>";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/footer.tpl.php';
|
||||||
|
|
||||||
|
} else if (isset($_GET['add']) ) {
|
||||||
|
|
||||||
|
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("Ajout d'un alias", FALSE);
|
||||||
|
$form->addField('domain_alias', new TextInputFormField("Alias", FALSE));
|
||||||
|
|
||||||
|
if (!empty($_POST)) {
|
||||||
|
$form->isCurrentPage(TRUE);
|
||||||
|
$form->initFields();
|
||||||
|
|
||||||
|
if ($form->verify(TRUE)) {
|
||||||
|
if ($conf['cluster']) {
|
||||||
|
$cache = $conf['cache'];
|
||||||
|
$bdd = new bdd();
|
||||||
|
$bdd->open($cache);
|
||||||
|
|
||||||
|
$serveralias = array (
|
||||||
|
'domain' => htmlspecialchars(basename($_SERVER['REDIRECT_SCRIPT_URL'])),
|
||||||
|
'alias' => $form->getField('domain_alias')->getValue(),
|
||||||
|
);
|
||||||
|
|
||||||
|
$account_name=$serveralias['domain'];
|
||||||
|
$account = $bdd->get_account($account_name);
|
||||||
|
|
||||||
|
if (sizeof($account) == 0)
|
||||||
|
die("Anomalie... Contactez votre administrateur.");
|
||||||
|
|
||||||
|
$master = $bdd->get_server_from_roleid($account['id_master']);
|
||||||
|
$slave = $bdd->get_server_from_roleid($account['id_slave']);
|
||||||
|
|
||||||
|
|
||||||
|
if ( $bdd->is_serveralias( $account_name, $serveralias['alias'] ) == 0 ) {
|
||||||
|
|
||||||
|
/* web-add-cluster addalias */
|
||||||
|
$exec_cmd = 'web-add-cluster.sh add-alias '.$serveralias['domain'].' '.$serveralias['alias'].' '.$master.' '.$slave;
|
||||||
|
sudoexec($exec_cmd, $exec_output, $exec_return);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if ($exec_return == 0) {
|
||||||
|
/* Ajout BDD */
|
||||||
|
$bdd->add_serveralias($serveralias);
|
||||||
|
|
||||||
|
domain_add($serveralias['alias'], gethostbyname($master) , false);
|
||||||
|
|
||||||
|
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_SCRIPT_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_SCRIPT_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_SCRIPT_URL']);
|
||||||
|
print "</center>";
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
print "<form name=\"form-add\" id=\"form-add\" action=\"\" method=\"POST\">";
|
||||||
|
print " <fieldset>";
|
||||||
|
print " <legend>Ajout d'un serveralias</legend>";
|
||||||
|
print $form;
|
||||||
|
print " <p><input type=\"submit\" value=\"Créer\"/></p>";
|
||||||
|
print " </fieldset>";
|
||||||
|
print "</form>";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
include_once EVOADMIN_BASE . '../tpl/footer.tpl.php';
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$domain = $params[1];
|
||||||
|
$alias_list = array();
|
||||||
|
|
||||||
|
if ($conf['cluster']) {
|
||||||
|
|
||||||
|
$cache = $conf['cache'];
|
||||||
|
|
||||||
|
$alias_list = array();
|
||||||
|
|
||||||
|
/* parcours de la table Serveralias */
|
||||||
|
$bdd = new bdd();
|
||||||
|
$bdd->open($cache);
|
||||||
|
|
||||||
|
$alias_list = $bdd->list_serveralias($domain);
|
||||||
|
}
|
||||||
|
|
||||||
|
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';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -30,7 +30,7 @@ if (!$conf['cluster']) {
|
||||||
/* Récupération de cette liste dans le tableau $vhost_list */
|
/* Récupération de cette liste dans le tableau $vhost_list */
|
||||||
$vhost_list = array();
|
$vhost_list = array();
|
||||||
foreach($data_output as $data_line) {
|
foreach($data_output as $data_line) {
|
||||||
$data_split = split(':', $data_line);
|
$data_split = explode(':', $data_line);
|
||||||
array_push($vhost_list, array(
|
array_push($vhost_list, array(
|
||||||
'owner' => $data_split[0],
|
'owner' => $data_split[0],
|
||||||
'configid' => $data_split[1],
|
'configid' => $data_split[1],
|
||||||
|
@ -42,7 +42,16 @@ if (!$conf['cluster']) {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
$cache=$conf['cache'];
|
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'];
|
||||||
|
}
|
||||||
|
|
||||||
$vhost_list = array();
|
$vhost_list = array();
|
||||||
|
|
||||||
|
@ -65,6 +74,7 @@ else {
|
||||||
'owner' => $account['name'],
|
'owner' => $account['name'],
|
||||||
'server_name'=> $account['domain'],
|
'server_name'=> $account['domain'],
|
||||||
'bdd' => $account['bdd'],
|
'bdd' => $account['bdd'],
|
||||||
|
'mail' => $account['mail'],
|
||||||
'replication' => $account['replication'],
|
'replication' => $account['replication'],
|
||||||
'master' => $master,
|
'master' => $master,
|
||||||
'slave' => $slave)
|
'slave' => $slave)
|
||||||
|
@ -75,6 +85,7 @@ else {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
include_once EVOADMIN_BASE . '../tpl/header.tpl.php';
|
include_once EVOADMIN_BASE . '../tpl/header.tpl.php';
|
||||||
include_once EVOADMIN_BASE . '../tpl/menu.tpl.php';
|
include_once EVOADMIN_BASE . '../tpl/menu.tpl.php';
|
||||||
include_once EVOADMIN_BASE . '../tpl/webadmin.tpl.php';
|
include_once EVOADMIN_BASE . '../tpl/webadmin.tpl.php';
|
||||||
|
|
118
lib/bdd.php
118
lib/bdd.php
|
@ -43,17 +43,17 @@ class bdd {
|
||||||
private $db; /* resource of a created database */
|
private $db; /* resource of a created database */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @desc Open a sqlite database. Create it if it doesn't exist.
|
* @desc Open a sqlite database in rw mode. Create it if it doesn't exist.
|
||||||
* @param string $db_name Name of the sqlite database
|
* @param string $db_name Name of the sqlite database
|
||||||
*/
|
*/
|
||||||
public function open($db_name)
|
public function open($db_name)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$this->db = new SQLiteDatabase($db_name, 0666, $error);
|
$this->db = new SQLite3($db_name);
|
||||||
}
|
}
|
||||||
catch(Exception $e)
|
catch(Exception $e)
|
||||||
{
|
{
|
||||||
die ($error);
|
die ($e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,38 +83,38 @@ class bdd {
|
||||||
|
|
||||||
/* Table Accounts */
|
/* Table Accounts */
|
||||||
$query = 'CREATE Table Accounts ' .
|
$query = 'CREATE Table Accounts ' .
|
||||||
'(id INTEGER PRIMARY KEY , name TEXT, domain TEXT, bdd TEXT, replication TEXT, id_master INTEGER, id_slave INTEGER)';
|
'(id INTEGER PRIMARY KEY , name TEXT, domain TEXT, bdd TEXT, replication TEXT, id_master INTEGER, id_slave INTEGER, mail TEXT)';
|
||||||
|
|
||||||
if (!$database->queryExec($query, $error))
|
if (!$database->exec($query))
|
||||||
{
|
{
|
||||||
die($error);
|
die($database->lastErrorMsg());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Table Servers */
|
/* Table Servers */
|
||||||
$query = 'CREATE Table Servers ' .
|
$query = 'CREATE Table Servers ' .
|
||||||
'(id INTEGER PRIMARY KEY , name TEXT, ip TEXT)';
|
'(id INTEGER PRIMARY KEY , name TEXT, ip TEXT)';
|
||||||
|
|
||||||
if (!$database->queryExec($query, $error))
|
if (!$database->exec($query))
|
||||||
{
|
{
|
||||||
die($error);
|
die($database->lastErrorMsg());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Table ServersAlias */
|
/* Table ServersAlias */
|
||||||
$query = 'CREATE Table Serveralias ' .
|
$query = 'CREATE Table Serveralias ' .
|
||||||
'(id INTEGER PRIMARY KEY , domain TEXT, alias TEXT)';
|
'(id INTEGER PRIMARY KEY , domain TEXT, alias TEXT)';
|
||||||
|
|
||||||
if (!$database->queryExec($query, $error))
|
if (!$database->exec($query))
|
||||||
{
|
{
|
||||||
die($error);
|
die($database->lastErrorMsg());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Table Roles */
|
/* Table Roles */
|
||||||
$query = 'CREATE Table Roles ' .
|
$query = 'CREATE Table Roles ' .
|
||||||
'(id INTEGER PRIMARY KEY , name TEXT, id_account INTEGER, id_server INTEGER)';
|
'(id INTEGER PRIMARY KEY , name TEXT, id_account INTEGER, id_server INTEGER)';
|
||||||
|
|
||||||
if (!$database->queryExec($query, $error))
|
if (!$database->exec($query))
|
||||||
{
|
{
|
||||||
die($error);
|
die($database->lastErrorMsg());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,11 +124,12 @@ class bdd {
|
||||||
|
|
||||||
$query = "SELECT Servers.name FROM Servers, Roles where Roles.id = '$roleid' and Roles.id_server = Servers.id";
|
$query = "SELECT Servers.name FROM Servers, Roles where Roles.id = '$roleid' and Roles.id_server = Servers.id";
|
||||||
|
|
||||||
if ($result = $database->query($query, SQLITE_ASSOC, $error))
|
$result = $database->query($query);
|
||||||
|
if ($result != FALSE)
|
||||||
{
|
{
|
||||||
$row = $result->fetch();
|
$row = $result->fetchArray();
|
||||||
if (isset($row))
|
if (isset($row))
|
||||||
return $row['Servers.name'];
|
return $row['name'];
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -146,9 +147,10 @@ class bdd {
|
||||||
|
|
||||||
$query = "SELECT id FROM Accounts where name = '$account_name'";
|
$query = "SELECT id FROM Accounts where name = '$account_name'";
|
||||||
|
|
||||||
if ($result = $database->query($query, SQLITE_ASSOC, $error))
|
$result = $database->query($query);
|
||||||
|
if ($result != FALSE)
|
||||||
{
|
{
|
||||||
$row = $result->fetch();
|
$row = $result->fetchArray();
|
||||||
if (isset($row))
|
if (isset($row))
|
||||||
return $row['id'];
|
return $row['id'];
|
||||||
}
|
}
|
||||||
|
@ -167,9 +169,10 @@ class bdd {
|
||||||
|
|
||||||
$query = "SELECT * FROM Accounts where name = '$account_name'";
|
$query = "SELECT * FROM Accounts where name = '$account_name'";
|
||||||
|
|
||||||
if ($result = $database->query($query, SQLITE_ASSOC, $error))
|
$result = $database->query($query);
|
||||||
|
if ($result != FALSE)
|
||||||
{
|
{
|
||||||
$row = $result->fetch();
|
$row = $result->fetchArray();
|
||||||
if (isset($row))
|
if (isset($row))
|
||||||
return $row;
|
return $row;
|
||||||
else
|
else
|
||||||
|
@ -197,6 +200,7 @@ class bdd {
|
||||||
* 'domain' => "$domain",
|
* 'domain' => "$domain",
|
||||||
* 'bdd' => "bdd",
|
* 'bdd' => "bdd",
|
||||||
* 'replication' => "replication"
|
* 'replication' => "replication"
|
||||||
|
* 'mail' => "gmail|evolix"
|
||||||
* }
|
* }
|
||||||
* @return 1 on success,
|
* @return 1 on success,
|
||||||
* 0 else
|
* 0 else
|
||||||
|
@ -209,21 +213,23 @@ class bdd {
|
||||||
$domain = $account["domain"];
|
$domain = $account["domain"];
|
||||||
$bdd = $account["bdd"];
|
$bdd = $account["bdd"];
|
||||||
$replication = $account["replication"];
|
$replication = $account["replication"];
|
||||||
|
$mail = $account["mail"];
|
||||||
|
|
||||||
/* check if account exists */
|
/* check if account exists */
|
||||||
if ($this->is_account($name))
|
if ($this->is_account($name))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
$query = "INSERT INTO Accounts (name, domain, bdd, replication)
|
$query = "INSERT INTO Accounts (name, domain, bdd, replication, mail)
|
||||||
VALUES (
|
VALUES (
|
||||||
'$name',
|
'$name',
|
||||||
'$domain',
|
'$domain',
|
||||||
'$bdd',
|
'$bdd',
|
||||||
'$replication');";
|
'$replication',
|
||||||
|
'$mail');";
|
||||||
|
|
||||||
if (!$database->queryExec($query, $error))
|
if (!$database->exec($query))
|
||||||
{
|
{
|
||||||
die($error);
|
die($database->lastErrorMsg());
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -250,9 +256,9 @@ class bdd {
|
||||||
'$domain',
|
'$domain',
|
||||||
'$alias');";
|
'$alias');";
|
||||||
|
|
||||||
if (!$database->queryExec($query, $error))
|
if (!$database->exec($query))
|
||||||
{
|
{
|
||||||
die($error);
|
die($database->lastErrorMsg());
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -276,8 +282,8 @@ class bdd {
|
||||||
|
|
||||||
$query = "DELETE FROM Serveralias WHERE domain='$domain' AND alias='$alias';";
|
$query = "DELETE FROM Serveralias WHERE domain='$domain' AND alias='$alias';";
|
||||||
|
|
||||||
if (!$database->queryExec($query, $error))
|
if (!$database->exec($query))
|
||||||
die($error);
|
die($database->lastErrorMsg());
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -294,9 +300,10 @@ class bdd {
|
||||||
|
|
||||||
$query = "SELECT id FROM Servers where name = '$server_name'";
|
$query = "SELECT id FROM Servers where name = '$server_name'";
|
||||||
|
|
||||||
if ($result = $database->query($query, SQLITE_ASSOC, $error))
|
$result = $database->query($query);
|
||||||
|
if ($result != FALSE)
|
||||||
{
|
{
|
||||||
$row = $result->fetch();
|
$row = $result->fetchArray();
|
||||||
if (isset($row))
|
if (isset($row))
|
||||||
return $row['id'];
|
return $row['id'];
|
||||||
}
|
}
|
||||||
|
@ -339,8 +346,8 @@ class bdd {
|
||||||
'$name'
|
'$name'
|
||||||
);";
|
);";
|
||||||
|
|
||||||
if (!$database->queryExec($query, $error))
|
if (!$database->exec($query))
|
||||||
die($error);
|
die($database->lastErrorMsg());
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -373,8 +380,8 @@ class bdd {
|
||||||
'$id_account',
|
'$id_account',
|
||||||
'$id_server')";
|
'$id_server')";
|
||||||
|
|
||||||
if (!$database->queryExec($query, $error))
|
if (!$database->exec($query))
|
||||||
die($error);
|
die($database->lastErrorMsg());
|
||||||
|
|
||||||
$id = $database->lastInsertRowid();
|
$id = $database->lastInsertRowid();
|
||||||
|
|
||||||
|
@ -382,8 +389,8 @@ class bdd {
|
||||||
if (($role === 'master') || ($role === 'slave'))
|
if (($role === 'master') || ($role === 'slave'))
|
||||||
$query = "UPDATE Accounts SET id_$role = '$id' WHERE id = '$id_account'";
|
$query = "UPDATE Accounts SET id_$role = '$id' WHERE id = '$id_account'";
|
||||||
|
|
||||||
if (!$database->queryExec($query, $error))
|
if (!$database->exec($query))
|
||||||
die($error);
|
die($database->lastErrorMsg());
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -423,12 +430,13 @@ class bdd {
|
||||||
$database = $this->db;
|
$database = $this->db;
|
||||||
|
|
||||||
$query = "SELECT * FROM Accounts, Roles, Servers WHERE Accounts.id = Roles.id_account AND Roles.id_server = Servers.id";
|
$query = "SELECT * FROM Accounts, Roles, Servers WHERE Accounts.id = Roles.id_account AND Roles.id_server = Servers.id";
|
||||||
if($result = $database->query($query, SQLITE_ASSOC, $error))
|
$result = $database->query($query);
|
||||||
|
if($result != FALSE)
|
||||||
{
|
{
|
||||||
$domains = array();
|
$domains = array();
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
while($row = $result->fetch())
|
while($row = $result->fetchArray())
|
||||||
{
|
{
|
||||||
$domains[$i] = $row;
|
$domains[$i] = $row;
|
||||||
++$i;
|
++$i;
|
||||||
|
@ -442,16 +450,17 @@ class bdd {
|
||||||
|
|
||||||
public function list_accounts()
|
public function list_accounts()
|
||||||
{
|
{
|
||||||
$database = $this->db;
|
$database = $this->db;
|
||||||
|
|
||||||
$query = "SELECT * FROM Accounts";
|
$query = "SELECT * FROM Accounts";
|
||||||
|
|
||||||
if($result = $database->query($query, SQLITE_ASSOC, $error))
|
$result = $database->query($query);
|
||||||
|
if ($result != FALSE)
|
||||||
{
|
{
|
||||||
$accounts = array();
|
$accounts = array();
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
while($row = $result->fetch())
|
while($row = $result->fetchArray())
|
||||||
{
|
{
|
||||||
$accounts[$i] = $row;
|
$accounts[$i] = $row;
|
||||||
++$i;
|
++$i;
|
||||||
|
@ -472,12 +481,13 @@ class bdd {
|
||||||
|
|
||||||
$query = "SELECT * FROM Serveralias WHERE domain = '$domain'";
|
$query = "SELECT * FROM Serveralias WHERE domain = '$domain'";
|
||||||
|
|
||||||
if ($result = $database->query($query, SQLITE_ASSOC, $error))
|
$result = $database->query($query);
|
||||||
|
if ($result != FALSE)
|
||||||
{
|
{
|
||||||
$serveralias = array();
|
$serveralias = array();
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
while($row = $result->fetch())
|
while($row = $result->fetchArray())
|
||||||
{
|
{
|
||||||
$serveralias[$i] = $row;
|
$serveralias[$i] = $row;
|
||||||
++$i;
|
++$i;
|
||||||
|
@ -488,4 +498,26 @@ class bdd {
|
||||||
|
|
||||||
return $serveralias;
|
return $serveralias;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function is_serveralias($domain, $alias)
|
||||||
|
{
|
||||||
|
$database = $this->db;
|
||||||
|
|
||||||
|
if ($domain == NULL)
|
||||||
|
return 0;
|
||||||
|
if ($alias == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
$query = "SELECT id FROM Serveralias WHERE domain = '$domain' and alias = '$alias'";
|
||||||
|
|
||||||
|
$result = $database->query($query);
|
||||||
|
if ($result != FALSE)
|
||||||
|
{
|
||||||
|
$row = $result->fetchArray();
|
||||||
|
return !!($row['id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
function domain_add($name, $IP, $with_mxs, $gmail=false) {
|
||||||
|
|
||||||
|
$exec_cmd = 'bind-add-ng.sh';
|
||||||
|
|
||||||
|
if ( $with_mxs == true ) {
|
||||||
|
/* Quai13 specific: use Gmail MXs if wanted */
|
||||||
|
if ( $gmail ) {
|
||||||
|
$exec_cmd .= ' -m ASPMX.L.GOOGLE.com.,10';
|
||||||
|
$exec_cmd .= ' -m ALT1.ASPMX.L.GOOGLE.com.,20';
|
||||||
|
$exec_cmd .= ' -m ALT2.ASPMX.L.GOOGLE.com.,20';
|
||||||
|
$exec_cmd .= ' -m ASPMX2.GOOGLEMAIL.com.,30';
|
||||||
|
$exec_cmd .= ' -m ASPMX3.GOOGLEMAIL.com.,30';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$exec_cmd .= ' -m mail,10';
|
||||||
|
$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";
|
||||||
|
|
||||||
|
//echo $exec_cmd."\n";
|
||||||
|
sudoexec($exec_cmd, $exec_output, $exec_return);
|
||||||
|
return array($exec_cmd, $exec_return, $exec_output);
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,210 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
BINDROOT="/etc/bind"
|
||||||
|
DBTEMPLATE="$BINDROOT/db.example.com"
|
||||||
|
SLAVE="ns4.evolix.net"
|
||||||
|
LOGFILE="/var/log/bind-add.log"
|
||||||
|
ADD_DOMAIN_SLAVE="/usr/share/scripts/add_domain_slave_ns4.sh"
|
||||||
|
ADD_RELAY_DOMAIN="/usr/share/scripts/add_relay_domains.sh"
|
||||||
|
|
||||||
|
# Redirect stderr to $LOGFILE since Evoadmin don't catch stderr correctly.
|
||||||
|
#exec 2>>$LOGFILE
|
||||||
|
# Duplicate stderr on $LOGFILE (bashism)
|
||||||
|
exec 2> >(tee -a $LOGFILE >&2)
|
||||||
|
|
||||||
|
# Create zone file for a new domain.
|
||||||
|
create_domain () {
|
||||||
|
domain="$1"
|
||||||
|
ip="$2"
|
||||||
|
|
||||||
|
zonefile="$BINDROOT/db.$domain"
|
||||||
|
|
||||||
|
# Create new zone file
|
||||||
|
cp -p $DBTEMPLATE $zonefile
|
||||||
|
sed -i "s/_IP_/$ip/" $zonefile
|
||||||
|
|
||||||
|
# Add domain to bind conf
|
||||||
|
sed "s/__DATE__/`date "+%d.%m.%Y"`/; s/example.com/$domain/" \
|
||||||
|
$BINDROOT/named.conf.single >> $BINDROOT/named.conf.evolix
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add a MX record to an existing domain.
|
||||||
|
add_mx () {
|
||||||
|
domain="$1"
|
||||||
|
mx="$2"
|
||||||
|
mx_priority="$3"
|
||||||
|
mx_subdomain="$4"
|
||||||
|
|
||||||
|
zonefile="$BINDROOT/db.$domain"
|
||||||
|
|
||||||
|
# Quai13 specific. See #8053.
|
||||||
|
if [ "$mx_subdomain" != "@" ]; then
|
||||||
|
log INFO "Not adding MX record for subdomain $mx_subdomain."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! grep -q -E "^$mx_subdomain[ \t]+IN[ \t]+MX[ \t]+[[:digit:]]+[ \t]+$mx$" $zonefile; then
|
||||||
|
echo "$mx_subdomain IN MX $mx_priority $mx" >>$zonefile
|
||||||
|
else
|
||||||
|
log ERR "MX Record $mx already exists."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add a subdomain (CNAME) to an existing domain.
|
||||||
|
add_subdomain () {
|
||||||
|
domain="$1"
|
||||||
|
subdomain="$2"
|
||||||
|
|
||||||
|
zonefile="$BINDROOT/db.$domain"
|
||||||
|
|
||||||
|
if ! grep -q -E "^$subdomain[ \t]+IN[ \t]+(CNAME|A)[ \t]+" $zonefile; then
|
||||||
|
echo "$subdomain IN CNAME @" >>$zonefile
|
||||||
|
else
|
||||||
|
log ERR "CNAME or A record for $subdomain already exists."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Incremente serial number for a domain, check zone, and reload rndc daemon.
|
||||||
|
inc_and_reload () {
|
||||||
|
domain="$1"
|
||||||
|
|
||||||
|
zonefile="$BINDROOT/db.$domain"
|
||||||
|
|
||||||
|
sed -i "s/^\([ \t]*\)[0-9]\{10\}\([ \t]*; serial\)/\1`date "+%Y%m%d%H"`\2/" \
|
||||||
|
$zonefile
|
||||||
|
if stderr=$(named-checkzone $domain $zonefile 2>&1); then
|
||||||
|
rndc reload
|
||||||
|
else
|
||||||
|
log ERR "named-checkzone returns non zero exit code: $stderr"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Send mail to staff to create domain on the slave server.
|
||||||
|
send_mail () {
|
||||||
|
#addr_master=$(ifconfig eth0 |perl -ne 'print "$1" if /addr:([\d\.]+)/')
|
||||||
|
echo "IP du serveur maitre : 46.105.42.13" |
|
||||||
|
mail -s "[TAF] Ajouter le domaine $domain sur $SLAVE" tech@evolix.fr
|
||||||
|
}
|
||||||
|
|
||||||
|
usage () {
|
||||||
|
cat >&2 <<EOT
|
||||||
|
Usage: $0 -a <A record> [-m <MX record>,<priority>] [-s subdomain] domain
|
||||||
|
E.g.: $0 -a 192.0.2.12 -m mail,10 -s foo example.net
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
- -m and -s options can be specified multiple times to add multiple MX
|
||||||
|
records and/or subdomains
|
||||||
|
- you can also create a subdomain "foo" with this syntax (even if example.net
|
||||||
|
is not yet created):
|
||||||
|
$0 foo.example.net
|
||||||
|
EOT
|
||||||
|
}
|
||||||
|
|
||||||
|
log () {
|
||||||
|
level="$1"
|
||||||
|
message="$2"
|
||||||
|
|
||||||
|
if [ "$level" = "ERR" ]; then
|
||||||
|
echo -n "$(date +"%b %d %T") " >>$LOGFILE
|
||||||
|
echo "ERROR: $message" |tee -a $LOGFILE >&2
|
||||||
|
elif [ "$level" = "INFO" ]; then
|
||||||
|
echo -n "$(date +"%b %d %T") " >>$LOGFILE
|
||||||
|
echo "INFO: $message" |tee -a $LOGFILE
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
log INFO "$0 $*"
|
||||||
|
|
||||||
|
# Options parsing.
|
||||||
|
|
||||||
|
while getopts 'a:s:m:' opt; do
|
||||||
|
case $opt in
|
||||||
|
a)
|
||||||
|
ip=$OPTARG
|
||||||
|
;;
|
||||||
|
s)
|
||||||
|
subdomains="$subdomains $OPTARG"
|
||||||
|
;;
|
||||||
|
m)
|
||||||
|
mxs="$mxs $OPTARG"
|
||||||
|
;;
|
||||||
|
\?)
|
||||||
|
log ERR "Invalid option -$OPTARG."
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
if [ $# -eq 1 ]; then
|
||||||
|
fqdn=$(echo $1 |tr '[:upper:]' '[:lower:]')
|
||||||
|
else
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If the domain contains a subdomain, extracts it.
|
||||||
|
if [ $(echo "$fqdn" |grep -oF '.' |wc -l) -gt 1 ]; then
|
||||||
|
domain=$(echo $fqdn |grep -o '[^\.]\+\.[^\.]\+$')
|
||||||
|
if [ ${fqdn%.$domain} != "www" ]; then # www is already present in the zone template, so skip it.
|
||||||
|
subdomains="$subdomains ${fqdn%.$domain}"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
domain="$fqdn"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $BINDROOT/db.$domain ]; then
|
||||||
|
log INFO "Creating domain $domain."
|
||||||
|
if [ -n "$ip" ]; then
|
||||||
|
create_domain $domain $ip
|
||||||
|
#send_mail $domain
|
||||||
|
$ADD_DOMAIN_SLAVE $domain
|
||||||
|
$ADD_RELAY_DOMAIN $domain
|
||||||
|
else
|
||||||
|
log ERR "Domain $domain does not exist and -a option is not set."
|
||||||
|
log "Could not create domain."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
log INFO "domain $domain created successfully."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$mxs" ]; then
|
||||||
|
for mx in $mxs; do
|
||||||
|
log INFO "Adding MX record $mx to domain $domain."
|
||||||
|
mx_domain=$(echo $mx |cut -d ',' -f '1')
|
||||||
|
mx_priority=$(echo $mx |cut -d ',' -f '2')
|
||||||
|
mx_subdomain="${fqdn%.$domain}"
|
||||||
|
if [ "$mx_subdomain" = "$domain" ] || [ "$mx_subdomain" = "www" ]; then
|
||||||
|
mx_subdomain="@"
|
||||||
|
fi
|
||||||
|
if ! add_mx $domain $mx_domain $mx_priority "$mx_subdomain"; then
|
||||||
|
log ERR "Error: adding MX record failed."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
log INFO "MX record $mx added successfully to domain $domain."
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$subdomains" ]; then
|
||||||
|
for subdomain in $subdomains; do
|
||||||
|
log INFO "Adding CNAME record $subdomain to domain $domain."
|
||||||
|
if ! add_subdomain $domain $subdomain; then
|
||||||
|
log ERR "Error: adding CNAME record failed."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
log INFO "CNAME record $subdomain added successfully to domain $domain."
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
log INFO "Reloading rndc."
|
||||||
|
if ! inc_and_reload $domain; then
|
||||||
|
log ERR "Error: zone not loaded due to errors."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
log INFO "rndc reloaded successfully."
|
|
@ -28,6 +28,7 @@
|
||||||
|
|
||||||
Order Deny,Allow
|
Order Deny,Allow
|
||||||
Deny from all
|
Deny from all
|
||||||
|
|
||||||
#Allow from YYY.YYY.YYY.YYY
|
#Allow from YYY.YYY.YYY.YYY
|
||||||
|
|
||||||
Satisfy any
|
Satisfy any
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
AllowOverride None
|
AllowOverride None
|
||||||
|
|
||||||
Deny from all
|
Deny from all
|
||||||
|
|
||||||
#Allow from XXX.XXX.XXX.XXX
|
#Allow from XXX.XXX.XXX.XXX
|
||||||
</Directory>
|
</Directory>
|
||||||
|
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
HOME="/root"
|
HOME="/root"
|
||||||
CONTACT_MAIL=""
|
CONTACT_MAIL="jdoe@example.org"
|
||||||
WWWBOUNCE_MAIL=""
|
WWWBOUNCE_MAIL="jdoe@example.org"
|
||||||
LOCAL_SCRIPT="/usr/share/scripts/web-add.local.sh"
|
LOCAL_SCRIPT="/usr/share/scripts/web-add.local.sh"
|
||||||
PRE_LOCAL_SCRIPT="/usr/share/scripts/web-add.pre-local.sh"
|
PRE_LOCAL_SCRIPT="/usr/share/scripts/web-add.pre-local.sh"
|
||||||
TPL_VHOST="/usr/share/scripts/vhost"
|
TPL_VHOST="/usr/share/scripts/vhost"
|
||||||
|
@ -265,15 +265,20 @@ create_www_accounts() {
|
||||||
|
|
||||||
if [ "$in_replmode" != "realtime" ]; then
|
if [ "$in_replmode" != "realtime" ]; then
|
||||||
|
|
||||||
echo "SLAVE: $CMD_SLAVE $WEBADD add -p '$in_passwd' $opts_mysql -l $in_mail -y -u $uid -g $uid -U $(($uid + 1)) $in_login $in_wwwdomain"
|
echo "SLAVE: $CMD_SLAVE $WEBADD add -p '$in_passwd' $opts_mysql -l null@example.org -y -u $uid -g $uid -U $(($uid + 1)) $in_login $in_wwwdomain"
|
||||||
$CMD_SLAVE $WEBADD add -p \'$in_passwd\' $opts_mysql -l $in_mail -y -u $uid -g $uid -U $(($uid + 1)) $in_login $in_wwwdomain || (in_error "creation du compte slave sur $in_slave: $?" && exit 1)
|
$CMD_SLAVE $WEBADD add -p \'$in_passwd\' $opts_mysql -l null@example.org -y -u $uid -g $uid -U $(($uid + 1)) $in_login $in_wwwdomain || (in_error "creation du compte slave sur $in_slave: $?" && exit 1)
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
echo "SLAVE: $CMD_SLAVE $WEBADD add -p '$in_passwd' -l $in_mail -y -u $uid -g $uid -U $(($uid + 1)) $in_login $in_wwwdomain"
|
echo "SLAVE: $CMD_SLAVE $WEBADD add -p '$in_passwd' -l null@example.org -y -u $uid -g $uid -U $(($uid + 1)) $in_login $in_wwwdomain"
|
||||||
$CMD_SLAVE $WEBADD add -p \'$in_passwd\' -l $in_mail -y -u $uid -g $uid -U $(($uid + 1)) $in_login $in_wwwdomain || (in_error "creation du compte slave sur $in_slave: $?" && exit 1)
|
$CMD_SLAVE $WEBADD add -p \'$in_passwd\' -l null@example.org -y -u $uid -g $uid -U $(($uid + 1)) $in_login $in_wwwdomain || (in_error "creation du compte slave sur $in_slave: $?" && exit 1)
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# On ne veut pas que le site soit actif sur le serveur slave
|
||||||
|
$CMD_SLAVE a2dissite $in_login
|
||||||
|
$CMD_SLAVE /etc/init.d/apache2 reload
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Les operation suivantes sont faites uniquement si une replication doit
|
# Les operation suivantes sont faites uniquement si une replication doit
|
||||||
|
@ -375,12 +380,12 @@ ENDSSH
|
||||||
cron_line="*/$in_replinterval * * * * /opt/evocluster/sync-master-to-slave.sh"
|
cron_line="*/$in_replinterval * * * * /opt/evocluster/sync-master-to-slave.sh"
|
||||||
cron_line2="*/$in_replinterval * * * * /opt/evocluster/get-domains.sh $in_login |while read domain; do /opt/evocluster/sync-master-to-slave_mail.sh \$domain $in_login; done"
|
cron_line2="*/$in_replinterval * * * * /opt/evocluster/get-domains.sh $in_login |while read domain; do /opt/evocluster/sync-master-to-slave_mail.sh \$domain $in_login; done"
|
||||||
elif [ $in_replunit = "hour" ]; then
|
elif [ $in_replunit = "hour" ]; then
|
||||||
minute=$(($RANDOM % 60))
|
minute=$(($RANDOM % 54))
|
||||||
offset=5
|
offset=5
|
||||||
cron_line="$minute */$in_replinterval * * * /opt/evocluster/sync-master-to-slave.sh"
|
cron_line="$minute */$in_replinterval * * * /opt/evocluster/sync-master-to-slave.sh"
|
||||||
cron_line2="$(($minute+$offset)) */$in_replinterval * * * /opt/evocluster/get-domains.sh $in_login |while read domain; do /opt/evocluster/sync-master-to-slave_mail.sh \$domain $in_login; done"
|
cron_line2="$(($minute+$offset)) */$in_replinterval * * * /opt/evocluster/get-domains.sh $in_login |while read domain; do /opt/evocluster/sync-master-to-slave_mail.sh \$domain $in_login; done"
|
||||||
fi
|
fi
|
||||||
$CMD_MASTER "(crontab -lu $in_login; echo \"$cron_line\") |crontab -u $in_login -"
|
$CMD_MASTER "(crontab -lu $in_login; echo -e \"$cron_line\") |crontab -u $in_login -"
|
||||||
$CMD_MASTER "(crontab -lu $VMAIL_USER; echo '$cron_line2') |crontab -u $VMAIL_USER -"
|
$CMD_MASTER "(crontab -lu $VMAIL_USER; echo '$cron_line2') |crontab -u $VMAIL_USER -"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -420,13 +425,13 @@ op_del() {
|
||||||
|
|
||||||
# check account exist on master and slave
|
# check account exist on master and slave
|
||||||
if [ -z "$($CMD_MASTER cut -d: -f1 /etc/passwd| grep ^$login$)" ]; then
|
if [ -z "$($CMD_MASTER cut -d: -f1 /etc/passwd| grep ^$login$)" ]; then
|
||||||
error "Account $login doesn't exist on $master";
|
echo "Account $login doesn't exist on $master";
|
||||||
exit 1;
|
exit 1;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $slave != "null" ]; then
|
if [ $slave != "null" ]; then
|
||||||
if [ -z "$($CMD_SLAVE cut -d: -f1 /etc/passwd| grep ^$login$)" ]; then
|
if [ -z "$($CMD_SLAVE cut -d: -f1 /etc/passwd| grep ^$login$)" ]; then
|
||||||
error "Account $login doesn't exist on $slave";
|
echo "Account $login doesn't exist on $slave";
|
||||||
exit 1;
|
exit 1;
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
HOME="/root"
|
HOME="/root"
|
||||||
CONTACT_MAIL=""
|
CONTACT_MAIL="jdoe@example.org"
|
||||||
WWWBOUNCE_MAIL=""
|
WWWBOUNCE_MAIL="jdoe@example.org"
|
||||||
LOCAL_SCRIPT="/usr/share/scripts/web-add.local.sh"
|
LOCAL_SCRIPT="/usr/share/scripts/web-add.local.sh"
|
||||||
PRE_LOCAL_SCRIPT="/usr/share/scripts/web-add.pre-local.sh"
|
PRE_LOCAL_SCRIPT="/usr/share/scripts/web-add.pre-local.sh"
|
||||||
TPL_VHOST="/usr/share/scripts/vhost"
|
TPL_VHOST="/usr/share/scripts/vhost"
|
||||||
|
|
|
@ -35,9 +35,18 @@
|
||||||
<?php
|
<?php
|
||||||
if(!empty($_SESSION['user'])) {
|
if(!empty($_SESSION['user'])) {
|
||||||
print ' - '.$_SESSION['user'];
|
print ' - '.$_SESSION['user'];
|
||||||
}
|
|
||||||
if(is_superadmin()) {
|
if(is_superadmin()) {
|
||||||
print ' (Administrateur)';
|
print ' (Administrateur)';
|
||||||
|
}
|
||||||
|
if (is_mcluster_mode()) {
|
||||||
|
if (!empty($_SESSION['cluster'])) {
|
||||||
|
print ' - '.$_SESSION['cluster'];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print ' - Aucun cluster sélectionné !';
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
|
@ -13,9 +13,23 @@
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
require_once EVOADMIN_BASE . '../evolibs/Form.php';
|
||||||
|
|
||||||
|
if (is_mcluster_mode()) {
|
||||||
|
echo '<p>Bienvenue, sélectionnez le cluster que vous voulez administrer,
|
||||||
|
puis utilisez le menu ci-dessus pour administrer votre compte.</p>';
|
||||||
|
|
||||||
|
print "<form name=\"form-add\" id=\"form-add\" action=\"\" method=\"POST\">";
|
||||||
|
print " <fieldset>";
|
||||||
|
print " <legend>Choisissez un cluster</legend>";
|
||||||
|
print $form;
|
||||||
|
print " <p><input type=\"submit\" value=\"Ok\"/></p>";
|
||||||
|
print " </fieldset>";
|
||||||
|
print "</form>";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
echo '<p>Bienvenue, utilisez le menu ci-dessus pour administrer votre compte.</p>';
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<p>
|
|
||||||
Bienvenue, utilisez le menu ci-dessus pour administrer votre compte.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
|
@ -28,12 +28,13 @@
|
||||||
<!--<th>Opérations</th>-->
|
<!--<th>Opérations</th>-->
|
||||||
<?php if($conf['cluster']) { ?>
|
<?php if($conf['cluster']) { ?>
|
||||||
<th>Bdd</th>
|
<th>Bdd</th>
|
||||||
|
<th>Mail</th>
|
||||||
<th>Replication</th>
|
<th>Replication</th>
|
||||||
<th>Master</th>
|
<th>Master</th>
|
||||||
<th>Slave</th>
|
<th>Slave</th>
|
||||||
<?php } else
|
<?php if(is_superadmin()) {
|
||||||
print('<th>Alias</th>');
|
print '<th>Alias</th>';
|
||||||
?>
|
}} ?>
|
||||||
<tr>
|
<tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -46,36 +47,38 @@
|
||||||
$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']))
|
||||||
|
printf('<td bgcolor="#696969"/>');
|
||||||
|
else
|
||||||
|
printf('<td>%s</td>', $vhost_info['bdd']);
|
||||||
|
|
||||||
if (empty($vhost_info['bdd']))
|
if (empty($vhost_info['mail']))
|
||||||
printf('<td bgcolor="#696969"/>');
|
printf('<td bgcolor="#696969" />');
|
||||||
else
|
else if ($vhost_info['mail'] == 'gmail')
|
||||||
printf('<td>%s</td>', $vhost_info['bdd']);
|
printf('<td><img src="/img/gmail.gif" alt="Gmail" /></td>');
|
||||||
|
else printf('<td><img src="/img/evolix.gif" alt="Evolix" /></td>');
|
||||||
|
|
||||||
if (empty($vhost_info['replication']))
|
if (empty($vhost_info['replication']))
|
||||||
printf('<td bgcolor="#696969" />');
|
|
||||||
else
|
|
||||||
printf('<td>%s</td>', $vhost_info['replication']);
|
|
||||||
|
|
||||||
printf('<td>%s</td>', $vhost_info['master']);
|
|
||||||
|
|
||||||
if (empty($vhost_info['slave']))
|
|
||||||
printf('<td bgcolor="#696969"/>');
|
printf('<td bgcolor="#696969"/>');
|
||||||
else
|
else
|
||||||
printf('<td>%s</td>', $vhost_info['slave']);
|
printf('<td>%s</td>', $vhost_info['replication']);
|
||||||
|
printf('<td>%s</td>', $vhost_info['master']);
|
||||||
|
if (empty($vhost_info['slave']))
|
||||||
|
printf('<td bgcolor="#696969"/>');
|
||||||
|
else
|
||||||
|
printf('<td>%s</td>', $vhost_info['slave']);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf('<td>%s</td>', $vhost_info['server_alias']);
|
||||||
|
}
|
||||||
|
if (is_superadmin()) {
|
||||||
|
printf('<td><a href="/webadmin/edit/%s">Lister/Modifier</a></td>',
|
||||||
|
$vhost_info['owner']);
|
||||||
|
}
|
||||||
|
|
||||||
if (is_superadmin()) {
|
|
||||||
printf('<td><a href="/webadmin/edit/%s">Lister/Modifier</a></td>',
|
|
||||||
$vhost_info['owner']);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
if (empty($vhost_info['server_alias']))
|
|
||||||
printf('<td bgcolor="#696969"/>');
|
|
||||||
else
|
|
||||||
printf('<td>%s</td>', $vhost_info['server_alias']);
|
|
||||||
}
|
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
} ?>
|
} ?>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
Loading…
Reference in New Issue