263 lines
8.9 KiB
PHP
Executable file
263 lines
8.9 KiB
PHP
Executable file
<?php
|
|
|
|
/**
|
|
* Add/delete a domain
|
|
*
|
|
* Copyright (c) 2004-2006 Evolix - Tous droits reserves
|
|
* $Id: domaine.php,v 1.2 2009-09-02 21:21:24 gcolpart Exp $
|
|
*
|
|
* @author Gregory Colpart <reg@evolix.fr>
|
|
* @version 1.0
|
|
*/
|
|
|
|
/**
|
|
* Path
|
|
*/
|
|
define('EVOADMIN_BASE','./');
|
|
|
|
/**
|
|
* PHP cookies session
|
|
*/
|
|
session_name('EVOADMIN_SESS');
|
|
session_start();
|
|
|
|
if (isset($_SESSION['login'])) {
|
|
|
|
/**
|
|
* Requires
|
|
*/
|
|
require_once EVOADMIN_BASE . 'common.php';
|
|
|
|
// $login var need for debut.php
|
|
$login = $_SESSION['login'];
|
|
|
|
include EVOADMIN_BASE . 'haut.php';
|
|
include EVOADMIN_BASE . 'inc/add.js';
|
|
include EVOADMIN_BASE . 'debut.php';
|
|
|
|
if ( (!superadmin($login)) || ($conf['domaines']['driver'] != 'ldap') ) {
|
|
|
|
print "<p class='error'>Vous n'avez pas les droits pour cette page</p>";
|
|
EvoLog::log("Access denied on domaine.php");
|
|
|
|
include EVOADMIN_BASE . 'fin.php';
|
|
exit(1);
|
|
}
|
|
|
|
// Supprimer un domaine
|
|
if ( isset($_GET['del']) ) {
|
|
|
|
$domain = Html::clean($_GET['del']);
|
|
|
|
if ( (isset($_GET['modif'])) && ($_GET['modif'] == 'yes')) {
|
|
|
|
print "<center>";
|
|
|
|
print "<p>Suppression $domain en cours...</p>";
|
|
|
|
// TODO : Verifier que l'objet existe avant sa suppression
|
|
//$ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS);
|
|
//$sr = Ldap::lda_del($ldapconn,"domain=" .$domain. "," .$rdn);
|
|
|
|
if ( $sr ) {
|
|
// script suppression systeme
|
|
//unix_del_dom($domain);
|
|
|
|
// TODO : suppression comptes associes
|
|
|
|
print "<p class='strong'>Suppression $domain effectuée.</p>";
|
|
|
|
EvoLog::log("Del domain ".$domain);
|
|
|
|
} else {
|
|
print "<p class='error>Erreur, suppression non effectuée.</p>";
|
|
EvoLog::log("Delete $domain failed");
|
|
}
|
|
|
|
print "</center>";
|
|
|
|
} else {
|
|
print "<center>";
|
|
print "<p>Vous souhaitez effacer complètement le domaine <b>$domain</b>...<br />";
|
|
print "Mais cette option n'est pas disponible par l'interface web.<br />";
|
|
print "Veuillez prendre contact avec l'administrateur pour faire cela.</p>";
|
|
//print "Tous les messages et paramètres seront définitivement perdus.</p>";
|
|
//print "<a href='compte.php?del=$uid&modif=yes'>Confirmer la suppression</a>";
|
|
print "</center>";
|
|
}
|
|
|
|
} else {
|
|
|
|
// Ajouter un domaine
|
|
if ( (isset($_GET['modif'])) && ($_GET['modif'] == 'yes')) {
|
|
|
|
$domain = Html::clean($_POST['domain']);
|
|
|
|
print "<center>";
|
|
print "Ajout en cours...";
|
|
|
|
if (!$conf['domaines']['ldap']['virtual']) {
|
|
|
|
if ( $conf['evoadmin']['version'] == 1) {
|
|
|
|
$info["domain"]=$domain;
|
|
$info["objectclass"][0] = "ldapDomain";
|
|
$info["postfixTransport"] = "local:";
|
|
$info["accountActive"] = (isset($_POST['isactive'])) ? "TRUE" : "FALSE";
|
|
|
|
$info2["cn"] = $domain;
|
|
$info2["objectclass"]="posixGroup";
|
|
// recuperer un uid number valide
|
|
// TODO : erreur si uid non compris entre 1000 et 29999
|
|
$info2["gidNumber"]= getfreegid();
|
|
|
|
$ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS);
|
|
|
|
// on teste si LDAP est content
|
|
if ( ldap_add($ldapconn,"domain=" .$domain. "," .LDAP_BASE, $info)
|
|
&& ldap_add($ldapconn,"cn=" .$domain. ",ou=group," .LDAP_BASE, $info2) ) {
|
|
|
|
// script ajout systeme (TODO : quota)
|
|
//unix_add($uid,getgid($_SESSION['domain']));
|
|
print "<p class='strong'>Ajout effectué.</p>";
|
|
EvoLog::log("Add domain ".$domain);
|
|
|
|
// notification par mail
|
|
domainnotify($domain);
|
|
|
|
} else {
|
|
print "<p class='error'>Erreur, envoyez le message d'erreur
|
|
suivant à votre administrateur :</p>";
|
|
var_dump($info);
|
|
var_dump($info2);
|
|
EvoLog::log("Add $domain failed");
|
|
}
|
|
} elseif ( $conf['evoadmin']['version'] == 2) {
|
|
// TODO : cf worldsat, etc.
|
|
|
|
} elseif ( $conf['evoadmin']['version'] == 3) {
|
|
// Version specifique pour steloi
|
|
$info["cn"] = $domain;
|
|
$info["objectclass"][0] = "postfixDomain";
|
|
$info["postfixTransport"] = "local:";
|
|
//$info["accountActive"] = (isset($_POST['isactive'])) ? "TRUE" : "FALSE";
|
|
// recuperer un uid number valide
|
|
// TODO : erreur si uid non compris entre 1000 et 29999
|
|
$info["gidNumber"]= getfreegid();
|
|
|
|
$info2["cn"] = $domain;
|
|
$info2["objectclass"][0]="posixGroup";
|
|
$info2["objectclass"][1]="sambaGroupMapping";
|
|
$info2["gidNumber"]= $info["gidNumber"];
|
|
$info2["displayName"]= $domain;
|
|
$info2["sambaGroupType"]= "2";
|
|
// generation du sambaSID comme dans le add.pl.
|
|
$info2["sambaSID"]= $conf['samba']['sid'] . (2*$info["gidNumber"]+1000);
|
|
|
|
$ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS);
|
|
|
|
// on teste si LDAP est content
|
|
if ( ldap_add($ldapconn,"cn=" .$domain. "," .LDAP_BASE, $info)
|
|
&& ldap_add($ldapconn,"cn=" .$domain. ",ou=groups," .LDAP_BASE, $info2) ) {
|
|
|
|
// script ajout systeme (TODO : quota)
|
|
//unix_add($uid,getgid($_SESSION['domain']));
|
|
print "<p class='strong'>Ajout effectué.</p>";
|
|
EvoLog::log("Add domain ".$domain);
|
|
|
|
// notification par mail
|
|
domainnotify($domain);
|
|
|
|
} else {
|
|
print "<p class='error'>Erreur, envoyez le message d'erreur
|
|
suivant à votre administrateur :</p>";
|
|
var_dump($info);
|
|
var_dump($info2);
|
|
EvoLog::log("Add $domain failed");
|
|
}
|
|
}
|
|
} else {
|
|
|
|
// Ajout d'un domaine virtuel
|
|
|
|
$info["cn"]=$domain;
|
|
$info["objectclass"][0] = "postfixDomain";
|
|
$info["objectclass"][1] = "posixGroup";
|
|
$info["postfixTransport"] = "virtual:";
|
|
$info["isActive"] = (isset($_POST['isactive'])) ? "TRUE" : "FALSE";
|
|
|
|
// recuperer un uid number valide
|
|
// TODO : erreur si uid non compris entre 1000 et 29999
|
|
$info["gidNumber"]= getfreegid();
|
|
|
|
$ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS);
|
|
|
|
// on teste si LDAP est content
|
|
if (ldap_add($ldapconn,"cn=" .$domain. "," .LDAP_BASE, $info)) {
|
|
|
|
domain_add($domain);
|
|
|
|
print "<p class='strong'>Ajout effectué.</p>";
|
|
EvoLog::log("Add domain ".$domain);
|
|
|
|
// notification par mail
|
|
domainnotify($domain);
|
|
|
|
} else {
|
|
print "<p class='error'>Erreur, envoyez le message d'erreur
|
|
suivant à votre administrateur :</p>";
|
|
var_dump($info);
|
|
EvoLog::log("Add $domain failed");
|
|
}
|
|
|
|
}
|
|
|
|
print "</center>";
|
|
|
|
// Formulaire d'ajout d'un domaine
|
|
} else {
|
|
?>
|
|
<center>
|
|
|
|
<h4>Ajout d'un domaine</h4>
|
|
|
|
<form name="add"
|
|
action="domaine.php?modif=yes"
|
|
method="post">
|
|
|
|
<p class="italic">Remplissez lez champs, ceux contenant [*] sont obligatoires.</p>
|
|
|
|
<table>
|
|
|
|
<tr><td align="right">Domaine [*] :</td>
|
|
<td align="left"><input type="text" name="domain" tabindex='1' /></td></tr>
|
|
|
|
<tr><td align="right">Activation globale :</td>
|
|
<td align="left"><input type='checkbox' tabindex='2'
|
|
name='isactive' checked /></td></tr>
|
|
|
|
<tr><td> </td><td align="left">
|
|
<p><input type="submit" class="button" tabindex='3'
|
|
value="Valider" name="valider" /></p>
|
|
</td></tr>
|
|
|
|
|
|
</table>
|
|
</form>
|
|
|
|
</center>
|
|
|
|
<?php
|
|
}
|
|
}
|
|
|
|
//if (isset($_SESSION['login']))
|
|
} else {
|
|
header("location: auth.php\n\n");
|
|
exit(0);
|
|
}
|
|
|
|
include EVOADMIN_BASE . 'fin.php';
|
|
|
|
?>
|