module Vines::Kit

A module for utility methods with no better home.

Public Class Methods

auth_token() click to toggle source

Generates a random 128 character authentication token.

# File lib/vines/kit.rb, line 19
def self.auth_token
  SecureRandom.hex(64)
end
dialback_key(receiving_server, originating_server, stream_id) click to toggle source

Generates dialback key as described in XEP-0185

# File lib/vines/kit.rb, line 36
def self.dialback_key(receiving_server, originating_server, stream_id)
  sha = Digest::SHA2.new(256)
  sha.update("#{receiving_server} #{originating_server} #{stream_id}")
  sha.to_s
end
hmac(key, data) click to toggle source

Create a hex-encoded, SHA-512 HMAC of the data, using the secret key.

# File lib/vines/kit.rb, line 7
def self.hmac(key, data)
  digest = OpenSSL::Digest::Digest.new("sha512")
  OpenSSL::HMAC.hexdigest(digest, key, data)
end
local_ip() click to toggle source
# File lib/vines/kit.rb, line 23
def self.local_ip
  orig = Socket.do_not_reverse_lookup
  Socket.do_not_reverse_lookup = true
  UDPSocket.open do |s|
    s.connect '64.223.187.99', 1
    s.addr.last
  end

  ensure
    Socket.do_not_reverse_lookup = orig
end
uuid() click to toggle source

Generates a random uuid per rfc 4122 that's useful for including in stream, iq, and other xmpp stanzas.

# File lib/vines/kit.rb, line 14
def self.uuid
  SecureRandom.uuid
end