net_tcp_client 2.2.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/test/address_test.rb DELETED
@@ -1,91 +0,0 @@
1
- require_relative 'test_helper'
2
- require 'ipaddr'
3
-
4
- class Net::TCPClient::AddressTest < Minitest::Test
5
- describe Net::TCPClient::Address do
6
- describe '.ip_addresses' do
7
- it 'returns the ip addresses for a known DNS' do
8
- ips = Net::TCPClient::Address.ip_addresses('google.com')
9
- assert ips.count > 0
10
- ips.each do |ip|
11
- # Validate IP Addresses
12
- IPAddr.new(ip)
13
- end
14
- end
15
-
16
- it 'returns an ip address' do
17
- ips = Net::TCPClient::Address.ip_addresses('127.0.0.1')
18
- assert_equal 1, ips.count
19
- assert_equal '127.0.0.1', ips.first
20
- end
21
- end
22
-
23
- describe '.addresses' do
24
- it 'returns one address for a known DNS' do
25
- addresses = Net::TCPClient::Address.addresses('localhost', 80)
26
- assert_equal 1, addresses.count, addresses.ai
27
- address = addresses.first
28
- assert_equal 80, address.port
29
- assert_equal '127.0.0.1', address.ip_address
30
- assert_equal 'localhost', address.host_name
31
- end
32
-
33
- it 'returns addresses for a DNS with mutiple IPs' do
34
- addresses = Net::TCPClient::Address.addresses('google.com', 80)
35
- assert addresses.count > 0
36
- addresses.each do |address|
37
- # Validate IP Addresses
38
- IPAddr.new(address.ip_address)
39
- assert_equal 80, address.port
40
- assert_equal 'google.com', address.host_name
41
- end
42
- end
43
-
44
- it 'returns an ip address' do
45
- addresses = Net::TCPClient::Address.addresses('127.0.0.1', 80)
46
- assert_equal 1, addresses.count
47
- address = addresses.first
48
- assert_equal 80, address.port
49
- assert_equal '127.0.0.1', address.ip_address
50
- assert_equal '127.0.0.1', address.host_name
51
- end
52
- end
53
-
54
- describe '.addresses_for_server_name' do
55
- it 'returns addresses for server name' do
56
- addresses = Net::TCPClient::Address.addresses_for_server_name('localhost:80')
57
- assert_equal 1, addresses.count, addresses.ai
58
- address = addresses.first
59
- assert_equal 80, address.port
60
- assert_equal '127.0.0.1', address.ip_address
61
- assert_equal 'localhost', address.host_name
62
- end
63
-
64
- it 'returns an ip address' do
65
- addresses = Net::TCPClient::Address.addresses_for_server_name('127.0.0.1:80')
66
- assert_equal 1, addresses.count
67
- address = addresses.first
68
- assert_equal 80, address.port
69
- assert_equal '127.0.0.1', address.ip_address
70
- assert_equal '127.0.0.1', address.host_name
71
- end
72
- end
73
-
74
- describe '.new' do
75
- it 'creates an address' do
76
- address = Net::TCPClient::Address.new('host_name', 'ip_address', '2000')
77
- assert_equal 'host_name', address.host_name
78
- assert_equal 'ip_address', address.ip_address
79
- assert_equal 2000, address.port
80
- end
81
- end
82
-
83
- describe '#to_s' do
84
- it 'returns a string of the address' do
85
- address = Net::TCPClient::Address.new('host_name', 'ip_address', '2000')
86
- assert_equal 'host_name[ip_address]:2000', address.to_s
87
- end
88
- end
89
-
90
- end
91
- end
@@ -1,42 +0,0 @@
1
- require_relative '../test_helper'
2
- class Net::TCPClient::Policy::CustomTest < Minitest::Test
3
- describe Net::TCPClient::Policy::Custom do
4
- describe '#each' do
5
- before do
6
- @proc = -> addresses, count do
7
- addresses[count - 1]
8
- end
9
- end
10
-
11
- it 'must return one server, once' do
12
- servers = ['localhost:80']
13
- policy = Net::TCPClient::Policy::Custom.new(servers, @proc)
14
- collected = []
15
- policy.each { |address| collected << address }
16
- assert_equal 1, collected.size
17
- address = collected.first
18
- assert_equal 80, address.port
19
- assert_equal 'localhost', address.host_name
20
- assert_equal '127.0.0.1', address.ip_address
21
- end
22
-
23
- it 'must return the servers in the supplied order' do
24
- servers = %w(localhost:80 127.0.0.1:2000 lvh.me:2100)
25
- policy = Net::TCPClient::Policy::Custom.new(servers, @proc)
26
- names = []
27
- policy.each { |address| names << address.host_name }
28
- assert_equal %w(localhost 127.0.0.1 lvh.me), names
29
- end
30
-
31
- it 'must handle an empty list of servers' do
32
- servers = []
33
- policy = Net::TCPClient::Policy::Custom.new(servers, @proc)
34
- names = []
35
- policy.each { |address| names << address.host_name }
36
- assert_equal [], names
37
- end
38
- end
39
-
40
- end
41
- end
42
-
@@ -1,36 +0,0 @@
1
- require_relative '../test_helper'
2
- class Net::TCPClient::Policy::OrderedTest < Minitest::Test
3
- describe Net::TCPClient::Policy::Ordered do
4
- describe '#each' do
5
- it 'must return one server, once' do
6
- servers = ['localhost:80']
7
- policy = Net::TCPClient::Policy::Ordered.new(servers)
8
- collected = []
9
- policy.each { |address| collected << address }
10
- assert_equal 1, collected.size
11
- address = collected.first
12
- assert_equal 80, address.port
13
- assert_equal 'localhost', address.host_name
14
- assert_equal '127.0.0.1', address.ip_address
15
- end
16
-
17
- it 'must return the servers in the supplied order' do
18
- servers = %w(localhost:80 127.0.0.1:2000 lvh.me:2100)
19
- policy = Net::TCPClient::Policy::Ordered.new(servers)
20
- names = []
21
- policy.each { |address| names << address.host_name }
22
- assert_equal %w(localhost 127.0.0.1 lvh.me), names
23
- end
24
-
25
- it 'must handle an empty list of servers' do
26
- servers = []
27
- policy = Net::TCPClient::Policy::Ordered.new(servers)
28
- names = []
29
- policy.each { |address| names << address.host_name }
30
- assert_equal [], names
31
- end
32
- end
33
-
34
- end
35
- end
36
-
@@ -1,45 +0,0 @@
1
- require_relative '../test_helper'
2
- class Net::TCPClient::Policy::RandomTest < Minitest::Test
3
- describe Net::TCPClient::Policy::Random do
4
- describe '#each' do
5
- it 'must return one server, once' do
6
- servers = ['localhost:80']
7
- policy = Net::TCPClient::Policy::Random.new(servers)
8
- collected = []
9
- policy.each { |address| collected << address }
10
- assert_equal 1, collected.size
11
- address = collected.first
12
- assert_equal 80, address.port
13
- assert_equal 'localhost', address.host_name
14
- assert_equal '127.0.0.1', address.ip_address
15
- end
16
-
17
- it 'must return the servers in random order' do
18
- servers = %w(localhost:80 127.0.0.1:2000 lvh.me:2100)
19
- policy = Net::TCPClient::Policy::Random.new(servers)
20
-
21
- names = []
22
- # It is possible the random order is the supplied order.
23
- # Keep retrying until the order is different.
24
- 3.times do
25
- policy.each { |address| names << address.host_name }
26
- break if names != %w(localhost 127.0.0.1 lvh.me)
27
- names = []
28
- end
29
-
30
- refute_equal %w(localhost 127.0.0.1 lvh.me), names
31
- assert_equal %w(localhost 127.0.0.1 lvh.me).sort, names.sort
32
- end
33
-
34
- it 'must handle an empty list of servers' do
35
- servers = []
36
- policy = Net::TCPClient::Policy::Random.new(servers)
37
- names = []
38
- policy.each { |address| names << address.host_name }
39
- assert_equal [], names
40
- end
41
- end
42
-
43
- end
44
- end
45
-
@@ -1,160 +0,0 @@
1
- require 'socket'
2
- require 'openssl'
3
- require 'bson'
4
- require 'semantic_logger'
5
-
6
- # Read the bson document, returning nil if the IO is closed
7
- # before receiving any data or a complete BSON document
8
- def read_bson_document(io)
9
- bytebuf = BSON::ByteBuffer.new
10
- # Read 4 byte size of following BSON document
11
- bytes = io.read(4)
12
- return unless bytes
13
- # Read BSON document
14
- sz = bytes.unpack("V")[0]
15
- bytebuf.put_bytes(bytes)
16
- bytes = io.read(sz - 4)
17
- return unless bytes
18
- bytebuf.put_bytes(bytes)
19
- return Hash.from_bson(bytebuf)
20
- end
21
-
22
- def ssl_file_path(name)
23
- File.join(File.dirname(__FILE__), 'ssl_files', name)
24
- end
25
-
26
- # Simple single threaded server for testing purposes using a local socket
27
- # Sends and receives BSON Messages
28
- class SimpleTCPServer
29
- include SemanticLogger::Loggable
30
- attr_accessor :thread, :server
31
- attr_reader :port, :name, :ssl
32
-
33
- def initialize(options = {})
34
- @port = (options[:port] || 2000).to_i
35
- @name = options[:name] || 'tcp'
36
- @ssl = options[:ssl] || false
37
- start
38
- end
39
-
40
- def start
41
- tcp_server = TCPServer.open(port)
42
-
43
- if ssl
44
- context = OpenSSL::SSL::SSLContext.new.tap do |context|
45
- context.set_params(ssl)
46
- context.servername_cb = proc {|socket, name|
47
- if name == 'localhost'
48
- OpenSSL::SSL::SSLContext.new.tap do |new_context|
49
- new_context.cert = OpenSSL::X509::Certificate.new(File.open(ssl_file_path('localhost-server.pem')))
50
- new_context.key = OpenSSL::PKey::RSA.new(File.open(ssl_file_path('localhost-server-key.pem')))
51
- new_context.ca_file = ssl_file_path('ca.pem')
52
- end
53
- else
54
- OpenSSL::SSL::SSLContext.new.tap do |new_context|
55
- new_context.cert = OpenSSL::X509::Certificate.new(File.open(ssl_file_path('no-sni.pem')))
56
- new_context.key = OpenSSL::PKey::RSA.new(File.open(ssl_file_path('no-sni-key.pem')))
57
- new_context.ca_file = ssl_file_path('ca.pem')
58
- end
59
- end
60
- }
61
- end
62
- tcp_server = OpenSSL::SSL::SSLServer.new(tcp_server, context)
63
- end
64
-
65
- self.server = tcp_server
66
- self.thread = Thread.new do
67
- begin
68
- loop do
69
- logger.debug 'Waiting for a client to connect'
70
-
71
- # Wait for a client to connect
72
- on_request(server.accept)
73
- end
74
- rescue IOError, Errno::EBADF => exc
75
- logger.info('Thread terminated', exc)
76
- end
77
- end
78
- end
79
-
80
- def stop
81
- if thread
82
- thread.kill
83
- thread.join
84
- self.thread = nil
85
- end
86
- begin
87
- server.close if server
88
- rescue IOError
89
- end
90
- end
91
-
92
- # Called for each message received from the client
93
- # Returns a Hash that is sent back to the caller
94
- def on_message(message)
95
- case message['action']
96
- when 'test1'
97
- {'result' => 'test1'}
98
- when 'servername'
99
- {'result' => @name}
100
- when 'sleep'
101
- sleep message['duration'] || 1
102
- {'result' => 'sleep'}
103
- when 'fail'
104
- if message['attempt'].to_i >= 2
105
- {'result' => 'fail'}
106
- else
107
- nil
108
- end
109
- else
110
- {'result' => "Unknown action: #{message['action']}"}
111
- end
112
- end
113
-
114
- # Called for each client connection
115
- # In a real server each request would be handled in a separate thread
116
- def on_request(client)
117
- logger.debug 'Client connected, waiting for data from client'
118
-
119
- while (request = read_bson_document(client)) do
120
- logger.debug 'Received request', request
121
- break unless request
122
-
123
- if reply = on_message(request)
124
- logger.debug 'Sending Reply'
125
- logger.trace 'Reply', reply
126
- client.print(reply.to_bson)
127
- else
128
- logger.debug 'Closing client since no reply is being sent back'
129
- server.close
130
- client.close
131
- logger.debug 'Server closed'
132
- start
133
- logger.debug 'Server Restarted'
134
- break
135
- end
136
- end
137
- # Disconnect from the client
138
- client.close
139
- logger.debug 'Disconnected from the client'
140
- end
141
-
142
- end
143
-
144
- if $0 == __FILE__
145
- SemanticLogger.default_level = :trace
146
- SemanticLogger.add_appender(STDOUT)
147
- server = SimpleTCPServer.new(port: 2000)
148
-
149
- # For SSL:
150
- # server = SimpleTCPServer.new(
151
- # port: 2000,
152
- # ssl: {
153
- # cert: ssl_file_path('localhost-server.pem'),
154
- # key: ssl_file_path('localhost-server-key.pem'),
155
- # ca_file: ssl_file_path('ca.pem')
156
- # }
157
- # )
158
-
159
- server.thread.join
160
- end
@@ -1,27 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEowIBAAKCAQEA2kw7kGhFXbi4KG4L7G5m0cUbbGYK98Y7A2v1h6HMM57qdN1+
3
- obz3RzFJRWV2xmzQ6uNBdJU8tkVDnvNOAwusHkTVMwUpgV+TK94U93NtVMl1Q9ah
4
- sGEe2s+JzMucHnGwLMDKKp9C8n3ILcpVaviQUgOqqc1JbO3IcaRUgm7RbN5BStrX
5
- 9IPe5N06VLhOjdoKjb1MtZ6HfP6y3oAo1WnkY/BI7Vs7T52sqlWPtLYvUEq91riy
6
- ZUgdlcSi4vEGuT/r7IU52xtnjrPxfqcrZJHULjyylCRqrXCUU61umEIksQWtHYEH
7
- Q2j+lvI+fX+m4g1bwCmZyyX9wJr3a7db6+9XgwIDAQABAoIBAG1KW0vaGFhqwbBk
8
- IA4X29xL7YXgtL8F/MeixkNIav6xIjquJdb9z2NSNpfKy6NeGV5vtnaSvNmYZdlv
9
- gHAf6OUimwa3H+eInRsKTb7xiBw53D7BdyPiC9uKqjfg/GF1k7lkMBMUtyTGenEK
10
- aqdqmH6nHUtz3r3tcjwLBNBkgO8ajgy+Tld9XBmgbUYMJCYblS/1ZVl1dh4L9qOi
11
- yjHhTZ87X+0pVujWzspw/lgt00S+AIBMWLkYhSaW11LgXsR7837ps9F62fNHfArY
12
- 0Zad7LtzjSNqJJ/lNYxyip3fo3UcrpCuhuIKOudNC1FGgmUdKQlMpOBT1E71yvEX
13
- W9BWA8ECgYEA8+nR7cGo9kDu72CgxGSwmU8DFhPD1ArzdUBElhaWd2vA4lsjlLNv
14
- 0lS0UVLDb6Nd3fWZxJEftp89xx/j1PcPVlMPcg3/yrOrfx7K6o7cz3Ji49j+6kgo
15
- eZ6fhnGtNQ0oZ8BHyNp59lVmFJpZJPOAmMGk6YqzcIa3LX87IK5aE6ECgYEA5R12
16
- 5xRPxDQyxiXCBn7lLZZfmnScR0NewjB/lDz8DFGVX/9adMaQLgsCvg62XxA+99B6
17
- 0upQeQI+8BjJAWC74tfIcpFgVuhFIVhrB//tzvUp/J3MzB3EdgsO1bXyQ6AmPX8j
18
- qod6i4BlJ8E6P/V3U+Tr7TgF+G5L+x4w7rnl2KMCgYBCyIqKJrQ0eKLzN+nM3CTe
19
- VRvrN44uyLDQMcCVt6mLGR2+3GVpmZfMZxTYD2kjb/+LfmuTvoiIYCFyG/Etple0
20
- sxlPiTW4MmmKbMvyXRtoUVFyQT/KtecfJadYEFf0Zp3himwdOnSaVdeVXI176JAV
21
- Qy/8IdXvwXL2KhfuYs6XAQKBgQDQg2w/CaE+szKyWpKmTr5MKtp/OzkvMgT/Phwd
22
- 0RKiM216nG66cCuve53XUpRvF932sunVIiJyvrSA1k24z0yvOirW+a9v6JthqZJf
23
- CXBoNX8sxIAqE71EoPOzU49UNGAY/6h5/ips40EsWRKmOsOKuoBst9vXKKpFtEhc
24
- OxsPeQKBgBqkylA/tOaiWivaL9JTEgPkqOBu1GsuPihT7UnCqVCrRmWysrXXjbUp
25
- C+AlxkRmKIgHhGPyCdVxWW7RB8JZ1mHbuxeRU5Es9v/yLLRyEuCgPuFx3Odi7sLv
26
- SGHEzK5lu4MlZIkonsEJwti/FFguGQpktrH8ltpE7wdw7Ik+zb4z
27
- -----END RSA PRIVATE KEY-----
@@ -1,19 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDFjCCAf4CCQD/szfmoKirZDANBgkqhkiG9w0BAQsFADBMMQswCQYDVQQGEwJV
3
- UzERMA8GA1UECAwITmVicmFza2ExDjAMBgNVBAcMBU9tYWhhMRowGAYDVQQKDBFu
4
- ZXRfdGNwX2NsaWVudF9jYTAgFw0xOTAxMDkxNTE4NDRaGA8yMTE4MTIxNjE1MTg0
5
- NFowTDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5lYnJhc2thMQ4wDAYDVQQHDAVP
6
- bWFoYTEaMBgGA1UECgwRbmV0X3RjcF9jbGllbnRfY2EwggEiMA0GCSqGSIb3DQEB
7
- AQUAA4IBDwAwggEKAoIBAQDaTDuQaEVduLgobgvsbmbRxRtsZgr3xjsDa/WHocwz
8
- nup03X6hvPdHMUlFZXbGbNDq40F0lTy2RUOe804DC6weRNUzBSmBX5Mr3hT3c21U
9
- yXVD1qGwYR7az4nMy5wecbAswMoqn0LyfcgtylVq+JBSA6qpzUls7chxpFSCbtFs
10
- 3kFK2tf0g97k3TpUuE6N2gqNvUy1nod8/rLegCjVaeRj8EjtWztPnayqVY+0ti9Q
11
- Sr3WuLJlSB2VxKLi8Qa5P+vshTnbG2eOs/F+pytkkdQuPLKUJGqtcJRTrW6YQiSx
12
- Ba0dgQdDaP6W8j59f6biDVvAKZnLJf3Amvdrt1vr71eDAgMBAAEwDQYJKoZIhvcN
13
- AQELBQADggEBAHSf+IOhDgw64nUuXZYVIK4TQDzqIpnZ8+djkvfqck+WcQmXQ5Vj
14
- G4/8kXgghpA3N63XARb0QOpHk4yvPZKCx+k4xCUbbsvZClAS0ZMQlHpJKLF0xSiA
15
- J9KaOj7HR5044To/McIHllQ812miWqmLtq6eaCxxzNILjzs1fVh4OXHM1ZbCyJGt
16
- 8ekvy1GFNoJFaNvcUvPLFi+PmfArpooVRhON1aeMgk8+pgOJNCakKv7/+QFKPxPC
17
- dWBVr/roSf9w1UbVEGNTUCbBjHVhlyeRRtMtzIfPfo8O/85Ie+P3JPEfS9hYmdb4
18
- At7Gd0dMDALWDPxf6OIxT/LU4ryuf0SDmJE=
19
- -----END CERTIFICATE-----
@@ -1,27 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEogIBAAKCAQEAryTR52Sowr8yOY1uBgav9VrXF6bXblh4K+aIo+LZk6qjCccv
3
- d/Z8+nx4HER7I3ZqKnEJVDFwgJTIMIrK6mnrP15B8k4aT/N5mWdJzy3BbhV6pa57
4
- IaZerJUaFZYrwL0fSJX8o4iJ5z7WTPkp8J+QHqsyHwdi42gcBW4eHNvPc469dszB
5
- UXdV5IWy0kRw/KYEAqz57d/UQ07kZNi8d/eowc20+CNYNL1Yudbh9zENxa90cVxr
6
- ImQ6mAaWP8X8jYbTbYyshzrhp453N3lGyt9YrZ347IYIdyRQiD57ZEvd+/RsSUsN
7
- D17cKoqxu1mjL9CZV8Mc6AP5LkaAJeNhyzOqEQIDAQABAoIBAFyGeRVjCfyIAUKC
8
- QsOQONjHeqYWD+1Nc37NtRXPO95U4PjDb4JSh0fVBab5Tow3fHKbcLA3xhVHhFKQ
9
- oA4ikpLReslFFYVzPKQb+tQmee9sDXUFririt1U5F6SbxtV1k9dG1UaXVTMC8TeM
10
- 0ek6gmqRSlM2FbnJQDRmLiZUwU1sFVUdpqojxHR+QpIdntPIeW2+Cu/bF8y+ApKt
11
- 7MqvsLEfCCWdo5f5+ALqz1lW90eJHc0KxCogSRsTGt00rJd8ddrgtyiNyWi8NJQg
12
- pRC5e+N7/m3miVyAuMz5FUUGy92LAO7PqWJOCT8P51ktwL2Hc/HXoQvbgWnDey1N
13
- 9HL5zYECgYEA1A828fPhiRqsDuXOZOYRfXPDa3jcvV0IeBw9e0cLOT4CS9bKrri/
14
- gR5XHAsPoIlAFrgdjPuDLubVb+PaIk0rrZLSjkqxymoz5t/wVmwKcRO7xh1/wYRv
15
- dMfIZA0huubt//b+QiOtPdC3BfrphdJZWRQAvQcKt1phfclaIsmM2pkCgYEA029m
16
- oxOB58KoYzFMlrQFe/9wt2RNE+na8mDxvY5aNrE2INrpTB0sHWbNaN+WeK2yEPER
17
- MVCIy3x0lbozNR/Mm8QrsR5+VwhPoCXtC/wdpMuWf3UH2aPiYcP3i8haiFH52X1u
18
- 2UAyyGLHsHnYZvyKvvJDoeH5paOmCKQDqlU7rjkCgYANWOvPbNdMRuZ/hY1pImYF
19
- bGznbdMPBDUNQlHIWZ9mOfXxChL1zmEXYm5/MF8Kbrke9PW/MvF92T+j7EaFlC/k
20
- m/IuzJrGL8sWhA/fkKtTlLdj7+Vjq89MHWsKiR0PY4ulacl1JkO4OVPbx4A9UREY
21
- nz6wpynQgprSTQMkX2VDOQKBgHELvvSyGWKw0Rc35Jsu5T/G850aI5viDQ5KhvWy
22
- hsl3NlmaseHgNxYBQRIxeWJMfEhSm76iMIGbqTnktDxTJDKkUDgC9cnSx7/4hyVB
23
- Rxg1QeIj0G6tEPz0qgYyuTTpn4yJZBsEGCLLrbjNbMajgAtXvJFxIOlO9hbomo0X
24
- xTEBAoGARjhBRElqj2VRse+eD8+xCVaBm6i+Gvo66626RLNnLF8GtZrX6othpw8x
25
- m9LyZ8ybLfzvyGwg3uqsaCOtP9J9f8Ln2cm+AViqw/75A6n2f/F9UucmZfzvEamZ
26
- 9dc7dN3FfR/1OWc9389Mx8in/+6QLGOaQwUu2uAsSjhRwbcTq/o=
27
- -----END RSA PRIVATE KEY-----
@@ -1,19 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDJzCCAg8CCQDRgr9ZEAyEkTANBgkqhkiG9w0BAQUFADBMMQswCQYDVQQGEwJV
3
- UzERMA8GA1UECAwITmVicmFza2ExDjAMBgNVBAcMBU9tYWhhMRowGAYDVQQKDBFu
4
- ZXRfdGNwX2NsaWVudF9jYTAgFw0xOTAxMDkxNTE5NTRaGA8yMTE4MTIxNjE1MTk1
5
- NFowXTELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5lYnJhc2thMQ4wDAYDVQQHDAVP
6
- bWFoYTEXMBUGA1UECgwObmV0X3RjcF9jbGllbnQxEjAQBgNVBAMMCWxvY2FsaG9z
7
- dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK8k0edkqMK/MjmNbgYG
8
- r/Va1xem125YeCvmiKPi2ZOqownHL3f2fPp8eBxEeyN2aipxCVQxcICUyDCKyupp
9
- 6z9eQfJOGk/zeZlnSc8twW4VeqWueyGmXqyVGhWWK8C9H0iV/KOIiec+1kz5KfCf
10
- kB6rMh8HYuNoHAVuHhzbz3OOvXbMwVF3VeSFstJEcPymBAKs+e3f1ENO5GTYvHf3
11
- qMHNtPgjWDS9WLnW4fcxDcWvdHFcayJkOpgGlj/F/I2G022MrIc64aeOdzd5Rsrf
12
- WK2d+OyGCHckUIg+e2RL3fv0bElLDQ9e3CqKsbtZoy/QmVfDHOgD+S5GgCXjYcsz
13
- qhECAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAT8ZE0WCAhkbwKt4csU8eTRaY3iXn
14
- bEDGaO+q+bVw4KpjmTdf6oIStmrA0v9vxUjB5Ghc8N7F1yQ0mSQ6IgtysFVG3zEp
15
- EUOwNY4EndOxNsTVhKzN/4GIoMNoogjptevkFMWkVMGOA0a1IqbT6Rga/GbGPF+6
16
- 16mgoLz8VfbOYn4SytifFR+8EGbeZxKSRtJFUtYg6sX4q9voQGAhfQXXiDDSXxnl
17
- qug3RxueccvPHvJj3Yn6GyLqVjYyRC9xxildEtKyO932x3wdW/LSnXh8MsfP/EYt
18
- hcDi0ydRutNYCAW+8ZisZdUnDADlA5PelacsaQTe8m3Nn97b+ASYnwyMSw==
19
- -----END CERTIFICATE-----
@@ -1,27 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEpQIBAAKCAQEAyLStTQ8EAeW+VtFFWLGjsTU5ChcjRnc1xlD91evX8Rvc5ZsS
3
- xkbW9zLv30jRjljSmpGZIQR/KRSKLbLfCDfcCCjybOZbu6oTqKFRJ0gb6qKcwIOE
4
- +ZaP6uulfbDnZiOoYIKALtBkXbepi36V6xBYfMcS+mpnRP0YHmxshX3iPH107YWE
5
- 2qev+2tRY4Do899d00+bKFThD4tI3rEvmVJKcer87xx9EyC8WLJhWud2+t2J1gea
6
- ZdpJVNzz3c0ex5vHT1pp6nK+B+H6DuIqT+MyOFuln++q5u6AEOu08tp2sPgTwXtx
7
- powwauq7FVWAhZSjrlr6VMzMNfLAEBYE6bFA9QIDAQABAoIBAQC1bv8qpeRNgs4p
8
- 1UwG/a6oRyClCn2M+b7W4+hTNbwj7bgmp6S1MNyq4pUNF9q3/3uC1xPCUTpSfIrc
9
- /NG5sCVsCvf7kdJjN0BGNG4UQI9b8Fwbe8j9hynah+M2WHEWWC2h8NbHewL/5UOT
10
- In+L217ijWOOlBl+t/zRo9oGYuHdI0JWKfJca99/Jcqrjhrj1pdViDszbiBjwOLV
11
- 0qXnhgDEXnjWSXYVNar0lSgh8Rb8wGsgrypyfoXg832oN3C26pugugH/SR7d6oaD
12
- OY0ySPfsIZi/V2iRkxIJtp6yECf3J4lNBrG2STjcHhZck+HuB/vz5Yk1qQqcfO6X
13
- ObuYrbKBAoGBAOiw+615kwEFWEuCAtWgZzUMrWViO45HbmLGePOBY/nVX/3kAKrb
14
- yhjYgMlzH3ITQUkTNdOYtZ0ZudkIfTITJ+bZK2EhXVgTd7Qi5YsI+fyUqfNf2nWK
15
- mvRtKl12uN5Y7OtVeHrkrrrlN+a1aki+cdH2qSD3MwrtKs+JfKLff9QtAoGBANzP
16
- eOrmgdFcjFoaJcak0iVNG8kke8stUzrc9lAiUbvZ7F8kQ9DW0rkYuoAbzV+SLQcu
17
- hrbFf9RQ4AM5VSP4awQjv0Lj5UTgYF4GrHjsauKeEfMY96txmuW5C/3T1mYitLdl
18
- fs/76S5+oj46/VI2/iIOYxiqLaO9EqEwgP/sQDTpAoGAUHyvgZDU7Xx4zx14d4ZV
19
- TL9G1xPEf/FrWFVIjwoJl+hbnMmaBX+jBzcUTRo6HU5Vvb4cV0WyRFYat9y82W5Q
20
- 1gP2glF1JTsOo8uSVKZVOi3+H0XfndrEwJlmFxAy4A4oXTqiQvgJDHKvBGlqCyF8
21
- 42CLnfCDwlrI/SKUbw4Z/D0CgYEAoTVb22uU5axCz9l9MOzOe+sy2QQo2SprNHNz
22
- 5QdZUuOEfeW1GThtujNCnhsuMpM/Cpo+Qhwo+nJdSh1Geq94Ohp7HbPShBmoYZ1P
23
- uC0qz+6FvkzBLUsQwpz6E0PgqMq305lnHyOUl5xeiT56CdcabPTCBpTgI0X73vDR
24
- jYcHTVkCgYEA1Uj47vC8jV1mBtzIKFfvo4W1tkAm1aSDOApzg0N7JEjvgHbeBqM6
25
- i8dkJ3PgcqxIQ1np+0QTDVjbLgNqCsribJ/djbPDhH/LW9vPP5uUwm10qa7UOJ09
26
- Jrc3b7r+ZQHPjr7upj5fUK1Xcs0oY7yHMuc8oLDNcdDIYqxP/RzjcOY=
27
- -----END RSA PRIVATE KEY-----
@@ -1,20 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDQTCCAikCCQDRgr9ZEAyEkjANBgkqhkiG9w0BAQUFADBMMQswCQYDVQQGEwJV
3
- UzERMA8GA1UECAwITmVicmFza2ExDjAMBgNVBAcMBU9tYWhhMRowGAYDVQQKDBFu
4
- ZXRfdGNwX2NsaWVudF9jYTAgFw0xOTAxMDkxNTIwMDhaGA8yMTE4MTIxNjE1MjAw
5
- OFowdzELMAkGA1UEBhMCVVMxETAPBgNVBAgMCE5lYnJhc2thMQ4wDAYDVQQHDAVP
6
- bWFoYTEXMBUGA1UECgwObmV0X3RjcF9jbGllbnQxLDAqBgNVBAMMI25vLWhvc3Ru
7
- YW1lLXdhcy1naXZlbi1mb3Itc25pbmkuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC
8
- AQ8AMIIBCgKCAQEAyLStTQ8EAeW+VtFFWLGjsTU5ChcjRnc1xlD91evX8Rvc5ZsS
9
- xkbW9zLv30jRjljSmpGZIQR/KRSKLbLfCDfcCCjybOZbu6oTqKFRJ0gb6qKcwIOE
10
- +ZaP6uulfbDnZiOoYIKALtBkXbepi36V6xBYfMcS+mpnRP0YHmxshX3iPH107YWE
11
- 2qev+2tRY4Do899d00+bKFThD4tI3rEvmVJKcer87xx9EyC8WLJhWud2+t2J1gea
12
- ZdpJVNzz3c0ex5vHT1pp6nK+B+H6DuIqT+MyOFuln++q5u6AEOu08tp2sPgTwXtx
13
- powwauq7FVWAhZSjrlr6VMzMNfLAEBYE6bFA9QIDAQABMA0GCSqGSIb3DQEBBQUA
14
- A4IBAQB6hpp37TLk0+Pd9+gP/OE/7s9AEfcFSelTJZguDaDO/LqHxEXbokOKcQi5
15
- g0vGxc/XK7RYdw+eEXzbXazQUTPQ6JAfpH0bVXfTvaFKMefHdcnB0NySnnHl2BfQ
16
- 5cFjqHQwBV6jVIH0q125rC3F1aczDo5kyLk3UyMenY8zoZt8baacChvSqUXDBiSn
17
- /04Pof//O3ky2B3DYyunQJZ1mQNs+FJdO5609BmlPvaoZfiFbMxGQcmV4D+0mQm+
18
- CzxWZ4p8gDPDIO4mzVvDMbrRksg1CdG6WakuX1Vy94pX4JNiJ7e47lvuoWIL6DFp
19
- 5mWIV72Ra4bU5ybNGZlrxLg/6ueD
20
- -----END CERTIFICATE-----