1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-25 08:12:40 +01:00
phorge-phorge/conf/__init_conf__.php
epriestley afa69eedd1 Remove an old digest in Celerity code and some obsolete configuration options
Summary:
Ref T12509. This upgrades a `weakDigest()` callsite to SHA256-HMAC and removes three config options:

  - `celerity.resource-hash`: Now hard-coded, since the use case for ever adjusting it was very weak.
  - `celerity.enable-deflate`: Intended to make cache inspection easier, but we haven't needed to inspect caches in ~forever.
  - `celerity.minify`: Intended to make debugging minification easier, but we haven't needed to debug this in ~forever.

In the latter two cases, the options were purely developer-focused, and it's easy to go add an `&& false` somewhere in the code if we need to disable these features to debug something, but the relevant parts of the code basically work properly and never need debugging. These options were excessively paranoid, based on the static resource enviroment at Facebook being far more perilous.

The first case theoretically had end-user utility for fixing stuck content caches. In modern Phabricator, it's not intuitive that you'd go adjust a Config option to fix this. I don't recall any users ever actually running into problems here, though.

(An earlier version of this change did more magic with `celerity.resource-hash`, but this ended up with a more substantial simplification.)

Test Plan: Grepped for removed configuration options.

Reviewers: amckinley

Reviewed By: amckinley

Maniphest Tasks: T12509

Differential Revision: https://secure.phabricator.com/D19941
2019-01-04 13:43:38 -08:00

68 lines
1.9 KiB
PHP

<?php
function phabricator_read_config_file($original_config) {
$root = dirname(dirname(__FILE__));
// Accept either "myconfig" (preferred) or "myconfig.conf.php".
$config = preg_replace('/\.conf\.php$/', '', $original_config);
$full_config_path = $root.'/conf/'.$config.'.conf.php';
if (!Filesystem::pathExists($full_config_path)) {
// These are very old configuration files which we used to ship with
// by default. File based configuration was de-emphasized once web-based
// configuration was built. The actual files were removed to reduce
// user confusion over how to configure Phabricator.
switch ($config) {
case 'default':
case 'production':
return array();
case 'development':
return array(
'phabricator.developer-mode' => true,
'darkconsole.enabled' => true,
);
}
$files = id(new FileFinder($root.'/conf/'))
->withType('f')
->withSuffix('conf.php')
->withFollowSymlinks(true)
->find();
foreach ($files as $key => $file) {
$file = trim($file, './');
$files[$key] = preg_replace('/\.conf\.php$/', '', $file);
}
$files = ' '.implode("\n ", $files);
throw new Exception(
pht(
"CONFIGURATION ERROR\n".
"Config file '%s' does not exist. Valid config files are:\n\n%s",
$original_config,
$files));
}
// Make sure config file errors are reported.
$old_error_level = error_reporting(E_ALL | E_STRICT);
$old_display_errors = ini_get('display_errors');
ini_set('display_errors', 1);
ob_start();
$conf = include $full_config_path;
$errors = ob_get_clean();
error_reporting($old_error_level);
ini_set('display_errors', $old_display_errors);
if ($conf === false) {
throw new Exception(
pht(
"Failed to read config file '%s': %s",
$config,
$errors));
}
return $conf;
}