PageRenderTime 47ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/branches/1.1.0/src/prepend.inc.php

http://scalr.googlecode.com/
PHP | 339 lines | 230 code | 63 blank | 46 comment | 15 complexity | 5785ce5403a7123108ac760ec7062b24 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/API/AWS/AmazonELB");
  111. Core::Load("NET/SNMP");
  112. Core::Load("DNSZoneController", SRCPATH);
  113. $cfg = parse_ini_file(APPPATH."/etc/config.ini", true);
  114. if (!count($cfg)) {
  115. die(_("Cannot parse config.ini file"));
  116. };
  117. define("CF_DEBUG_DB", $cfg["debug"]["db"]);
  118. // ADODB init
  119. try
  120. {
  121. $db = Core::GetDBInstance($cfg["db"]);
  122. }
  123. catch(Exception $e)
  124. {
  125. throw new Exception("Service is temporary not available. Please try again in a minute.");
  126. //TODO: Notify about this.
  127. }
  128. // Select config from db
  129. foreach ($db->GetAll("select * from config") as $rsk)
  130. $cfg[$rsk["key"]] = $rsk["value"];
  131. $ConfigReflection = new ReflectionClass("CONFIG");
  132. // Define Constants and paste config into CONFIG struct
  133. foreach ($cfg as $k=>$v)
  134. {
  135. if (is_array($v))
  136. foreach ($v as $kk=>$vv)
  137. {
  138. $key = strtoupper("{$k}_{$kk}");
  139. if ($ConfigReflection->hasProperty($key))
  140. CONFIG::$$key = $vv;
  141. define("CF_{$key}", $vv);
  142. }
  143. else
  144. {
  145. if (is_array($k))
  146. $nk = strtoupper("{$k[0]}_{$k[1]}");
  147. else
  148. $nk = strtoupper("{$k}");
  149. if ($ConfigReflection->hasProperty($nk))
  150. CONFIG::$$nk = $v;
  151. define("CF_{$nk}", $v);
  152. }
  153. }
  154. unset($cfg);
  155. // Define log4php contants
  156. define("LOG4PHP_DIR", LIBPATH.'/IO/Logging/log4php/src/main/php');
  157. define("LOG4PHP_CONFIGURATION", APPPATH.'/etc/log4php.xml');
  158. define("LOG4PHP_CONFIGURATOR_CLASS", 'LoggerDOMConfiguratorScalr');
  159. // Require log4php stuff
  160. require_once (SRCPATH.'/class.FarmLogMessage.php');
  161. require_once (SRCPATH.'/class.ScriptingLogMessage.php');
  162. require_once (SRCPATH.'/class.LoggerPatternLayoutScalr.php');
  163. require_once (SRCPATH.'/class.LoggerPatternParserScalr.php');
  164. require_once (SRCPATH.'/class.LoggerBasicPatternConverterScalr.php');
  165. require_once (SRCPATH.'/class.LoggerAppenderScalr.php');
  166. require_once (SRCPATH.'/class.LoggerAppenderEmergMail.php');
  167. require_once (SRCPATH.'/class.LoggerDOMConfiguratorScalr.php');
  168. require_once(LOG4PHP_DIR . '/LoggerManager.php');
  169. // Get Global Logger intance
  170. $Logger = LoggerManager::getLogger('Application');
  171. // Define json_encode function if extension not installed
  172. if (!function_exists("json_encode"))
  173. {
  174. Core::Load("Data/JSON/JSON.php");
  175. $json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
  176. function json_encode($text)
  177. {
  178. global $json;
  179. return $json->encode($text);
  180. }
  181. function json_decode($text, $assoc = true)
  182. {
  183. global $json;
  184. return $json->decode($text);
  185. }
  186. }
  187. // Smarty init
  188. if (!defined("NO_TEMPLATES"))
  189. {
  190. $Smarty = Core::GetSmartyInstance();
  191. // Cache control
  192. if (CONFIG::$DEBUG_APP)
  193. {
  194. $Smarty->clear_all_cache();
  195. $Smarty->caching = false;
  196. }
  197. else
  198. $Smarty->caching = true;
  199. }
  200. // PHPSmartyMailer init
  201. $Mailer = Core::GetPHPSmartyMailerInstance();
  202. $Mailer->From = CONFIG::$EMAIL_ADDRESS;
  203. $Mailer->FromName = CONFIG::$EMAIL_NAME;
  204. $Mailer->CharSet = "UTF-8";
  205. // Crtypto init
  206. $Crypto = Core::GetInstance("Crypto", CONFIG::$CRYPTOKEY);
  207. //TODO: Move all timeouts to config UI.
  208. // Set zone lock timeouts
  209. CONFIG::$ZONE_LOCK_WAIT_TIMEOUT = 5000000; // in miliseconds (1000000 = 1 second)
  210. CONFIG::$ZONE_LOCK_WAIT_RETRIES = 3;
  211. CONFIG::$HTTP_PROTO = (CONFIG::$HTTP_PROTO) ? CONFIG::$HTTP_PROTO : "http";
  212. // cache lifetime
  213. CONFIG::$EVENTS_RSS_CACHE_LIFETIME = 300; // in seconds
  214. CONFIG::$EVENTS_TIMELINE_CACHE_LIFETIME = 300; // in seconds
  215. CONFIG::$AJAX_PROCESSLIST_CACHE_LIFETIME = 120; // in seconds
  216. // Get control password
  217. $cpwd = $Crypto->Decrypt(@file_get_contents(dirname(__FILE__)."/../etc/.passwd"));
  218. // Set path to SNMP Trap binary
  219. SNMP::SetSNMPTrapPath(CONFIG::$SNMPTRAP_PATH);
  220. // Require observer interfaces
  221. require_once (APPPATH.'/observers/interface.IDeferredEventObserver.php');
  222. require_once (APPPATH.'/observers/interface.IEventObserver.php');
  223. require_once (SRCPATH.'/class.Scalr.php');
  224. //
  225. // Attach event observers
  226. //
  227. Scalr::AttachObserver(new SSHWorker());
  228. Scalr::AttachObserver(new DBEventObserver());
  229. Scalr::AttachObserver(new EC2EventObserver());
  230. Scalr::AttachObserver(new ScriptingEventObserver());
  231. Scalr::AttachObserver(new EBSEventObserver());
  232. Scalr::AttachObserver(new ScalarizrEventObserver());
  233. Scalr::AttachObserver(new SNMPInformer());
  234. Scalr::AttachObserver(new ElasticIPsEventObserver());
  235. Scalr::AttachObserver(new ELBEventObserver());
  236. Scalr::AttachObserver(new DNSEventObserver());
  237. //
  238. // Attach deferred event observers
  239. //
  240. Scalr::AttachObserver(new MailEventObserver(), true);
  241. Scalr::AttachObserver(new RESTEventObserver(), true);
  242. //
  243. // Register scaling algos
  244. //
  245. RoleScalingManager::RegisterScalingAlgo(new TimeScalingAlgo());
  246. RoleScalingManager::RegisterScalingAlgo(new BaseScalingAlgo());
  247. RoleScalingManager::RegisterScalingAlgo(new BWScalingAlgo());
  248. RoleScalingManager::RegisterScalingAlgo(new LAScalingAlgo());
  249. RoleScalingManager::RegisterScalingAlgo(new SQSScalingAlgo());
  250. RoleScalingManager::RegisterScalingAlgo(new RAMScalingAlgo());
  251. //
  252. // Select AWS regions
  253. //
  254. $display['regions'] = AWSRegions::GetList();
  255. define("TENDER_APIKEY", "ebc97df2196a3ac625c1d7a45f6644e9b0b397a548eabb3e479baf05b30f79bd46ed254c76cc4dde1bd8bab0f742ee11b0a68aec0165c69008d4a78e9614b0dd");
  256. define("TENDER_SITEKEY", "scalr");
  257. function GenerateTenderMultipassToken($data)
  258. {
  259. $salted = TENDER_APIKEY . TENDER_SITEKEY;
  260. $hash = hash('sha1',$salted,true);
  261. $saltedHash = substr($hash,0,16);
  262. $iv = "OpenSSL for Ruby";
  263. // double XOR first block
  264. for ($i = 0; $i < 16; $i++)
  265. {
  266. $data[$i] = $data[$i] ^ $iv[$i];
  267. }
  268. $pad = 16 - (strlen($data) % 16);
  269. $data = $data . str_repeat(chr($pad), $pad);
  270. $cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'','cbc','');
  271. mcrypt_generic_init($cipher, $saltedHash, $iv);
  272. $encryptedData = mcrypt_generic($cipher,$data);
  273. mcrypt_generic_deinit($cipher);
  274. return urlencode(base64_encode($encryptedData));
  275. }
  276. ?>