closes #175 added alternative environment configuration
This commit is contained in:
@@ -39,9 +39,9 @@ AUTOLOAD = app/main/
|
||||
FAVICON = /favicon
|
||||
|
||||
; load additional config files
|
||||
; DO NOT load environment.ini, it is loaded automatically
|
||||
[configs]
|
||||
app/routes.ini = true
|
||||
app/environment.ini = true
|
||||
app/pathfinder.ini = true
|
||||
app/requirements.ini = true
|
||||
app/cron.ini = true
|
||||
@@ -38,7 +38,7 @@ CCP_XML = https://api.testeveonline.com
|
||||
; SMTP settings (optional)
|
||||
SMTP_HOST = localhost
|
||||
SMTP_PORT = 25
|
||||
SMTP_SCHEME = ""
|
||||
SMTP_SCHEME = TLS
|
||||
SMTP_USER = pathfinder
|
||||
SMTP_PASS = root
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
namespace Controller;
|
||||
use Controller\Api as Api;
|
||||
use Controller\Ccp\Sso as Sso;
|
||||
use lib\Config;
|
||||
use Model;
|
||||
use DB;
|
||||
|
||||
@@ -760,33 +761,7 @@ class Controller {
|
||||
* @return string|null
|
||||
*/
|
||||
static function getEnvironmentData($key){
|
||||
$f3 = \Base::instance();
|
||||
$environment = self::getEnvironment();
|
||||
$environmentKey = 'ENVIRONMENT[' . $environment . '][' . $key . ']';
|
||||
$data = null;
|
||||
|
||||
if( $f3->exists($environmentKey) ){
|
||||
$data = $f3->get($environmentKey);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* get current server environment status
|
||||
* -> "DEVELOP" or "PRODUCTION"
|
||||
* @return string
|
||||
*/
|
||||
static function getEnvironment(){
|
||||
$f3 = \Base::instance();
|
||||
return $f3->get('ENVIRONMENT.SERVER');
|
||||
}
|
||||
|
||||
/**
|
||||
* check if current server is "PRODUCTION"
|
||||
* @return bool
|
||||
*/
|
||||
static function isProduction(){
|
||||
return self::getEnvironment() == 'PRODUCTION';
|
||||
return Config::getEnvironmentData($key);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -11,11 +11,46 @@ namespace Controller;
|
||||
use DB;
|
||||
use DB\SQL;
|
||||
use DB\SQL\MySQL as MySQL;
|
||||
|
||||
use lib\Config;
|
||||
use Model;
|
||||
|
||||
class Setup extends Controller {
|
||||
|
||||
/**
|
||||
* required environment variables
|
||||
* @var array
|
||||
*/
|
||||
protected $environmentVars = [
|
||||
'TYPE',
|
||||
'BASE',
|
||||
'URL',
|
||||
'DEBUG',
|
||||
'DB_DNS',
|
||||
'DB_NAME',
|
||||
'DB_USER',
|
||||
'DB_PASS',
|
||||
'DB_CCP_DNS',
|
||||
'DB_CCP_NAME',
|
||||
'DB_CCP_USER',
|
||||
'DB_CCP_PASS',
|
||||
'CCP_CREST_URL',
|
||||
'SSO_CCP_URL',
|
||||
'SSO_CCP_CLIENT_ID',
|
||||
'SSO_CCP_SECRET_KEY',
|
||||
'CCP_XML',
|
||||
'SMTP_HOST',
|
||||
'SMTP_PORT',
|
||||
'SMTP_SCHEME',
|
||||
'SMTP_USER',
|
||||
'SMTP_PASS',
|
||||
'SMTP_FROM',
|
||||
'SMTP_ERROR'
|
||||
];
|
||||
|
||||
/**
|
||||
* required database setup
|
||||
* @var array
|
||||
*/
|
||||
protected $databases = [
|
||||
'PF' => [
|
||||
'info' => [],
|
||||
@@ -104,7 +139,7 @@ class Setup extends Controller {
|
||||
* works as dispatcher for setup functions
|
||||
* @param \Base $f3
|
||||
*/
|
||||
public function init($f3){
|
||||
public function init(\Base $f3){
|
||||
$params = $f3->get('GET');
|
||||
|
||||
// enables automatic column fix
|
||||
@@ -128,22 +163,69 @@ class Setup extends Controller {
|
||||
$fixColumns = true;
|
||||
}
|
||||
|
||||
// set server information for page render
|
||||
// set template data ----------------------------------------------------------------
|
||||
// set environment information
|
||||
$f3->set('environmentInformation', $this->getEnvironmentInformation($f3));
|
||||
|
||||
// set server information
|
||||
$f3->set('serverInformation', $this->getServerInformation($f3));
|
||||
|
||||
// set requirement check information for page render
|
||||
// set requirement check information
|
||||
$f3->set('checkRequirements', $this->checkRequirements($f3));
|
||||
|
||||
// set database connection information for page render
|
||||
// set database connection information
|
||||
$f3->set('checkDatabase', $this->checkDatabase($f3, $fixColumns));
|
||||
}
|
||||
|
||||
/**
|
||||
* set environment information
|
||||
* @param \Base $f3
|
||||
* @return array
|
||||
*/
|
||||
protected function getEnvironmentInformation(\Base $f3){
|
||||
$environmentData = [];
|
||||
// exclude some sensitive data (e.g. database, passwords)
|
||||
$excludeVars = ['DB_DNS', 'DB_NAME', 'DB_USER',
|
||||
'DB_PASS', 'DB_CCP_DNS', 'DB_CCP_NAME',
|
||||
'DB_CCP_USER', 'DB_CCP_PASS'
|
||||
];
|
||||
|
||||
// obscure some values
|
||||
$obscureVars = ['SSO_CCP_CLIENT_ID', 'SSO_CCP_SECRET_KEY', 'SMTP_PASS'];
|
||||
|
||||
foreach($this->environmentVars as $var){
|
||||
if( !in_array($var, $excludeVars) ){
|
||||
$value = Config::getEnvironmentData($var);
|
||||
$check = true;
|
||||
|
||||
if(is_null($value)){
|
||||
// variable missing
|
||||
$check = false;
|
||||
$value = '[missing]';
|
||||
}elseif( in_array($var, $obscureVars)){
|
||||
$length = strlen($value);
|
||||
$hideChars = ($length < 10) ? $length : 10;
|
||||
$value = substr_replace($value, str_repeat('.', 3), -$hideChars);
|
||||
$value .= ' [' . $length . ']';
|
||||
}
|
||||
|
||||
$environmentData[$var] = [
|
||||
'label' => $var,
|
||||
'value' => ((empty($value)) ? ' ' : $value),
|
||||
'check' => $check
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
return $environmentData;
|
||||
}
|
||||
|
||||
/**
|
||||
* get server information
|
||||
* @param \Base $f3
|
||||
* @return array
|
||||
*/
|
||||
protected function getServerInformation($f3){
|
||||
protected function getServerInformation(\Base $f3){
|
||||
$serverInfo = [
|
||||
'time' => [
|
||||
'label' => 'Time',
|
||||
@@ -180,7 +262,7 @@ class Setup extends Controller {
|
||||
* @param \Base $f3
|
||||
* @return array
|
||||
*/
|
||||
protected function checkRequirements($f3){
|
||||
protected function checkRequirements(\Base $f3){
|
||||
|
||||
|
||||
// server type ------------------------------------------------------------------
|
||||
@@ -291,7 +373,7 @@ class Setup extends Controller {
|
||||
* @param bool|false $exec
|
||||
* @return array
|
||||
*/
|
||||
protected function checkDatabase($f3, $exec = false){
|
||||
protected function checkDatabase(\Base $f3, $exec = false){
|
||||
|
||||
foreach($this->databases as $dbKey => $dbData){
|
||||
|
||||
@@ -575,7 +657,7 @@ class Setup extends Controller {
|
||||
* @param $db
|
||||
* @return array
|
||||
*/
|
||||
protected function checkDBConfig($f3, $db){
|
||||
protected function checkDBConfig(\Base $f3, $db){
|
||||
|
||||
// some db like "Maria DB" have some strange version strings....
|
||||
$dbVersionString = $db->version();
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
namespace Cron;
|
||||
use Controller;
|
||||
use DB;
|
||||
use lib\Config;
|
||||
|
||||
class CcpSystemsUpdate {
|
||||
|
||||
@@ -83,7 +84,7 @@ class CcpSystemsUpdate {
|
||||
|
||||
// get current jump Data -------------------------------------------------------
|
||||
$time_start = microtime(true);
|
||||
$apiPath = $f3->get('ENVIRONMENT.PRODUCTION.CCP_XML') . '/map/Jumps.xml.aspx';
|
||||
$apiPath = Config::getEnvironmentData('CCP_XML') . '/map/Jumps.xml.aspx';
|
||||
|
||||
$apiResponse = \Web::instance()->request($apiPath, $this->apiRequestOptions );
|
||||
|
||||
@@ -108,7 +109,7 @@ class CcpSystemsUpdate {
|
||||
|
||||
// get current kill Data -------------------------------------------------------
|
||||
$time_start = microtime(true);
|
||||
$apiPath = $f3->get('ENVIRONMENT.PRODUCTION.CCP_XML') . '/map/Kills.xml.aspx';
|
||||
$apiPath = Config::getEnvironmentData('CCP_XML') . '/map/Kills.xml.aspx';
|
||||
|
||||
$apiResponse = \Web::instance()->request($apiPath, $this->apiRequestOptions );
|
||||
$killData = [];
|
||||
|
||||
@@ -20,7 +20,7 @@ class MapUpdate {
|
||||
/**
|
||||
* deactivate all "private" maps whose lifetime is over
|
||||
* >> php index.php "/cron/deactivateMapData"
|
||||
* @param $f3
|
||||
* @param \Base $f3
|
||||
*/
|
||||
function deactivateMapData($f3){
|
||||
|
||||
@@ -46,7 +46,7 @@ class MapUpdate {
|
||||
/**
|
||||
* delete all deactivated maps
|
||||
* >> php index.php "/cron/deleteMapData"
|
||||
* @param $f3
|
||||
* @param \Base $f3
|
||||
*/
|
||||
function deleteMapData($f3){
|
||||
|
||||
|
||||
150
app/main/lib/config.php
Normal file
150
app/main/lib/config.php
Normal file
@@ -0,0 +1,150 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: Exodus
|
||||
* Date: 28.05.2016
|
||||
* Time: 16:05
|
||||
*/
|
||||
|
||||
namespace lib;
|
||||
|
||||
|
||||
class Config extends \Prefab {
|
||||
|
||||
const PREFIX_KEY = 'PF';
|
||||
const ARRAY_DELIMITER = '-';
|
||||
const HIVE_KEY_ENVIRONMENT = 'ENVIRONMENT';
|
||||
|
||||
/**
|
||||
* all environment data
|
||||
* @var array
|
||||
*/
|
||||
private $serverConfigData = [];
|
||||
|
||||
public function __construct(){
|
||||
// set server data
|
||||
// -> CGI params (Nginx)
|
||||
// -> .htaccess (Apache)
|
||||
$this->setServerData();
|
||||
// set environment data
|
||||
$this->setAllEnvironmentData();
|
||||
// set hive configuration variables
|
||||
// -> overwrites default configuration
|
||||
$this->setHiveVariables();
|
||||
}
|
||||
|
||||
/**
|
||||
* get environment configuration data
|
||||
* @return array|null
|
||||
*/
|
||||
protected function getAllEnvironmentData(){
|
||||
$f3 = \Base::instance();
|
||||
$environmentData = null;
|
||||
|
||||
if( $f3->exists(self::HIVE_KEY_ENVIRONMENT) ){
|
||||
$environmentData = $f3->get(self::HIVE_KEY_ENVIRONMENT);
|
||||
}else{
|
||||
$environmentData = $this->setAllEnvironmentData();
|
||||
}
|
||||
return $environmentData;
|
||||
}
|
||||
|
||||
/**
|
||||
* set some global framework variables
|
||||
* that depend on environment settings
|
||||
*/
|
||||
protected function setHiveVariables(){
|
||||
$f3 = \Base::instance();
|
||||
|
||||
// hive keys that should be overwritten by environment config
|
||||
$hiveKeys = ['BASE', 'URL', 'DEBUG'];
|
||||
foreach($hiveKeys as $key){
|
||||
$f3->set($key, self::getEnvironmentData($key));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* set all environment configuration data
|
||||
* @return array|null
|
||||
*/
|
||||
protected function setAllEnvironmentData(){
|
||||
$environmentData = null;
|
||||
$f3 = \Base::instance();
|
||||
|
||||
if( !empty($this->serverConfigData['ENV']) ){
|
||||
// get environment config from $_SERVER data
|
||||
$environmentData = (array)$this->serverConfigData['ENV'];
|
||||
$environmentData['TYPE'] = 'PHP: environment variables';
|
||||
}else{
|
||||
// get environment data from *.ini file config
|
||||
$f3->config('app/environment.ini');
|
||||
|
||||
if(
|
||||
$f3->exists(self::HIVE_KEY_ENVIRONMENT) &&
|
||||
($environment = $f3->get(self::HIVE_KEY_ENVIRONMENT . '.SERVER')) &&
|
||||
($environmentData = $f3->get(self::HIVE_KEY_ENVIRONMENT . '.' . $environment))
|
||||
){
|
||||
$environmentData['TYPE'] = 'Config: environment.ini';
|
||||
}
|
||||
}
|
||||
|
||||
if( !is_null($environmentData) ){
|
||||
ksort($environmentData);
|
||||
$f3->set(self::HIVE_KEY_ENVIRONMENT, $environmentData);
|
||||
}
|
||||
|
||||
return $environmentData;
|
||||
}
|
||||
|
||||
/**
|
||||
* get/extract all server data passed to PHP
|
||||
* this can be done by either:
|
||||
* OS Environment variables:
|
||||
* -> add to /etc/environment
|
||||
* OR:
|
||||
* Nginx (server config):
|
||||
* -> FastCGI syntax
|
||||
* fastcgi_param PF-ENV-DEBUG 3;
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function setServerData(){
|
||||
$data = [];
|
||||
foreach($_SERVER as $key => $value){
|
||||
if( strpos($key, self::PREFIX_KEY . self::ARRAY_DELIMITER) === 0 ){
|
||||
$path = explode( self::ARRAY_DELIMITER, $key);
|
||||
// remove prefix
|
||||
array_shift($path);
|
||||
|
||||
$tmp = &$data;
|
||||
foreach ($path as $segment) {
|
||||
$tmp[$segment] = (array)$tmp[$segment];
|
||||
$tmp = &$tmp[$segment];
|
||||
}
|
||||
|
||||
// type cast values
|
||||
// (e.g. '1.2' => (float); '4' => (int),...)
|
||||
$tmp = is_numeric($value) ? $value + 0 : $value;
|
||||
}
|
||||
}
|
||||
|
||||
$this->serverConfigData = $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* get a environment variable by hive key
|
||||
* @param $key
|
||||
* @return string|null
|
||||
*/
|
||||
static function getEnvironmentData($key){
|
||||
$f3 = \Base::instance();
|
||||
$hiveKey = self::HIVE_KEY_ENVIRONMENT . '.' . $key;
|
||||
$data = null;
|
||||
if( $f3->exists($hiveKey) ){
|
||||
$data = $f3->get($hiveKey);
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -105,8 +105,6 @@ class CharacterModel extends BasicModel {
|
||||
* @return \stdClass
|
||||
*/
|
||||
public function getData($addCharacterLogData = false){
|
||||
$characterData = null;
|
||||
|
||||
$cacheKeyModifier = '';
|
||||
|
||||
// check if there is cached data
|
||||
|
||||
10
index.php
10
index.php
@@ -4,14 +4,8 @@ $f3 = require('app/lib/base.php');
|
||||
// load main config
|
||||
$f3->config('app/config.ini');
|
||||
|
||||
// set base dir
|
||||
$f3->set('BASE', \Controller\Controller::getEnvironmentData('BASE'));
|
||||
|
||||
// set debug level (stacktrace)
|
||||
$f3->set('DEBUG', \Controller\Controller::getEnvironmentData('DEBUG'));
|
||||
|
||||
// set debug level (stacktrace)
|
||||
$f3->set('URL', \Controller\Controller::getEnvironmentData('URL'));
|
||||
// load environment dependent config
|
||||
lib\Config::instance();
|
||||
|
||||
// initiate cron-jobs
|
||||
Cron::instance();
|
||||
|
||||
@@ -58,10 +58,6 @@
|
||||
<td>Version</td>
|
||||
<td class="text-right">{{ @PATHFINDER.VERSION }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Environment</td>
|
||||
<td class="text-right">{{ @ENVIRONMENT.SERVER }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Contact</td>
|
||||
<td class="text-right"><a href="{{ @PATHFINDER.CONTACT }}" target="_blank">{{ @PATHFINDER.CONTACT }}</a></td>
|
||||
@@ -73,6 +69,29 @@
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="panel-footer text-left">
|
||||
<h3 class="panel-title">Configuration</h3>
|
||||
</div>
|
||||
|
||||
<table class="table">
|
||||
<tbody>
|
||||
<repeat group="{{ @environmentInformation }}" value="{{ @environmentData }}">
|
||||
<tr>
|
||||
<td>{{@environmentData.label}}</td>
|
||||
<td class="text-right col-md-8">
|
||||
<check if="{{ @environmentData.check }}">
|
||||
<true>
|
||||
<kbd>{{@environmentData.value | raw}}</kbd>
|
||||
</true>
|
||||
<false>
|
||||
<kbd class="txt-color txt-color-danger">{{@environmentData.value | raw}}</kbd>
|
||||
</false>
|
||||
</check>
|
||||
</td>
|
||||
</tr>
|
||||
</repeat>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user