<?php /** * Setup * * @link http://www.egroupware.org * @package setup * @author Miles Lott <milos@groupwhere.org> * @author Ralf Becker <RalfBecker-AT-outdoor-training.de> * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @version $Id$ */ /** * Get the options for vfs_storage_mode, select the right one depending on vfs_fstab * * @param array $config * @return string */ function vfs_storage_mode_options($config) { if (!isset($config['vfs_fstab']) || $config['vfs_fstab'] == serialize(array( '/' => 'sqlfs://$host/', '/apps' => 'links://$host/apps', ))) { $config['vfs_storage_mode'] = 'fs'; } elseif($config['vfs_fstab'] == serialize(array( '/' => 'sqlfs://$host/?storage=db', '/apps' => 'links://$host/apps?storage=db', ))) { $config['vfs_storage_mode'] = 'db'; } else { $config['vfs_storage_mode'] = 'custom'; } //_debug_array(array_intersect_key($config,array('vfs_fstab'=>1,'vfs_storage_mode'=>1))); foreach(array( 'fs' => lang('Filesystem (default)'), 'db' => lang('Database').' (problems with files > 1MB)', 'custom' => lang('Custom set via %1','filemanager/cli.php mount'), ) as $name => $label) { $options .= '<option value="'.$name.($name === $config['vfs_storage_mode'] ? '" selected="selected' : ''). '">'.htmlspecialchars($label)."</options>\n"; } //echo "<pre>".htmlspecialchars($options)."</pre>\n"; return $options; } function encryptalgo($config) { if(@function_exists('mcrypt_list_algorithms')) { $listed = array(); if(!isset($config['mcrypt_algo'])) { $config['mcrypt_algo'] = 'tripledes'; /* MCRYPT_TRIPLEDES */ } $algos = @mcrypt_list_algorithms(); $found = False; $out = ''; while(list($key,$value) = each($algos)) { $found = True; /* Only show each once - seems this is a problem in some installs */ if(!in_array($value,$listed)) { if($config['mcrypt_algo'] == $value) { $selected = ' selected="selected"'; } else { $selected = ''; } $descr = strtoupper($value); $out .= '<option value="' . $value . '"' . $selected . '>' . $descr . '</option>' . "\n"; $listed[] = $value; } } if(!$found) { /* Something is wrong with their mcrypt install or php.ini */ $out = '<option value="">' . lang('no algorithms available') . '</option>' . "\n";; } } else { $out = '<option value="tripledes">TRIPLEDES</option>' . "\n";; } return $out; } function encryptmode($config) { if(@function_exists('mcrypt_list_modes')) { $listed = array(); if(!isset($config['mcrypt_mode'])) { $config['mcrypt_mode'] = 'cbc'; /* MCRYPT_MODE_CBC */ } $modes = @mcrypt_list_modes(); $found = False; $out = ''; while(list($key,$value) = each($modes)) { $found = True; /* Only show each once - seems this is a problem in some installs */ if(!in_array($value,$listed)) { if($config['mcrypt_mode'] == $value) { $selected = ' selected="selected"'; } else { $selected = ''; } $descr = strtoupper($value); $out .= '<option value="' . $value . '"' . $selected . '>' . $descr . '</option>' . "\n"; $listed[] = $value; } } if(!$found) { /* Something is wrong with their mcrypt install or php.ini */ $out = '<option value="" selected="selected">' . lang('no modes available') . '</option>' . "\n"; } } else { $out = '<option value="cbc" selected="selected">CBC</option>' . "\n"; } return $out; } function passwdhashes($config) { $hashes = array( 'des' => 'des', 'md5' => 'md5', 'smd5' => 'smd5', 'sha' => 'sha', 'ssha' => 'ssha', 'plain' => 'plain', ); /* Check for available crypt methods based on what is defined by php */ if(@defined('CRYPT_BLOWFISH') && CRYPT_BLOWFISH == 1) { $hashes['blowish_crypt'] = 'blowish_crypt'; } if(@defined('CRYPT_MD5') && CRYPT_MD5 == 1) { $hashes['md5_crypt'] = 'md5_crypt'; } if(@defined('CRYPT_EXT_DES') && CRYPT_EXT_DES == 1) { $hashes['ext_crypt'] = 'ext_crypt'; } foreach($hashes as $key => $value) { if($config['ldap_encryption_type'] == $value) { $selected = ' selected="selected"'; } else { $selected = ''; } $descr = strtoupper($value); $out .= '<option value="' . $value . '"' . $selected . '>' . $descr . '</option>' . "\n"; } return $out; } function sql_passwdhashes($config) { $hashes = array( 'md5' => 'md5' ); /* Check for available crypt methods based on what is defined by php */ if(@defined('CRYPT_BLOWFISH') && CRYPT_BLOWFISH == 1) { $hashes['blowish_crypt'] = 'blowish_crypt'; } if(@defined('CRYPT_MD5') && CRYPT_MD5 == 1) { $hashes['md5_crypt'] = 'md5_crypt'; } if(@defined('CRYPT_EXT_DES') && CRYPT_EXT_DES == 1) { $hashes['ext_crypt'] = 'ext_crypt'; } if(@defined('CRYPT_STD_DES') && CRYPT_STD_DES == 1) { $hashes['crypt'] = 'crypt'; } $hashes += array( 'smd5' => 'smd5', 'sha' => 'sha', 'ssha' => 'ssha', 'plain' => 'plain', ); foreach($hashes as $key => $value) { if($config['sql_encryption_type'] == $value) { $selected = ' selected="selected"'; } else { $selected = ''; } $descr = strtoupper($value); $out .= '<option value="' . $value . '"' . $selected . '>' . $descr . '</option>' . "\n"; } return $out; } /** * Make auth-types from setup_cmd_config available * * @param array $config * @return string */ function auth_type($config) { return _options_from(setup_cmd_config::auth_types(),$config['auth_type']); } function auth_type_syncml($config) { return _options_from(setup_cmd_config::auth_types(),$config['auth_type_syncml']); } function auth_type_groupdav($config) { return _options_from(setup_cmd_config::auth_types(),$config['auth_type_groupdav']); } /** * Returns options string * * @param array $options value => label pairs * @param string $selected value of selected optino * @return string */ function _options_from(array $options,$selected) { foreach($options as $value => $label) { $out .= '<option value="' . htmlspecialchars($value) . '"' . ($selected == $value ? ' selected="selected"' : '') . '>' . $label . '</option>' . "\n"; } return $out; }