class JumpCloud
Attributes
settings[RW]
Public Class Methods
create_signature(verb, date, system_key)
click to toggle source
# File lib/jumpcloud.rb, line 35 def self.create_signature(verb, date, system_key) signed_string = "#{verb} /api/systems/#{system_key} HTTP/1.1\ndate: #{date}" key = OpenSSL::PKey::RSA.new(File.open("/opt/jc/client.key")) Base64.strict_encode64(key.sign(OpenSSL::Digest::SHA256.new, signed_string)) end
delete_system()
click to toggle source
# File lib/jumpcloud.rb, line 59 def self.delete_system() date = get_date system_key = get_key_from_config signature = create_signature("DELETE", date, system_key) uri = URI.parse("https://console.jumpcloud.com/api/systems/#{system_key}") request = Net::HTTP::Delete.new(uri.request_uri) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request["Authorization"] = "Signature keyId=\"system/#{system_key}\",headers=\"request-line date\",algorithm=\"rsa-sha256\",signature=\"#{signature}\"" request["Date"] = "#{date}" request["accept"] = "application/json" request["Content-Type"] = "application/json" response = http.request(request) end
get_date()
click to toggle source
# File lib/jumpcloud.rb, line 23 def self.get_date Time.now.utc.strftime("+%a, %d %h %Y %H:%M:%S GMT") end
get_key_from_config()
click to toggle source
# File lib/jumpcloud.rb, line 31 def self.get_key_from_config parse_config["systemKey"] end
get_system_data()
click to toggle source
# File lib/jumpcloud.rb, line 74 def self.get_system_data() date = get_date system_key = get_key_from_config signature = create_signature("GET", date, system_key) uri = URI.parse("https://console.jumpcloud.com/api/systems/#{system_key}") request = Net::HTTP.new(uri.host, uri.port) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri) request["Authorization"] = "Signature keyId=\"system/#{system_key}\",headers=\"request-line date\",algorithm=\"rsa-sha256\",signature=\"#{signature}\"" request["Date"] = "#{date}" request["accept"] = "application/json" response = http.request(request) return JSON.parse(response.body) end
new(args=self.class.get_system_data())
click to toggle source
# File lib/jumpcloud.rb, line 10 def initialize(args=self.class.get_system_data()) @settings = args end
parse_config()
click to toggle source
# File lib/jumpcloud.rb, line 27 def self.parse_config JSON.parse( IO.read("/opt/jc/jcagent.conf") ) end
send_to_server(data)
click to toggle source
# File lib/jumpcloud.rb, line 91 def self.send_to_server(data) date = get_date system_key = get_key_from_config signature = create_signature("PUT", date, system_key) uri = URI.parse("https://console.jumpcloud.com/api/systems/#{system_key}") request = Net::HTTP::Put.new(uri.request_uri) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request["Authorization"] = "Signature keyId=\"system/#{system_key}\",headers=\"request-line date\",algorithm=\"rsa-sha256\",signature=\"#{signature}\"" request["Date"] = "#{date}" request["accept"] = "application/json" request["Content-Type"] = "application/json" request.body = JSON.generate(data) response = http.request(request) end
set_sshPassEnabled()
click to toggle source
# File lib/jumpcloud.rb, line 53 def self.set_sshPassEnabled() system_data = get_system_data() system_data["allowSshPasswordAuthentication"] = true send_to_server(system_data) end
set_system_name(system_name)
click to toggle source
# File lib/jumpcloud.rb, line 47 def self.set_system_name(system_name) system_data = get_system_data() system_data["displayName"] = system_name send_to_server(system_data) end
Public Instance Methods
update_settings(options)
click to toggle source
# File lib/jumpcloud.rb, line 14 def update_settings(options) data = {} data.merge!(@settings) options.each do |k,v| data[k] = v if @settings.has_key?(k) end JumpCloud.send_to_server(data) end