~singpolyma/sgx-jmp

ref: 9827b8b48336d249637f88d6921d613ad12b16f1 sgx-jmp/lib/proxied_jid.rb -rw-r--r-- 534 bytes
9827b8b4Stephen Paul Weber Allow finishing adming command 11 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# frozen_string_literal: true

require "delegate"
require "blather"

class ProxiedJID < SimpleDelegator
	ESCAPED = /20|22|26|27|2f|3a|3c|3e|40|5c/.freeze

	def unproxied
		Blather::JID.new(
			node.gsub(/\\(#{ESCAPED})/) { |s|
				s[1..-1].to_i(16).chr
			}
		)
	end

	def self.proxy(jid, suffix=CONFIG[:upstream_domain])
		jid = Blather::JID.new(jid)
		ProxiedJID.new(Blather::JID.new(
			jid.stripped.to_s
				.gsub(/([ "&'\/:<>@]|\\(?=#{ESCAPED}))/) { |s|
					"\\#{s.ord.to_s(16)}"
				},
			suffix,
			jid.resource
		))
	end
end