net_tcp_client 2.2.0 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
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-----