PageRenderTime 59ms CodeModel.GetById 26ms RepoModel.GetById 1ms app.codeStats 0ms

/branches/1.0/src/prepend.inc.php

http://scalr.googlecode.com/
PHP | 307 lines | 205 code | 57 blank | 45 comment | 13 complexity | 77cfb952d3196c9e356f3ce1ed8624b4 MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0, GPL-3.0
  1. <?
  2. define("TRANSACTION_ID", uniqid("tran"));
  3. define("DEFAULT_LOCALE", "en_US");
  4. // Start session
  5. if (!defined("NO_SESSIONS"))
  6. session_start();
  7. // Attempt to normalize settings
  8. @error_reporting(E_ALL ^E_NOTICE ^E_USER_NOTICE);
  9. @ini_set('magic_quotes_runtime', '0');
  10. @ini_set('magic_quotes_gpc', '0');
  11. @ini_set('variables_order', 'GPCS');
  12. @ini_set('gpc_order', 'GPC');
  13. @ini_set('session.bug_compat_42', '0');
  14. @ini_set('session.bug_compat_warn', '0');
  15. // Increase execution time limit
  16. set_time_limit(180);
  17. // A kind of sanitization :-/
  18. if (get_magic_quotes_gpc())
  19. {
  20. function mstripslashes(&$item, $key)
  21. {
  22. $item = stripslashes($item);
  23. }
  24. array_walk_recursive($_POST, "mstripslashes");
  25. array_walk_recursive($_GET, "mstripslashes");
  26. array_walk_recursive($_REQUEST, "mstripslashes");
  27. }
  28. //
  29. // Locale init
  30. //
  31. if ($sess_lang)
  32. $locale = $sess_lang;
  33. else if ($get_lang)
  34. $locale = $get_lang;
  35. else
  36. $locale = DEFAULT_LOCALE;
  37. define("LOCALE", $locale);
  38. $_SESSION["LOCALE"] = LOCALE;
  39. setcookie("locale", LOCALE, time() + 86400*30);
  40. putenv("LANG=".LOCALE);
  41. setlocale(LC_ALL, LOCALE);
  42. define("TEXT_DOMAIN", "default");
  43. bindtextdomain (TEXT_DOMAIN, LANGS_DIR);
  44. textdomain(TEXT_DOMAIN);
  45. bind_textdomain_codeset(TEXT_DOMAIN, "UTF-8");
  46. $display["lang"] = LOCALE;
  47. // Globalize
  48. @extract($_GET, EXTR_PREFIX_ALL, "get");
  49. @extract($_POST, EXTR_PREFIX_ALL, "post");
  50. @extract($_SESSION, EXTR_PREFIX_ALL, "sess");
  51. @extract($_REQUEST, EXTR_PREFIX_ALL, "req");
  52. // Environment stuff
  53. $base = dirname(__FILE__);
  54. define("SRCPATH", $base);
  55. define("APPPATH", "{$base}/..");
  56. define("LIBPATH", "{$base}/Lib");
  57. define("CACHEPATH", "$base/../cache");
  58. $ADODB_CACHE_DIR = "$cachepath/adodb";
  59. define("CF_TEMPLATES_PATH", APPPATH."/templates/".LOCALE);
  60. define("CF_SMARTYBIN_PATH", CACHEPATH."/smarty_bin/".LOCALE);
  61. define("CF_SMARTYCACHE_PATH", CACHEPATH."/smarty/".LOCALE);
  62. // require autoload definition
  63. require_once (SRCPATH."/autoload.inc.php");
  64. // require sanitizer
  65. require_once (LIBPATH."/Data/Text/HTMLPurifier/HTMLPurifier.auto.php");
  66. require_once(SRCPATH."/exceptions/class.ApplicationException.php");
  67. require_once(SRCPATH."/class.UI.php");
  68. require_once(SRCPATH."/class.Debug.php");
  69. require_once(SRCPATH."/class.TaskQueue.php");
  70. require_once(SRCPATH."/class.FarmTerminationOptions.php");
  71. require_once(SRCPATH."/class.DataForm.php");
  72. require_once(SRCPATH."/class.DataFormField.php");
  73. require_once(SRCPATH."/queue_tasks/abstract.Task.php");
  74. require_once(SRCPATH."/queue_tasks/class.CheckEBSVolumeStateTask.php");
  75. require_once(SRCPATH."/queue_tasks/class.EBSMountTask.php");
  76. require_once(SRCPATH."/queue_tasks/class.EBSDeleteTask.php");
  77. require_once(SRCPATH."/queue_tasks/class.MigrateRoleTask.php");
  78. require_once(SRCPATH."/queue_tasks/class.FireDeferredEventTask.php");
  79. require_once(SRCPATH."/queue_tasks/class.CreateDNSZoneTask.php");
  80. require_once(SRCPATH."/queue_tasks/class.DeleteDNSZoneTask.php");
  81. // All uncaught exceptions will raise ApplicationException
  82. function exception_handler($exception)
  83. {
  84. UI::DisplayException($exception);
  85. }
  86. set_exception_handler("exception_handler");
  87. ////////////////////////////////////////
  88. // LibWebta //
  89. ////////////////////////////////////////
  90. require(SRCPATH."/LibWebta/prepend.inc.php");
  91. Core::Load("Security/Crypto");
  92. Core::Load("Data/DB/ADODB/adodb-exceptions.inc.php", LIBPATH);
  93. Core::Load("Data/DB/ADODB/adodb.inc.php", LIBPATH);
  94. Core::Load("UI/Smarty/Smarty.class.php", LIBPATH);
  95. Core::Load("UI/Smarty/Smarty_Compiler.class.php", LIBPATH);
  96. Core::Load("NET/Mail/PHPMailer");
  97. Core::Load("NET/Mail/PHPSmartyMailer");
  98. Core::Load("Data/Formater/Formater");
  99. Core::Load("Data/Validation/Validator");
  100. Core::Load("UI/Paging/Paging");
  101. Core::Load("IO/Basic");
  102. Core::Load("UI/Paging/SQLPaging");
  103. Core::Load("System/Independent/Shell/class.ShellFactory.php");
  104. Core::Load("Data/Formater");
  105. Core::Load("NET/SSH");
  106. Core::Load("NET/API/AWS/AmazonEC2");
  107. Core::Load("NET/API/AWS/AmazonS3");
  108. Core::Load("NET/API/AWS/AmazonSQS");
  109. Core::Load("NET/API/AWS/AmazonCloudFront");
  110. Core::Load("NET/SNMP");
  111. Core::Load("DNSZoneController", SRCPATH);
  112. $cfg = parse_ini_file(APPPATH."/etc/config.ini", true);
  113. if (!count($cfg)) {
  114. die(_("Cannot parse config.ini file"));
  115. };
  116. define("CF_DEBUG_DB", $cfg["debug"]["db"]);
  117. // ADODB init
  118. try
  119. {
  120. $db = Core::GetDBInstance($cfg["db"]);
  121. }
  122. catch(Exception $e)
  123. {
  124. throw new Exception("Service is temporary not available. Please try again in a minute.");
  125. //TODO: Notify about this.
  126. }
  127. // Select config from db
  128. foreach ($db->GetAll("select * from config") as $rsk)
  129. $cfg[$rsk["key"]] = $rsk["value"];
  130. $ConfigReflection = new ReflectionClass("CONFIG");
  131. // Define Constants and paste config into CONFIG struct
  132. foreach ($cfg as $k=>$v)
  133. {
  134. if (is_array($v))
  135. foreach ($v as $kk=>$vv)
  136. {
  137. $key = strtoupper("{$k}_{$kk}");
  138. if ($ConfigReflection->hasProperty($key))
  139. CONFIG::$$key = $vv;
  140. define("CF_{$key}", $vv);
  141. }
  142. else
  143. {
  144. if (is_array($k))
  145. $nk = strtoupper("{$k[0]}_{$k[1]}");
  146. else
  147. $nk = strtoupper("{$k}");
  148. if ($ConfigReflection->hasProperty($nk))
  149. CONFIG::$$nk = $v;
  150. define("CF_{$nk}", $v);
  151. }
  152. }
  153. unset($cfg);
  154. // Define log4php contants
  155. define("LOG4PHP_DIR", LIBPATH.'/IO/Logging/log4php/src/main/php');
  156. define("LOG4PHP_CONFIGURATION", APPPATH.'/etc/log4php.xml');
  157. define("LOG4PHP_CONFIGURATOR_CLASS", 'LoggerDOMConfiguratorScalr');
  158. // Require log4php stuff
  159. require_once (SRCPATH.'/class.FarmLogMessage.php');
  160. require_once (SRCPATH.'/class.ScriptingLogMessage.php');
  161. require_once (SRCPATH.'/class.LoggerPatternLayoutScalr.php');
  162. require_once (SRCPATH.'/class.LoggerPatternParserScalr.php');
  163. require_once (SRCPATH.'/class.LoggerBasicPatternConverterScalr.php');
  164. require_once (SRCPATH.'/class.LoggerAppenderScalr.php');
  165. require_once (SRCPATH.'/class.LoggerAppenderEmergMail.php');
  166. require_once (SRCPATH.'/class.LoggerDOMConfiguratorScalr.php');
  167. require_once(LOG4PHP_DIR . '/LoggerManager.php');
  168. // Get Global Logger intance
  169. $Logger = LoggerManager::getLogger('Application');
  170. // Define json_encode function if extension not installed
  171. if (!function_exists("json_encode"))
  172. {
  173. Core::Load("Data/JSON/JSON.php");
  174. $json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
  175. function json_encode($text)
  176. {
  177. global $json;
  178. return $json->encode($text);
  179. }
  180. function json_decode($text, $assoc = true)
  181. {
  182. global $json;
  183. return $json->decode($text);
  184. }
  185. }
  186. // Smarty init
  187. if (!defined("NO_TEMPLATES"))
  188. {
  189. $Smarty = Core::GetSmartyInstance();
  190. // Cache control
  191. if (CONFIG::$DEBUG_APP)
  192. {
  193. $Smarty->clear_all_cache();
  194. $Smarty->caching = false;
  195. }
  196. else
  197. $Smarty->caching = true;
  198. }
  199. // PHPSmartyMailer init
  200. $Mailer = Core::GetPHPSmartyMailerInstance();
  201. $Mailer->From = CONFIG::$EMAIL_ADDRESS;
  202. $Mailer->FromName = CONFIG::$EMAIL_NAME;
  203. $Mailer->CharSet = "UTF-8";
  204. // Crtypto init
  205. $Crypto = Core::GetInstance("Crypto", CONFIG::$CRYPTOKEY);
  206. //TODO: Move all timeouts to config UI.
  207. // Set zone lock timeouts
  208. CONFIG::$ZONE_LOCK_WAIT_TIMEOUT = 5000000; // in miliseconds (1000000 = 1 second)
  209. CONFIG::$ZONE_LOCK_WAIT_RETRIES = 3;
  210. CONFIG::$HTTP_PROTO = (CONFIG::$HTTP_PROTO) ? CONFIG::$HTTP_PROTO : "http";
  211. // cache lifetime
  212. CONFIG::$EVENTS_RSS_CACHE_LIFETIME = 300; // in seconds
  213. CONFIG::$EVENTS_TIMELINE_CACHE_LIFETIME = 300; // in seconds
  214. CONFIG::$AJAX_PROCESSLIST_CACHE_LIFETIME = 120; // in seconds
  215. // Get control password
  216. $cpwd = $Crypto->Decrypt(@file_get_contents(dirname(__FILE__)."/../etc/.passwd"));
  217. // Set path to SNMP Trap binary
  218. SNMP::SetSNMPTrapPath(CONFIG::$SNMPTRAP_PATH);
  219. // Require observer interfaces
  220. require_once (APPPATH.'/observers/interface.IDeferredEventObserver.php');
  221. require_once (APPPATH.'/observers/interface.IEventObserver.php');
  222. require_once (SRCPATH.'/class.Scalr.php');
  223. //
  224. // Attach event observers
  225. //
  226. Scalr::AttachObserver(new SSHWorker());
  227. Scalr::AttachObserver(new DBEventObserver());
  228. Scalr::AttachObserver(new EC2EventObserver());
  229. Scalr::AttachObserver(new ScriptingEventObserver());
  230. Scalr::AttachObserver(new EBSEventObserver());
  231. Scalr::AttachObserver(new ScalarizrEventObserver());
  232. Scalr::AttachObserver(new SNMPInformer());
  233. Scalr::AttachObserver(new ElasticIPsEventObserver());
  234. Scalr::AttachObserver(new DNSEventObserver());
  235. //
  236. // Attach deferred event observers
  237. //
  238. Scalr::AttachObserver(new MailEventObserver(), true);
  239. Scalr::AttachObserver(new RESTEventObserver(), true);
  240. //
  241. // Register scaling algos
  242. //
  243. RoleScalingManager::RegisterScalingAlgo(new BWScalingAlgo());
  244. RoleScalingManager::RegisterScalingAlgo(new LAScalingAlgo());
  245. RoleScalingManager::RegisterScalingAlgo(new SQSScalingAlgo());
  246. //
  247. // Select AWS regions
  248. //
  249. $display['regions'] = AWSRegions::GetList();
  250. ?>