class Vines::Stream::Server::Outbound::Auth
Constants
- FEATURES
- REQUIRED
Public Class Methods
new(stream, success=AuthDialbackResult)
click to toggle source
Calls superclass method
# File lib/vines/stream/server/outbound/auth.rb, line 11 def initialize(stream, success=AuthDialbackResult) super end
Public Instance Methods
node(node)
click to toggle source
# File lib/vines/stream/server/outbound/auth.rb, line 15 def node(node) # We have to remember tls_require for # closing or restarting the stream stream.outbound_tls_required(tls_required?(node)) if stream.dialback_verify_key? @success = Authoritative stream.callback! advance elsif dialback?(node) secret = Kit.auth_token dialback_key = Kit.dialback_key(secret, stream.remote_domain, stream.domain, stream.id) stream.write("<db:result xmlns:db='#{NAMESPACES[:legacy_dialback]}' " \ "from='#{stream.domain}' to='#{stream.remote_domain}'>#{dialback_key}</db:result>") advance stream.router << stream # We need to be discoverable for the dialback connection stream.state.dialback_secret = secret elsif tls?(node) @success = TLSResult stream.write("<starttls xmlns='#{NAMESPACES[:tls]}'/>") advance else raise StreamErrors::NotAuthorized end end
Private Instance Methods
dialback?(node)
click to toggle source
# File lib/vines/stream/server/outbound/auth.rb, line 48 def dialback?(node) dialback = node.xpath('ns:dialback', 'ns' => NAMESPACES[:dialback]).any? features?(node) && dialback end
features?(node)
click to toggle source
# File lib/vines/stream/server/outbound/auth.rb, line 58 def features?(node) node.name == FEATURES && namespace(node) == NAMESPACES[:stream] end
tls?(node)
click to toggle source
# File lib/vines/stream/server/outbound/auth.rb, line 53 def tls?(node) tls = node.xpath('ns:starttls', 'ns' => NAMESPACES[:tls]).any? features?(node) && tls end
tls_required?(node)
click to toggle source
# File lib/vines/stream/server/outbound/auth.rb, line 43 def tls_required?(node) child = node.xpath('ns:starttls', 'ns' => NAMESPACES[:tls]).children.first child && child.name == REQUIRED end