Exemple #1
0
    exit;
}
# Unavailable is distinct from disabled in that it's used to account
# for nginx's lack of a decent health check plugin that both checks
# health and removes nodes from its list of upstreams. And to make matters
# worse 501 (Not Implemented) errors are not supported by nginx's
# 'proxy_next_upstream' directive. So we're just going to use 502 and
# carry on... (20130913/straup)
if ($GLOBALS['cfg']['site_unavailable'] && !$this_is_shell) {
    loadlib("http_codes");
    $codes = http_codes();
    $code = 502;
    $status = "{$code} {$codes[$code]}";
    if ($this_is_api) {
        loadlib("api");
        api_config_freakout_and_die($code, "Not implemented");
    }
    header("HTTP/1.1 {$status}");
    header("Status: {$status}");
    $smarty->display("page_site_unavailable.txt");
    exit;
}
#
# Smarty stuff
#
$GLOBALS['error'] = array();
$GLOBALS['smarty']->assign_by_ref('error', $error);
#
# Hey look! Running code! Note that db_init will try
# to automatically connect to the db_main database
# (unless you've disable the 'auto_connect' flag) and
function api_config_init()
{
    $GLOBALS['cfg']['api_server_scheme'] = $GLOBALS['cfg']['api_require_ssl'] ? 'https' : 'http';
    $GLOBALS['cfg']['api_server_name'] = parse_url($GLOBALS['cfg']['abs_root_url'], PHP_URL_HOST);
    $GLOBALS['cfg']['api_server_port'] = parse_url($GLOBALS['cfg']['abs_root_url'], PHP_URL_PORT);
    if ($GLOBALS['cfg']['api_server_port']) {
        # these are chunked in to separate statements just because they are
        # long and hard to read as a single test (20160212/thisisaaronland)
        if ($GLOBALS['cfg']['api_server_scheme'] == 'http' && $GLOBALS['cfg']['api_server_port'] != 80) {
            $GLOBALS['cfg']['api_server_name'] .= ':' . $GLOBALS['cfg']['api_server_port'];
        } else {
            if ($GLOBALS['cfg']['api_server_scheme'] == 'https' && $GLOBALS['cfg']['api_server_port'] != 443) {
                $GLOBALS['cfg']['api_server_name'] .= ':' . $GLOBALS['cfg']['api_server_port'];
            } else {
            }
        }
    }
    if ($GLOBALS['cfg']['abs_root_suffix']) {
        $GLOBALS['cfg']['api_abs_root_url'] = $GLOBALS['cfg']['api_abs_root_url'] . $GLOBALS['cfg']['abs_root_suffix'] . "/";
    }
    # If I have an API specific subdomain/prefix then check to see if I am already
    # running on that host; if not then update the 'api_server_name' config
    if ($GLOBALS['cfg']['api_subdomain'] && !preg_match("/^{$GLOBALS['cfg']['api_subdomain']}/", $GLOBALS['cfg']['api_server_name'])) {
        $GLOBALS['cfg']['api_server_name'] = $GLOBALS['cfg']['api_subdomain'] . $GLOBALS['cfg']['api_server_name'];
    }
    # Build the 'api_abs_root_url' based on everything above
    if ($GLOBALS['cfg']['abs_root_suffix']) {
        $GLOBALS['cfg']['api_abs_root_url'] = $GLOBALS['cfg']['api_abs_root_url'] . $GLOBALS['cfg']['abs_root_suffix'] . "/";
    }
    $GLOBALS['cfg']['api_abs_root_url'] = "{$GLOBALS['cfg']['api_server_scheme']}://{$GLOBALS['cfg']['api_server_name']}" . "/";
    # If I have an API specific subdomain/prefix then check to see if I am already
    # running on that host; if I am then update the 'site_abs_root_url' config and
    # use it in your code accordingly.
    if ($GLOBALS['cfg']['api_subdomain'] && preg_match("/^{$GLOBALS['cfg']['api_subdomain']}/", $GLOBALS['cfg']['api_server_name'])) {
        # the old way (20150513/copea)
        # $GLOBALS['cfg']['site_abs_root_url'] = str_replace("{$GLOBALS['cfg']['api_subdomain']}", "", $GLOBALS['cfg']['abs_root_url']);
        $server_name = $GLOBALS['cfg']['api_server_name'];
        $server_name = preg_replace("/^{$GLOBALS['cfg']['api_subdomain']}/", "", $server_name);
        $GLOBALS['cfg']['site_abs_root_url'] = "{$GLOBALS['cfg']['api_server_scheme']}://{$server_name}/";
        # see this – we need to do this because we call $GLOBALS['cfg']['abs_root_url'] all
        # over lib_whatever land (20150513/copea)
        $GLOBALS['cfg']['abs_root_url'] = $GLOBALS['cfg']['site_abs_root_url'];
    } else {
        $GLOBALS['cfg']['site_abs_root_url'] = $GLOBALS['cfg']['abs_root_url'];
    }
    # Load methods / blessings
    # $GLOBALS['timing_keys']["api_config_methods"] = "API methods";
    # $GLOBALS['timings']['api_config_methods_count'] = 0;
    # $GLOBALS['timings']['api_config_methods_time'] = 0;
    $start = microtime_ms();
    foreach ($GLOBALS['cfg']['api_method_definitions'] as $def) {
        try {
            $path = FLAMEWORK_INCLUDE_DIR . "/config_api_{$def}.php";
            include_once $path;
            # $GLOBALS['timings']['api_config_methods_count'] += 1;
        } catch (Exception $e) {
            # $msg = $e->getMessage();
            api_config_freakout_and_die();
        }
    }
    $end = microtime_ms();
    $time = $end - $start;
    # $GLOBALS['timings']['api_config_methods_time'] = $time;
    api_config_init_blessings();
    if ($GLOBALS['this_is_webpage']) {
        $req_features = array("api", "api_site_keys", "api_site_tokens");
        if (features_is_enabled($req_features)) {
            api_config_init_site_keys();
        }
    }
}