smb_flagsW = 1; $account_new->smb_flagsX = 1; $account_old = $account_new; // Store only DN without uid=$name $account_new->general_dn = substr($account_new->general_dn, strpos($account_new->general_dn, ',')+1); $_SESSION['final_changegids'] = ''; } else if (count($_POST)==0) { // Startcondition. hostedit.php was called from outside $account_new = loadHostProfile('default'); $account_new ->type = 'host'; $account_new->smb_flagsW = 1; $account_new->smb_flagsX = 1; $account_new->general_homedir = '/dev/null'; $account_new->general_shell = '/bin/false'; if (isset($_SESSION['account_'.$varkey.'_account_old'])) { unset($account_old); unset($_SESSION['account_'.$varkey.'_account_old']); } } 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 $account_new if no profile should be loaded if (!$_POST['load']) { $account_new->general_dn = $_POST['f_general_suffix']; $account_new->general_username = $_POST['f_general_username']; $account_new->general_uidNumber = $_POST['f_general_uidNumber']; $account_new->general_group = $_POST['f_general_group']; $account_new->general_gecos = $_POST['f_general_gecos']; // Check if values are OK and set automatic values. if not error-variable will be set if ( substr($account_new->general_username, strlen($account_new->general_username)-1, strlen($account_new->general_username)) != '$' ) { $account_new->general_username = $account_new->general_username . '$'; $errors[] = array('WARN', _('Host name'), _('Added $ to hostname.')); } $tempname = $account_new->general_username; // Check if Hostname contains only valid characters if ( !ereg('^([a-z]|[A-Z]|[0-9]|[.]|[-]|[$])*$', $account_new->general_username)) $errors[] = array('ERROR', _('Host name'), _('Hostname contains invalid characters. Valid characters are: a-z, 0-9 and .-_ !')); if ($account_new->general_gecos=='') { $account_new->general_gecos = $account_new->general_username; $errors[] = array('INFO', _('Gecos'), _('Inserted hostname in gecos-field.')); } // Create automatic Hostname with number if original user already exists // Reset name to original name if new name is in use if (ldapexists($account_new, 'host', $account_old) && is_object($account_old)) $account_new->general_username = $account_old->general_username; while ($temp = ldapexists($account_new, 'host', $account_old)) { // get last character of username $account_new->general_username = substr($account_new->general_username, 0, $account_new->general_username-1); $lastchar = substr($account_new->general_username, strlen($account_new->general_username)-2, 1); // Last character is no number if ( !ereg('^([0-9])+$', $lastchar)) $account_new->general_username = $account_new->general_username . '2'; else { $i=strlen($account_new->general_username)-3; $mark = false; while (!$mark) { if (ereg('^([0-9])+$',substr($account_new->general_username, $i, strlen($account_new->general_username)-1))) $i--; else $mark=true; } // increase last number with one $firstchars = substr($account_new->general_username, 0, $i+1); $lastchars = substr($account_new->general_username, $i+1, strlen($account_new->general_username)-$i); $account_new->general_username = $firstchars . (intval($lastchars)+1). '$'; } $account_new->general_username = $account_new->general_username . "$"; } if ($account_new->general_username != $tempname) $errors[] = array('WARN', _('Host name'), _('Hostname already in use. Selected next free hostname.')); // Check if UID is valid. If none value was entered, the next useable value will be inserted $account_new->general_uidNumber = checkid($account_new, 'host', $account_old); if (is_string($account_new->general_uidNumber)) { // true if checkid has returned an error $errors[] = array('ERROR', _('ID-Number'), $account_new->general_uidNumber); if (isset($account_old)) $account_new->general_uidNumber = $account_old->general_uidNumber; else unset($account_new->general_uidNumber); } // Check if Name-length is OK. minLength=3, maxLength=20 if ( !ereg('.{3,20}', $account_new->general_username)) $errors[] = array('ERROR', _('Name'), _('Name must contain between 3 and 20 characters.')); // Check if Name starts with letter if ( !ereg('^([a-z]|[A-Z]).*$', $account_new->general_username)) $errors[] = array('ERROR', _('Name'), _('Name contains invalid characters. First character must be a letter')); } break; case 'samba': // Write all general values into $account_new $account_new->smb_displayName = $_POST['f_smb_displayName']; if (isset($_POST['f_smb_flagsD'])) $account_new->smb_flagsD = true; else $account_new->smb_flagsD = false; if ($config_intern->is_samba3()) { $samba3domains = $ldap_intern->search_domains($config_intern->get_domainSuffix()); for ($i=0; $iname) { $account_new->smb_domain = $samba3domains[$i]; } } else { $account_new->smb_domain = $_POST['f_smb_domain']; } // Check if values are OK and set automatic values. if not error-variable will be set if (($account_new->smb_displayName=='') && isset($account_new->general_gecos)) { $account_new->smb_displayName = $account_new->general_gecos; $errors[] = array('INFO', _('Display name'), _('Inserted gecos-field as display name.')); } if ((!$account_new->smb_domain=='') && !ereg('^([a-z]|[A-Z]|[0-9]|[-])+$', $account_new->smb_domain)) $errors[] = array('ERROR', _('Domain name'), _('Domain name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and -.')); // Reset password if reset button was pressed. Button only vissible if account should be modified if ($_POST['respass']) { $account_new->unix_password_no=true; $account_new->smb_password_no=true; $select_local = 'samba'; } break; case 'final': $select_local = 'final'; break; } do { // X-Or, only one if() can be true if ($_POST['next_general']) { if (!is_array($errors)) $select_local='general'; else $select_local=$_POST['select']; break; } if ($_POST['next_samba']) { if (!is_array($errors)) $select_local='samba'; else $select_local=$_POST['select']; break; } if ($_POST['next_final']) { if (!is_array($errors)) $select_local='final'; else $select_local=$_POST['select']; break; } if ($_POST['next_reset']) { $account_new = $account_old; $account_new->unix_password=''; $account_new->smb_password=''; $account_new->smb_flagsW = 0; $account_new->general_dn = substr($account_new->general_dn, strpos($account_new->general_dn, ',')+1); $select_local = $_POST['select']; break; } if ( $_POST['create'] ) { // Create-Button was pressed // Create or modify an account if ($account_old) $result = modifyhost($account_new,$account_old); else $result = createhost($account_new); // account.inc if ( $result==1 || $result==3 ) $select_local = 'finish'; else $select_local = 'final'; } if ($_POST['createagain']) { $select_local='general'; unset($account_new); $account_new = loadHostProfile('default'); $account_new ->type = 'host'; break; } if ($_POST['load']) { $account_new->general_dn = $_POST['f_general_suffix']; $account_new->general_username = $_POST['f_general_username']; $account_new->general_uidNumber = $_POST['f_general_uidNumber']; $account_new->general_group = $_POST['f_general_group']; $account_new->general_gecos = $_POST['f_general_gecos']; // load profile if ($_POST['f_general_selectprofile']!='') $values = loadHostProfile($_POST['f_general_selectprofile']); if (is_object($values)) { while (list($key, $val) = each($values)) // Set only defined values if (isset($val)) $account_new->$key = $val; } // select general page after group has been loaded $select_local='general'; break; } if ($_POST['save']) { // save profile saveHostProfile($account_new, $_POST['f_finish_safeProfile']); // select last page displayed before user is created $select_local='final'; break; } if ($_POST['backmain']) { metaRefresh("../lists/listhosts.php"); if (isset($_SESSION['account_'.$varkey.'_account_new'])) unset($_SESSION['account_'.$varkey.'_account_new']); if (isset($_SESSION['account_'.$varkey.'_account_old'])) unset($_SESSION['account_'.$varkey.'_account_old']); die; break; } if (!$select_local) $select_local='general'; } while(0); // Write HTML-Header echo $header_intern; echo ""; echo _("Create new Account"); echo "\n". "\n". "\n". "\n". "\n". "
\n". "\n"; if (is_array($errors)) { echo "\n"; for ($i=0; $i"; } // print_r($account_new); switch ($select_local) { // Select which part of page will be loaded // 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': // General Account Settings // load list of all groups $groups = findgroups(); // load list of profiles $profilelist = getHostProfiles(); // Show page info echo ''; echo "
\n\n\n
"; echo "
"; echo _('Please select page:'); echo "\n"; echo "\n
"; echo "\n
"; echo ""; if (isset($account_old)) { echo "

"; echo _("Reset all changes."); echo "
"; echo "\n"; } echo "
"; echo "\n\n
"; echo "
"; echo _("General properties"); echo "\n\n\n'."\n".''."\n".''."\n".''."\n".''."\n".''."\n".''."\n".''."\n".'\n\n
"; echo _('Host name').'*'; echo ''. ''. ''. ''._('Help').''. '
'; echo _('UID number'); echo ''. ''. ''. ''._('Help').''. '
'; echo _('Primary group').'*'; echo ''. ''._('Help').''. '
'; echo _('Gecos'); echo ''. ''. ''._('Help').''. '
'; echo _('Suffix'); echo ''._('Help').''. "
"; echo _('Values with * are required'); echo "
\n
"; if (count($profilelist)!=0) { echo "
"; echo _("Load profile"); echo "\n\n\n\n\n
"; echo "\n". ""; echo _('Help')."
\n
\n"; } echo "
\n
\n"; break; case 'samba': // Samba Settings if ($config_intern->is_samba3()) $samba3domains = $ldap_intern->search_domains($config_intern->get_domainSuffix()); if ($account_new->smb_password_no) echo ''; echo ''; echo "\n\n\n
"; echo "
"; echo _('Please select page:'); echo "\n"; echo "\n
"; echo "\n
"; echo ""; if (isset($account_old)) { echo "

"; echo _("Reset all changes."); echo "
"; echo "\n"; } echo "
"; echo "
"._('Samba properties')."\n"; echo "\n\n\n\n\n'."\n".''."\n".''."\n".''."\n".''."\n".''."\n".''."\n"; echo "
"; echo _("Display name"); echo "". "smb_displayName."\">". ""._('Help')."
"; echo _('Password'); echo ''; if (isset($account_old)) { echo ''; } echo '
'; echo _('Account is deactivated'); echo 'smb_flagsD) echo ' checked '; echo '>'. ''._('Help').''. '
'; echo '
'; echo _('Domain'); if ($config_intern->is_samba3()) { echo ''; } else { echo ''; } echo ''._('Help').'
\n
\n
\n"; break; case 'final': // Final Settings echo ''; echo "\n\n
"; echo "
"; echo _('Please select page:'); echo "\n"; echo "\n
"; echo "\n
"; echo ""; if (isset($account_old)) { echo "

"; echo _("Reset all changes."); echo "
"; echo "\n"; } echo "
"; echo "\n\n
"; echo "\n
"; echo _("Save profile"); echo "\n\n\n\n\n
"; echo ''; echo ''._('Help'); echo "
\n
\n
\n"; echo "
"; if ($account_old) echo _('Modify'); else echo _('Create'); echo "\n"; echo "'; StatusMessage('WARN', _('ObjectClass posixAccount not found.'), _('Have to add objectClass posixAccount.')); echo "\n"; } if (!in_array('shadowAccount', $account_old->general_objectClass)) { echo ''; StatusMessage('WARN', _('ObjectClass shadowAccount not found.'), _('Have to add objectClass shadowAccount.')); echo "\n"; } if ($config_intern->is_samba3()) { if (!in_array('sambaSamAccount', $account_old->general_objectClass)) { echo ''; StatusMessage('WARN', _('ObjectClass sambaSamAccount not found.'), _('Have to add objectClass sambaSamAccount. Host with sambaAccount will be updated.')); echo "\n"; }} else if (!in_array('sambaAccount', $account_old->general_objectClass)) { echo ''; StatusMessage('WARN', _('ObjectClass sambaAccount not found.'), _('Have to add objectClass sambaSamAccount. Host with sambaSamAccount will be set back to sambaAccount.')); echo "\n"; } } echo ''."\n"; echo "
"; if (isset($account_old->general_objectClass)) { if (!in_array('posixAccount', $account_old->general_objectClass)) { echo '
\n
\n
"; break; case 'finish': // Final Settings echo ''; echo "
"._('Success')."\n"; echo "'."\n".'
"; echo '
'; echo _('Host'); echo ' '.$account_new->general_username.' '; if ($account_old) echo ' '._('has been modified').'.'; else echo ' '._('has been created').'.'; echo '
'; if (!$account_old) { echo ''; } echo ''."\n".''. ''. '
'; ?>