From dbba71339ef7f398b595c376a5b63c4df14c247b Mon Sep 17 00:00:00 2001 From: katagia Date: Wed, 14 May 2003 21:12:17 +0000 Subject: [PATCH] Serveral smaller bugfixes. --- lam/config/shells | 17 +++++ lam/docs/README.lamdaemon.pl | 2 +- lam/lib/account.inc | 106 ++++++++++++++++++-------------- lam/lib/lamdaemon.pl | 12 ++-- lam/templates/account.php | 116 ++++++++++++++++++++--------------- lam/templates/delete.php | 6 ++ 6 files changed, 159 insertions(+), 100 deletions(-) create mode 100644 lam/config/shells diff --git a/lam/config/shells b/lam/config/shells new file mode 100644 index 00000000..7105372f --- /dev/null +++ b/lam/config/shells @@ -0,0 +1,17 @@ +/bin/ash +/bin/bash +/bin/bash1 +/bin/csh +/bin/false +/bin/ksh +/bin/sh +/bin/tcsh +/bin/true +/bin/zsh +/usr/bin/csh +/usr/bin/ksh +/usr/bin/passwd +/usr/bin/bash +/usr/bin/rbash +/usr/bin/tcsh +/usr/bin/zsh diff --git a/lam/docs/README.lamdaemon.pl b/lam/docs/README.lamdaemon.pl index 99f6e267..3b311fe2 100644 --- a/lam/docs/README.lamdaemon.pl +++ b/lam/docs/README.lamdaemon.pl @@ -25,7 +25,7 @@ thins to get it work. * Check if the user your webserver is running as does also exists on remote-host * Copy the content of ~/.ssh/id_dsa.pub from the system - LDAP Account manager into ~/.ssh/known_hosts on the + LDAP Account manager into ~/.ssh/authorized_keys on the remote machine * Connect to the remote server via ssh $remotehost Answer the next question with yes if the remote key is diff --git a/lam/lib/account.inc b/lam/lib/account.inc index fa0cc1b7..557684ab 100644 --- a/lam/lib/account.inc +++ b/lam/lib/account.inc @@ -93,8 +93,14 @@ function registervars() { // This function registers all needes session-varibale } function getshells() { // Return a list of all shells listed in /etc/shells - $shells = file('/etc/shells'); - foreach ($shells as $shell) chop($shell); + $shells = file('../config/shells'); + $i=0; + while ($shells[$i]) { + // ******** Fixme remove everthing starting from # and every empty line + chop($shells[$i]); + trim($shells[$i]); + $i++; + } return $shells; } @@ -103,6 +109,19 @@ function checkglobal() { // This functions checks all global account parameters $error = "0"; switch ( $_SESSION['type2'] ) { case 'user' : + if ( ($_SESSION['account_temp']->general_gecos=='') || ($_SESSION['account_temp']->general_gecos==' ')) $_SESSION['account_temp']->general_gecos = $_SESSION['account_temp']->general_givenname . " " . $_SESSION['account_temp']->general_surname ; + // Check if Homedir is valid + if ($_SESSION['account_temp']->general_username != '') + $_SESSION['account_temp']->general_homedir = str_replace('$user', $_SESSION['account_temp']->general_username, $_SESSION['account_temp']->general_homedir); + $_SESSION['account_temp']->general_homedir = str_replace('$group', $_SESSION['account_temp']->general_group, $_SESSION['account_temp']->general_homedir); + if ( !ereg('^[/][a-z]([a-z]|[0-9]|[.]|[-]|[_])*([/][a-z]([a-z]|[0-9]|[.]|[-]|[_])*)*$', $_SESSION['account_temp']->general_homedir )) $error = _('Homedirectory contents invalid characters.'); + // Check if givenname is valid + if ( !ereg('^([a-z]|[A-Z])*$', $_SESSION['account_temp']->givenname)) $error = _('Givenname contents invalid characters'); + // Check if surname is valid + if ( !ereg('^([a-z]|[A-Z])*$', $_SESSION['account_temp']->surname)) $error = _('Surname contents invalid characters'); + // Check if UID is valid. If none value was entered, the next useable value will be inserted + $temp = checkid(); + if ($temp) $error = $temp; // Check if Username-length is OK. minLength=3, maxLength=20 if ( !ereg('.{3,20}', $_SESSION['account_temp']->general_username)) $error = _('Username must content between 3 and 20 characters.'); // Check if Username starts with letter @@ -112,18 +131,6 @@ function checkglobal() { // This functions checks all global account parameters // Check if user already exists $temp = ldapexists(); if ($temp) $error = $temp; - // Check if surname is valid - if ( !ereg('^([a-z]|[A-Z])*$', $_SESSION['account_temp']->surname)) $error = _('Surname contents invalid characters'); - // Check if givenname is valid - if ( !ereg('^([a-z]|[A-Z])*$', $_SESSION['account_temp']->givenname)) $error = _('Givenname contents invalid characters'); - // Check if Homedir is valid - $_SESSION['account_temp']->general_homedir = str_replace('$user', $_SESSION['account_temp']->general_username, $_SESSION['account_temp']->general_homedir); - $_SESSION['account_temp']->general_homedir = str_replace('$group', $_SESSION['account_temp']->general_group, $_SESSION['account_temp']->general_homedir); - if ( !ereg('^[/][a-z]([a-z]|[0-9]|[.]|[-]|[_])*([/][a-z]([a-z]|[0-9]|[.]|[-]|[_])*)*$', $_SESSION['account_temp']->general_homedir )) $error = _('Homedirectory contents invalid characters.'); - if ($_SESSION['account_temp']->general_gecos=='') $_SESSION['account_temp']->general_gecos = $_SESSION['account_temp']->general_givenname . " " . $_SESSION['account_temp']->general_surname ; - // Check if UID is valid. If none value was entered, the next useable value will be inserted - $temp = checkid(); - if ($temp) $error = $temp; break; case 'group' : // Check if Groupname-length is OK. minLength=3, maxLength=20 @@ -177,17 +184,17 @@ function checkunix() { // This function checks all unix account paramters $error = "0"; switch ( $_SESSION['type2'] ) { case 'user' : - // Sonderzeichen |#*,.;:_-+!$%&/|?{[()]} **************************************************** - if ( !ereg('^([a-z]|[A-Z]|[0-9])*$', $_SESSION['account_temp']->unix_password)) $error = _('Password contents invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !'); - if ($_SESSION['account_temp']->unix_pwdwarn=='') $error = _('No value for Password Warn.'); - if ( !ereg('^([1-9]+)([0-9]*)$', $_SESSION['account_temp']->unix_pwdwarn)) $error = _('Password Warn must be are natural number.'); - if ($_SESSION['account_temp']->unix_pwdallowlogin=='') $error = _('No value for Password Expire.'); - if ( !ereg('^(([-][1])|([0-9]*))$', $_SESSION['account_temp']->unix_pwdallowlogin)) $error = _('Password Expire must be are natural number or -1.'); - if ($_SESSION['account_temp']->unix_pwdmaxage=='') $error = _('No value for Password Maxage.'); - if ( !ereg('^([1-9]+)([0-9]*)$', $_SESSION['account_temp']->unix_pwdmaxage)) $error = _('Password Maxage must be are natural number.'); - if ($_SESSION['account_temp']->unix_pwdminage=='') $error = _('No value for Password Minage.'); if ( !ereg('^([0-9]*)$', $_SESSION['account_temp']->unix_pwdminage)) $error = _('Password Minage must be are natural number.'); if ( $_SESSION['account_temp']->unix_pwdminage > $_SESSION['account_temp']->unix_pwdmaxage ) $error = _('Password Maxage must bigger as Password Minage.'); + if ( !ereg('^([1-9]+)([0-9]*)$', $_SESSION['account_temp']->unix_pwdmaxage)) $error = _('Password Maxage must be are natural number.'); + if ($_SESSION['account_temp']->unix_pwdminage=='') $error = _('No value for Password Minage.'); + if ( !ereg('^(([-][1])|([0-9]*))$', $_SESSION['account_temp']->unix_pwdallowlogin)) $error = _('Password Expire must be are natural number or -1.'); + if ($_SESSION['account_temp']->unix_pwdmaxage=='') $error = _('No value for Password Maxage.'); + if ( !ereg('^([1-9]+)([0-9]*)$', $_SESSION['account_temp']->unix_pwdwarn)) $error = _('Password Warn must be are natural number.'); + if ($_SESSION['account_temp']->unix_pwdallowlogin=='') $error = _('No value for Password Expire.'); + if ( !ereg('^([a-z]|[A-Z]|[0-9]|[\|]|[\#]|[\*]|[\,]|[\.]|[\;]|[\:]|[\_]|[\-]|[\+]|[\!]|[\%]|[\&]|[\/]|[\?]|[\{]|[\[]|[\(]|[\)]|[\]]|[\}])*$', + $_SESSION['account_temp']->unix_password)) $error = _('Password contents invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !'); + if ($_SESSION['account_temp']->unix_pwdwarn=='') $error = _('No value for Password Warn.'); break; case 'host' : // Sonderzeichen |#*,.;:_-+!$%&/|?{[()]} **************************************************** @@ -228,8 +235,8 @@ function checksamba() { // This function checks all samba account paramters $_SESSION['account_temp']->smb_profilePath = str_replace('$group', $_SESSION['account_temp']->general_group, $_SESSION['account_temp']->smb_profilePath); $_SESSION['account_temp']->smb_smbHome = str_replace('$user', $_SESSION['account_temp']->general_username, $_SESSION['account_temp']->smb_smbHome); $_SESSION['account_temp']->smb_smbHome = str_replace('$group', $_SESSION['account_temp']->general_group, $_SESSION['account_temp']->smb_smbHome); - // Sonderzeichen |#*,.;:_-+!$%&/|?{[()]} **************************************************** - if ( !ereg('^([a-z]|[A-Z]|[0-9])*$', $_SESSION['account_temp']->smb_password)) $error = _('Password contents invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !'); + if ( !ereg('^([a-z]|[A-Z]|[0-9]|[\|]|[\#]|[\*]|[\,]|[\.]|[\;]|[\:]|[\_]|[\-]|[\+]|[\!]|[\%]|[\&]|[\/]|[\?]|[\{]|[\[]|[\(]|[\)]|[\]]|[\}])*$', + $_SESSION['account_temp']->smb_password)) $error = _('Password contents invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !'); if ( (!$_SESSION['account_temp']->smb_scriptpath=='') && (!ereg('^([/])*[a-z]([a-z]|[0-9]|[.]|[-]|[_])*([/][a-z]([a-z]|[0-9]|[.]|[-]|[_])*)*$', $_SESSION['account_temp']->smb_scriptpath))) $error = _('Scriptpath is invalid'); if ( (!$_SESSION['account_temp']->smb_profilePath=='') && (!ereg('^[/][a-z]([a-z]|[0-9]|[.]|[-]|[_])*([/][a-z]([a-z]|[0-9]|[.]|[-]|[_])*)*$', $_SESSION['account_temp']->smb_profilePath)) && (!ereg('^[\][\]([a-z]|[A-Z]|[0-9]|[.]|[-])+([\]([a-z]|[A-Z]|[0-9]|[.]|[-])+)+$', $_SESSION['account_temp']->smb_profilePath))) $error = _('ProfilePath is invalid.'); if ( (!$_SESSION['account_temp']->smb_smbHome=='') && !ereg('^[\][\]([a-z]|[A-Z]|[0-9]|[.]|[-])+([\]([a-z]|[A-Z]|[0-9]|[.]|[-])+)+$', $_SESSION['account_temp']->smb_smbhome)) $error = _('smbHome is invalid.'); @@ -353,52 +360,55 @@ function RndInt($Format){ function getquotas($user='+') { // Whis function will return the quotas from the specified user If empty only filesystems with enabled quotas are returned $ldap_q = $_SESSION['ldap']->decrypt(); - $towrite = $ldap_q[0].' '.$ldap_q[1].' '.$user.' quota get '; + // ***************** + //$towrite = $ldap_q[0].' '.$ldap_q[1].' '.$user.' quota get '; + $towrite = 'cn=Manager,dc=my-domain,dc=com secret '.$user.' quota get '; if ($_SESSION['type2']=='user') $towrite = $towrite.'u'; else $towrite = $towrite.'g'; exec("/usr/bin/ssh ".$_SESSION['config']->scriptServer." sudo ".$_SESSION['config']->scriptPath." $towrite", $vals); - $vals = explode(';', $vals[0]); - while ($vals[$i]) { + $vals = explode(':', $vals[0]); + for ($i=0; $iquota[$i][$j] = $vals2[$j]; - $j++; } if ($_SESSION['account']->quota[$i][4]<$time) $_SESSION['account']->quota[$i][4] = ''; - else $_SESSION['account']->quota[$i][4] = strval(($_SESSION['account']->quota[$i][4]-$time)/3600) . _('hours'); + else $_SESSION['account']->quota[$i][4] = strval(($_SESSION['account']->quota[$i][4]-$time)/3600) . _(' hours'); if ($_SESSION['account']->quota[$i][8]<$time) $_SESSION['account']->quota[$i][8] = ''; - else $_SESSION['account']->quota[$i][8] = strval(($_SESSION['account']->quota[$i][8]-$time)/3600) . _('hours'); - $i++; + else $_SESSION['account']->quota[$i][8] = strval(($_SESSION['account']->quota[$i][8]-$time)/3600) . _(' hours'); } } function setquotas($user) { // Whis function will set the quotas from the specified user. $ldap_q = $_SESSION['ldap']->decrypt(); - $towrite = $ldap_q[0].' '.$ldap_q[1].' '.$user.' quota set '; + //$towrite = $ldap_q[0].' '.$ldap_q[1].' '.$user.' quota set '; + $towrite = 'cn=Manager,dc=my-domain,dc=com secret '.$user.' quota set '; if ($_SESSION['type2']=='user') $towrite = $towrite.'u '; else $towrite = $towrite.'g '; $i=0; while ($_SESSION['account']->quota[$i][0]) { if ($_SESSION['account']->quota[$i] != $_SESSION['account_old']->quota[$i]) { $towrite = $towrite. $_SESSION['account']->quota[$i][0] .','.$_SESSION['account']->quota[$i][2] .','.$_SESSION['account']->quota[$i][3] - .','.$_SESSION['account']->quota[$i][6] .','. $_SESSION['account']->quota[$i][7] .';'. + .','.$_SESSION['account']->quota[$i][6] .','. $_SESSION['account']->quota[$i][7] .':'. $i++; } } + echo("/usr/bin/ssh ".$_SESSION['config']->scriptServer." sudo ".$_SESSION['config']->scriptPath." $towrite"); if ($i!=0) exec("/usr/bin/ssh ".$_SESSION['config']->scriptServer." sudo ".$_SESSION['config']->scriptPath." $towrite", $vals); } function addhomedir($user) { // Create Homedirectory $ldap_q = $_SESSION['ldap']->decrypt(); - $towrite = $ldap_q[0].' '.$ldap_q[1].' '.$user.' home add'; + //$towrite = $ldap_q[0].' '.$ldap_q[1].' '.$user.' home add'; + $towrite = 'cn=Manager,dc=my-domain,dc=com secret '.$user.' home add '; exec("/usr/bin/ssh ".$_SESSION['config']->scriptServer." sudo ".$_SESSION['config']->scriptPath." $towrite", $vals); } function remhomedir($user) { // Remove Homedirectory $ldap_q = $_SESSION['ldap']->decrypt(); - $towrite = $ldap_q[0].' '.$ldap_q[1].' '.$user.' home rem'; + //$towrite = $ldap_q[0].' '.$ldap_q[1].' '.$user.' home rem'; + $towrite = 'cn=Manager,dc=my-domain,dc=com secret '.$user.' home rem '; exec("/usr/bin/ssh ".$_SESSION['config']->scriptServer." sudo ".$_SESSION['config']->scriptPath." $towrite", $vals); } @@ -516,7 +526,10 @@ function loaduser($dn) { // Will load all needed values from an existing account $result = ldap_search($_SESSION['ldap']->server(), $dn, "objectclass=PosixAccount"); $entry = ldap_first_entry($_SESSION['ldap']->server(), $result); $attr = ldap_get_attributes($_SESSION['ldap']->server(), $entry); - if ($attr['uid'][0]) $_SESSION['account']->general_username = $attr['uid'][0]; + if ($attr['uid'][0]) { + $_SESSION['account']->general_username = $attr['uid'][0]; + if ($_SESSION['config']->scriptServer) getquotas($attr['uid'][0]); + } if ($attr['uidNumber'][0]) $_SESSION['account']->general_uidNumber = $attr['uidNumber'][0]; if ($attr['homeDirectory'][0]) $_SESSION['account']->general_homedir = $attr['homeDirectory'][0]; if ($attr['shadowLastChange'][0]) $_SESSION['account']->unix_shadowLastChange = $attr['shadowLastChange'][0]; @@ -638,7 +651,10 @@ function loadgroup($dn) { // Will load all needed values from an existing group $attr = ldap_get_attributes($_SESSION['ldap']->server(), $entry); if ($attr['gidNumber'][0]) $_SESSION['account']->general_uidNumber = $attr['gidNumber'][0]; if ($attr['description'][0]) $_SESSION['account']->general_gecos = $attr['description'][0]; - if ($attr['cn'][0]) $_SESSION['account']->general_username = $attr['cn'][0]; + if ($attr['cn'][0]) { + $_SESSION['account']->general_username = $attr['cn'][0]; + if ($_SESSION['config']->scriptServer) getquotas($attr['cn'][0]); + } if ($attr['memberUid']) $_SESSION['account']->general_memberUid = $attr['memberUid']; if (is_array($_SESSION['account']->general_memberUid)) array_shift($_SESSION['account']->general_memberUid); $_SESSION['account']->general_dn = $dn; @@ -776,14 +792,18 @@ function createuser() { // Will create the LDAP-Account } $entry = ldap_next_entry($_SESSION['ldap']->server(), $entry); } + if ($_SESSION['config']->scriptServer) setquotas($_SESSION['account']->general_username); if (!$success) return 5; - if ($_SESSION['config']->scriptServer) setquotas($attr['uid'][0]); return 3; } else { // Write a new entry if user doesn't exists $success = ldap_add($_SESSION['ldap']->server(),$_SESSION['account']->general_dn, $attr); if (!$success) return 4; + if ($_SESSION['config']->scriptServer) { + setquotas($_SESSION['account']->general_username); + addhomedir($_SESSION['account']->general_username); + } // Add user to groups $result = ldap_search($_SESSION['ldap']->server(), 'cn='.$_SESSION['account']->general_group.','.$_SESSION['config']->get_GroupSuffix(), "objectclass=posixGroup", array('memberUid')); $entry = ldap_first_entry($_SESSION['ldap']->server(), $result); @@ -807,10 +827,6 @@ function createuser() { // Will create the LDAP-Account } if (!$success) return 4; } - if ($_SESSION['config']->scriptServer) { - setquotas($attr['uid'][0]); - addhomedir($attr['uid'][0]); - } return 1; } } diff --git a/lam/lib/lamdaemon.pl b/lam/lib/lamdaemon.pl index b47024d3..0c640543 100755 --- a/lam/lib/lamdaemon.pl +++ b/lam/lib/lamdaemon.pl @@ -30,7 +30,7 @@ # list of valid admins @admins = ('cn=Manager,dc=my-domain,dc=com'); $server="127.0.0.1"; # IP or DNS of ldap-server -$server_port='387'; # Port used from ldap +$server_port='389'; # Port used from ldap $server_ssl='no'; # Use SSL? ************* Not working yet $debug=true; # Show debug messages @@ -109,8 +109,8 @@ if ($found==true) { ($<, $>) = ($>, $<); # Get root privileges system 'mkdir', '-m 755 -p', $patch; # Create paths to homedir system 'mkdir', '-m 700', $user[7]; # Create himdir itself - system 'cp', '-a', '/etc/skel/', $user[7]; # Copy /etc/sekl into homedir - system 'chown', '-R', $user[2], $user[3] , $user[7]; # Change owner to new user + system 'cp', '-a', '/etc/skel/*', $user[7]; # Copy /etc/sekl into homedir + system 'chown', '-R', "$user[2]:$user[3]" , $user[7]; # Change owner to new user system '/usr/sbin/useradd.local', $user[0]; # run useradd-script ($<, $>) = ($>, $<); # Give up root previleges last switch2; @@ -128,7 +128,7 @@ if ($found==true) { $vals[3] eq 'quota' && do { get_fs(); # Load list of devices with enabled quotas # Store quota information in array - @quota_temp1 = split (';', $vals[6]); + @quota_temp1 = split (':', $vals[6]); $i=0; while ($quota_temp1[$i]) { $j=0; @@ -158,9 +158,9 @@ if ($found==true) { while ($quota_usr[$i][0]) { if ($vals[2]ne'+') { @temp = Quota::query($quota_usr[$i][0],$user[2],$group); - $return = "$quota_usr[$i][1],$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6],$temp[7];$return"; + $return = "$quota_usr[$i][1],$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6],$temp[7]:$return"; } - else { $return = "$quota_usr[$i][1],0,0,0,0,0,0,0,0;$return"; } + else { $return = "$quota_usr[$i][1],0,0,0,0,0,0,0,0:$return"; } $i++; } ($<, $>) = ($>, $<); # Give up root previleges diff --git a/lam/templates/account.php b/lam/templates/account.php index e01a644c..e3d9fc28 100644 --- a/lam/templates/account.php +++ b/lam/templates/account.php @@ -29,6 +29,8 @@ include_once('../lib/ldap.inc'); // LDAP-functions include_once('../lib/profiles.inc'); // functions to load and save profiles include_once('../lib/status.inc'); // Return error-message + + registervars(); // Register all needed variables in session and register session $error = "0"; if ( $_GET['type'] ) { // Type is true if account.php was called from Users/Group/Hosts-List @@ -38,7 +40,7 @@ if ( $_GET['type'] ) { // Type is true if account.php was called from Users/Grou $_SESSION['account_temp'] = ""; // Delete $_SESSION['account_temp'] because values are now invalid $_SESSION['modify'] = 0; // Set modify back to false $_SESSION['shelllist'] = getshells(); // Write List of all valid shells in variable - //if (($_GET['type']=='user')||($_GET['type']=='group')) getquotas(); + if ((($_GET['type']=='user')||($_GET['type']=='group')) && ($_SESSION['config']->scriptServer)) getquotas(); } if ( $_GET['DN'] ) { // $DN is true if an entry should be modified and account.php was called from Users/Group/Host-List @@ -53,31 +55,33 @@ if ( $_GET['DN'] ) { // $DN is true if an entry should be modified and account.p switch ($_POST['select']) { case 'general': - // Write alle values in temporary object - if ($_POST['f_general_username']) $_SESSION['account_temp']->general_username = $_POST['f_general_username']; - else $_SESSION['account_temp']->general_username = $_POST['f_general_username']; - if ($_POST['f_general_surname']) $_SESSION['account_temp']->general_surname = $_POST['f_general_surname']; - else $_SESSION['account_temp']->general_surname = ""; - if ($_POST['f_general_givenname']) $_SESSION['account_temp']->general_givenname = $_POST['f_general_givenname']; - else $_SESSION['account_temp']->general_givenname = ""; - if ($_POST['f_general_uidNumber']) $_SESSION['account_temp']->general_uidNumber = $_POST['f_general_uidNumber']; - else $_SESSION['account_temp']->general_uidNumber = ""; - if ($_POST['f_general_group']) $_SESSION['account_temp']->general_group = $_POST['f_general_group']; - if ($_POST['f_general_groupadd']) $_SESSION['account_temp']->general_groupadd = $_POST['f_general_groupadd']; - if ($_POST['f_general_homedir']) $_SESSION['account_temp']->general_homedir = $_POST['f_general_homedir']; - else $_SESSION['account_temp']->general_homedir = ""; - if ($_POST['f_general_shell']) $_SESSION['account_temp']->general_shell = $_POST['f_general_shell']; - if ($_POST['f_general_gecos']) $_SESSION['account_temp']->general_gecos = $_POST['f_general_gecos']; - else $_SESSION['account_temp']->general_gecos = ""; - // Check Values - $error = checkglobal(); // account.inc - // Check which part Site should be displayd - if ($_POST['next'] && ($error=="0")) - switch ($_SESSION['type2']) { - case 'user': $select_local = 'unix'; break; - case 'group': $select_local = 'quota'; break; - case 'host': $select_local = 'unix'; break; - } + if (!$_POST['load']) { // No Profile was loaded + // Write alle values in temporary object + if ($_POST['f_general_username']) $_SESSION['account_temp']->general_username = $_POST['f_general_username']; + else $_SESSION['account_temp']->general_username = $_POST['f_general_username']; + if ($_POST['f_general_surname']) $_SESSION['account_temp']->general_surname = $_POST['f_general_surname']; + else $_SESSION['account_temp']->general_surname = ""; + if ($_POST['f_general_givenname']) $_SESSION['account_temp']->general_givenname = $_POST['f_general_givenname']; + else $_SESSION['account_temp']->general_givenname = ""; + if ($_POST['f_general_uidNumber']) $_SESSION['account_temp']->general_uidNumber = $_POST['f_general_uidNumber']; + else $_SESSION['account_temp']->general_uidNumber = ""; + if ($_POST['f_general_group']) $_SESSION['account_temp']->general_group = $_POST['f_general_group']; + if ($_POST['f_general_groupadd']) $_SESSION['account_temp']->general_groupadd = $_POST['f_general_groupadd']; + if ($_POST['f_general_homedir']) $_SESSION['account_temp']->general_homedir = $_POST['f_general_homedir']; + else $_SESSION['account_temp']->general_homedir = ""; + if ($_POST['f_general_shell']) $_SESSION['account_temp']->general_shell = $_POST['f_general_shell']; + if ($_POST['f_general_gecos']) $_SESSION['account_temp']->general_gecos = $_POST['f_general_gecos']; + else $_SESSION['account_temp']->general_gecos = ""; + // Check Values + $error = checkglobal(); // account.inc + // Check which part Site should be displayd + if ($_POST['next'] && ($error=="0")) + switch ($_SESSION['type2']) { + case 'user': $select_local = 'unix'; break; + case 'group': $select_local = 'quota'; break; + case 'host': $select_local = 'unix'; break; + } + } break; case 'unix': // Write alle values in temporary object @@ -102,9 +106,10 @@ switch ($_POST['select']) { // Check Values $error = checkunix(); // account.inc // Check which part Site should be displayd - if ($_POST['back'] && ($error=="0")) $select_local = 'general'; if ($_POST['genpass']) $select_local = 'unix'; - if ($_POST['next'] && ($error=="0")) $select_local = 'samba'; + if (($_POST['next']) && ($error=="0")) $select_local = 'samba'; + else $select_local = 'unix'; + if ($_POST['back']) $select_local = 'general'; break; case 'samba': // Write alle values in temporary object @@ -138,12 +143,15 @@ switch ($_POST['select']) { // Check Values $error = checksamba(); // account.inc // Check which part Site should be displayd - if ($_POST['back'] && ($error=="0")) $select_local = 'unix'; - if ($_POST['next'] && ($error=="0")) - switch ($_SESSION['type2']) { - case 'user': $select_local = 'quota'; break; - case 'host': $select_local = 'final'; break; - } + if ($_POST['back']) $select_local = 'unix'; + if ($_POST['next']) { + if ($error=="0") + switch ($_SESSION['type2']) { + case 'user': $select_local = 'quota'; break; + case 'host': $select_local = 'final'; break; + } + else $select_local = 'samba'; + } break; case 'quota': $i=0; @@ -156,16 +164,19 @@ switch ($_POST['select']) { } $error = checkquota(); // Check which part Site should be displayd - if ($_POST['back'] && ($error=="0")) + if ($_POST['back']) switch ($_SESSION['type2']) { case 'user': $select_local = 'samba'; break; case 'group': $select_local = 'general'; break; } - if ($_POST['next'] && ($error=="0")) - switch ($_SESSION['type2']) { - case 'user': $select_local = 'personal'; break; - case 'group': $select_local = 'final'; break; - } + if ($_POST['next']) { + if ($error=="0") + switch ($_SESSION['type2']) { + case 'user': $select_local = 'personal'; break; + case 'group': $select_local = 'final'; break; + } + else $select_local = 'quota'; + } break; case 'personal': if ($_POST['f_personal_title']) $_SESSION['account_temp']->personal_title = $_POST['f_personal_title']; @@ -221,6 +232,7 @@ if ( $_POST['create'] ) { // Create-Button was pressed } } + // Write HTML-Header and part of Table echo ''; echo _('Create new Account'); @@ -253,8 +265,6 @@ if ($_POST['load']) $select_local='load'; if ($_POST['save']) $select_local='save'; -getquotas(); - switch ($select_local) { case 'general': // General Account Settings @@ -322,8 +332,8 @@ switch ($select_local) { echo _('Login Shell'); echo '</td><td><select name="f_general_shell" >'; foreach ($_SESSION['shelllist'] as $shell) - if ($_SESSION['account']->general_shell==$shell) echo '<option selected> '.$shell; - else echo '<option> '.$shell; + if ($_SESSION['account']->general_shell==trim($shell)) echo '<option selected>'.$shell; + else echo '<option>'.$shell; echo '</select></td><td>'; echo _('To disable login use /bin/false.'); echo '</td></tr><tr><td><select name="f_general_selectprofile">'; @@ -333,6 +343,7 @@ switch ($select_local) { </td><td>'; break; case 'group': + $profilelist = getGroupProfiles(); echo '<tr><td>'; echo _('Groupname'); echo '</td><td> @@ -348,7 +359,11 @@ switch ($select_local) { echo '</td><td><input name="f_general_gecos" type="text" size="30" value="' . $_SESSION['account']->general_gecos . '"> </td><td>'; echo _('User descriptopn. If left empty groupname will be used.'); - echo '</td></tr>'; + echo '</td></tr><tr><td><select name="f_general_selectprofile">'; + foreach ($profilelist as $profile) echo '<option>' . $profile; + echo '</select> + <input name="load" type="submit" value="'; echo _('Load Profile'); echo '"> + </td><td>'; break; case 'host': $profilelist = getHostProfiles(); @@ -851,13 +866,18 @@ switch ($select_local) { case 'load': switch ( $_SESSION['type2'] ) { case 'user': - $_SESSION['account'] = loadUserProfile($f_general_selectprofile); + $_SESSION['account'] = loadUserProfile($_POST['f_general_selectprofile']); + if ($_SESSION['config']->scriptServer) getquotas(); break; case 'host': - $_SESSION['account'] = loadHostProfile($f_general_selectprofile); + $_SESSION['account'] = loadHostProfile($_POST['f_general_selectprofile']); + break; + case 'group': + $_SESSION['account'] = loadGroupProfile($_POST['f_general_selectprofile']); + if ($_SESSION['config']->scriptServer) getquotas(); break; } - echo '<meta http-equiv="refresh" content="2; URL=account.php">'; + echo '<meta http-equiv="refresh" content="0; URL=account.php">'; break; case 'save': switch ( $_SESSION['type2'] ) { diff --git a/lam/templates/delete.php b/lam/templates/delete.php index c45ae53a..c77d2453 100644 --- a/lam/templates/delete.php +++ b/lam/templates/delete.php @@ -23,6 +23,7 @@ $Id$ LDAP Account Manager Delete user, hosts or groups */ include_once('../lib/ldap.inc'); +include_once('../lib/account.inc'); include_once('../lib/config.inc'); session_save_path('../sess'); @session_start(); @@ -70,6 +71,11 @@ if ($_POST['delete_yes']) { case 'user': $success = ldap_delete($_SESSION['ldap']->server(), $dn); if (!$success) $error = _('Could not delete user: ').$dn; + else { + $temp=explode(',', $dn); + $username = str_replace('cn=', '', $temp[0]); + if ($_SESSION['config']->scriptServer) remhomedir($username); + } break; case 'host': $success = ldap_delete($_SESSION['ldap']->server(), $dn);