Ejemplo n.º 1
0
 public function xGetWindowsPasswordAction()
 {
     $this->request->restrictAccess(Acl::RESOURCE_SECURITY_RETRIEVE_WINDOWS_PASSWORDS);
     $this->request->defineParams(array('serverId'));
     $dbServer = DBServer::LoadByID($this->getParam('serverId'));
     $this->user->getPermissions()->validate($dbServer);
     if ($dbServer->platform == SERVER_PLATFORMS::EC2) {
         $env = Scalr_Environment::init()->loadById($dbServer->envId);
         $ec2 = $env->aws($dbServer->GetCloudLocation())->ec2;
         $encPassword = $ec2->instance->getPasswordData($dbServer->GetCloudServerID());
         $privateKey = Scalr_SshKey::init()->loadGlobalByFarmId($dbServer->farmId, $dbServer->GetCloudLocation(), $dbServer->platform);
         $password = Scalr_Util_CryptoTool::opensslDecrypt(base64_decode($encPassword->passwordData), $privateKey->getPrivate());
     } elseif (PlatformFactory::isOpenstack($dbServer->platform)) {
         $env = Scalr_Environment::init()->loadById($dbServer->envId);
         $os = $env->openstack($dbServer->platform, $dbServer->GetCloudLocation());
         //TODO:
     } else {
         throw new Exception("Requested operation supported only by EC2");
     }
     $this->response->data(array('password' => $password));
 }
Ejemplo n.º 2
0
 public function xGetWindowsPasswordAction()
 {
     $this->request->restrictAccess(Acl::RESOURCE_SECURITY_RETRIEVE_WINDOWS_PASSWORDS);
     $this->request->defineParams(array('serverId'));
     $dbServer = DBServer::LoadByID($this->getParam('serverId'));
     $this->user->getPermissions()->validate($dbServer);
     if ($dbServer->platform == SERVER_PLATFORMS::EC2) {
         $env = Scalr_Environment::init()->loadById($dbServer->envId);
         $ec2 = $env->aws($dbServer->GetCloudLocation())->ec2;
         $encPassword = $ec2->instance->getPasswordData($dbServer->GetCloudServerID());
         $encPassword = str_replace('\\/', '/', trim($encPassword->passwordData));
     } elseif (PlatformFactory::isOpenstack($dbServer->platform)) {
         if (in_array($dbServer->platform, array(SERVER_PLATFORMS::RACKSPACENG_UK, SERVER_PLATFORMS::RACKSPACENG_US))) {
             $password = $dbServer->GetProperty(OPENSTACK_SERVER_PROPERTIES::ADMIN_PASS);
         } else {
             $env = Scalr_Environment::init()->loadById($dbServer->envId);
             $os = $env->openstack($dbServer->platform, $dbServer->GetCloudLocation());
             //TODO: Check is extension supported
             $encPassword = trim($os->servers->getEncryptedAdminPassword($dbServer->GetCloudServerID()));
         }
     } else {
         throw new Exception("Requested operation supported only by EC2");
     }
     if ($encPassword) {
         $privateKey = Scalr_SshKey::init()->loadGlobalByFarmId($dbServer->envId, $dbServer->farmId, $dbServer->GetCloudLocation(), $dbServer->platform);
         $password = Scalr_Util_CryptoTool::opensslDecrypt(base64_decode($encPassword), $privateKey->getPrivate());
     }
     $this->response->data(array('password' => $password, 'encodedPassword' => $encPassword));
 }