Use Twig for page templating

This commit is contained in:
Victor LABORIE 2018-09-19 14:49:14 +02:00
parent 0b894d33b8
commit 833fe2bcda
21 changed files with 634 additions and 777 deletions

View file

@ -11,51 +11,38 @@ if (empty($_GET['domain'])) {
exit(1);
}
include("inc/haut.php");
include("inc/debut.php");
if (!empty($_POST['account'])) {
$account = htmlentities(strip_tags($_POST['account']),ENT_NOQUOTES);
print '<div class="container"><form name="del "method="post" action="admin.php?domain='.$domain->getName().'">';
print '<div class="alert alert-warning" role="alert">Voulez vous vraiment supprimer le compte '.$account.' ?</div>';
print '<div class="alert alert-warning" role="alert"><button type="submit" name="delete" value="'.$account.'">Confirmer</button> / <a href="admin.php?domain='.$domain->getName().'">Annuler</a></div>';
print '</form></div>';
$alerts[] = array('type' => 1, 'message' => "Voulez vous vraiment supprimer le compte $account ?");
$alerts[] = array('type' => 1, 'message' => "<form name=\"del\" method=\"post\" action=\"admin.php?domain=".$domain->getName()."&viewonly=1\"><button type=\"submit\" name=\"delete\" value=\"$account\">Confirmer</button> / <a href=\"admin.php?domain=".$domain->getName()."&viewonly=1\">Annuler</a></form>");
}
if (!empty($_POST['alias'])) {
$alias = htmlentities(strip_tags($_POST['alias']),ENT_NOQUOTES);
print '<div class="container"><form name="del "method="post" action="admin.php?domain='.$domain->getName().'&viewonly=2">';
print '<div class="alert alert-warning" role="alert">Voulez vous vraiment supprimer l\'alias '.$alias.' ?</div>';
print '<div class="alert alert-warning" role="alert"><button type="submit" name="delalias" value="'.$alias.'">Confirmer</button> / <a href="admin.php?domain='.$domain->getName().'&viewonly=2">Annuler</a></div>';
print '</form></div>';
$alerts[] = array('type' => 1, 'message' => "Voulez vous vraiment supprimer l'alias $alias ?");
$alerts[] = array('type' => 1, 'message' => "<form name=\"del\" method=\"post\" action=\"admin.php?domain=".$domain->getName()."&viewonly=2\"><button type=\"submit\" name=\"delalias\" value=\"$alias\">Confirmer</button> / <a href=\"admin.php?domain=".$domain->getName()."&viewonly=2\">Annuler</a></form>");
}
if (!empty($_POST['delete'])) {
$account = htmlentities(strip_tags($_POST['delete']),ENT_NOQUOTES);
print '<div class="container">';
print '<div class="alert alert-warning" role="alert">Suppression du compte '.$account.' ...</div>';
$alerts[] = array('type' => 1, 'message' => "Suppression du compte $account...");
try {
$domain->delAccount($account);
print '<div class="alert alert-success" role="alert">Suppression effectu&eacute;.</div>';
$alerts[] = array('type' => 0, 'message' => "Suppression effectué.");
} catch (Exception $e) {
print '<div class="alert alert-danger" role="alert">'.$e->getMessage().'</div>';
$alerts[] = array('type' => 2, 'message' => $e->getMessage());
}
print '</div>';
}
if (!empty($_POST['delalias'])) {
$alias = htmlentities(strip_tags($_POST['delalias']),ENT_NOQUOTES);
print '<div class="container">';
print '<div class="alert alert-warning" role="alert">Suppression de l\'alias '.$alias.' ...</div>';
$alerts[] = array('type' => 1, 'message' => "Suppression de l'alias $alias...");
try {
$domain->delAlias($alias);
print '<div class="alert alert-success" role="alert">Suppression effectu&eacute;.</div>';
$alerts[] = array('type' => 0, 'message' => "Suppression effectué.");
} catch (Exception $e) {
print '<div class="alert alert-danger" role="alert">'.$e->getMessage().'</div>';
$alerts[] = array('type' => 2, 'message' => $e->getMessage());
}
print '</div>';
}
if (!empty($_POST['isactive']) && $server->isSuperAdmin()) {
@ -64,135 +51,34 @@ if (!empty($_POST['isactive']) && $server->isSuperAdmin()) {
$domain->update($active);
header('Location: admin.php?domain='.$domain->getName());
} catch (Exception $e) {
print '<div class="alert alert-danger" role="alert">'.$e->getMessage().'</div>';
$alerts[] = array('type' => 2, 'message' => $e->getMessage());
}
}
?>
<div class="container">
<div class="text-center">
<?php
print '<form name="update" method="post" action="admin.php?domain='.$domain->getName().'">';
if ($server->isSuperAdmin()) {
if (!$domain->isactive()) {
print '<button type="submit" name="isactive" value="TRUE" class="btn btn-primary">Activer le domaine</button>&nbsp;&nbsp;&nbsp;';
} else {
print '<button type="submit" name="isactive" value="FALSE" class="btn btn-primary">Désactiver le domaine</button>&nbsp;&nbsp;&nbsp;';
}
}
?>
<a href="compte.php?domain=<?php print $domain->getName() ?>"><button type="button" class="btn btn-primary">Ajouter un nouveau compte</button></a>&nbsp;&nbsp;&nbsp;
if ( (!isset($_GET['viewonly'])) || ($_GET['viewonly']==1) ) {
<?php
$viewonly1= ( (isset($_GET['viewonly'])) && ($_GET['viewonly']==2) ) ? "" : "selected='selected'";
$viewonly2= ( (isset($_GET['viewonly'])) && ($_GET['viewonly']==2) ) ? "selected='selected'" : "";
?>
print $twig->render('list_account.html', array(
'page_name' => $config['global']['name']
,'alerts' => $alerts
,'login' => $server->getLogin()
,'isSuperAdmin' => $server->isSuperAdmin()
,'domain' => $domain->getName()
,'active' => $domain->isActive()
,'accounts' => $domain->getAccounts()
,'view' => 'account'
));
<a href="alias.php?domain=<?php print $domain->getName() ?>"><button type="button" class="btn btn-primary">Ajouter un nouvel alias/groupe de diffusion</button></a>
</form>
</div>
<hr>
<form class='center' action='admin.php' method='GET' name='listing'>
<div class="form-group">
<input type="hidden" name="domain" value="<?php print $domain->getName() ?>"/>
<select class="form-control" name='viewonly' onchange="document.listing.submit()">
<option value='1' <?php print $viewonly1; ?>>Liste des comptes</option>
<option value='2' <?php print $viewonly2; ?>>Liste des alias/groupe de diffusion</option>
</select>
</div>
</form>
<?php
} elseif ( (isset($_GET['viewonly'])) && ($_GET['viewonly']==2) ) {
if ( (!isset($_GET['viewonly'])) || ($_GET['viewonly']==1) ) {
print $twig->render('list_alias.html', array(
'page_name' => $config['global']['name']
,'alerts' => $alerts
,'login' => $server->getLogin()
,'isSuperAdmin' => $server->isSuperAdmin()
,'domain' => $domain->getName()
,'active' => $domain->isActive()
,'aliases' => $domain->getAlias()
,'view' => 'alias'
));
?>
<h2>Liste des comptes :</h2><hr>
<form name="del" method="post" action="admin.php?domain=<?php print $domain->getName(); ?>">
<table class="table table-striped table-condensed">
<thead>
<tr>
<th><strong>Nom du compte</strong></th>
<th width="100px">Actif</th>
<th width="100px">Admin</th>
<th width="100px">POP / IMAP</th>
<th width="100px">Webmail</th>
<th width="100px">Auth SMTP</th>
<th>Quota</th>
<th width="50px">Suppr</th>
</tr>
</thead>
<tbody>
<?php
$accounts = $domain->getAccounts();
foreach ($accounts as $account) {
print '<tr><td style="text-align:left;"><a href="compte.php?domain='.$domain->getName().'&account='.$account->getUid().'">' .$account->getName().' &lt;'.$account->getUid().'&gt;</a></td>';
if ($account->isActive()) {
print '<td><span class="glyphicon glyphicon-ok"></span></td>';
} else {
print '<td><span class="glyphicon glyphicon-remove"></span></td>';
}
if ($account->isAdmin()) {
print '<td><span class="glyphicon glyphicon-ok"></span></td>';
} else {
print '<td><span class="glyphicon glyphicon-remove"></span></td>';
}
if ($account->isCourier()) {
print '<td><span class="glyphicon glyphicon-ok"></span></td>';
} else {
print '<td><span class="glyphicon glyphicon-remove"></span></td>';
}
if ($account->isWebmail()) {
print '<td><span class="glyphicon glyphicon-ok"></span></td>';
} else {
print '<td><span class="glyphicon glyphicon-remove"></span></td>';
}
if ($account->isAuthSmtp()) {
print '<td><span class="glyphicon glyphicon-ok"></span></td>';
} else {
print '<td><span class="glyphicon glyphicon-remove"></span></td>';
}
print '<td>'.$account->getQuota().'</td>';
print '<td><button type="submit" name="account" value="'.$account->getUid().'"><span class="glyphicon glyphicon-trash"></span></button></td>';
print '</tr>';
}
print "</tbody></table></form>";
} elseif ( (isset($_GET['viewonly'])) && ($_GET['viewonly']==2) ) {
?>
<h2>Liste des alias/groupe de diffusion&nbsp;:</h2>
<form name="del" method="post" action="admin.php?domain=<?php print $domain->getName(); ?>&viewonly=2">
<table class="table table-striped table-condensed">
<thead>
<tr>
<th><strong>Nom de l'alias/groupe de diffusion</strong></th>
<th width="100px">Actif</th>
<th width="50px">Suppr</th>
</tr>
</thead>
<tbody>
<?php
$aliases = $domain->getAlias();
foreach ($aliases as $alias) {
print '<tr><td style="text-align:left;"><a href="alias.php?domain='.$domain->getName().'&alias='.$alias->getName(). '">' .$alias->getname(). '</a></td>';
if ($alias->isActive()) {
print '<td><span class="glyphicon glyphicon-ok"></span></td>';
} else {
print '<td><span class="glyphicon glyphicon-remove"></span></td>';
}
print '<td><button type="submit" name="alias" value="'.$alias->getName().'"><span class="glyphicon glyphicon-trash"></span></button></td>';
print '</tr>';
}
print "</tbody></table></form>";
}
?>
</div>
<?php include("inc/fin.php"); ?>
}

View file

@ -6,9 +6,6 @@ require_once("lib/config.php");
// Force authentication on this page
require_once("lib/auth.php");
include('inc/haut.php');
include('inc/debut.php');
if (!empty($_POST['cn'])) {
$cn = (!empty($_GET['alias'])) ? $alias->getName() : htmlentities(strip_tags($_POST['cn']),ENT_NOQUOTES);
$actif = (!empty($_POST['isactive'])) ? true : false;
@ -27,185 +24,31 @@ if (!empty($_POST['cn'])) {
});
$maildrop = $_POST['maildrop'];
print '<center>';
try {
if (!empty($_GET['alias'])) {
print "<div class=\"alert alert-info\" role=\"alert\">Modification en cours...</div>";
$alerts[] = array('type' => 1, 'message' => "Modification en cours...");
$alias->update($actif,$mailaccept,$maildrop);
header('Location: alias.php?domain='.$domain->getName().'&alias='.$alias->getName());
} else {
print "<div class=\"alert alert-info\" role=\"alert\">Ajout en cours...</div>";
$alerts[] = array('type' => 1, 'message' => "Ajout en cours...");
$domain->addAlias($cn,$actif,$mailaccept,$maildrop);
print "<div class=\"alert alert-succes\" role=\"alert\">Ajout effectu&eacute;.</div>";
print '<a href="alias.php?domain='.$domain->getName().'&alias='.$cn.'"><button class="btn btn-primary">Voir l\'alias cr&eacute;&eacute;</button></a>';
$alerts[] = array('type' => 0, 'message' => "Ajout effectué");
$alerts[] = array('type' => 0, 'message' => '<a href="alias.php?domain='.$domain->getName().'&alias='.$cn.'"><button class="btn btn-primary">Voir l\'alias cr&eacute;&eacute;</button></a>');
}
} catch (Exception $e) {
print '<div class="alert alert-danger" role="alert">'.$e->getMessage().'</div>';
$alerts[] = array('type' => 2, 'message' => $e->getMessage());
}
print "</center>";
}
if (isset($_GET['alias'])) {
print "<center>";
print '<h4>Modification de l\'alias '.$alias->getName().'</h4>';
print '<form name="add" action="alias.php?domain='.$domain->getName().'&alias='.$alias->getName().'" method="post">';
print '<input type="hidden" name="cn" value="'.$alias->getName().'"/>';
print "<table>";
print "<tr><td colspan='2'>";
print "<p class='italic'>Ajoutez/modifiez/supprimez les mails accept&eacute;s en entr&eacute;e).<br />
Un minimum d'un mail est requis. M&ecirc;mes instructions<br />
pour les redirections (compte(s) dans le(s)quel(s) est/sont d&eacute;livr&eacute;(s) les mails).
</p>";
print "</td></tr>";
foreach($alias->getAliases() as $mailaccept) {
print "<tr><td align='right'>Mail accept&eacute; en entr&eacute;e :</td>
<td align='left'><input type='text' name='mailaccept[]' size='30' value='".$mailaccept."' />";
print "@" .$domain->getName();
print "</td></tr>";
}
print "<tr><td align='right'>Cr&eacute;ation d'un nouveau mail accept&eacute; en entr&eacute;e :</td>
<td align='left'><input type='text' name='mailaccept[]'
size='30'/>";
print "@" .$domain->getName();
print "</td></tr>";
print "<tr><td align='right'>Cr&eacute;ation d'un nouveau mail accept&eacute; en entr&eacute;e :</td>
<td align='left'><input type='text' name='mailaccept[]'
size='30'/>";
print "@" .$domain->getName();
print "</td></tr>";
print "<tr><td align='right'>Cr&eacute;ation d'un nouveau mail accept&eacute; en entr&eacute;e :</td>
<td align='left'><input type='text' name='mailaccept[]'
size='30'/>";
print "@" .$domain->getName();
print "</td></tr>";
foreach($alias->getRedirections() as $red) {
print "<tr><td align='right'>Mails entrants redirig&eacute;s vers :</td>
<td align='left'><input type='text' name='maildrop[]'
size='30' value='" .$red. "'/>
</td></tr>";
}
print "<tr><td align='right'>Nouvelle redirection vers :</td>
<td align='left'><input type='text' name='maildrop[]'
size='30'' /></td></tr>";
print "<tr><td align='right'>Nouvelle redirection vers :</td>
<td align='left'><input type='text' name='maildrop[]'
size='30'/></td></tr>";
print "<tr><td align='right'>Nouvelle redirection vers :</td>
<td align='left'><input type='text' name='maildrop[]'
size='30'/></td></tr>";
print "<tr><td colspan='2'>";
print "<p class='italic'>Activer/d&eacute;sactiver l'alias</p>";
print "</td></tr>";
$isactive= ($alias->isActive()) ? 'checked="checked"' : '';
print "<tr><td align='right'>Alias actif :</td>
<td align='left'><input type='checkbox' name='isactive'
$isactive /></td></tr>";
print "<tr><td>&nbsp,</td><td align='left'>";
print "<p><input type='submit' class='button'
value='Valider' name='valider'/></p>";
print "</td></tr>";
print "</table>";
print '</form>';
} else {
?>
<center>
<h4>Ajout d'un alias</h4>
<form name="add" action="alias.php?domain=<?php print $domain->getname(); ?>" method="post">
<p class="italic">Remplissez lez champs.</p>
<table>
<tr><td align="right">Nom (unique) de l'alias :</td>
<td align="left"><input type='text' name='cn'/></td></tr>
<tr><td align="right">Alias :</td>
<td align="left"><input type='text' name='mailaccept[]'/>
<?php
print "@" .$domain->getName();
?>
</td></tr>
<tr><td align="right">Alias :</td>
<td align="left"><input type='text' name='mailaccept[]'/>
<?php
print "@" .$domain->getName();
?>
</td></tr>
<tr><td align="right">Alias :</td>
<td align="left"><input type='text' name='mailaccept[]'/>
<?php
print "@" .$domain->getName();
?>
</td></tr>
<tr><td align="right">Alias :</td>
<td align="left"><input type='text' name='mailaccept[]'/>
<?php
print "@" .$domain->getName();
?>
</td></tr>
<tr><td align="right">Alias :</td>
<td align="left"><input type='text' name='mailaccept[]'/>
<?php
print "@" .$domain->getName();
?>
</td></tr>
<tr><td align="right">Redirection :</td>
<td align="left"><input type='text' name='maildrop[]'/></td></tr>
<tr><td align="right">Redirection :</td>
<td align="left"><input type='text' name='maildrop[]'/></td></tr>
<tr><td align="right">Redirection :</td>
<td align="left"><input type='text' name='maildrop[]'/></td></tr>
<tr><td align="right">Redirection :</td>
<td align="left"><input type='text' name='maildrop[]'/></td></tr>
<tr><td align="right">Redirection :</td>
<td align="left"><input type='text' name='maildrop[]'/></td></tr>
<tr><td colspan="2">
<p class="italic">Activer/d&eacute;sactiver l'alias</p>
</td></tr>
<tr><td align="right">Alias actif :</td>
<td align="left"><input type='checkbox' name='isactive' checked /></td></tr>
<tr><td>&nbsp;</td><td align="left">
<p><input type="submit" class="button" value="Valider" name="valider" /></p>
</td></tr>
</table>
</form>
</center>
<?php } include('inc/fin.php'); ?>
print $twig->render('alias.html', array(
'page_name' => $config['global']['name']
,'alerts' => $alerts
,'login' => $server->getLogin()
,'isSuperAdmin' => $server->isSuperAdmin()
,'domain' => $domain->getName()
,'name' => !empty($alias) ? $alias->getName() : NULL
,'active' => !empty($alias) ? $alias->isActive() : true
,'aliases' => !empty($alias) ? $alias->getAliases() : NULL
,'maildrops' => !empty($alias) ? $alias->getRedirections() : NULL
));

View file

@ -7,10 +7,10 @@ session_name('EVOADMIN_SESS');
session_start();
ob_start();
include('inc/haut.php');
if (isset($_SESSION['login'])) {
print "<div class='login-info bg-info'>D&eacute;connecté</div>";
$logout = isset($_SESSION['login']) ? true : false;
if ($logout) {
session_unset('EVOADMIN_SESS');
session_destroy();
}
@ -25,35 +25,14 @@ if (!empty($_POST['login'])) {
header("location: superadmin.php\n\n");
exit(0);
} catch (Exception $e) {
print '<div class="alert alert-danger" role="alert">'.$e->getMessage().'</div>';
$alerts[] = array('type' => 2, 'message' => $e->getMessage());
}
}
?>
<div class="loginpage">
<div class="loginbox">
<div class="illustration">
<img src="assets/logo.png" class="img-responsive" alt="Responsive image">
</div>
<form method="POST" action="auth.php" method="post" name="auth">
<div class="form-group has-feedback has-feedback-left">
<input type="text" name="login" class="form-control" placeholder="Utilisateur" autofocus="autofocus"/>
<i class="glyphicon glyphicon-user form-control-feedback"></i>
</div>
<div class="form-group has-feedback has-feedback-left">
<input type="password" name="password" class="form-control" placeholder="Mot de passe" />
<i class="glyphicon glyphicon-lock form-control-feedback"></i>
</div>
<div class="form-group text-center">
<button type="submit" class="btn btn-primary" onclick="return submit_login();">Connexion</button>
</div>
</form>
</div>
</div>
print $twig->render('login.html', array(
'page_name' => $config['global']['name'].' - Login'
,'alerts' => $alerts
,'logout' => $logout
));
<?php
include('inc/fin.php');
ob_end_flush();
?>

View file

@ -6,18 +6,13 @@ require_once("lib/config.php");
// Force authentication on this page
require_once("lib/auth.php");
include('inc/haut.php');
include('inc/debut.php');
if (!empty($_POST['cn'])) {
// Verification coherence des mots de passe
if ( $_POST['pass1'] != $_POST['pass2'] ) {
print "<div class=\"alert alert-danger\" role=\"alert\">Erreur, vous avez tape deux mots de passe differents</div>";
$alerts[] = array('type' => 2, 'message' => "Erreur, vous avez tape deux mots de passe differents");
exit(1);
}
print "<div class='container'>";
$uid = (!empty($_GET['account'])) ? $account->getUid() : htmlentities(strip_tags($_POST['uid']),ENT_NOQUOTES);
$cn = htmlentities(strip_tags($_POST['cn']),ENT_NOQUOTES);
$password = (!empty($_POST['pass1'])) ? $_POST['pass1'] : NULL;
@ -29,232 +24,32 @@ if (!empty($_POST['cn'])) {
try {
if (!empty($_GET['account'])) {
print "<div class=\"alert alert-info\" role=\"alert\">Modification en cours...</div>";
$alerts[] = array('type' => 1, 'message' => "Modification en cours...");
$account->update($cn,$password,$actif,$admin,$actif,$courier,$webmail,$authsmtp);
header('Location: compte.php?domain='.$domain->getName().'&account='.$account->getUid());
} else {
print "<div class=\"alert alert-info\" role=\"alert\">Ajout en cours...</div>";
$alerts[] = array('type' => 1, 'message' => "Ajout en cours...");
$domain->addAccount($uid,$cn,$password,$actif,$admin,$actif,$courier,$webmail,$authsmtp);
print "<div class=\"alert alert-succes\" role=\"alert\">Ajout effectu&eacute;.</div>";
print '<a href="compte.php?domain='.$domain->getName().'&account='.$uid.'@'.$domain->getName().'"><button class="btn btn-primary">Voir le compte cr&eacute;&eacute;</button></a>';
$alerts[] = array('type' => 0, 'message' => 'Ajout effectué <a href="compte.php?domain='.$domain->getName().'&account='.$uid.'@'.$domain->getName().'"><button class="btn btn-primary">Voir le compte créé</button></a>');
}
} catch (Exception $e) {
print '<div class="alert alert-danger" role="alert">'.$e->getMessage().'</div>';
$alerts[] = array('type' => 2, 'message' => $e->getMessage());
}
print "</div>";
}
if (isset($_GET['account'])) {
print "<div class='container'>";
print "<h2>Modification du compte ".$account->getUid()."</h2><hr>";
print"<div class=\"alert alert-info\" role=\"alert\">Modifiez les champs que vous d&eacute;sirez changer.<br /> [*] indique ceux qui ne doivent pas &ecirc;tre nuls.<br />Vous pouvez r&eacute;initialiser le mot de passe si besoin.</div>";
print "<form name='add' action='compte.php?domain=".$domain->getName()."&account=".$account->getUid()."' method='post' class='form-horizontal'>";
print "<div class='form-group'>";
print "<label for='cn' class='col-sm-3 control-label'>Nom Complet [*] :</label>";
print "<div class='col-sm-7'><input type='text' name='cn' class='form-control' value='".$account->getName()."' /></div>";
print "<div class='col-sm-2 control-label'></div>";
print "</div>";
print "<div class='form-group'>";
print "<label for='pass1' class='col-sm-3 control-label'>Nouveau mot de passe :</label>";
print "<div class='col-sm-7'><input type='password' name='pass1' class='form-control' /></div>";
print "<div class='col-sm-2 control-label'></div>";
print "</div>";
print "<div class='form-group'>";
print "<label for='pass2' class='col-sm-3 control-label'>Confirmation du mot de passe :</label>";
print "<div class='col-sm-7'><input type='password' name='pass2' class='form-control' /></div>";
print "<div class='col-sm-2 control-label'></div>";
print "</div>";
print "<div class='well'>Ajoutez/modifiez/supprimez les alias (mails accept&eacute;s en entr&eacute;e).<br />Un minimum d'un alias est requis. M&ecirc;mes instructions<br />pour les redirections (compte(s) dans le(s)quel(s) est/sont d&eacute;livr&eacute;(s) les mails).</div>";
foreach ($account->getAliases() as $aliase) {
print "<div class='form-group'>";
print "<label for='mailaccept[]' class='col-sm-3 control-label'>Mail accept&eacute; en entr&eacute;e : </label>";
print "<div class='col-sm-7'><input type='text' name='mailaccept[]' value='".$aliase."' class='form-control' /></div>";
print "<div class='col-sm-2 control-label'>";
print "@" .$domain->getName();
print "</div>";
print "</div>";
}
print "<div class='form-group'>";
print "<label for='mailaccept[]' class='col-sm-3 control-label'>Cr&eacute;ation d'un nouveau mail accept&eacute; en entr&eacute;e : </label>";
print "<div class='col-sm-7'><input type='text' name='mailaccept[]' value='' class='form-control' /></div>";
print "<div class='col-sm-2 control-label'>";
print "@" .$domain->getName();
print "</div>";
print "</div>";
foreach ($account->getRedirections() as $red) {
print "<div class='form-group'>";
print "<label for='maildrop[]' class='col-sm-3 control-label'>Mails entrants redirig&eacute;s vers : </label>";
print "<div class='col-sm-7'><input type='text' name='maildrop[]' value='".$red."' class='form-control' /></div>";
print "<div class='col-sm-2 control-label'>";
print "</div>";
print "</div>";
}
print "<div class='form-group'>";
print "<label for='maildrop[]' class='col-sm-3 control-label'>Nouvelle redirection vers : </label>";
print "<div class='col-sm-7'><input type='text' name='maildrop[]' class='form-control' /></div>";
print "<div class='col-sm-2 control-label'></div>";
print "</div>";
print "<hr><h5>Modifiez les autorisations du compte si besoin.</h5>";
$isactive = ($account->isActive()) ? 'checked=checked' : '';
print "<div class='form-group'>";
print "<label for='isactive' class='col-sm-3 control-label'>Activation globale : </label>";
print "<div class='col-sm-7'><input type='checkbox' name='isactive' $isactive class='form-control move-left' /></div>";
print "<div class='col-sm-2 control-label'></div>";
print "</div>";
$isadmin = ($account->isAdmin()) ? 'checked="checked"' : '';
print "<div class='form-group'>";
print "<label for='isadmin' class='col-sm-3 control-label'>Compte admin : </label>";
print "<div class='col-sm-7'><input type='checkbox' name='isadmin' $isadmin class='form-control move-left' /></div>";
print "<div class='col-sm-2 control-label'></div>";
print "</div>";
$courieractive = ($account->isCourier()) ? 'checked="checked"' : '';
print "<div class='form-group'>";
print "<label for='courieractive' class='col-sm-3 control-label'>Utilisation POP/IMAP : </label>";
print "<div class='col-sm-7'><input type='checkbox' name='courieractive' $courieractive class='form-control move-left' /></div>";
print "<div class='col-sm-2 control-label'></div>";
print "</div>";
$webmailactive = ($account->isWebmail()) ? 'checked="checked"' : '';
print "<div class='form-group'>";
print "<label for='webmailactive' class='col-sm-3 control-label'>Webmail : </label>";
print "<div class='col-sm-7'><input type='checkbox' name='webmailactive' $webmailactive class='form-control move-left' /></div>";
print "<div class='col-sm-2 control-label'></div>";
print "</div>";
$authsmtpactive = ($account->isAuthSmtp()) ? 'checked="checked"' : '';
print "<div class='form-group'>";
print "<label for='authsmtpactive' class='col-sm-3 control-label'>Authentification SMTP : </label>";
print "<div class='col-sm-7'><input type='checkbox' name='authsmtpactive' $authsmtpactive class='form-control move-left' /></div>";
print "<div class='col-sm-2 control-label'></div>";
print "</div>";
#$amavisBypassSpamChecks= ($account->isAmavis())) ? 'checked="checked"' : '';
#print "<div class='form-group'>";
#print "<label for='amavisBypassSpamChecks' class='col-sm-3 control-label'>Désactivation Antispam : </label>";
#print "<div class='col-sm-7'><input type='checkbox' name='amavisBypassSpamChecks' $amavisBypassSpamChecks class='form-control move-left' /></div>";
#print "<div class='col-sm-2 control-label'></div>";
#print "</div>";
print "<div class='text-center'><button type='submit' class='btn btn-primary' onclick='return submit_add();'>Valider</button></div>";
print '</form>';
print '</div>';
} else {
?>
<div class="container">
<h2>Ajout d'un compte</h2><hr>
<form name="add" action="compte.php?domain=<?php print $domain->getName(); ?>" method="post" class="form-horizontal">
<div class="alert alert-info" role="alert">Remplissez lez champs, ceux contenant [*] sont obligatoires.</div>
<div class="form-group">
<label for="uid" class="col-sm-3 control-label">Login [*] :</label>
<div class="col-sm-7"><input type="text" name="uid" class="form-control" /></div>
<div class="col-sm-2 control-label"><?php print "@" .$domain->getName(); ?></div>
</div>
<div class="form-group">
<label for="cn" class="col-sm-3 control-label">Nom Complet [*] :</label>
<div class="col-sm-7"><input type="text" name="cn" class="form-control" /></div>
<div class="col-sm-2 control-label"></div>
</div>
<div class="form-group">
<label for="pass1" class="col-sm-3 control-label">Mot de passe [*] :</label>
<div class="col-sm-7"><input type="password" name="pass1" class="form-control" /></div>
<div class="col-sm-2 control-label"></div>
</div>
<div class="form-group">
<label for="pass2" class="col-sm-3 control-label">Confirmation du mot de passe [*] :</label>
<div class="col-sm-7"><input type="password" name="pass2" class="form-control" /></div>
<div class="col-sm-2 control-label"></div>
</div>
<hr><h5>En plus du mail utilisant le login, vous pouvez ajouter des alias.</h5>
<div class="form-group">
<label for="alias" class="col-sm-3 control-label">Alias :</label>
<div class="col-sm-7"><input type="text" name="alias[0]" class="form-control" /></div>
<div class="col-sm-2 control-label"><?php print "@" .$domain->getName(); ?></div>
</div>
<div class="form-group">
<label for="alias[1]" class="col-sm-3 control-label">Alias :</label>
<div class="col-sm-7"><input type="text" name="alias[1]" class="form-control" /></div>
<div class="col-sm-2 control-label"><?php print "@" .$domain->getName(); ?></div>
</div>
<div class="form-group">
<label for="alias[2]" class="col-sm-3 control-label">Alias :</label>
<div class="col-sm-7"><input type="text" name="alias[2]" class="form-control" /></div>
<div class="col-sm-2 control-label"><?php print "@" .$domain->getName(); ?></div>
</div>
<hr><h5>Cochez les cases pour choisir les autorisations du compte.</h5>
<div class="form-group">
<label for="isactive" class="col-sm-3 control-label">Actif :</label>
<div class="col-sm-7"><input type='checkbox' name='isactive' checked class="form-control move-left" /></div>
<div class="col-sm-2 control-label"></div>
</div>
<div class="form-group">
<label for="isadmin" class="col-sm-3 control-label">Compte admin :</label>
<div class="col-sm-7"><input type='checkbox' name='isadmin' class="form-control move-left" /></div>
<div class="col-sm-2 control-label"></div>
</div>
<div class="form-group">
<label for="courieractive" class="col-sm-3 control-label">Utilisation POP/IMAP :</label>
<div class="col-sm-7"><input type='checkbox' name='courieractive' checked class="form-control move-left" /></div>
<div class="col-sm-2 control-label"></div>
</div>
<div class="form-group">
<label for="webmailactive" class="col-sm-3 control-label">Webmail :</label>
<div class="col-sm-7"><input type='checkbox' name='webmailactive' checked class="form-control move-left" /></div>
<div class="col-sm-3 control-label"></div>
</div>
<div class="form-group">
<label for="authsmtpactive" class="col-sm-3 control-label">Authentification SMTP :</label>
<div class="col-sm-7"><input type='checkbox' name='authsmtpactive' checked class="form-control move-left" /></div>
<div class="col-sm-3 control-label"></div>
</div>
<!--
<div class="form-group">
<label for="amavisBypassSpamChecks" class="col-sm-3 control-label">Désactivation Antispam :</label>
<div class="col-sm-7"><input type='checkbox' name='amavisBypassSpamChecks' class="form-control move-left" /></div>
<div class="col-sm-2 control-label"></div>
</div>
-->
<div class="text-center"><button type="submit" class="btn btn-primary" onclick='return submit_add();'>valider</button></div>
</form>
</div>
<?php } include('inc/fin.php'); ?>
print $twig->render('account.html', array(
'page_name' => $config['global']['name']
,'alerts' => $alerts
,'login' => $server->getLogin()
,'isSuperAdmin' => $server->isSuperAdmin()
,'domain' => $domain->getName()
,'uid' => !empty($account) ? $account->getUid() : NULL
,'name' => !empty($account) ? $account->getName() : NULL
,'aliases' => !empty($account) ? $account->getAliases() : array()
,'maildrops' => !empty($account) ? $account->getRedirections() : array()
,'active' => !empty($account) ? $account->isActive() : true
,'admin' => !empty($account) ? $account->isAdmin() : false
,'courier' => !empty($account) ? $account->isCourier() : true
,'webmail' => !empty($account) ? $account->isWebmail() : true
,'authsmtp' => !empty($account) ? $account->isAuthSmtp() : true
));

View file

@ -6,51 +6,31 @@ require_once("lib/config.php");
// Force authentication on this page
require_once("lib/auth.php");
include("inc/haut.php");
include("inc/debut.php");
if (!$server->isSuperAdmin()) {
print "<div class=\"alert alert-danger\" role=\"alert\">Vous n'avez pas les droits pour cette page</div>";
$alerts[] = array('type' => 2, 'message' => "Vous n'avez pas les droits pour cette page");
# EvoLog::log("Access denied on domaine.php");
include("inc/fin.php");
exit(1);
}
// Ajouter un domaine
$domain = NULL;
if (!empty($_POST['domain'])) {
$domain = htmlentities(strip_tags($_POST['domain']),ENT_NOQUOTES);
print "<div class='container'>";
print "<div class=\"alert alert-warning\" role=\"alert\">Ajout en cours du domaine ".$domain." ...</div>";
$alerts[] = array('type' => 1, 'message' => "Ajout en cours du domaine $domain ...");
try {
$active = (!empty($_POST['isactive'])) ? true : false;
$server->addDomain($domain, $active);
print '<div class="alert alert-success" role="alert">Ajout effectu&eacute;.</div>';
$alerts[] = array('type' => 0, 'message' => "Ajout effectué.");
} catch (Exception $e_ad) {
print '<div class="alert alert-danger" role="alert">'.$e_ad->getMessage().'</div>';
$alerts[] = array('type' => 2, 'message' => $e_ad->getMessage());
}
print "</div>";
}
// Formulaire d'ajout d'un domaine
?>
<div class="container">
<h4>Ajout d'un domaine</h4>
<form name="add" action="domaine.php" method="post" class="form-horizontal">
<div class="alert alert-info" role="alert">Remplissez lez champs, ceux contenant [*] sont obligatoires.</div>
<div class="form-group">
<label for="domain" class="col-sm-3 control-label">Domaine [*] :</label>
<div class="col-sm-9"><input type="text" name="domain" class="form-control" /></div>
</div>
<div class="form-group">
<label for="isactive" class="col-sm-3 control-label">Activation globale :</label>
<div class="col-sm-9"><input type='checkbox' name='isactive' checked class="form-control move-left"/></div>
</div>
<div class="text-center"><button type="submit" class="btn btn-primary">Valider</button></div>
</form>
</div>
<?php include("inc/fin.php"); ?>
print $twig->render('add_domain.html', array(
'page_name' => $config['global']['name']
,'alerts' => $alerts
,'login' => $server->getLogin()
,'isSuperAdmin' => $server->isSuperAdmin()
));

View file

@ -6,56 +6,10 @@ require_once("lib/config.php");
// Force authentication on this page
require_once("lib/auth.php");
include('inc/haut.php');
include('inc/debut.php');
?>
<div class="container">
<div class="alert alert-info" role="alert">Cette page devrait &ecirc;tre lue attentivement avant d'utiliser cette interface.</div>
<hr><h2>Aide</h2>
Cette aide devrait vous permettre de comprendre le fonctionnement de cette interface.
<h3>Cr&eacute;er un compte mail</h3>
<p>Vous devez choisir un mot de passe et &eacute;ventuellement des alias. Veillez &agrave; entrer des alias avec une syntaxe valide et un mot de passe valide et assez complexe. Vous pouvez &eacute;galement choisir de donner les droits "Admin" en cochant la case <i>Admin</i>, c'est-&agrave;-dire permettre &agrave; l'utilisateur de se connecter &agrave; cette interface pour pouvoir ajouter/supprimer des mails/alias.<br>
<b>Vous devez &eacute;galement choisir un Login qui ne sera plus modifiable par la suite.</b> Ce login et le mot de passe serviront &agrave; se connecter au Webmail, serveur SMTP, serveur POP et serveur IMAP et &eacute;ventuellement &agrave; cette interface (si l'utilisateur a les droits "Admin").
</p>
<h3>Cr&eacute;er un alias</h3>
<p>Vous devez choisir un alias et un mail valide pour rediriger les mails. Prenez bien garde &agrave; entrer un mail valide sinon les mails ne vous parviendront jamais.</p>
<hr><h2>FAQ</h2>
Cette Foire-Aux-Questions (FAQ) devrait r&eacute;pondre &agrave; vos questions. Au fil du temps, de nouvelles questions/r&eacute;ponses seront ajout&eacute;es. Posez vos questions &agrave; <a href="mailto:<?php print $config['global']['mail'];?>"><?php print $config['global']['mail'];?></a>.
<p>Qu'est-ce qu'une syntaxe valide pour un compte mail ?</p>
<i>Le d&eacute;but du mail (avant le @), doit respecter les r&egrave;gles suivantes :
<ul>
<li>&ecirc;tre compris entre 3 et 30 caract&egrave;res</li>
<li>n'avoir que des caract&egrave;res de types lettre minuscules ou chiffres</li>
<li>les caract&egrave;res tiret (-), point (.) et underscore (_) sont permis sauf en d&eacute;but et fin</li>
</ul>
</i>
<p>Qu'est-ce qu'un mot de passe valide ?</p>
<i>Votre mot de passe doit r&eacute;pondre aux r&egrave;gles suivantes :
<ul>
<li>avoir entre 5 et 12 caract&egrave;res</li>
<li>N'utiliser ques des caract&egrave;res imprimables c'est-&agrave;-dire des lettres (majuscules, minuscules ou accentu&eacute;es), des chiffres ou les caract&egrave;res suivants :
<pre>[]!"#$%&'()*+,-./:;<=>?@\^_`{|}~</pre>
</ul>
</i>
<p>Qu'est-ce qu'un mot de passe assez complexe ?</p>
<i>Outre d'avoir un mot de passe assez long (voir question pr&eacute;c&eacute;dente), il est fortement conseill&eacute; d'utilis&eacute; au moins un chiffre, au moins une lettre minuscule, au moins une lettre majuscule et au moins un caract&egrave;res "sp&eacute;cial". De plus, l'utilisation de suites de caract&egrave;res "connues" (mots, dates, noms, etc.) est fortement d&eacute;conseill&eacute;e.</i>
</div>
<?php include('inc/fin.php'); ?>
print $twig->render('help.html', array(
'page_name' => $config['global']['name']
,'alerts' => $alerts
,'login' => $server->getLogin()
,'isSuperAdmin' => $server->isSuperAdmin()
,'notif_mail' => $config['global']['mail']
));

View file

@ -1,39 +0,0 @@
</div>
<footer class="site-footer">
<div class="container">
<p>
<span>Evolix</span>
<br /><strong>Hébergement et Infogérance Open Source</strong>
</div>
</footer>
<script>
$(document).ready(function() {
$('.table').DataTable({
"language": {
"emptyTable": "Pas de données disponibles",
"info": "Entrées _START_ à _END_ sur _TOTAL_ entrées",
"infoEmpty": "Entrées 0 à 0 sur 0",
"infoFiltered": "(filtré sur un total de _MAX_ entrées)",
"infoPostFix": "",
"thousands": ",",
"lengthMenu": "Montrer _MENU_ entrées",
"loadingRecords": "Chargement...",
"processing": "Travail en cours...",
"search": "Recherche : ",
"zeroRecords": "Pas de resultat",
"paginate": {
"first": "Première",
"last": "Dernière",
"next": "Suivante",
"previous": "Précédente"
}
},
"lengthMenu": [ [10, 25, 50, 100, -1], [10, 25, 50, 100, "toutes les"] ]
});
} );
</script>
</body>
</html>

View file

@ -13,3 +13,10 @@ $config = parse_ini_file('../config/config.ini', true);
Logger::configure($config['global']['log_level']);
MailNotify::configure($config['global']);
$loader = new Twig_Loader_Filesystem('tpl/page');
$twig = new Twig_Environment($loader, array(
'cache' => false
));
$alerts = array();

View file

@ -6,72 +6,28 @@ require_once("lib/config.php");
// Force authentication on this page
require_once("lib/auth.php");
include('inc/haut.php');
include('inc/debut.php');
if (!empty($_POST['domain'])) {
$domain = htmlentities(strip_tags($_POST['domain']),ENT_NOQUOTES);
print '<div class="container"><form name="del "method="post" action="superadmin.php">';
print '<div class="alert alert-warning" role="alert">Voulez vous vraiment supprimer le domaine '.$domain.' ?</div>';
print '<div class="alert alert-warning" role="alert"><button type="submit" name="delete" value="'.$domain.'">Confirmer</button> / <a href="superadmin.php">Annuler</a></div>';
print '</form></div>';
$alerts[] = array('type' => 1, 'message' => "Voulez vous vraiment supprimer le domaine $domain ?");
$alerts[] = array('type' => 1, 'message' => "<form name=\"del\" method=\"post\" action=\"superadmin.php\"><button type=\"submit\" name=\"delete\" value=\"$domain\">Confirmer</button> / <a href=\"superadmin.php\">Annuler</a></form>");
}
if (!empty($_POST['delete'])) {
$domain = htmlentities(strip_tags($_POST['delete']),ENT_NOQUOTES);
print '<div class="container">';
print '<div class="alert alert-warning" role="alert">Suppression du domaine '.$domain.' ...</div>';
$alerts[] = array('type' => 1, 'message' => "Suppression du domaine $domain ...");
try {
$server->delDomain($domain);
print '<div class="alert alert-success" role="alert">Suppression effectu&eacute;.</div>';
$alerts[] = array('type' => 0, 'message' => 'Suppression effectué.');
} catch (Exception $e_ad) {
print '<div class="alert alert-danger" role="alert">'.$e_ad->getMessage().'</div>';
$alerts[] = array('type' => 2, 'message' => $e_ad->getMessage());
}
print '</div>';
}
?>
<div class="container">
<h2>Liste des domaines administrables :</h2><hr>
<form name="del" method="post" action="superadmin.php">
<table class="table table-striped table-condensed">
<thead>
<tr>
<th>Nom du domaine</th>
<th width="100px">Actif</th>
<th>Nombre de comptes</th>
<th>dont comptes mail</th>
<th>Nombre d'alias mail</th>
<th>Taille / Quota</th>
<th width="50px">Suppr.</th>
</tr>
</thead>
<tbody>
<?php
// lignes avec les details sur les domaines
$domains = $server->getDomains();
foreach ($domains as $domain) {
print '<tr><td style="text-align:left;"><a href="admin.php?domain='.$domain->getName(). '">' .$domain->getName(). '</a></td>';
if ($domain->isActive()) {
print '<td><span class="glyphicon glyphicon-ok"></span></td>';
} else {
print '<td><span class="glyphicon glyphicon-remove"></span></td>';
}
print '<td><b>' .$domain->getNbAccounts(). '</b></td>';
print '<td><b>' .$domain->getNbMailAccounts(). '</b></td>';
//print '<td><b>' .$domain->getNbSmbAccounts(). '</b></td>';
print '<td><b>' .$domain->getNbMailAlias(). '</b></td>';
print '<td>' .$domain->getQuota(). '</td>';
print '<td><button type="submit" name="domain" value="'.$domain->getName().'"><span class="glyphicon glyphicon-trash"></span></button></td>';
print '</tr>';
}
?>
</tbody>
</table>
</form>
</div>
<?php include('inc/fin.php'); ?>
print $twig->render('list_domain.html', array(
'page_name' => $config['global']['name']
,'alerts' => $alerts
,'login' => $server->getLogin()
,'isSuperAdmin' => $server->isSuperAdmin()
,'domains' => $server->getDomains()
));

View file

@ -0,0 +1,116 @@
{% extends 'base.html' %}
{% block body %}
{% include 'nav.html' %}
<div class="container">
{% include 'notif.html' %}
<h2>{% if uid is null %}Ajout d'un compte{% else %}Modification du compte {{ uid }}{% endif %}</h2>
<form name="add" action="compte.php?domain={{ domain }}{% if uid is not null %}&account={{ uid }}{% endif %}" method="post" class="form-horizontal">
<hr><div class="alert alert-info" role="alert">Remplissez lez champs, ceux contenant [*] sont obligatoires.</div>
{% if uid is null %}
<div class="form-group">
<label for="uid" class="col-sm-3 control-label">Login [*] :</label>
<div class="col-sm-7"><input type="text" name="uid" class="form-control"/></div>
<div class="col-sm-2 control-label">@{{ domain }}</div>
</div>
{% endif %}
<div class="form-group">
<label for="cn" class="col-sm-3 control-label">Nom Complet [*] :</label>
<div class="col-sm-7"><input type="text" name="cn" class="form-control" value="{{ name }}"/></div>
<div class="col-sm-2 control-label"></div>
</div>
<div class="form-group">
<label for="pass1" class="col-sm-3 control-label">Mot de passe [*] :</label>
<div class="col-sm-7"><input type="password" name="pass1" class="form-control" /></div>
<div class="col-sm-2 control-label"></div>
</div>
<div class="form-group">
<label for="pass2" class="col-sm-3 control-label">Confirmation du mot de passe [*] :</label>
<div class="col-sm-7"><input type="password" name="pass2" class="form-control" /></div>
<div class="col-sm-2 control-label"></div>
</div>
<hr><h5>En plus du mail utilisant le login, vous pouvez ajouter des alias.</h5>
{% for alias in aliases %}
<div class='form-group'>
<label for="mailaccept[]" class="col-sm-3 control-label">Alias :</label>
<div class="col-sm-7"><input type="text" name="mailaccept[]" class="form-control" value="{{ alias }}"/></div>
<div class="col-sm-2 control-label">@{{ domain }}</div>
</div>
{% endfor %}
<div class="form-group">
<label for="mailaccept[]" class="col-sm-3 control-label">Alias :</label>
<div class="col-sm-7"><input type="text" name="mailaccept[]" class="form-control"/></div>
<div class="col-sm-2 control-label">@{{ domain }}</div>
</div>
{% for maildrop in maildrops %}
<div class='form-group'>
<label for='maildrop[]' class='col-sm-3 control-label'>Mails entrants redirig&eacute;s vers : </label>
<div class='col-sm-7'><input type='text' name='maildrop[]' value='{{ maildrop }}' class='form-control' /></div>
<div class='col-sm-2 control-label'></div>
</div>
{% endfor %}
<div class='form-group'>
<label for='maildrop[]' class='col-sm-3 control-label'>Nouvelle redirection vers : </label>
<div class='col-sm-7'><input type='text' name='maildrop[]' class='form-control' /></div>
<div class='col-sm-2 control-label'></div>
</div>
<hr><h5>Cochez les cases pour choisir les autorisations du compte.</h5>
<div class="form-group">
<label for="isactive" class="col-sm-3 control-label">Actif :</label>
<div class="col-sm-7"><input type='checkbox' name='isactive' class="form-control move-left" {% if active %}checked="checked"{%endif%}/></div>
<div class="col-sm-2 control-label"></div>
</div>
<div class="form-group">
<label for="isadmin" class="col-sm-3 control-label">Compte admin :</label>
<div class="col-sm-7"><input type='checkbox' name='isadmin' class="form-control move-left" {% if admin %}checked="checked"{%endif%}/></div>
<div class="col-sm-2 control-label"></div>
</div>
<div class="form-group">
<label for="courieractive" class="col-sm-3 control-label">Utilisation POP/IMAP :</label>
<div class="col-sm-7"><input type='checkbox' name='courieractive' class="form-control move-left" {% if courier %}checked="checked"{%endif%}/></div>
<div class="col-sm-2 control-label"></div>
</div>
<div class="form-group">
<label for="webmailactive" class="col-sm-3 control-label">Webmail :</label>
<div class="col-sm-7"><input type='checkbox' name='webmailactive' class="form-control move-left" {% if webmail %}checked="checked"{%endif%}/></div>
<div class="col-sm-3 control-label"></div>
</div>
<div class="form-group">
<label for="authsmtpactive" class="col-sm-3 control-label">Authentification SMTP :</label>
<div class="col-sm-7"><input type='checkbox' name='authsmtpactive' class="form-control move-left" {% if authsmtp %}checked="checked"{%endif%}/></div>
<div class="col-sm-3 control-label"></div>
</div>
<!--
<div class="form-group">
<label for="amavisBypassSpamChecks" class="col-sm-3 control-label">Désactivation Antispam :</label>
<div class="col-sm-7"><input type='checkbox' name='amavisBypassSpamChecks' class="form-control move-left" {% if amavis %}checked="checked"{%endif%}/></div>
<div class="col-sm-2 control-label"></div>
</div>
-->
<hr><div class="text-center"><button type="submit" class="btn btn-primary" onclick='return submit_add();'>valider</button></div>
</form>
</div>
{% endblock %}

View file

@ -0,0 +1,22 @@
{% extends 'base.html' %}
{% block body %}
{% include 'nav.html' %}
<div class="container">
{% include 'notif.html' %}
<h2>Ajout d'un domaine</h2>
<form name="add" action="domaine.php" method="post" class="form-horizontal">
<hr><div class="alert alert-info" role="alert">Remplissez lez champs, ceux contenant [*] sont obligatoires.</div>
<div class="form-group">
<label for="domain" class="col-sm-3 control-label">Domaine [*] :</label>
<div class="col-sm-9"><input type="text" name="domain" class="form-control" /></div>
</div>
<div class="form-group">
<label for="isactive" class="col-sm-3 control-label">Activation globale :</label>
<div class="col-sm-9"><input type='checkbox' name='isactive' checked class="form-control move-left"/></div>
</div>
<hr><div class="text-center"><button type="submit" class="btn btn-primary">Valider</button></div>
</form>
</div>
{% endblock %}

View file

@ -0,0 +1,63 @@
{% extends 'base.html' %}
{% block body %}
{% include 'nav.html' %}
<div class="container">
{% include 'notif.html' %}
<h2>{% if name is null %}Ajout d'un alias{% else %}Modification de l'alias {{ name }}{% endif %}</h2>
<form name="add" action="alias.php?domain={{ domain }}{% if name is not null %}&alias={{ name }}{% endif %}" method="post" class="form-horizontal">
<hr><div class="alert alert-info" role="alert">Remplissez lez champs, ceux contenant [*] sont obligatoires.</div>
{% if name is null %}
<div class="form-group">
<label for="cn" class="col-sm-3 control-label">Nom (unique) de l'alias [*] :</label>
<div class="col-sm-7"><input type="text" name="cn" class="form-control" /></div>
<div class="col-sm-2 control-label"></div>
</div>
{% endif %}
{% for alias in aliases %}
<div class="form-group">
<label for="mailaccept[]" class="col-sm-3 control-label">Alias :</label>
<div class="col-sm-7"><input type="text" name="mailaccept[]" class="form-control" value="{{ alias }}"/></div>
<div class="col-sm-2 control-label">@{{ domain }}</div>
</div>
{% endfor %}
<div class="form-group">
<label for="mailaccept[]" class="col-sm-3 control-label">Alias :</label>
<div class="col-sm-7"><input type="text" name="mailaccept[]" class="form-control" /></div>
<div class="col-sm-2 control-label">@{{ domain }}</div>
</div>
{% for maildrop in maildrops %}
<div class="form-group">
<label for="maildrop[]" class="col-sm-3 control-label">Redirection :</label>
<div class="col-sm-7"><input type="text" name="maildrop[]" class="form-control" value="{{ maildrop }}"/></div>
<div class="col-sm-2 control-label"></div>
</div>
{% endfor %}
<div class="form-group">
<label for="maildrop[]" class="col-sm-3 control-label">Redirection :</label>
<div class="col-sm-7"><input type="text" name="maildrop[]" class="form-control" /></div>
<div class="col-sm-2 control-label"></div>
</div>
<hr><h5>Activer/désactiver l'alias</h5>
<div class="form-group">
<label for="isactive" class="col-sm-3 control-label">Actif :</label>
<div class="col-sm-7"><input type='checkbox' name='isactive' class="form-control move-left" {% if active %}checked="checked"{%endif%}/></div>
<div class="col-sm-2 control-label"></div>
</div>
<hr><div class="text-center"><button type="submit" class="btn btn-primary" onclick='return submit_add();'>valider</button></div>
</form>
</div>
{% endblock %}

View file

@ -4,7 +4,7 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<meta name="robots" content="noindex,nofollow"/>
<meta name="referrer" content="same-origin"/>
<title><?php print $config['global']['name']; ?></title>
<title>{{ page_name }}</title>
<link rel="stylesheet" href="assets/main.css" type="text/css"/>
<link rel="shortcut icon" href="assets/favicon.ico" type="image/x-icon"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous"/>
@ -15,4 +15,45 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.16/js/dataTables.bootstrap.min.js" integrity="sha256-X/58s5WblGMAw9SpDtqnV8dLRNCawsyGwNqnZD0Je/s=" crossorigin="anonymous"></script>
</head>
<body>
<div class="page-wrap">
{% block body %}{% endblock %}
</div>
<footer class="site-footer">
<div class="container">
<p>
<span>Evolix</span>
<br /><strong>Hébergement et Infogérance Open Source</strong>
</div>
</footer>
<script>
$(document).ready(function() {
$('.table').DataTable({
"language": {
"emptyTable": "Pas de données disponibles",
"info": "Entrées _START_ à _END_ sur _TOTAL_ entrées",
"infoEmpty": "Entrées 0 à 0 sur 0",
"infoFiltered": "(filtré sur un total de _MAX_ entrées)",
"infoPostFix": "",
"thousands": ",",
"lengthMenu": "Montrer _MENU_ entrées",
"loadingRecords": "Chargement...",
"processing": "Travail en cours...",
"search": "Recherche : ",
"zeroRecords": "Pas de resultat",
"paginate": {
"first": "Première",
"last": "Dernière",
"next": "Suivante",
"previous": "Précédente"
}
},
"lengthMenu": [ [10, 25, 50, 100, -1], [10, 25, 50, 100, "toutes les"] ]
});
} );
</script>
</body>
</html>

View file

@ -0,0 +1,37 @@
{% extends 'base.html' %}
{% block body %}
{% include 'nav.html' %}
<div class="container">
{% include 'notif.html' %}
<div class="text-center">
<form name="update" method="post" action="admin.php?domain={{ domain }}">
{% if isSuperAdmin %}
{% if active %}
<button type="submit" name="isactive" value="FALSE" class="btn btn-primary">Désactiver le domaine</button>&nbsp;&nbsp;&nbsp;
{% else %}
<button type="submit" name="isactive" value="TRUE" class="btn btn-primary">Activer le domaine</button>&nbsp;&nbsp;&nbsp;
{% endif %}
{% endif %}
<a href="compte.php?domain={{ domain }}"><button type="button" class="btn btn-primary">Ajouter un nouveau compte</button></a>&nbsp;&nbsp;&nbsp;
<a href="alias.php?domain={{ domain }}"><button type="button" class="btn btn-primary">Ajouter un nouvel alias/groupe de diffusion</button></a>
</form>
</div>
<hr>
<form class='center' action='admin.php' method='GET' name='listing'>
<div class="form-group">
<input type="hidden" name="domain" value="{{ domain }}"/>
<select class="form-control" name='viewonly' onchange="document.listing.submit()">
<option value='1' {% if view == 'account' %}selected="selected"{% endif %}>Liste des comptes</option>
<option value='2' {% if view == 'alias' %}selected="selected"{% endif %}>Liste des alias/groupe de diffusion</option>
</select>
</div>
</form>
{% block list %}{% endblock %}
</div>
{% endblock %}

52
htdocs/tpl/page/help.html Normal file
View file

@ -0,0 +1,52 @@
{% extends 'base.html' %}
{% block body %}
{% include 'nav.html' %}
<div class="container">
{% include 'notif.html' %}
<h2>Aide</h2>
<hr><div class="alert alert-info" role="alert">Cette page devrait &ecirc;tre lue attentivement avant d'utiliser cette interface.</div>
<hr><h4>Cr&eacute;er un compte mail</h4>
<p>Vous devez choisir un mot de passe et &eacute;ventuellement des alias. Veillez &agrave; entrer des alias avec une syntaxe valide et un mot de passe valide et assez complexe. Vous pouvez &eacute;galement choisir de donner les droits "Admin" en cochant la case <i>Admin</i>, c'est-&agrave;-dire permettre &agrave; l'utilisateur de se connecter &agrave; cette interface pour pouvoir ajouter/supprimer des mails/alias.<br>
<b>Vous devez &eacute;galement choisir un Login qui ne sera plus modifiable par la suite.</b> Ce login et le mot de passe serviront &agrave; se connecter au Webmail, serveur SMTP, serveur POP et serveur IMAP et &eacute;ventuellement &agrave; cette interface (si l'utilisateur a les droits "Admin").
</p>
<hr><h4>Cr&eacute;er un alias</h4>
<p>Vous devez choisir un alias et un mail valide pour rediriger les mails. Prenez bien garde &agrave; entrer un mail valide sinon les mails ne vous parviendront jamais.</p>
<hr><h3>FAQ</h3>
<hr><div class="alert alert-info" role="alert">Cette Foire-Aux-Questions (FAQ) devrait répondre à vos questions. Si ce n'est pas le cas, posez vos questions à <a href="mailto:{{ notif_mail }}">{{ notif_mail }}</a>.</div>
<hr><h4>Qu'est-ce qu'une syntaxe valide pour un compte mail ?</h4>
<i>Le d&eacute;but du mail (avant le @), doit respecter les r&egrave;gles suivantes :
<ul>
<li>&ecirc;tre compris entre 3 et 30 caract&egrave;res</li>
<li>n'avoir que des caract&egrave;res de types lettre minuscules ou chiffres</li>
<li>les caract&egrave;res tiret (-), point (.) et underscore (_) sont permis sauf en d&eacute;but et fin</li>
</ul>
</i>
<hr><h4>Qu'est-ce qu'un mot de passe valide ?</h4>
<i>Votre mot de passe doit r&eacute;pondre aux r&egrave;gles suivantes :
<ul>
<li>avoir entre 5 et 12 caract&egrave;res</li>
<li>N'utiliser ques des caract&egrave;res imprimables c'est-&agrave;-dire des lettres (majuscules, minuscules ou accentu&eacute;es), des chiffres ou les caract&egrave;res suivants :
<pre>[]!"#$%&'()*+,-./:;<=>?@\^_`{|}~</pre>
</ul>
</i>
<hr><h4>Qu'est-ce qu'un mot de passe assez complexe ?</h4>
<i>Outre d'avoir un mot de passe assez long (voir question pr&eacute;c&eacute;dente), il est fortement conseill&eacute; d'utilis&eacute; au moins un chiffre, au moins une lettre minuscule, au moins une lettre majuscule et au moins un caract&egrave;res "sp&eacute;cial". De plus, l'utilisation de suites de caract&egrave;res "connues" (mots, dates, noms, etc.) est fortement d&eacute;conseill&eacute;e.</i>
</div>
{% endblock %}

View file

@ -0,0 +1,59 @@
{% extends 'domain.html' %}
{% block list %}
<h2>Liste des comptes :</h2><hr>
<form name="del" method="post" action="admin.php?domain={{ domain }}">
<table class="table table-striped table-condensed">
<thead>
<tr>
<th><strong>Nom du compte</strong></th>
<th width="100px">Actif</th>
<th width="100px">Admin</th>
<th width="100px">POP / IMAP</th>
<th width="100px">Webmail</th>
<th width="100px">Auth SMTP</th>
<th>Quota</th>
<th width="50px">Suppr</th>
</tr>
</thead>
<tbody>
{% for account in accounts %}
<tr>
<td style="text-align:left;"><a href="compte.php?domain={{ domain }}&account={{ account.uid }}">{{ account.name }} <{{account.uid }}></a></td>
{% if account.active %}
<td><span class="glyphicon glyphicon-ok"></span></td>
{% else %}
<td><span class="glyphicon glyphicon-remove"></span></td>
{% endif %}
{% if account.admin %}
<td><span class="glyphicon glyphicon-ok"></span></td>
{% else %}
<td><span class="glyphicon glyphicon-remove"></span></td>
{% endif %}
{% if account.courrier %}
<td><span class="glyphicon glyphicon-ok"></span></td>
{% else %}
<td><span class="glyphicon glyphicon-remove"></span></td>
{% endif %}
{% if account.webmail %}
<td><span class="glyphicon glyphicon-ok"></span></td>
{% else %}
<td><span class="glyphicon glyphicon-remove"></span></td>
{% endif %}
{% if account.authsmtp %}
<td><span class="glyphicon glyphicon-ok"></span></td>
{% else %}
<td><span class="glyphicon glyphicon-remove"></span></td>
{% endif %}
<td>{{ account.quota }}</td>
<td>
<button type="submit" name="account" value="{{ account.uid }}"><span class="glyphicon glyphicon-trash"></span></button>
</td>
</tr>
{% endfor %}
</tbody></table></form>
{% endblock %}

View file

@ -0,0 +1,31 @@
{% extends 'domain.html' %}
{% block list %}
<h2>Liste des alias/groupe de diffusion :</h2><hr>
<form name="del" method="post" action="admin.php?domain={{ domain }}&viewonly=2">
<table class="table table-striped table-condensed">
<thead>
<tr>
<th><strong>Nom de l'alias/groupe de diffusion</strong></th>
<th width="100px">Actif</th>
<th width="50px">Suppr</th>
</tr>
</thead>
<tbody>
{% for alias in aliases %}
<tr><td style="text-align:left;"><a href="alias.php?domain={{ domain }}&alias={{ alias.name }}">{{ alias.name }}</a></td>
{% if alias.active %}
<td><span class="glyphicon glyphicon-ok"></span></td>
{% else %}
<td><span class="glyphicon glyphicon-remove"></span></td>
{% endif %}
<td><button type="submit" name="alias" value="{{ alias.name }}"><span class="glyphicon glyphicon-trash"></span></button></td>
</tr>
{% endfor %}
</tbody></table></form>
{% endblock %}

View file

@ -0,0 +1,43 @@
{% extends 'base.html' %}
{% block body %}
{% include 'nav.html' %}
<div class="container">
{% include 'notif.html' %}
<h2>Liste des domaines administrables :</h2><hr>
<form name="del" method="post" action="superadmin.php">
<table class="table table-striped table-condensed">
<thead>
<tr>
<th>Nom du domaine</th>
<th width="100px">Actif</th>
<th>Nombre de comptes</th>
<th>dont comptes mail</th>
<th>Nombre d'alias mail</th>
<th>Taille / Quota</th>
<th width="50px">Suppr.</th>
</tr>
</thead>
<tbody>
<?php
{% for domain in domains %}
<tr><td style="text-align:left;"><a href="admin.php?domain={{ domain.name }}">{{ domain.name }}</a></td>
{% if domain.active %}
<td><span class="glyphicon glyphicon-ok"></span></td>
{% else %}
<td><span class="glyphicon glyphicon-remove"></span></td>
{% endif %}
<td><b>{{ domain.NbAccounts }}</b></td>
<td><b>{{ domain.NbMailAccounts }}</b></td>
<td><b>{{ domain.NbMailAlias }}</b></td>
<td>{{ domain.getQuota }}</td>
<td><button type="submit" name="domain" value="{{ domain.name }}"><span class="glyphicon glyphicon-trash"></span></button></td>
</tr>
{% endfor %}
</tbody>
</table>
</form>
</div>
{% endblock %}

View file

@ -0,0 +1,29 @@
{% extends 'base.html' %}
{% block body %}
{% include 'notif.html' %}
{% if logout %}
<div class='login-info bg-info'>Déconnecté</div>
{% endif %}
<div class="loginpage">
<div class="loginbox">
<div class="illustration">
<img src="assets/logo.png" class="img-responsive" alt="Responsive image">
</div>
<form method="POST" action="auth.php" method="post" name="auth">
<div class="form-group has-feedback has-feedback-left">
<input type="text" name="login" class="form-control" placeholder="Utilisateur" autofocus="autofocus"/>
<i class="glyphicon glyphicon-user form-control-feedback"></i>
</div>
<div class="form-group has-feedback has-feedback-left">
<input type="password" name="password" class="form-control" placeholder="Mot de passe" />
<i class="glyphicon glyphicon-lock form-control-feedback"></i>
</div>
<div class="form-group text-center">
<button type="submit" class="btn btn-primary" onclick="return submit_login();">Connexion</button>
</div>
</form>
</div>
</div>
{% endblock %}

View file

@ -8,27 +8,16 @@
<ul class="nav navbar-nav">
<li><a href="superadmin.php">Accueil</a></li>
<li><a href="help.php">Aide</a></li>
<?php
if ($server->isSuperAdmin()) { echo '<li><a href="domaine.php">Ajout Domaine</a></li>'; }
?>
{% if isSuperAdmin %}
<li><a href="domaine.php">Ajout Domaine</a></li>
{% endif %}
<li><a href="auth.php">Déconnexion</a></li>
</ul>
<p class="navbar-text navbar-right">
<?php
print "<em>".$server->getLogin()."</em>";
if (!empty($domain)) {
print ' - Domaine : <a href="admin.php?domain='.$domain->getName().'">'.$domain->getName().'</a>';
}
?>
<em>{{ login }}</em>
{% if domain is not null %}
- Domaine : <a href="admin.php?domain={{ domain }}">{{ domain }}</a>
{% endif %}
</p>
</div>
</nav>

View file

@ -0,0 +1,14 @@
{% for alert in alerts %}
{% if alert.type == 3 %}
<div class="alert alert-info" role="alert">{{ alert.message | raw }}</div>
{% endif %}
{% if alert.type == 0 %}
<div class="alert alert-success" role="alert">{{ alert.message | raw }}</div>
{% endif %}
{% if alert.type == 1 %}
<div class="alert alert-warning" role="alert">{{ alert.message | raw }}</div>
{% endif %}
{% if alert.type == 2 %}
<div class="alert alert-danger" role="alert">{{ alert.message | raw }}</div>
{% endif %}
{% endfor %}