server(), $suffix, "objectClass=organizationalunit", array("DN")); if ($sr) { $units = ldap_get_entries($_SESSION["ldap"]->server, $sr); // delete first array entry which is "count" array_shift($units); // remove sub arrays for ($i = 0; $i < sizeof($units); $i++) $units[$i] = $units[$i]['dn']; // add root suffix if needed if (!in_array($suffix, $units)) { array_push($units, $suffix); } } return $units; } switch ($_POST['select']) { // Select which part of page should be loaded and check values // general = startpage, general account paramters // unix = page with all shadow-options and password // samba = page with all samba-related parameters e.g. smbpassword // quota = page with all quota-related parameters e.g. hard file quota // personal = page with all personal-related parametergs, e.g. phone number // final = last page shown before account is created/modified // if account is modified commands might be ran are shown // finish = page shown after account has been created/modified case 'general': // Write all general values into $_SESSION['account'] if no profile should be loaded if (!$_POST['load']) { $_SESSION['account']->general_dn = $_POST['f_general_suffix']; if ($_POST['f_general_username']) $_SESSION['account']->general_username = $_POST['f_general_username']; else $_SESSION['account']->general_username = $_POST['f_general_username']; if ($_POST['f_general_surname']) $_SESSION['account']->general_surname = $_POST['f_general_surname']; else $_SESSION['account']->general_surname = ""; if ($_POST['f_general_givenname']) $_SESSION['account']->general_givenname = $_POST['f_general_givenname']; else $_SESSION['account']->general_givenname = ""; if ($_POST['f_general_uidNumber']) $_SESSION['account']->general_uidNumber = $_POST['f_general_uidNumber']; else $_SESSION['account']->general_uidNumber = ""; if ($_POST['f_general_group']) $_SESSION['account']->general_group = $_POST['f_general_group']; if ($_POST['f_general_groupadd']) $_SESSION['account']->general_groupadd = $_POST['f_general_groupadd']; else $_SESSION['account']->general_groupadd = array(''); if ($_POST['f_general_homedir']) $_SESSION['account']->general_homedir = $_POST['f_general_homedir']; else $_SESSION['account']->general_homedir = ""; if ($_POST['f_general_shell']) $_SESSION['account']->general_shell = $_POST['f_general_shell']; if ($_POST['f_general_gecos']) $_SESSION['account']->general_gecos = $_POST['f_general_gecos']; else $_SESSION['account']->general_gecos = ""; // Check if values are OK and set automatic values. if not error-variable will be set if ($_SESSION['account_old']) list($values, $errors) = checkglobal($_SESSION['account'], $_SESSION['type2'], $_SESSION['account_old']); // account.inc else list($values, $errors) = checkglobal($_SESSION['account'], $_SESSION['type2']); // account.inc if (is_object($values)) { while (list($key, $val) = each($values)) // Set only defined values if ($val) $_SESSION['account']->$key = $val; } // Check which part Site should be displayed next if ($_POST['next'] && ($errors=='')) 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 all general values into $_SESSION['account'] if ($_POST['f_unix_password']) { // Encraypt password $iv = base64_decode($_COOKIE["IV"]); $key = base64_decode($_COOKIE["Key"]); $_SESSION['account']->unix_password = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $_POST['f_unix_password'], MCRYPT_MODE_ECB, $iv)); } else $_SESSION['account']->unix_password = ''; if ($_POST['f_unix_password_no']) $_SESSION['account']->unix_password_no = true; else $_SESSION['account']->unix_password_no = false; if ($_POST['f_unix_pwdwarn']) $_SESSION['account']->unix_pwdwarn = $_POST['f_unix_pwdwarn']; else $_SESSION['account']->unix_pwdwarn = ''; if ($_POST['f_unix_pwdallowlogin']) $_SESSION['account']->unix_pwdallowlogin = $_POST['f_unix_pwdallowlogin']; else $_SESSION['account']->unix_pwdallowlogin = ''; if ($_POST['f_unix_pwdmaxage']) $_SESSION['account']->unix_pwdmaxage = $_POST['f_unix_pwdmaxage']; else $_SESSION['account']->unix_pwdmaxage = ''; if ($_POST['f_unix_pwdminage']) $_SESSION['account']->unix_pwdminage = $_POST['f_unix_pwdminage']; else $_SESSION['account']->unix_pwdminage = ''; if ($_POST['f_unix_pwdexpire_day']) $_SESSION['account']->unix_pwdexpire_day = $_POST['f_unix_pwdexpire_day']; if ($_POST['f_unix_pwdexpire_mon']) $_SESSION['account']->unix_pwdexpire_mon = $_POST['f_unix_pwdexpire_mon']; if ($_POST['f_unix_pwdexpire_yea']) $_SESSION['account']->unix_pwdexpire_yea = $_POST['f_unix_pwdexpire_yea']; if ($_POST['f_unix_deactivated']) $_SESSION['account']->unix_deactivated = $_POST['f_unix_deactivated']; else $_SESSION['account']->unix_deactivated = false; if ($_POST['genpass']) { // Generate a random password if generate-button was pressed $iv = base64_decode($_COOKIE["IV"]); $key = base64_decode($_COOKIE["Key"]); $_SESSION['account']->unix_password = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, genpasswd(), MCRYPT_MODE_ECB, $iv)); // Keep unix-page acitve $select_local = 'unix'; } // Check if values are OK and set automatic values. if not error-variable will be set else $errors = checkunix($_SESSION['account'], $_SESSION['type2']); // account.inc // Check which part Site should be displayd // Reset password if reset button was pressed. Button only vissible if account should be modified if ($_POST['respass']) { $_SESSION['account']->unix_password_no=true; $_SESSION['account']->smb_password_no=true; } // Check which part Site should be displayed next if ($_POST['back']) $select_local = 'general'; else if (($_POST['next']) && ($errors=='')) $select_local = 'samba'; else $select_local = 'unix'; break; case 'samba': // Write all general values into $_SESSION['account'] if ($_POST['f_smb_password']) { // Encrypt password $iv = base64_decode($_COOKIE["IV"]); $key = base64_decode($_COOKIE["Key"]); $_SESSION['account']->smb_password = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, base64_decode($_COOKIE['Key']), $_POST['f_smb_password'], MCRYPT_MODE_ECB, base64_decode($_COOKIE['IV']))); } else $_SESSION['account']->smb_password = ""; if ($_POST['f_smb_password_no']) $_SESSION['account']->smb_password_no = true; else $_SESSION['account']->smb_password_no = false; if ($_POST['f_smb_useunixpwd']) $_SESSION['account']->smb_useunixpwd = $_POST['f_smb_useunixpwd']; else $_SESSION['account']->smb_useunixpwd = false; if ($_POST['f_smb_pwdcanchange']) $_SESSION['account']->smb_pwdcanchange = $_POST['f_smb_pwdcanchange']; else $_SESSION['account']->smb_pwdcanchange = false; if ($_POST['f_smb_pwdmustchange']) $_SESSION['account']->smb_pwdmustchange = $_POST['f_smb_pwdmustchange']; else $_SESSION['account']->smb_pwdmustchange = false; if ($_POST['f_smb_homedrive']) $_SESSION['account']->smb_homedrive = $_POST['f_smb_homedrive']; if ($_POST['f_smb_scriptpath']) $_SESSION['account']->smb_scriptPath = $_POST['f_smb_scriptpath']; else $_SESSION['account']->smb_scriptPath = ''; if ($_POST['f_smb_smbuserworkstations']) $_SESSION['account']->smb_smbuserworkstations = $_POST['f_smb_smbuserworkstations']; else $_SESSION['account']->smb_smbuserworkstations = ""; if ($_POST['f_smb_smbhome']) $_SESSION['account']->smb_smbhome = stripslashes($_POST['f_smb_smbhome']); else $_SESSION['account']->smb_smbhome = ""; if ($_POST['f_smb_profilePath']) $_SESSION['account']->smb_profilePath = stripslashes($_POST['f_smb_profilePath']); else $_SESSION['account']->smb_profilePath = ""; if ($_POST['f_smb_domain']) $_SESSION['account']->smb_domain = $_POST['f_smb_domain']; else $_SESSION['account']->smb_domain = false; if ($_POST['f_smb_flagsW']) $_SESSION['account']->smb_flagsW = $_POST['f_smb_flagsW']; else $_SESSION['account']->smb_flagsW = false; if ($_POST['f_smb_flagsD']) $_SESSION['account']->smb_flagsD = $_POST['f_smb_flagsD']; else $_SESSION['account']->smb_flagsD = false; if ($_POST['f_smb_flagsX']) $_SESSION['account']->smb_flagsX = $_POST['f_smb_flagsX']; else $_SESSION['account']->smb_flagsX = false; // Check if values are OK and set automatic values. if not error-variable will be set list($values, $errors) = checksamba($_SESSION['account'], $_SESSION['type2']); // account.inc if (is_object($values)) { while (list($key, $val) = each($values)) // Set only defined values if ($val) $_SESSION['account']->$key = $val; } // Check which part Site should be displayed next if ($_POST['back']) $select_local = 'unix'; else if ($_POST['next']) if($errors=='') switch ($_SESSION['type2']) { case 'user': $select_local = 'quota'; break; case 'host': $select_local = 'final'; break; } else $select_local = 'samba'; break; case 'quota': // Write all general values into $_SESSION['account'] $i=0; while ($_SESSION['account']->quota[$i][0]) { $_SESSION['account']->quota[$i][2] = $_POST['f_quota_'.$i.'_2']; $_SESSION['account']->quota[$i][3] = $_POST['f_quota_'.$i.'_3']; $_SESSION['account']->quota[$i][6] = $_POST['f_quota_'.$i.'_6']; $_SESSION['account']->quota[$i][7] = $_POST['f_quota_'.$i.'_7']; $i++; } // Check if values are OK and set automatic values. if not error-variable will be set list($values, $errors) = checkquota($_SESSION['account'], $_SESSION['type2']); // account.inc if (is_object($values)) { while (list($key, $val) = each($values)) // Set only defined values if ($val) $_SESSION['account']->$key = $val; } // Check which part Site should be displayed next if ($_POST['back']) switch ($_SESSION['type2']) { case 'user': $select_local = 'samba'; break; case 'group': $select_local = 'general'; break; } else if ($_POST['next']) if ($errors=='') switch ($_SESSION['type2']) { case 'user': $select_local = 'personal'; break; case 'group': $select_local = 'final'; break; } else $select_local = 'quota'; break; case 'personal': // Write all general values into $_SESSION['account'] if ($_POST['f_personal_title']) $_SESSION['account']->personal_title = $_POST['f_personal_title']; else $_SESSION['account']->personal_title = ""; if ($_POST['f_personal_mail']) $_SESSION['account']->personal_mail = $_POST['f_personal_mail']; else $_SESSION['account']->personal_mail = ""; if ($_POST['f_personal_telephoneNumber']) $_SESSION['account']->personal_telephoneNumber = $_POST['f_personal_telephoneNumber']; else $_SESSION['account']->personal_telephoneNumber = ""; if ($_POST['f_personal_mobileTelephoneNumber']) $_SESSION['account']->personal_mobileTelephoneNumber = $_POST['f_personal_mobileTelephoneNumber']; else $_SESSION['account']->personal_mobileTelephoneNumber = ""; if ($_POST['f_personal_facsimileTelephoneNumber']) $_SESSION['account']->personal_facsimileTelephoneNumber = $_POST['f_personal_facsimileTelephoneNumber']; else $_SESSION['account']->personal_facsimileTelephoneNumber = ""; if ($_POST['f_personal_street']) $_SESSION['account']->personal_street = $_POST['f_personal_street']; else $_SESSION['account']->personal_street = ""; if ($_POST['f_personal_postalCode']) $_SESSION['account']->personal_postalCode = $_POST['f_personal_postalCode']; else $_SESSION['account']->personal_postalCode = ""; if ($_POST['f_personal_postalAddress']) $_SESSION['account']->personal_postalAddress = $_POST['f_personal_postalAddress']; else $_SESSION['account']->personal_postalAddress = ""; if ($_POST['f_personal_employeeType']) $_SESSION['account']->personal_employeeType = $_POST['f_personal_employeeType']; else $_SESSION['account']->personal_employeeType = ""; // Check if values are OK and set automatic values. if not error-variable will be set list($values, $errors) = checkpersonal($_SESSION['account'], $_SESSION['type2']); // account.inc if (is_object($values)) { while (list($key, $val) = each($values)) // Set only defined values if ($val) $_SESSION['account']->$key = $val; } // Check which part Site should be displayed next if ($_POST['back']) $select_local = 'quota'; else if ($_POST['next']) if ($errors=='') $select_local = 'final'; else $select_local = 'personal'; break; case 'final': // Write all general values into $_SESSION['account'] if ($_POST['f_final_changegids']) $_SESSION['final_changegids'] = $_POST['f_final_changegids'] ; // Check which part Site should be displayed next if ($_POST['back']) switch ($_SESSION['type2']) { case 'user': $select_local = 'personal'; break; case 'group': $select_local = 'quota'; break; case 'host': $select_local = 'samba'; break; } break; case 'finish': // Check if pdf-file should be created if ($_POST['outputpdf']) { createpdf(array($_SESSION['account'])); $select_local = 'pdf'; } break; } if ( $_POST['create'] ) { // Create-Button was pressed // Create or modify an account switch ($_SESSION['type2']) { case 'user': if ($_SESSION['account_old']) $result = modifyuser($_SESSION['account'],$_SESSION['account_old']); else $result = createuser($_SESSION['account']); // account.inc if ( $result==1 || $result==3 ) $select_local = 'finish'; break; case 'group': if ($_SESSION['account_old']) $result = modifygroup($_SESSION['account'],$_SESSION['account_old']); else $result = creategroup($_SESSION['account']); // account.inc if ( $result==1 || $result==3 ) $select_local = 'finish'; break; case 'host': if ($_SESSION['account_old']) $result = modifyhost($_SESSION['account'],$_SESSION['account_old']); else $result = createhost($_SESSION['account']); // account.inc if ( $result==1 || $result==3 ) $select_local = 'finish'; break; } } // Set selected page to general if no page was defined. should only true if account.php wasn't called by itself if (!$select_local) $select_local='general'; // Reset variables if recreate-button was pressed if ($_POST['createagain']) { $select_local='general'; $_SESSION['account']=""; } // Set selected page to backmain (Back to main listmenu) if ($_POST['backmain']) { $select_local='backmain'; } // Set selected page to load (load profile) if ($_POST['load']) $select_local='load'; // Set selected page to save (save profile) if ($_POST['save']) $select_local='save'; if ($select_local != 'pdf') { // Write HTML-Header and part of Table echo "\n"; echo "