exit;
}
+// Use latest rendering engine for IE (bypass compatibility mode)
+if (isset($_SERVER['HTTP_USER_AGENT']) && stripos($_SERVER['HTTP_USER_AGENT'], "msie")) {
+ header("X-UA-Compatible: IE=edge");
+}
+
if (!isset($no_gz_buffer) || !$no_gz_buffer) {
ob_start("ob_gzhandler");
}
// Database access and other passwords when on the web
-function setconfigfromoldsources ($sec, $var, $serv, $env, $glob) {
+function setconfigfromenv ($sec, $var, $serv, $env) {
if (getenv ('SERVER_SOFTWARE')) {
if (function_exists ('apache_request_headers')) {
$headers = apache_request_headers() ;
if (isset ($headers[$serv])) {
forge_define_config_item ($var, $sec,
$headers[$serv]) ;
- return ;
- }
+ return true;
+ }
}
if (isset ($_ENV[$env])) {
forge_define_config_item ($var, $sec,
getenv($env)) ;
- return ;
+ return true;
+ }
+ return false;
+}
+
+function setconfigfromoldsources ($sec, $var, $serv, $env, $glob) {
+ if (setconfigfromenv($sec, $var, $serv, $env)) {
+ return true;
}
if (isset ($GLOBALS[$glob])) {
forge_define_config_item ($var, $sec,
$GLOBALS[$glob]) ;
- return ;
+ return true;
}
+ return false;
}
-if (file_exists ($gfcgfile)) {
+if (isset($gfcgfile) && file_exists ($gfcgfile)) {
require_once $gfcgfile ;
-}
-setconfigfromoldsources ('core', 'database_host',
- 'GForgeDbhost', 'sys_gfdbhost', 'sys_dbhost') ;
-setconfigfromoldsources ('core', 'database_port',
- 'GForgeDbport', 'sys_gfdbport', 'sys_dbport') ;
-setconfigfromoldsources ('core', 'database_name',
- 'GForgeDbname', 'sys_gfdbname', 'sys_dbname') ;
-setconfigfromoldsources ('core', 'database_user',
- 'GForgeDbuser', 'sys_gfdbuser', 'sys_dbuser') ;
-setconfigfromoldsources ('core', 'database_password',
- 'GForgeDbpasswd', 'sys_gfdbpasswd', 'sys_dbpasswd') ;
-setconfigfromoldsources ('core', 'ldap_password',
- 'GForgeLdapPasswd', 'sys_gfldap_passwd', NULL) ;
-
-forge_define_config_item ('source_path', 'core', $fusionforge_basedir) ;
-forge_define_config_item ('data_path', 'core', '/var/lib/gforge') ;
-forge_define_config_item ('chroot', 'core', '$core/data_path/chroot') ;
-forge_define_config_item ('config_path', 'core', '/etc/gforge') ;
-
-require_once $gfcommon.'include/config-vars.php';
+ setconfigfromoldsources ('core', 'database_host',
+ 'GForgeDbhost', 'sys_gfdbhost', 'sys_dbhost') ;
+ setconfigfromoldsources ('core', 'database_port',
+ 'GForgeDbport', 'sys_gfdbport', 'sys_dbport') ;
+ setconfigfromoldsources ('core', 'database_name',
+ 'GForgeDbname', 'sys_gfdbname', 'sys_dbname') ;
+ setconfigfromoldsources ('core', 'database_user',
+ 'GForgeDbuser', 'sys_gfdbuser', 'sys_dbuser') ;
+ setconfigfromoldsources ('core', 'database_password',
+ 'GForgeDbpasswd', 'sys_gfdbpasswd', 'sys_dbpasswd') ;
+ setconfigfromoldsources ('core', 'ldap_password',
+ 'GForgeLdapPasswd', 'sys_gfldap_passwd', NULL) ;
+ setconfigfromoldsources ('core', 'session_key',
+ 'GForgeSessionKey', 'sys_session_key', NULL) ;
+
+ forge_define_config_item ('source_path', 'core', $fusionforge_basedir) ;
+ forge_define_config_item ('data_path', 'core', '/var/lib/gforge') ;
+ forge_define_config_item ('chroot', 'core', '$core/data_path/chroot') ;
+ forge_define_config_item ('config_path', 'core', '/etc/gforge') ;
+
+ require_once $gfcommon.'include/config-vars.php';
+} else {
+ setconfigfromenv ('core', 'database_host',
+ 'GForgeDbhost', 'sys_gfdbhost') ;
+ setconfigfromenv ('core', 'database_port',
+ 'GForgeDbport', 'sys_gfdbport') ;
+ setconfigfromenv ('core', 'database_name',
+ 'GForgeDbname', 'sys_gfdbname') ;
+ setconfigfromenv ('core', 'database_user',
+ 'GForgeDbuser', 'sys_gfdbuser') ;
+ setconfigfromenv ('core', 'database_password',
+ 'GForgeDbpasswd', 'sys_gfdbpasswd') ;
+ setconfigfromenv ('core', 'ldap_password',
+ 'GForgeLdapPasswd', 'sys_gfldap_passwd') ;
+ setconfigfromenv ('core', 'session_key',
+ 'GForgeSessionKey', 'sys_session_key') ;
+}
forge_read_config_file ($gfconfig.'/config.ini') ;
forge_read_config_dir ($gfconfig.'/config.ini.d/') ;
forge_set_config_item_bool ('sysdebug_backtraces', 'core') ;
forge_define_config_item ('sysdebug_ignored', 'core', 'false') ;
forge_set_config_item_bool ('sysdebug_ignored', 'core') ;
+forge_define_config_item ('sysdebug_dberrors', 'core', 'true') ;
+forge_set_config_item_bool ('sysdebug_dberrors', 'core') ;
forge_define_config_item ('sysdebug_dbquery', 'core', 'false') ;
forge_set_config_item_bool ('sysdebug_dbquery', 'core') ;
forge_define_config_item ('sysdebug_xmlstarlet', 'core', 'false') ;
forge_set_config_item_bool ('sysdebug_xmlstarlet', 'core') ;
-forge_define_config_item ('sysdebug_akelos', 'core', 'false') ;
-forge_set_config_item_bool ('sysdebug_akelos', 'core') ;
// Load extra func to add extras func like debug
$sysdebug_enable = forge_get_config('sysdebug_enable');
if ($sysdebug_enable && getenv('SERVER_SOFTWARE')) {
require $gfcommon.'include/extras-debug.php';
} else {
+ $sysdebug_dberrors = false;
$sysdebug_dbquery = false;
function sysdebug_off($hdr=false, $replace=true, $resp=false) {
require_once $gfcommon.'include/Error.class.php';
// Database abstraction
-require_once $gfcommon.'include/database-pgsql.php';
+// From here database is required
+if (forge_get_config('database_name') != "") {
+ require_once $gfcommon.'include/database-pgsql.php';
-// Authentication and access control
-require_once $gfcommon.'include/session.php';
-require_once $gfcommon.'include/RBACEngine.class.php';
+ // Authentication and access control
+ require_once $gfcommon.'include/session.php';
+ require_once $gfcommon.'include/RBACEngine.class.php';
-// System library
-require_once $gfcommon.'include/System.class.php';
-forge_define_config_item('account_manager_type', 'core', 'UNIX') ;
-require_once $gfcommon.'include/system/'.forge_get_config('account_manager_type').'.class.php';
-$amt = forge_get_config('account_manager_type') ;
-$SYS = new $amt();
+ // System library
+ require_once $gfcommon.'include/System.class.php';
+ forge_define_config_item('account_manager_type', 'core', 'UNIX') ;
+ require_once $gfcommon.'include/system/'.forge_get_config('account_manager_type').'.class.php';
+ $amt = forge_get_config('account_manager_type') ;
+ $SYS = new $amt();
-// User-related classes and functions
-require_once $gfcommon.'include/User.class.php';
+ // User-related classes and functions
+ require_once $gfcommon.'include/User.class.php';
-// Project-related classes and functions
-require_once $gfcommon.'include/Group.class.php';
+ // Project-related classes and functions
+ require_once $gfcommon.'include/Group.class.php';
-// Permission-related functions
-require_once $gfcommon.'include/Permission.class.php';
+ // Permission-related functions
+ require_once $gfcommon.'include/Permission.class.php';
-// Plugins subsystem
-require_once $gfcommon.'include/Plugin.class.php' ;
-require_once $gfcommon.'include/PluginManager.class.php' ;
+ // Plugins subsystem
+ require_once $gfcommon.'include/Plugin.class.php' ;
+ require_once $gfcommon.'include/PluginManager.class.php' ;
-// SCM-specific plugins subsystem
-require_once $gfcommon.'include/SCMPlugin.class.php' ;
+ // SCM-specific plugins subsystem
+ require_once $gfcommon.'include/SCMPlugin.class.php' ;
-if (getenv ('FUSIONFORGE_NO_PLUGINS') != 'true') {
- setup_plugin_manager () ;
-}
+ // Authentication-specific plugins subsystem
+ require_once $gfcommon.'include/AuthPlugin.class.php' ;
-ini_set('date.timezone', forge_get_config ('default_timezone'));
+ if (getenv ('FUSIONFORGE_NO_PLUGINS') != 'true') {
+ setup_plugin_manager () ;
+ }
-if (isset($_SERVER['SERVER_SOFTWARE'])) { // We're on the web
- // Detect upload larger that upload allowed size.
- if ( $_SERVER['REQUEST_METHOD'] == 'POST' && empty($_POST) &&
- empty($_FILES) && $_SERVER['CONTENT_LENGTH'] > 0 )
- {
- $displayMaxSize = ini_get('post_max_size');
+ ini_set('date.timezone', forge_get_config ('default_timezone'));
- switch ( substr($displayMaxSize,-1) )
+ if (isset($_SERVER['SERVER_SOFTWARE'])) { // We're on the web
+ // Detect upload larger that upload allowed size.
+ if ( $_SERVER['REQUEST_METHOD'] == 'POST' && empty($_POST) &&
+ empty($_FILES) && $_SERVER['CONTENT_LENGTH'] > 0 )
{
+ $displayMaxSize = ini_get('post_max_size');
+
+ switch ( substr($displayMaxSize,-1) )
+ {
case 'G':
$displayMaxSize = $displayMaxSize * 1024;
case 'M':
$displayMaxSize = $displayMaxSize * 1024;
case 'K':
$displayMaxSize = $displayMaxSize * 1024;
+ }
+
+ $error_msg = sprintf(_('Posted data is too large. %1$s exceeds the maximum size of %2$s'),
+ human_readable_bytes($_SERVER['CONTENT_LENGTH']), human_readable_bytes($displayMaxSize));
}
- $error_msg = sprintf(_('Posted data is too large. %1$s exceeds the maximum size of %2$s'),
- human_readable_bytes($_SERVER['CONTENT_LENGTH']), human_readable_bytes($displayMaxSize));
- }
+ // exit_error() and variants (for the web)
+ require_once $gfcommon.'include/exit.php';
- // exit_error() and variants (for the web)
- require_once $gfcommon.'include/exit.php';
+ // Library to determine browser settings
+ require_once $gfwww.'include/browser.php';
- // Library to determine browser settings
- require_once $gfwww.'include/browser.php';
+ // HTML layout class, may be overriden by the Theme class
+ require_once $gfwww.'include/Layout.class.php';
- // HTML layout class, may be overriden by the Theme class
- require_once $gfwww.'include/Layout.class.php';
+ // Various HTML utilities
+ require_once $gfcommon.'include/utils.php';
- // Various HTML utilities
- require_once $gfcommon.'include/utils.php';
+ // Various HTML libs like button bar, themable
+ require_once $gfwww.'include/html.php';
- // Various HTML libs like button bar, themable
- require_once $gfwww.'include/html.php';
+ // Forms key generation
+ require_once $gfcommon.'include/forms.php';
- // Forms key generation
- require_once $gfcommon.'include/forms.php';
+ // Determine if there's a web session running
+ session_set();
- // Determine if there's a web session running
- session_set();
-
- plugin_hook('after_session_set');
-
- // Mandatory login
- if (!session_loggedin() && forge_get_config ('force_login') == 1 ) {
- $expl_pathinfo = explode('/',getStringFromServer('REQUEST_URI'));
- if (getStringFromServer('REQUEST_URI')!='/' && $expl_pathinfo[1]!='account' && $expl_pathinfo[1]!='export' ) exit_not_logged_in();
- // Show proj* export even if not logged in when force login
- // If not default web project page would be broken
- if ($expl_pathinfo[1]=='export' && !ereg("^proj", $expl_pathinfo[2])) exit_not_logged_in();
- }
+ plugin_hook('after_session_set');
+
+ // Mandatory login
+ if (!session_loggedin() && forge_get_config ('force_login') == 1 ) {
+ $expl_pathinfo = explode('/',getStringFromServer('REQUEST_URI'));
+ if (getStringFromServer('REQUEST_URI')!='/' && $expl_pathinfo[1]!='account' && $expl_pathinfo[1]!='export' && $expl_pathinfo[1]!='plugins') exit_not_logged_in();
+ // Show proj* export even if not logged in when force login
+ // If not default web project page would be broken
+ if ($expl_pathinfo[1]=='export' && !preg_match('/^proj/', $expl_pathinfo[2])) exit_not_logged_in();
+ // We must let auth plugins go further
+ if ($expl_pathinfo[1]=='plugins' && !preg_match('/^auth/', $expl_pathinfo[2])) exit_not_logged_in();
+ }
- // Insert this page view into the database
- require_once $gfwww.'include/logger.php';
-
- // If logged in, set up a $LUSER var referencing
- // the logged in user's object
- // and setup theme
- if (session_loggedin()) {
- $LUSER =& session_get_user();
- header ('Cache-Control: private');
- require_once forge_get_config('themes_root').'/'.$LUSER->setUpTheme().'/Theme.class.php';
- } else {
- require_once forge_get_config('themes_root').'/'.forge_get_config('default_theme').'/Theme.class.php';
+ // Insert this page view into the database
+ require_once $gfcommon.'include/logger.php';
+
+ // If logged in, set up a $LUSER var referencing
+ // the logged in user's object
+ // and setup theme
+ if (session_loggedin()) {
+ $LUSER =& session_get_user();
+ $use_tooltips = $LUSER->usesTooltips();
+ header ('Cache-Control: private');
+ $x_theme = $LUSER->setUpTheme();
+ } else {
+ $use_tooltips = 1;
+ $x_theme = forge_get_config('default_theme');
+ }
+ require_once forge_get_config('themes_root').'/'.$x_theme.'/Theme.class.php';
+ $HTML = new Theme () ;
+ $HTML->_theme = $x_theme;
+ unset($x_theme);
+ } else { // Script run from cron or a command line
+ require_once $gfcommon.'include/squal_exit.php';
}
+
+ // Determine locale
+ require_once $gfcommon.'include/gettext.php';
+ require_once $gfcommon.'include/group_section_texts.php';
+
setup_tz_from_context();
- $HTML = new Theme () ;
-} else { // Script run from cron or a command line
- require_once $gfcommon.'include/squal_exit.php';
+ setup_gettext_from_context();
}
-// Determine locale
-require_once $gfcommon.'include/gettext.php';
-require_once $gfcommon.'include/group_section_texts.php';
-
-setup_gettext_from_context();
$feedback = htmlspecialchars(getStringFromRequest('feedback', $feedback));
$error_msg = htmlspecialchars(getStringFromRequest('error_msg', $error_msg));