1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00

Update the get_windows_password to return the encrypted password instead of the decrypted one.

This commit is contained in:
Rupak Ganguly 2012-10-04 16:50:51 -04:00
parent 0ed1547a04
commit bbc92cc53d
2 changed files with 18 additions and 34 deletions

View file

@ -158,9 +158,7 @@ module Fog
def windows_password()
requires :id
if self.private_key
connection.get_windows_password(id, self.private_key)
end
connection.get_windows_password(id)
end
def reboot(type = 'SOFT')

View file

@ -3,29 +3,26 @@ module Fog
class HP
class Real
def get_windows_password(server_id, private_key_data)
begin
# get console output assuming that the server is already in active state
log_output = get_console_output(server_id, 400).body['output']
# decrypt the log output to extract the password
encrypted_text = extract_password_from_log(log_output)
if encrypted_text
password = decrypt_using_private_key(encrypted_text, private_key_data)
else
raise "Error in extracting encrypted password from the log."
end
rescue OpenSSL::PKey::RSAError => error
raise "Error in decrypting password. Exception: #{error}"
end
# return the password
password
# Retrieves the encrypted administrator password for a server running Windows.
#
# ==== Parameters
# * server_id<~Integer> - Id of server
#
# ==== Returns
# * password_data<~string>: Encrypted password for a server running Windows
#
def get_windows_password(server_id)
# get console output assuming that the server is already in active state
log_output = get_console_output(server_id, 400).body['output']
# decrypt the log output to extract the encrypted, base64-encoded password
encrypted_password = extract_password_from_log(log_output)
end
end
class Mock
def get_windows_password(server_id, private_key_data)
def get_windows_password(server_id)
# need to mock out the private key as well
private_key = OpenSSL::PKey::RSA.generate(1024)
public_key = private_key.public_key
@ -33,20 +30,9 @@ module Fog
encoded_password = encrypt_using_public_key("Passw0rd", public_key)
if list_servers_detail.body['servers'].detect {|_| _['id'] == server_id}
begin
# mock output for this call get_console_output(server_id, 400).body['output']
log_output = "start junk [cloud-init] Encrypt random password\n-----BEGIN BASE64-ENCODED ENCRYPTED PASSWORD-----\n#{encoded_password}-----END BASE64-ENCODED ENCRYPTED PASSWORD-----\nend junk [cloud-init] Done\n"
encrypted_text = extract_password_from_log(log_output)
if encrypted_text
password = decrypt_using_private_key(encrypted_text, private_key)
else
raise "Error in extracting encrypted password from the log."
end
rescue OpenSSL::PKey::RSAError => error
raise "Error in decrypting password. Exception: #{error}"
end
# return the password should match Passw0rd
password
# mock output for this call get_console_output(server_id, 400).body['output']
log_output = "start junk [cloud-init] Encrypt random password\n-----BEGIN BASE64-ENCODED ENCRYPTED PASSWORD-----\n#{encoded_password}-----END BASE64-ENCODED ENCRYPTED PASSWORD-----\nend junk [cloud-init] Done\n"
encrypted_password = extract_password_from_log(log_output)
else
raise Fog::Compute::HP::NotFound
end