From 22bac121d587d5feb38df51b758dd3b1c0a2b390 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Thu, 16 Jun 2005 05:36:09 +0000 Subject: [PATCH] fixed wrong Windows detection and changed default path to show slashes on windows too --- setup/manageheader.php | 665 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 665 insertions(+) create mode 100644 setup/manageheader.php diff --git a/setup/manageheader.php b/setup/manageheader.php new file mode 100644 index 0000000000..b0f3bf6543 --- /dev/null +++ b/setup/manageheader.php @@ -0,0 +1,665 @@ + True, + 'noheader' => True, + 'nonavbar' => True, + 'currentapp' => 'home', + 'noapi' => True + ); + include('./inc/functions.inc.php'); + + $GLOBALS['phpgw_info']['server']['versions']['current_header'] = $setup_info['phpgwapi']['versions']['current_header']; + $GLOBALS['phpgw_info']['server']['versions']['phpgwapi'] = $setup_info['phpgwapi']['version']; + unset($setup_info); + + /* Fetch the current real path. + * If this is in the server document root, then it is probably ok. + * Otherwise, don't guess, just show the usual instructive default. + */ + $realpath = realpath('..'); + if(!ereg('^' . $_SERVER['DOCUMENT_ROOT'],$realpath)) + { + if(strtoupper(substr(PHP_OS, 0,3)) == 'WIN') + { + $realpath = 'Drive:/Path/to/egroupware'; + } + else + { + $realpath = '/path/to/egroupware'; + } + } + + $adddomain = get_var('adddomain',Array('POST')); + + $db_fullnames = array( + 'pgsql' => 'PostgreSQL', + 'mysql' => 'MySQL', + 'mssql' => 'MS SQL Server', + 'oracle' => 'Oracle' + ); + + $default_db_ports = array( + 'pgsql' => 5432, + 'mysql' => 3306, + 'mssql' => 1433, + 'oracle' => 1521 + ); + + function check_form_values() + { + // PHP will automatically replace any dots in incoming + // variable names with underscores. + + $errors = ''; + $domains = get_var('domains',Array('POST')); + @reset($domains); + while(list($k,$v) = @each($domains)) + { + $variableName = str_replace('.','_',$k); + $deletedomain = get_var('deletedomain',Array('POST')); + if(isset($deletedomain[$variableName])) + { + continue; + } + $dom = get_var('setting_'.$variableName,Array('POST')); + if(!$dom['config_pass'] && !$dom['config_password']) + { + $errors .= '
' . lang("You didn't enter a config password for domain %1",$v); + } + if(!$dom['config_user']) + { + $errors .= '
' . lang("You didn't enter a config username for domain %1",$v); + } + } + + $setting = get_var('setting',Array('POST')); + if(!$setting['HEADER_ADMIN_PASSWORD'] && !$setting['HEADER_ADMIN_PASS']) + { + $errors .= '
' . lang("You didn't enter a header admin password"); + } + if(!$setting['HEADER_ADMIN_USER']) + { + $errors .= '
' . lang("You didn't enter a header admin username"); + } + + if($errors) + { + $GLOBALS['phpgw_setup']->html->show_header('Error',True); + echo $errors; + echo '

'; + exit; + } + } + + /* authentication phase */ + $GLOBALS['phpgw_info']['setup']['stage']['header'] = $GLOBALS['phpgw_setup']->detection->check_header(); + + // added these to let the app work, need to templatize still + $tpl_root = $GLOBALS['phpgw_setup']->html->setup_tpl_dir('setup'); + $setup_tpl = CreateObject('setup.Template',$tpl_root); + $setup_tpl->set_file(array( + 'T_head' => 'head.tpl', + 'T_footer' => 'footer.tpl', + 'T_alert_msg' => 'msg_alert_msg.tpl', + 'T_login_main' => 'login_main.tpl', + 'T_login_stage_header' => 'login_stage_header.tpl', + 'T_setup_manage' => 'manageheader.tpl' + )); + $setup_tpl->set_block('T_login_stage_header','B_multi_domain','V_multi_domain'); + $setup_tpl->set_block('T_login_stage_header','B_single_domain','V_single_domain'); + $setup_tpl->set_block('T_setup_manage','manageheader','manageheader'); + $setup_tpl->set_block('T_setup_manage','domain','domain'); + + /* Detect current mode */ + switch($GLOBALS['phpgw_info']['setup']['stage']['header']) + { + case '1': + $GLOBALS['phpgw_info']['setup']['HeaderFormMSG'] = lang('Create your header.inc.php'); + $GLOBALS['phpgw_info']['setup']['PageMSG'] = lang('You have not created your header.inc.php yet!
You can create it now.'); + break; + case '2': + $GLOBALS['phpgw_info']['setup']['HeaderFormMSG'] = lang('Your header admin password is NOT set. Please set it now!'); + $GLOBALS['phpgw_info']['setup']['PageMSG'] = lang('Your header admin password is NOT set. Please set it now!'); + break; + case '3': + $GLOBALS['phpgw_info']['setup']['HeaderFormMSG'] = lang('You need to add some domains to your header.inc.php.'); + $GLOBALS['phpgw_info']['setup']['PageMSG'] = lang('You need to add some domains to your header.inc.php.'); + $GLOBALS['phpgw_info']['setup']['HeaderLoginMSG'] = lang('You need to add some domains to your header.inc.php.'); + if(!$GLOBALS['phpgw_setup']->auth('Header')) + { + $GLOBALS['phpgw_setup']->html->show_header('Please login',True); + $GLOBALS['phpgw_setup']->html->login_form(); + $GLOBALS['phpgw_setup']->html->show_footer(); + exit; + } + break; + case '4': + $GLOBALS['phpgw_info']['setup']['HeaderFormMSG'] = lang('Your header.inc.php needs upgrading.'); + $GLOBALS['phpgw_info']['setup']['PageMSG'] = lang('Your header.inc.php needs upgrading.
WARNING!
MAKE BACKUPS!'); + $GLOBALS['phpgw_info']['setup']['HeaderLoginMSG'] = lang('Your header.inc.php needs upgrading.'); + if(!$GLOBALS['phpgw_setup']->auth('Header')) + { + $GLOBALS['phpgw_setup']->html->show_header('Please login',True); + $GLOBALS['phpgw_setup']->html->login_form(); + $GLOBALS['phpgw_setup']->html->show_footer(); + exit; + } + break; + case '10': + if(!$GLOBALS['phpgw_setup']->auth('Header')) + { + $GLOBALS['phpgw_setup']->html->show_header('Please login',True); + $GLOBALS['phpgw_setup']->html->login_form(); + $GLOBALS['phpgw_setup']->html->show_footer(); + exit; + } + $GLOBALS['phpgw_info']['setup']['HeaderFormMSG'] = lang('Edit your header.inc.php'); + $GLOBALS['phpgw_info']['setup']['PageMSG'] = lang('Edit your existing header.inc.php'); + break; + } + + $action = @get_var('action',Array('POST')); + list($action) = @each($action); + switch($action) + { + case 'download': + check_form_values(); + $header_template = CreateObject('setup.Template','../'); + $b = CreateObject('phpgwapi.browser'); + $b->content_header('header.inc.php','application/octet-stream'); + /* + header('Content-disposition: attachment; filename="header.inc.php"'); + header('Content-type: application/octet-stream'); + header('Pragma: no-cache'); + header('Expires: 0'); + */ + $newheader = $GLOBALS['phpgw_setup']->html->generate_header(); + echo $newheader; + break; + case 'view': + check_form_values(); + $header_template = CreateObject('setup.Template','../'); + $GLOBALS['phpgw_setup']->html->show_header('Generated header.inc.php', False, 'header'); + echo '
'; + echo '
' . lang('Save this text as contents of your header.inc.php') . '

'; + $newheader = $GLOBALS['phpgw_setup']->html->generate_header(); + echo '
';
+			echo htmlentities($newheader);
+			echo '

'; + echo '
'; + echo '
' . lang('After retrieving the file, put it into place as the header.inc.php. Then, click "continue".') . '
'; + echo ''; + echo ''; + echo '
'; + echo '
'; + $GLOBALS['phpgw_setup']->html->show_footer(); + break; + case 'write': + check_form_values(); + $header_template = CreateObject('setup.Template','../'); + if(is_writeable('../header.inc.php') || (!file_exists('../header.inc.php') && is_writeable('../'))) + { + $newheader = $GLOBALS['phpgw_setup']->html->generate_header(); + $fsetup = fopen('../header.inc.php','wb'); + fwrite($fsetup,$newheader); + fclose($fsetup); + $GLOBALS['phpgw_setup']->html->show_header('Saved header.inc.php', False, 'header'); + echo '
'; + echo '
' . lang('Created header.inc.php!'); + echo ''; + echo ''; + echo '
'; + echo ''; + break; + } + else + { + $GLOBALS['phpgw_setup']->html->show_header('Error generating header.inc.php', False, 'header'); + echo lang('Could not open header.inc.php for writing!') . '
' . "\n"; + echo lang('Please check read/write permissions on directories, or back up and use another option.') . '
'; + echo ''; + } + break; + default: + $GLOBALS['phpgw_setup']->html->show_header($GLOBALS['phpgw_info']['setup']['HeaderFormMSG'], False, 'header'); + + $detected = ''; + + if(!get_var('ConfigLang',array('POST','COOKIE'))) + { + $detected .= '
Please Select your language '.lang_select(True,'en')."
\n"; + } + + $detected .= '' . "\n"; + + $detected .= ''; + + $detected .= '

' . $GLOBALS['phpgw_info']['setup']['PageMSG'] . '
 

' . lang('Analysis') . '
'. "\n"; + + $supported_db = array(); + if(extension_loaded('mysql') || function_exists('mysql_connect')) + { + $detected .= lang('You appear to have MySQL support enabled') . '
' . "\n"; + $supported_db[] = 'mysql'; + } + else + { + $detected .= lang('No MySQL support found. Disabling') . '
' . "\n"; + } + if(extension_loaded('pgsql') || function_exists('pg_connect')) + { + $detected .= lang('You appear to have PostgreSQL support enabled') . '
' . "\n"; + $supported_db[] = 'pgsql'; + } + else + { + $detected .= lang('No PostgreSQL support found. Disabling') . '
' . "\n"; + } + if(extension_loaded('mssql') || function_exists('mssql_connect')) + { + $detected .= lang('You appear to have Microsoft SQL Server support enabled') . '
' . "\n"; + $supported_db[] = 'mssql'; + } + else + { + $detected .= lang('No Microsoft SQL Server support found. Disabling') . '
' . "\n"; + } +/* + if(extension_loaded('oci8')) + { + $detected .= lang('You appear to have Oracle V8 (OCI) support enabled') . '
' . "\n"; + $supported_db[] = 'oracle'; + } + else + { + if(extension_loaded('oracle')) + { + $detected .= lang('You appear to have Oracle support enabled') . '
' . "\n"; + $supported_db[] = 'oracle'; + } + else + { + $detected .= lang('No Oracle-DB support found. Disabling') . '
' . "\n"; + } + } +*/ + if(!count($supported_db)) + { + $detected .= '

' + . lang('Did not find any valid DB support!') + . "
\n" + . lang('Try to configure your php to support one of the above mentioned DBMS, or install eGroupWare by hand.') + . '

'; + echo $detected; + exit; + } + + if(!function_exists('version_compare')) + { + $detected .= '

' + . lang('You appear to be using PHP earlier than 4.1.0. eGroupWare now requires 4.1.0 or later'). "\n" + . '

'; + echo $detected; + exit; + } + else + { + $detected .= lang('You appear to be using PHP4. Enabling PHP4 sessions support') . '
' . "\n"; + $supported_sessions_type[] = 'php4'; // makeing php4 sessions the default + $supported_sessions_type[] = 'db'; + } + + @reset($default_db_ports); + $js_default_db_ports = 'var default_db_ports = new Array();'."\n"; + while(list($k,$v) = @each($default_db_ports)) + { + $js_default_db_ports .= ' default_db_ports["'.$k.'"]="'.$v.'";'."\n"; + } + $setup_tpl->set_var('js_default_db_ports',$js_default_db_ports); + + /* + if(extension_loaded('xml') || function_exists('xml_parser_create')) + { + $detected .= lang('You appear to have XML support enabled') . '
' . "\n"; + $xml_enabled = 'True'; + } + else + { + $detected .= lang('No XML support found. Disabling') . '
' . "\n"; + } + */ + + $no_guess = False; + if(file_exists('../header.inc.php') && is_file('../header.inc.php') && is_readable('../header.inc.php')) + { + $detected .= lang('Found existing configuration file. Loading settings from the file...') . '
' . "\n"; + $GLOBALS['phpgw_info']['flags']['noapi'] = True; + $no_guess = true; + /* This code makes sure the newer multi-domain supporting header.inc.php is being used */ + if(!isset($GLOBALS['phpgw_domain'])) + { + $detected .= lang('You need to add some domains to your header.inc.php.') . '
' . "\n"; + $GLOBALS['phpgw_domain']['default'] = array(); + $setup_tpl->set_var('lang_domain',lang('Domain')); + $setup_tpl->set_var('lang_delete',lang('Delete')); + $setup_tpl->set_var('db_domain','default'); + $setup_tpl->set_var('db_host','localhost'); + $setup_tpl->set_var('db_name','egroupware'); + $setup_tpl->set_var('db_user','egroupware'); + $setup_tpl->set_var('db_pass',''); + $setup_tpl->set_var('config_user','changeme'); + $setup_tpl->set_var('config_pass',''); + while(list($k,$v) = @each($supported_db)) + { + $dbtype_options .= '