2003-09-28 13:30:31 +00:00
< ? php
2003-04-25 11:07:28 +00:00
/*
$Id $
This code is part of LDAP Account Manager ( http :// www . sourceforge . net / projects / lam )
Copyright ( C ) 2003 Tilo Lutz
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
LDAP Account Manager Delete user , hosts or groups
*/
2003-10-20 17:56:52 +00:00
2004-01-10 11:47:48 +00:00
// include all needed files
include_once ( '../lib/account.inc' ); // File with all account-funtions
include_once ( '../lib/config.inc' ); // File with configure-functions
include_once ( '../lib/profiles.inc' ); // functions to load and save profiles
include_once ( '../lib/status.inc' ); // Return error-message
include_once ( '../lib/pdf.inc' ); // Return a pdf-file
include_once ( '../lib/ldap.inc' ); // LDAP-functions
/* We have to include all modules
* before start session
* *** fixme I would prefer loading them dynamic but
* i don ' t know how to to this
*/
$dir = opendir ( '../lib/modules' );
while ( $entry = readdir ( $dir ))
if ( is_file ( '../lib/modules/' . $entry )) include_once ( '../lib/modules/' . $entry );
// Start session
2003-04-26 21:58:00 +00:00
session_save_path ( '../sess' );
@ session_start ();
2004-01-10 11:47:48 +00:00
2003-10-22 17:51:44 +00:00
// Redirect to startpage if user is not loged in
if ( ! isset ( $_SESSION [ 'loggedIn' ])) {
metaRefresh ( " login.php " );
2004-01-10 11:47:48 +00:00
exit ;
2003-10-22 17:51:44 +00:00
}
2004-01-10 11:47:48 +00:00
// Set correct language, codepages, ....
2003-08-10 19:46:21 +00:00
setlanguage ();
2003-04-25 16:14:09 +00:00
2004-01-10 11:47:48 +00:00
if ( ! isset ( $_SESSION [ 'cache' ])) {
$_SESSION [ 'cache' ] = new cache ();
2003-10-01 12:14:04 +00:00
}
2003-05-02 12:52:42 +00:00
if ( $_GET [ 'type' ]) {
2004-01-10 11:47:48 +00:00
// Create account list
foreach ( $_SESSION [ 'delete_dn' ] as $dn ) {
$start = strpos ( $dn , " = " ) + 1 ;
$end = strpos ( $dn , " , " );
$users [] = substr ( $dn , $start , $end - $start );
2003-05-02 07:59:13 +00:00
}
2004-01-10 11:47:48 +00:00
//load account
$_SESSION [ 'account' ] = new accountContainer ( $_GET [ 'type' ], 'account' );
$_SESSION [ 'account' ] -> load_account ( $_SESSION [ 'delete_dn' ][ 0 ]);
// Show HTML Page
echo $_SESSION [ 'header' ];
echo " <title> " ;
echo _ ( " Delete Account " );
echo " </title> \n " ;
echo " <link rel= \" stylesheet \" type= \" text/css \" href= \" ../style/layout.css \" > \n " ;
echo " </head><body> \n " ;
echo " <form action= \" delete.php \" method= \" post \" > \n " ;
echo " <fieldset class= \" " . $_GET [ 'type' ] . " edit-dark \" ><legend class= \" " . $_GET [ 'type' ] . " edit-bright \" ><b> " ;
echo _ ( 'Please confirm:' );
echo " </b></legend> \n " ;
echo " <input name= \" type \" type= \" hidden \" value= \" " . $_GET [ 'type' ] . " \" > \n " ;
echo sprintf ( _ ( " Do you really want to remove the following %ss? \n " ), $_GET [ 'type' ]);
2003-10-02 14:10:31 +00:00
echo " <br> \n " ;
2004-01-10 11:47:48 +00:00
echo " <table border=0 width= \" 100% \" > \n <tr><td valign= \" top \" width= \" 15% \" > " ;
for ( $i = 0 ; $i < count ( $users ); $i ++ ) {
echo " <tr> \n " ;
echo " <td> " . sprintf ( _ ( '%sname:' ), ucfirst ( $_GET [ 'type' ])) . " $users[$i] </td> \n " ;
echo " <td> " . _ ( 'DN:' ) . " " . $_SESSION [ 'delete_dn' ][ $i ] . " </td> \n " ;
echo " </tr> \n " ;
}
2003-09-19 10:03:00 +00:00
echo " </table> \n " ;
2004-01-10 11:47:48 +00:00
echo " <br> \n " ;
// Print delete rows from modules
echo " <table border=0 width= \" 100% \" > \n <tr><td valign= \" top \" width= \" 15% \" > " ;
$modules = array_keys ( $_SESSION [ 'account' ] -> module );
for ( $i = 0 ; $i < count ( $modules ); $i ++ ) {
$_SESSION [ 'account' ] -> module [ $modules [ $i ]] -> display_html_delete ( $_POST );
2003-06-08 12:12:42 +00:00
}
2004-01-10 11:47:48 +00:00
echo " </table> \n " ;
echo " <br> \n " ;
echo " <table border=0 width= \" 100% \" > \n <tr><td valign= \" top \" width= \" 15% \" > " ;
echo " <td><input name= \" delete \" type= \" submit \" value= \" " . _ ( 'Delete' ) . " \" ></td> \n " ;
echo " <td><input name= \" cancel \" type= \" submit \" value= \" " . _ ( 'Cancel' ) . " \" ></td> \n " ;
echo " </table> \n " ;
echo " </fieldset> \n " ;
echo " </form> \n " ;
echo " </body> \n " ;
echo " </html> \n " ;
2003-05-02 07:59:13 +00:00
}
2004-01-10 11:47:48 +00:00
if ( $_POST [ 'cancel' ]) {
if ( isset ( $_SESSION [ 'delete_dn' ])) unset ( $_SESSION [ 'delete_dn' ]);
metaRefresh ( " lists/list " . $_POST [ 'type' ] . " s.php " );
}
2003-09-19 10:03:00 +00:00
2004-01-10 11:47:48 +00:00
if ( $_POST [ 'delete' ]) {
// Show HTML Page
echo $_SESSION [ 'header' ];
echo " <title> " ;
echo _ ( " Delete Account " );
echo " </title> \n " ;
echo " <link rel= \" stylesheet \" type= \" text/css \" href= \" ../style/layout.css \" > \n " ;
echo " </head><body> \n " ;
echo " <form action= \" delete.php \" method= \" post \" > \n " ;
echo " <input name= \" type \" type= \" hidden \" value= \" " . $_POST [ 'type' ] . " \" > \n " ;
echo " <fieldset class= \" " . $_POST [ 'type' ] . " edit-dark \" ><legend class= \" " . $_POST [ 'type' ] . " edit-bright \" ><b> " ;
echo _ ( 'Deleting. Please stand by ...' );
echo " </b></legend> \n " ;
echo " <table border=0 width= \" 100% \" > \n <tr><td valign= \" top \" width= \" 15% \" > " ;
// Delete dns
for ( $m = 0 ; $m < count ( $_SESSION [ 'delete_dn' ]); $m ++ ) {
// Set to true if an real error has happened
$stopprocessing = false ;
// First load DN.
$_SESSION [ 'account' ] -> load_account ( $_SESSION [ 'delete_dn' ][ $m ]);
// get commands and changes of each attribute
$module = array_keys ( $_SESSION [ 'account' ] -> module );
$attributes = array ();
$errors = array ();
// load attributes
foreach ( $module as $singlemodule ) {
// load changes
$temp = $_SESSION [ 'account' ] -> module [ $singlemodule ] -> delete_attributes ( $_POST );
if ( is_array ( $temp )) {
// merge changes
$DNs = array_keys ( $temp );
// *** fixme don't include references
$attributes = array_merge_recursive ( $temp , $attributes );
for ( $i = 0 ; $i < count ( $DNs ); $i ++ ) {
$ops = array_keys ( $temp [ $DNs [ $i ]]);
for ( $j = 0 ; $j < count ( $ops ); $j ++ ) {
$attrs = array_keys ( $temp [ $DNs [ $i ]][ $ops [ $j ]]);
for ( $k = 0 ; $k < count ( $attrs ); $k ++ )
$attributes [ $DNs [ $i ]][ $ops [ $j ]][ $attrs [ $k ]] = array_unique ( $attributes [ $DNs [ $i ]][ $ops [ $j ]][ $attrs [ $k ]]);
}
}
}
}
$DNs = array_keys ( $attributes );
for ( $i = 0 ; $i < count ( $DNs ); $i ++ ) {
if ( isset ( $attributes [ $DNs [ $i ]][ 'errors' ])) {
foreach ( $attributes [ $DNs [ $i ]][ 'errors' ] as $singleerror ) {
$errors [] = $singleerror ;
if ( $singleerror [ 0 ] = 'ERROR' ) $stopprocessing = true ;
}
}
if ( ! $stopprocessing ) {
// modify attributes
if ( isset ( $attributes [ $DNs [ $i ]][ 'modify' ]) && ! $stopprocessing ) {
$success = @ ldap_mod_replace ( $_SESSION [ $_SESSION [ 'account' ] -> ldap ] -> server (), $DNs [ $i ], $attributes [ $DNs [ $i ]][ 'modify' ]);
if ( ! $success ) {
$errors [] = array ( 'ERROR' , 'LDAP' , sprintf ( _ ( 'Was unable to modify attribtues from dn: %s. This is possible a bug. Please check your ldap logs and send a bug report if it is a possible bug.' ), $DNs [ $i ]));
$stopprocessing = true ;
}
else
$_SESSION [ 'cache' ] -> update_cache ( $DNs [ $i ], 'modify' , $attributes [ $DNs [ $i ]][ 'modify' ]);
2003-05-15 20:59:26 +00:00
}
2004-01-10 11:47:48 +00:00
// add attributes
if ( isset ( $attributes [ $DNs [ $i ]][ 'add' ]) && ! $stopprocessing ) {
$success = @ ldap_mod_add ( $_SESSION [ $_SESSION [ 'account' ] -> ldap ] -> server (), $DNs [ $i ], $attributes [ $DNs [ $i ]][ 'add' ]);
if ( ! $success ) {
$errors [] = array ( 'ERROR' , 'LDAP' , sprintf ( _ ( 'Was unable to add attribtues to dn: %s. This is possible a bug. Please check your ldap logs and send a bug report if it is a possible bug.' ), $DNs [ $i ]));
$stopprocessing = true ;
}
else
$_SESSION [ 'cache' ] -> update_cache ( $DNs [ $i ], 'add' , $attributes [ $DNs [ $i ]][ 'add' ]);
2003-04-26 21:58:00 +00:00
}
2004-01-10 11:47:48 +00:00
// removce attributes
if ( isset ( $attributes [ $DNs [ $i ]][ 'remove' ]) && ! $stopprocessing ) {
$success = @ ldap_mod_del ( $_SESSION [ $_SESSION [ 'account' ] -> ldap ] -> server (), $DNs [ $i ], $attributes [ $DNs [ $i ]][ 'remove' ]);
if ( ! $success ) {
$errors [] = array ( 'ERROR' , 'LDAP' , sprintf ( _ ( 'Was unable to remove attribtues from dn: %s. This is possible a bug. Please check your ldap logs and send a bug report if it is a possible bug.' ), $DNs [ $i ]));
$stopprocessing = true ;
}
else
$_SESSION [ 'cache' ] -> update_cache ( $DNs [ $i ], 'remove' , $attributes [ $DNs [ $i ]][ 'remove' ]);
}
}
}
if ( ! $stopprocessing ) {
foreach ( $attributes as $DN ) {
if ( is_array ( $DN [ 'lamdaemon' ][ 'command' ])) $result = $_SESSION [ 'account' ] -> lamdaemon ( $DN [ 'lamdaemon' ][ 'command' ]);
// Error somewhere in lamdaemon
foreach ( $result as $singleresult ) {
if ( is_array ( $singleresult )) {
if ( $singleresult [ 0 ] = 'ERROR' ) $stopprocessing = true ;
$temparray [ 0 ] = $singleresult [ 0 ];
$temparray [ 1 ] = _ ( $singleresult [ 1 ]);
$temparray [ 2 ] = _ ( $singleresult [ 2 ]);
}
}
}
2003-04-25 16:14:09 +00:00
}
2004-01-10 11:47:48 +00:00
if ( ! $stopprocessing ) {
$success = @ ldap_delete ( $_SESSION [ $_SESSION [ 'account' ] -> ldap ] -> server (), $_SESSION [ 'delete_dn' ][ $m ]);
if ( ! $success ) $errors [] = array ( 'ERROR' , 'LDAP' , sprintf ( _ ( 'Was unable to remove attribtues from dn: %s. This is possible a bug. Please check your ldap logs and send a bug report if it is a possible bug.' ), $DNs [ $i ]));
else
$_SESSION [ 'cache' ] -> update_cache ( $_SESSION [ 'delete_dn' ][ $m ], 'delete_dn' );
}
if ( ! $stopprocessing ) {
echo " <tr> \n " ;
echo " <td> " . sprintf ( _ ( 'Deleted DN: %s' ), $_SESSION [ 'delete_dn' ][ $m ]) . " </td> \n " ;
echo " </tr> \n " ;
foreach ( $errors as $error ) StatusMessage ( $error [ 0 ], $error [ 1 ], $error [ 2 ]);
}
else {
echo " <tr> \n " ;
echo " <td> " . sprintf ( _ ( 'Error while deleting DN: %s' ), $_SESSION [ 'delete_dn' ][ $m ]) . " </td> \n " ;
echo " </tr> \n " ;
foreach ( $errors as $error ) StatusMessage ( $error [ 0 ], $error [ 1 ], $error [ 2 ]);
2003-11-06 11:08:28 +00:00
}
2003-08-20 19:16:03 +00:00
}
2004-01-10 11:47:48 +00:00
echo " </table> \n " ;
echo " <br> \n " ;
echo " <table border=0 width= \" 100% \" > \n <tr><td valign= \" top \" width= \" 15% \" > " ;
echo " <td><input name= \" cancel \" type= \" submit \" value= \" " . _ ( 'Back to list' ) . " \" ></td> \n " ;
echo " </table> \n " ;
echo " </fieldset> \n " ;
echo " </form> \n " ;
echo " </body> \n " ;
echo " </html> \n " ;
2003-05-02 07:59:13 +00:00
2003-08-20 19:16:03 +00:00
}
2003-05-02 07:59:13 +00:00
2003-04-25 16:14:09 +00:00
?>