Exemple #1
0
 public function getEnabledPlatforms()
 {
     $enabled = array();
     foreach (array_keys(SERVER_PLATFORMS::getList()) as $value) {
         if ($this->isPlatformEnabled($value)) {
             $enabled[] = $value;
         }
     }
     return $enabled;
 }
Exemple #2
0
 public function getContext()
 {
     $data = array();
     if ($this->user) {
         $data['user'] = array('userId' => $this->user->getId(), 'clientId' => $this->user->getAccountId(), 'userName' => $this->user->getEmail(), 'gravatarHash' => $this->user->getGravatarHash(), 'envId' => $this->getEnvironment() ? $this->getEnvironmentId() : 0, 'envName' => $this->getEnvironment() ? $this->getEnvironment()->name : '', 'envVars' => $this->getEnvironment() ? $this->getEnvironment()->getPlatformConfigValue(Scalr_Environment::SETTING_UI_VARS) : '', 'type' => $this->user->getType());
         if (!$this->user->isScalrAdmin()) {
             $data['farms'] = $this->db->getAll('SELECT id, name FROM farms WHERE env_id = ? ORDER BY name', array($this->getEnvironmentId()));
             if ($this->user->getAccountId() != 0) {
                 $data['flags'] = $this->user->getAccount()->getFeaturesList();
                 $data['user']['userIsTrial'] = $this->user->getAccount()->getSetting(Scalr_Account::SETTING_IS_TRIAL) == '1' ? true : false;
             } else {
                 $data['flags'] = array();
             }
             $data['flags']['billingExists'] = \Scalr::config('scalr.billing.enabled');
             $data['flags']['featureUsersPermissions'] = $this->user->getAccount()->isFeatureEnabled(Scalr_Limits::FEATURE_USERS_PERMISSIONS);
             $data['flags']['wikiUrl'] = \Scalr::config('scalr.ui.wiki_url');
             $data['flags']['supportUrl'] = \Scalr::config('scalr.ui.support_url');
             $data['acl'] = $this->request->getAclRoles()->getAllowedArray(true);
             if ($this->user->isAccountOwner()) {
                 if (!$this->user->getAccount()->getSetting(Scalr_Account::SETTING_DATE_ENV_CONFIGURED)) {
                     if (count($this->environment->getEnabledPlatforms()) == 0) {
                         $data['flags']['needEnvConfig'] = Scalr_Environment::init()->loadDefault($this->user->getAccountId())->id;
                     }
                 }
             }
             $data['environments'] = $this->user->getEnvironments();
             if ($this->getEnvironment() && $this->user->isTeamOwner()) {
                 $data['user']['isTeamOwner'] = true;
             }
         }
         $data['platforms'] = array();
         $allowedClouds = (array) \Scalr::config('scalr.allowed_clouds');
         foreach (SERVER_PLATFORMS::getList() as $platform => $platformName) {
             if (!in_array($platform, $allowedClouds) || $platform == SERVER_PLATFORMS::UCLOUD && !$this->request->getHeaderVar('Interface-Beta')) {
                 continue;
             }
             $data['platforms'][$platform] = array('enabled' => $this->user->isScalrAdmin() ? false : !!$this->environment->isPlatformEnabled($platform), 'name' => $platformName);
         }
     }
     $data['flags']['authMode'] = $this->getContainer()->config->get('scalr.auth_mode');
     $data['flags']['specialToken'] = Scalr_Session::getInstance()->getToken();
     return $data;
 }
Exemple #3
0
 /**
  * Gets array of the linked variables
  *
  * @param   string  $linkid  optional If provided it will return variables from given group id
  * @return  array If linkid is null it will return array looks like array(variable => linkid).
  *                If linkid is provided it will return list of the linked variables
  *                from the specified group. array(variable1, variable2, ..., variableN)
  */
 private static function getLinkedVariables($linkid = null)
 {
     static $ret = array(), $rev = array();
     if (empty($ret)) {
         //Performs at once
         $ret = array(SERVER_PLATFORMS::EC2 => array(Modules_Platforms_Ec2::ACCESS_KEY, Modules_Platforms_Ec2::SECRET_KEY, Modules_Platforms_Ec2::CERTIFICATE, Modules_Platforms_Ec2::PRIVATE_KEY, Modules_Platforms_Ec2::ACCOUNT_ID), SERVER_PLATFORMS::GCE => array(Modules_Platforms_GoogleCE::ACCESS_TOKEN, Modules_Platforms_GoogleCE::CLIENT_ID, Modules_Platforms_GoogleCE::KEY, Modules_Platforms_GoogleCE::PROJECT_ID, Modules_Platforms_GoogleCE::RESOURCE_BASE_URL, Modules_Platforms_GoogleCE::SERVICE_ACCOUNT_NAME), 'enabledPlatforms' => array());
         foreach (array_keys(SERVER_PLATFORMS::getList()) as $value) {
             $ret['enabledPlatforms'][] = "{$value}.is_enabled";
         }
         foreach (array(SERVER_PLATFORMS::IDCF, SERVER_PLATFORMS::UCLOUD, SERVER_PLATFORMS::CLOUDSTACK) as $platform) {
             $ret[$platform] = array($platform . "." . Modules_Platforms_Cloudstack::ACCOUNT_NAME, $platform . "." . Modules_Platforms_Cloudstack::API_KEY, $platform . "." . Modules_Platforms_Cloudstack::API_URL, $platform . "." . Modules_Platforms_Cloudstack::DOMAIN_ID, $platform . "." . Modules_Platforms_Cloudstack::DOMAIN_NAME, $platform . "." . Modules_Platforms_Cloudstack::SECRET_KEY, $platform . "." . Modules_Platforms_Cloudstack::SHARED_IP, $platform . "." . Modules_Platforms_Cloudstack::SHARED_IP_ID, $platform . "." . Modules_Platforms_Cloudstack::SHARED_IP_INFO, $platform . "." . Modules_Platforms_Cloudstack::SZR_PORT_COUNTER);
         }
         foreach (array(SERVER_PLATFORMS::OPENSTACK, SERVER_PLATFORMS::ECS, SERVER_PLATFORMS::OCS, SERVER_PLATFORMS::NEBULA, SERVER_PLATFORMS::RACKSPACENG_UK, SERVER_PLATFORMS::RACKSPACENG_US) as $platform) {
             $ret[$platform] = array($platform . "." . Modules_Platforms_Openstack::API_KEY, $platform . "." . Modules_Platforms_Openstack::AUTH_TOKEN, $platform . "." . Modules_Platforms_Openstack::KEYSTONE_URL, $platform . "." . Modules_Platforms_Openstack::PASSWORD, $platform . "." . Modules_Platforms_Openstack::TENANT_NAME, $platform . "." . Modules_Platforms_Openstack::USERNAME);
         }
         //Computes fast access keys
         foreach ($ret as $platform => $linkedKeys) {
             foreach ($linkedKeys as $variable) {
                 $rev[$variable] = $platform;
             }
         }
     }
     return $linkid !== null ? isset($ret[$linkid]) ? $ret[$linkid] : null : $rev;
 }
Exemple #4
0
 /**
  * TODO: migrate to the new cloud credentials entities
  * Gets array of the linked variables
  *
  * @param   string  $linkid  optional If provided it will return variables from given group id
  * @return  array If linkid is null it will return array looks like array(variable => linkid).
  *                If linkid is provided it will return list of the linked variables
  *                from the specified group. array(variable1, variable2, ..., variableN)
  */
 private static function getLinkedVariables($linkid = null)
 {
     static $ret = array(), $rev = array();
     if (empty($ret)) {
         //Performs at once
         $ret = array(SERVER_PLATFORMS::EC2 => array(Ec2PlatformModule::ACCESS_KEY, Ec2PlatformModule::SECRET_KEY, Ec2PlatformModule::CERTIFICATE, Ec2PlatformModule::PRIVATE_KEY, Ec2PlatformModule::ACCOUNT_ID, Ec2PlatformModule::ACCOUNT_TYPE), SERVER_PLATFORMS::GCE => array(GoogleCEPlatformModule::ACCESS_TOKEN, GoogleCEPlatformModule::CLIENT_ID, GoogleCEPlatformModule::KEY, GoogleCEPlatformModule::PROJECT_ID, GoogleCEPlatformModule::RESOURCE_BASE_URL, GoogleCEPlatformModule::SERVICE_ACCOUNT_NAME, GoogleCEPlatformModule::JSON_KEY), 'enabledPlatforms' => array());
         foreach (array_keys(SERVER_PLATFORMS::getList()) as $value) {
             $ret['enabledPlatforms'][] = "{$value}.is_enabled";
         }
         foreach (array(SERVER_PLATFORMS::IDCF, SERVER_PLATFORMS::CLOUDSTACK) as $platform) {
             $ret[$platform] = array($platform . "." . CloudstackPlatformModule::ACCOUNT_NAME, $platform . "." . CloudstackPlatformModule::API_KEY, $platform . "." . CloudstackPlatformModule::API_URL, $platform . "." . CloudstackPlatformModule::DOMAIN_ID, $platform . "." . CloudstackPlatformModule::DOMAIN_NAME, $platform . "." . CloudstackPlatformModule::SECRET_KEY, $platform . "." . CloudstackPlatformModule::SHARED_IP, $platform . "." . CloudstackPlatformModule::SHARED_IP_ID, $platform . "." . CloudstackPlatformModule::SHARED_IP_INFO, $platform . "." . CloudstackPlatformModule::SZR_PORT_COUNTER);
         }
         foreach (array(SERVER_PLATFORMS::OPENSTACK, SERVER_PLATFORMS::OCS, SERVER_PLATFORMS::NEBULA, SERVER_PLATFORMS::MIRANTIS, SERVER_PLATFORMS::RACKSPACENG_UK, SERVER_PLATFORMS::RACKSPACENG_US) as $platform) {
             $ret[$platform] = array($platform . "." . OpenstackPlatformModule::API_KEY, $platform . "." . OpenstackPlatformModule::AUTH_TOKEN, $platform . "." . OpenstackPlatformModule::KEYSTONE_URL, $platform . "." . OpenstackPlatformModule::PASSWORD, $platform . "." . OpenstackPlatformModule::TENANT_NAME, $platform . "." . OpenstackPlatformModule::DOMAIN_NAME, $platform . "." . OpenstackPlatformModule::USERNAME);
         }
         $ret[SERVER_PLATFORMS::AZURE] = [AzurePlatformModule::SUBSCRIPTION_ID, AzurePlatformModule::ACCESS_TOKEN, AzurePlatformModule::ACCESS_TOKEN_EXPIRE, AzurePlatformModule::AUTH_CODE, AzurePlatformModule::AUTH_STEP, AzurePlatformModule::CLIENT_OBJECT_ID, AzurePlatformModule::CLIENT_TOKEN, AzurePlatformModule::CLIENT_TOKEN_EXPIRE, AzurePlatformModule::CONTRIBUTOR_ID, AzurePlatformModule::REFRESH_TOKEN, AzurePlatformModule::REFRESH_TOKEN_EXPIRE, AzurePlatformModule::STORAGE_ACCOUNT_NAME, AzurePlatformModule::TENANT_NAME, AzurePlatformModule::ROLE_ASSIGNMENT_ID];
         //Computes fast access keys
         foreach ($ret as $platform => $linkedKeys) {
             foreach ($linkedKeys as $variable) {
                 $rev[$variable] = $platform;
             }
         }
     }
     return $linkid !== null ? isset($ret[$linkid]) ? $ret[$linkid] : null : $rev;
 }
Exemple #5
0
 public function getContext()
 {
     $data = array();
     if ($this->user) {
         $data['user'] = array('userId' => $this->user->getId(), 'clientId' => $this->user->getAccountId(), 'userName' => $this->user->getEmail(), 'gravatarHash' => $this->user->getGravatarHash(), 'envId' => $this->getEnvironment() ? $this->getEnvironmentId() : 0, 'envName' => $this->getEnvironment() ? $this->getEnvironment()->name : '', 'envVars' => $this->getEnvironment() ? $this->getEnvironment()->getPlatformConfigValue(Scalr_Environment::SETTING_UI_VARS) : '', 'type' => $this->user->getType());
         $envVars = json_decode($data['user']['envVars'], true);
         $betaMode = $envVars && $envVars['beta'] == 1;
         if (!$this->user->isAdmin()) {
             $data['farms'] = $this->db->getAll('SELECT id, name FROM farms WHERE env_id = ? ORDER BY name', array($this->getEnvironmentId()));
             if ($this->user->getAccountId() != 0) {
                 $data['flags'] = $this->user->getAccount()->getFeaturesList();
                 $data['user']['userIsTrial'] = $this->user->getAccount()->getSetting(Scalr_Account::SETTING_IS_TRIAL) == '1' ? true : false;
             } else {
                 $data['flags'] = array();
             }
             $data['flags']['billingExists'] = \Scalr::config('scalr.billing.enabled');
             $data['flags']['featureUsersPermissions'] = $this->user->getAccount()->isFeatureEnabled(Scalr_Limits::FEATURE_USERS_PERMISSIONS);
             $data['flags']['wikiUrl'] = \Scalr::config('scalr.ui.wiki_url');
             $data['flags']['supportUrl'] = \Scalr::config('scalr.ui.support_url');
             if ($data['flags']['supportUrl'] == '/core/support') {
                 $data['flags']['supportUrl'] .= '?X-Requested-Token=' . Scalr_Session::getInstance()->getToken();
             }
             $data['acl'] = $this->request->getAclRoles()->getAllowedArray(true);
             if ($this->user->isAccountOwner()) {
                 if (!$this->user->getAccount()->getSetting(Scalr_Account::SETTING_DATE_ENV_CONFIGURED)) {
                     if (count($this->environment->getEnabledPlatforms()) == 0) {
                         $data['flags']['needEnvConfig'] = Scalr_Environment::init()->loadDefault($this->user->getAccountId())->id;
                     }
                 }
             }
             $data['environments'] = $this->user->getEnvironments();
             if ($this->getEnvironment() && $this->user->isTeamOwner()) {
                 $data['user']['isTeamOwner'] = true;
             }
         }
         $data['platforms'] = array();
         $allowedClouds = (array) \Scalr::config('scalr.allowed_clouds');
         foreach (SERVER_PLATFORMS::getList() as $platform => $platformName) {
             if (!in_array($platform, $allowedClouds) || $platform == SERVER_PLATFORMS::UCLOUD && !$this->request->getHeaderVar('Interface-Beta')) {
                 continue;
             }
             $data['platforms'][$platform] = array('public' => PlatformFactory::isPublic($platform), 'enabled' => $this->user->isAdmin() ? true : !!$this->environment->isPlatformEnabled($platform), 'name' => $platformName);
             if (!$this->user->isAdmin()) {
                 if ($platform == SERVER_PLATFORMS::EC2 && $this->environment->status == Scalr_Environment::STATUS_INACTIVE && $this->environment->getPlatformConfigValue('system.auto-disable-reason')) {
                     $data['platforms'][$platform]['config'] = array('autoDisabled' => true);
                 }
                 if (PlatformFactory::isOpenstack($platform) && $data['platforms'][$platform]['enabled']) {
                     $data['platforms'][$platform]['config'] = array(OpenstackPlatformModule::EXT_SECURITYGROUPS_ENABLED => PlatformFactory::NewPlatform($platform)->getConfigVariable(OpenstackPlatformModule::EXT_SECURITYGROUPS_ENABLED, $this->getEnvironment(), false), OpenstackPlatformModule::EXT_LBAAS_ENABLED => PlatformFactory::NewPlatform($platform)->getConfigVariable(OpenstackPlatformModule::EXT_LBAAS_ENABLED, $this->getEnvironment(), false), OpenstackPlatformModule::EXT_FLOATING_IPS_ENABLED => PlatformFactory::NewPlatform($platform)->getConfigVariable(OpenstackPlatformModule::EXT_FLOATING_IPS_ENABLED, $this->getEnvironment(), false), OpenstackPlatformModule::EXT_CINDER_ENABLED => PlatformFactory::NewPlatform($platform)->getConfigVariable(OpenstackPlatformModule::EXT_CINDER_ENABLED, $this->getEnvironment(), false), OpenstackPlatformModule::EXT_SWIFT_ENABLED => PlatformFactory::NewPlatform($platform)->getConfigVariable(OpenstackPlatformModule::EXT_SWIFT_ENABLED, $this->getEnvironment(), false));
                 }
             }
         }
         $data['flags']['uiStorageTime'] = $this->user->getSetting(Scalr_Account_User::SETTING_UI_STORAGE_TIME);
         $data['flags']['uiStorage'] = $this->user->getVar(Scalr_Account_User::VAR_UI_STORAGE);
         $data['flags']['allowManageAnalytics'] = (bool) Scalr::isAllowedAnalyticsOnHostedScalrAccount($this->environment->clientId);
     }
     if ($this->user) {
         $data['tags'] = Tag::getAll($this->user->getAccountId());
     }
     $data['flags']['authMode'] = $this->getContainer()->config->get('scalr.auth_mode');
     $data['flags']['specialToken'] = Scalr_Session::getInstance()->getToken();
     $data['flags']['hostedScalr'] = (bool) Scalr::isHostedScalr();
     $data['flags']['analyticsEnabled'] = $this->getContainer()->analytics->enabled;
     return $data;
 }
Exemple #6
0
 /**
  * @param  int $uiStorageTime optional
  * @return array
  */
 public function getContext($uiStorageTime = 0)
 {
     $data = array();
     if ($this->user) {
         $data['user'] = array('userId' => $this->user->getId(), 'clientId' => $this->user->getAccountId(), 'userName' => $this->user->getEmail(), 'gravatarHash' => $this->user->getGravatarHash(), 'envId' => $this->getEnvironment() ? $this->getEnvironmentId() : 0, 'envName' => $this->getEnvironment() ? $this->getEnvironment()->name : '', 'envVars' => '', 'type' => $this->user->getType(), 'settings' => [Scalr_Account_User::SETTING_UI_TIMEZONE => $this->user->getSetting(Scalr_Account_User::SETTING_UI_TIMEZONE), UserSetting::NAME_UI_ANNOUNCEMENT_TIME => $this->getUser()->getSetting(UserSetting::NAME_UI_ANNOUNCEMENT_TIME)]);
         if ($this->getEnvironment()) {
             $data['user']['envVars'] = $this->getEnvironment()->getPlatformConfigValue(Scalr_Environment::SETTING_UI_VARS);
         } else {
             if ($this->user->getAccountId()) {
                 $data['user']['envVars'] = $this->user->getAccount()->getSetting(Scalr_Account::SETTING_UI_VARS);
             }
         }
         if ($uiStorageTime > 0 && $uiStorageTime < $this->user->getSetting(Scalr_Account_User::SETTING_UI_STORAGE_TIME) && !Scalr_Session::getInstance()->isVirtual()) {
             $data['user']['uiStorage'] = $this->user->getVar(Scalr_Account_User::VAR_UI_STORAGE);
         }
         $envVars = json_decode($data['user']['envVars'], true);
         $betaMode = $envVars && $envVars['beta'] == 1;
         if (!$this->user->isAdmin()) {
             $data['flags'] = [];
             if ($this->user->getAccountId() != 0) {
                 $data['user']['userIsTrial'] = $this->user->getAccount()->getSetting(Scalr_Account::SETTING_IS_TRIAL) == '1' ? true : false;
             }
             $data['flags']['billingExists'] = \Scalr::config('scalr.billing.enabled');
             $data['flags']['showDeprecatedFeatures'] = \Scalr::config('scalr.ui.show_deprecated_features');
             $data['acl'] = $this->request->getAclRoles()->getAllowedArray(true);
             if (!$this->user->isAccountOwner()) {
                 $data['user']['accountOwnerName'] = $this->user->getAccount()->getOwner()->getEmail();
             }
             $data['environments'] = $this->user->getEnvironments();
             if ($this->user->isAccountOwner()) {
                 if (!$this->user->getAccount()->getSetting(Scalr_Account::SETTING_DATE_ENV_CONFIGURED)) {
                     $data['flags']['needEnvConfig'] = true;
                 }
             }
             if ($this->request->getScope() == 'environment') {
                 $sql = "SELECT id, name FROM farms f WHERE env_id = ? AND " . $this->request->getFarmSqlQuery();
                 $args = [$this->getEnvironmentId()];
                 $sql .= " ORDER BY name";
                 $data['farms'] = $this->db->getAll($sql, $args);
                 if ($this->getEnvironment() && $this->user->isTeamOwner()) {
                     $data['user']['isTeamOwner'] = true;
                 }
             }
         }
         $data['flags']['wikiUrl'] = \Scalr::config('scalr.ui.wiki_url');
         $data['flags']['supportUrl'] = \Scalr::config('scalr.ui.support_url');
         if ($data['flags']['supportUrl'] == '/core/support') {
             if ($this->user->isAdmin()) {
                 unset($data['flags']['supportUrl']);
             } else {
                 $data['flags']['supportUrl'] .= '?X-Requested-Token=' . Scalr_Session::getInstance()->getToken();
             }
         }
         //OS
         $data['os'] = [];
         foreach (Os::find() as $os) {
             /* @var $os Os */
             $data['os'][] = ['id' => $os->id, 'family' => $os->family, 'name' => $os->name, 'generation' => $os->generation, 'version' => $os->version, 'status' => $os->status];
         }
         $data['defaults'] = (new Scalr_Scripting_GlobalVariables($this->user->getAccountId(), $this->getEnvironmentId(true), ScopeInterface::SCOPE_ENVIRONMENT))->getUiDefaults();
         $data['platforms'] = [];
         $allowedClouds = (array) \Scalr::config('scalr.allowed_clouds');
         if ($this->user->getAccountId() == 263) {
             array_push($allowedClouds, SERVER_PLATFORMS::VERIZON);
         }
         $platforms = SERVER_PLATFORMS::getList();
         if (!($this->request->getHeaderVar('Interface-Beta') || $betaMode)) {
             $platforms = array_intersect_key($platforms, array_flip($allowedClouds));
         }
         $environment = $this->getEnvironment();
         if (!empty($environment)) {
             $cloudsCredentials = $environment->cloudCredentialsList(array_keys($platforms));
         }
         foreach ($platforms as $platform => $platformName) {
             if (!in_array($platform, $allowedClouds) && !$this->request->getHeaderVar('Interface-Beta') && !$betaMode) {
                 continue;
             }
             $data['platforms'][$platform] = array('public' => PlatformFactory::isPublic($platform), 'enabled' => $this->user->isAdmin() || $this->request->getScope() != 'environment' ? true : isset($cloudsCredentials[$platform]) && $cloudsCredentials[$platform]->isEnabled(), 'name' => $platformName);
             if (!($this->user->isAdmin() || $this->request->getScope() != 'environment')) {
                 if ($platform == SERVER_PLATFORMS::EC2 && $this->environment->status == Scalr_Environment::STATUS_INACTIVE && $this->environment->getPlatformConfigValue('system.auto-disable-reason')) {
                     $data['platforms'][$platform]['config'] = array('autoDisabled' => true);
                 }
                 if (PlatformFactory::isOpenstack($platform) && $data['platforms'][$platform]['enabled']) {
                     $ccProps = $cloudsCredentials[$platform]->properties;
                     $data['platforms'][$platform]['config'] = [CloudCredentialsProperty::OPENSTACK_EXT_SECURITYGROUPS_ENABLED => $ccProps[CloudCredentialsProperty::OPENSTACK_EXT_SECURITYGROUPS_ENABLED], CloudCredentialsProperty::OPENSTACK_EXT_LBAAS_ENABLED => $ccProps[CloudCredentialsProperty::OPENSTACK_EXT_LBAAS_ENABLED], CloudCredentialsProperty::OPENSTACK_EXT_FLOATING_IPS_ENABLED => $ccProps[CloudCredentialsProperty::OPENSTACK_EXT_FLOATING_IPS_ENABLED], CloudCredentialsProperty::OPENSTACK_EXT_CINDER_ENABLED => $ccProps[CloudCredentialsProperty::OPENSTACK_EXT_CINDER_ENABLED], CloudCredentialsProperty::OPENSTACK_EXT_SWIFT_ENABLED => $ccProps[CloudCredentialsProperty::OPENSTACK_EXT_SWIFT_ENABLED]];
                 }
             }
         }
         $data['flags']['uiStorageTime'] = $this->user->getSetting(Scalr_Account_User::SETTING_UI_STORAGE_TIME);
         $data['flags']['uiStorage'] = $this->user->getVar(Scalr_Account_User::VAR_UI_STORAGE);
         $data['flags']['allowManageAnalytics'] = $this->user->getAccountId() && Scalr::isAllowedAnalyticsOnHostedScalrAccount($this->user->getAccountId());
         $data['flags']['hostedScalr'] = (bool) Scalr::isHostedScalr();
         $data['flags']['analyticsEnabled'] = $this->getContainer()->analytics->enabled;
         $data['flags']['apiEnabled'] = (bool) \Scalr::config('scalr.system.api.enabled');
         $data['flags']['dnsGlobalEnabled'] = (bool) \Scalr::config('scalr.dns.global.enabled');
         $data['flags']['allowBetaEbsTypes'] = SCALR_ID == 'gdp-aws-east';
         $data['scope'] = $this->request->getScope();
         if ($this->request->getScope() == 'environment') {
             $governance = new Scalr_Governance($this->getEnvironmentId());
             $data['governance'] = $governance->getValues(true);
         }
     }
     if ($this->user) {
         $data['tags'] = Tag::getAll($this->user->getAccountId());
     }
     $data['flags']['authMode'] = $this->getContainer()->config->get('scalr.auth_mode');
     $data['flags']['recaptchaPublicKey'] = $this->getContainer()->config->get('scalr.ui.recaptcha.public_key');
     $data['flags']['specialToken'] = Scalr_Session::getInstance()->getToken();
     $data['flags']['loginWarning'] = $this->getContainer()->config->get('scalr.ui.login_warning');
     return $data;
 }
Exemple #7
0
 public function importAction()
 {
     $behaviors = array(array(ROLE_BEHAVIORS::BASE, ROLE_BEHAVIORS::GetName(ROLE_BEHAVIORS::BASE)), array(ROLE_BEHAVIORS::APACHE, ROLE_BEHAVIORS::GetName(ROLE_BEHAVIORS::APACHE)), array(ROLE_BEHAVIORS::MYSQL, ROLE_BEHAVIORS::GetName(ROLE_BEHAVIORS::MYSQL)), array(ROLE_BEHAVIORS::MYSQL2, ROLE_BEHAVIORS::GetName(ROLE_BEHAVIORS::MYSQL2)), array(ROLE_BEHAVIORS::NGINX, ROLE_BEHAVIORS::GetName(ROLE_BEHAVIORS::NGINX)), array(ROLE_BEHAVIORS::MEMCACHED, ROLE_BEHAVIORS::GetName(ROLE_BEHAVIORS::MEMCACHED)), array(ROLE_BEHAVIORS::POSTGRESQL, ROLE_BEHAVIORS::GetName(ROLE_BEHAVIORS::POSTGRESQL)), array(ROLE_BEHAVIORS::REDIS, ROLE_BEHAVIORS::GetName(ROLE_BEHAVIORS::REDIS)), array(ROLE_BEHAVIORS::RABBITMQ, ROLE_BEHAVIORS::GetName(ROLE_BEHAVIORS::RABBITMQ)), array(ROLE_BEHAVIORS::MONGODB, ROLE_BEHAVIORS::GetName(ROLE_BEHAVIORS::MONGODB)));
     if ($this->getParam('beta') == 1) {
         array_push($behaviors, array(ROLE_BEHAVIORS::HAPROXY, ROLE_BEHAVIORS::GetName(ROLE_BEHAVIORS::HAPROXY)));
     }
     $euca_locations = array();
     $rs_locations = array();
     $platforms = array();
     $env = Scalr_Environment::init()->loadById($this->getEnvironmentId());
     $enabledPlatforms = $env->getEnabledPlatforms();
     foreach (SERVER_PLATFORMS::getList() as $k => $v) {
         if (in_array($k, $enabledPlatforms)) {
             if ($k == 'rds') {
                 continue;
             }
             $platforms[] = array($k, $v);
             if ($k == SERVER_PLATFORMS::EUCALYPTUS) {
                 foreach (PlatformFactory::NewPlatform($k)->getLocations() as $lk => $lv) {
                     $euca_locations[$lk] = array('id' => $lk, 'name' => $lv);
                 }
             } elseif ($k == SERVER_PLATFORMS::RACKSPACE) {
                 foreach (PlatformFactory::NewPlatform($k)->getLocations() as $lk => $lv) {
                     $rs_locations[$lk] = array('id' => $lk, 'name' => $lv);
                 }
             } elseif ($k == SERVER_PLATFORMS::OPENSTACK) {
                 foreach (PlatformFactory::NewPlatform($k)->getLocations() as $lk => $lv) {
                     $os_locations[$lk] = array('id' => $lk, 'name' => $lv);
                 }
             }
         }
     }
     unset($platforms['rds']);
     $this->response->page('ui/servers/import_step1.js', array('platforms' => $platforms, 'behaviors' => $behaviors, 'euca_locations' => $euca_locations, 'rs_locations' => $rs_locations, 'os_locations' => $os_locations));
 }
Exemple #8
0
<?php

require_once __DIR__ . '/../src/prepend.inc.php';
use Scalr\Util\PhpTemplate;
$opt = getopt('', ['csv::']);
$format = array_key_exists('csv', $opt) && $opt['csv'] === false ? 'csv' : 'txt';
$quarterDays = [90, 91, 92, 92];
$data = [];
$allPlatforms = \SERVER_PLATFORMS::getList();
$res = \Scalr::getDb()->Execute("\n    SELECT `time`, `platform`, `value`, QUARTER(`time`) AS quarter, YEAR(`time`) AS year\n    FROM platform_usage\n    ORDER BY `time` ASC\n");
while ($row = $res->FetchRow()) {
    $quarter = "Q" . $row["quarter"] . " " . $row["year"];
    if (!array_key_exists($quarter, $data)) {
        $data[$quarter] = ["quarter" => $row["quarter"] - 1, "year" => $row["year"], "days" => [], "dataByPlatform" => []];
    }
    if (!array_key_exists($row["platform"], $data[$quarter]["dataByPlatform"])) {
        $data[$quarter]["dataByPlatform"][$row["platform"]] = [];
    }
    $data[$quarter]["dataByPlatform"][$row["platform"]][] = $row["value"];
    $data[$quarter]["days"][substr($row["time"], 0, 10)] = true;
}
if ($format == 'csv') {
    $csvRowTemplate = ['year' => '', 'quarter' => '', 'partial' => ''];
}
foreach ($data as $quarter => &$set) {
    ksort($set["dataByPlatform"]);
    foreach ($set["dataByPlatform"] as $platform => &$report) {
        $report = \Scalr_Util_Arrays::percentile($report, 90, true);
        if ($format == 'csv' && !array_key_exists($platform, $csvRowTemplate)) {
            $csvRowTemplate[$platform] = 0;
        }
Exemple #9
0
 public function getContext($uiStorageTime = 0)
 {
     $data = array();
     if ($this->user) {
         $data['user'] = array('userId' => $this->user->getId(), 'clientId' => $this->user->getAccountId(), 'userName' => $this->user->getEmail(), 'gravatarHash' => $this->user->getGravatarHash(), 'envId' => $this->getEnvironment() ? $this->getEnvironmentId() : 0, 'envName' => $this->getEnvironment() ? $this->getEnvironment()->name : '', 'envVars' => $this->getEnvironment() ? $this->getEnvironment()->getPlatformConfigValue(Scalr_Environment::SETTING_UI_VARS) : '', 'type' => $this->user->getType(), 'settings' => [Scalr_Account_User::VAR_SSH_CONSOLE_LAUNCHER => $this->user->getVar(Scalr_Account_User::VAR_SSH_CONSOLE_LAUNCHER)]);
         if ($uiStorageTime > 0 && $uiStorageTime < $this->user->getSetting(Scalr_Account_User::SETTING_UI_STORAGE_TIME) && !Scalr_Session::getInstance()->isVirtual()) {
             $data['user']['uiStorage'] = $this->user->getVar(Scalr_Account_User::VAR_UI_STORAGE);
         }
         $envVars = json_decode($data['user']['envVars'], true);
         $betaMode = $envVars && $envVars['beta'] == 1;
         if (!$this->user->isAdmin()) {
             $data['flags'] = [];
             if ($this->user->getAccountId() != 0) {
                 $data['user']['userIsTrial'] = $this->user->getAccount()->getSetting(Scalr_Account::SETTING_IS_TRIAL) == '1' ? true : false;
             }
             $data['flags']['billingExists'] = \Scalr::config('scalr.billing.enabled');
             $data['flags']['showDeprecatedFeatures'] = \Scalr::config('scalr.ui.show_deprecated_features');
             $data['flags']['wikiUrl'] = \Scalr::config('scalr.ui.wiki_url');
             $data['flags']['supportUrl'] = \Scalr::config('scalr.ui.support_url');
             if ($data['flags']['supportUrl'] == '/core/support') {
                 $data['flags']['supportUrl'] .= '?X-Requested-Token=' . Scalr_Session::getInstance()->getToken();
             }
             $data['acl'] = $this->request->getAclRoles()->getAllowedArray(true);
             if (!$this->user->isAccountOwner()) {
                 $data['user']['accountOwnerName'] = $this->user->getAccount()->getOwner()->getEmail();
             }
             $data['environments'] = $this->user->getEnvironments();
             if ($this->user->isAccountOwner()) {
                 if (!$this->user->getAccount()->getSetting(Scalr_Account::SETTING_DATE_ENV_CONFIGURED)) {
                     $data['flags']['needEnvConfig'] = true;
                 }
             }
             if ($this->request->getScope() == 'environment') {
                 $sql = 'SELECT id, name FROM farms WHERE env_id = ?';
                 $args = [$this->getEnvironmentId()];
                 list($sql, $args) = $this->request->prepareFarmSqlQuery($sql, $args);
                 $sql .= ' ORDER BY name';
                 $data['farms'] = $this->db->getAll($sql, $args);
                 if ($this->getEnvironment() && $this->user->isTeamOwner()) {
                     $data['user']['isTeamOwner'] = true;
                 }
             }
         }
         //OS
         $data['os'] = [];
         foreach (Os::find([['status' => Os::STATUS_ACTIVE]]) as $os) {
             /* @var $os Os */
             $data['os'][] = ['id' => $os->id, 'family' => $os->family, 'name' => $os->name, 'generation' => $os->generation, 'version' => $os->version];
         }
         $data['platforms'] = [];
         $allowedClouds = (array) \Scalr::config('scalr.allowed_clouds');
         foreach (SERVER_PLATFORMS::getList() as $platform => $platformName) {
             if ($this->user->getAccountId() == 263) {
                 array_push($allowedClouds, SERVER_PLATFORMS::VERIZON);
             }
             if (!in_array($platform, $allowedClouds) && !$this->request->getHeaderVar('Interface-Beta')) {
                 continue;
             }
             $data['platforms'][$platform] = array('public' => PlatformFactory::isPublic($platform), 'enabled' => $this->user->isAdmin() || $this->request->getScope() != 'environment' ? true : !!$this->environment->isPlatformEnabled($platform), 'name' => $platformName);
             if (!($this->user->isAdmin() || $this->request->getScope() != 'environment')) {
                 if ($platform == SERVER_PLATFORMS::EC2 && $this->environment->status == Scalr_Environment::STATUS_INACTIVE && $this->environment->getPlatformConfigValue('system.auto-disable-reason')) {
                     $data['platforms'][$platform]['config'] = array('autoDisabled' => true);
                 }
                 if (PlatformFactory::isOpenstack($platform) && $data['platforms'][$platform]['enabled']) {
                     $data['platforms'][$platform]['config'] = array(OpenstackPlatformModule::EXT_SECURITYGROUPS_ENABLED => PlatformFactory::NewPlatform($platform)->getConfigVariable(OpenstackPlatformModule::EXT_SECURITYGROUPS_ENABLED, $this->getEnvironment(), false), OpenstackPlatformModule::EXT_LBAAS_ENABLED => PlatformFactory::NewPlatform($platform)->getConfigVariable(OpenstackPlatformModule::EXT_LBAAS_ENABLED, $this->getEnvironment(), false), OpenstackPlatformModule::EXT_FLOATING_IPS_ENABLED => PlatformFactory::NewPlatform($platform)->getConfigVariable(OpenstackPlatformModule::EXT_FLOATING_IPS_ENABLED, $this->getEnvironment(), false), OpenstackPlatformModule::EXT_CINDER_ENABLED => PlatformFactory::NewPlatform($platform)->getConfigVariable(OpenstackPlatformModule::EXT_CINDER_ENABLED, $this->getEnvironment(), false), OpenstackPlatformModule::EXT_SWIFT_ENABLED => PlatformFactory::NewPlatform($platform)->getConfigVariable(OpenstackPlatformModule::EXT_SWIFT_ENABLED, $this->getEnvironment(), false));
                 }
             }
         }
         $data['flags']['uiStorageTime'] = $this->user->getSetting(Scalr_Account_User::SETTING_UI_STORAGE_TIME);
         $data['flags']['uiStorage'] = $this->user->getVar(Scalr_Account_User::VAR_UI_STORAGE);
         $data['flags']['allowManageAnalytics'] = (bool) Scalr::isAllowedAnalyticsOnHostedScalrAccount($this->environment->clientId);
         $data['scope'] = $this->request->getScope();
         if ($this->request->getScope() == 'environment') {
             $governance = new Scalr_Governance($this->getEnvironmentId());
             $data['governance'] = $governance->getValues(true);
         }
     }
     if ($this->user) {
         $data['tags'] = Tag::getAll($this->user->getAccountId());
     }
     $data['flags']['authMode'] = $this->getContainer()->config->get('scalr.auth_mode');
     $data['flags']['recaptchaPublicKey'] = $this->getContainer()->config->get('scalr.ui.recaptcha.public_key');
     $data['flags']['specialToken'] = Scalr_Session::getInstance()->getToken();
     $data['flags']['hostedScalr'] = (bool) Scalr::isHostedScalr();
     $data['flags']['analyticsEnabled'] = $this->getContainer()->analytics->enabled;
     $data['flags']['apiEnabled'] = (bool) \Scalr::config('scalr.system.api.enabled');
     return $data;
 }