Last active
August 29, 2015 14:05
-
-
Save brianwells/5a90abb94f3f8a295681 to your computer and use it in GitHub Desktop.
Test to show Lumberjack client UTF-8 encoding bug (https://github.com/elasticsearch/logstash-forwarder/blob/master/lib/lumberjack/client.rb#L124)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Open a Terminal window and start the server | |
bundle install --path=.bundle | |
bundle exec ruby server.rb | |
Open another Terminal window and run the client | |
bundle exec ruby client.rb | |
Output from server indicates that the UTF-8 string was truncated | |
This is plain ASCII | |
00000000 54 68 69 73 20 69 73 20 70 6c 61 69 6e 20 41 53 |This is plain AS| | |
00000010 43 49 49 |CII| | |
This is UTF-8 ✓ te | |
00000000 54 68 69 73 20 69 73 20 55 54 46 2d 38 20 e2 9c |This is UTF-8 ..| | |
00000010 93 20 74 65 |. te| | |
Patch the jls-lumberjack gem | |
patch .bundle/ruby/1.9.1/gems/jls-lumberjack-0.0.20/lib/lumberjack/client.rb lumberjack_client.patch | |
Run the client again | |
bundle exec ruby client.rb | |
Output from server indicates that the UTF-8 string was handled properly | |
This is plain ASCII | |
00000000 54 68 69 73 20 69 73 20 70 6c 61 69 6e 20 41 53 |This is plain AS| | |
00000010 43 49 49 |CII| | |
This is UTF-8 ✓ text | |
00000000 54 68 69 73 20 69 73 20 55 54 46 2d 38 20 e2 9c |This is UTF-8 ..| | |
00000010 93 20 74 65 78 74 |. text| | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-----BEGIN CERTIFICATE----- | |
MIIDtTCCAp2gAwIBAgIJAM8LgmA1hhL5MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV | |
BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX | |
aWRnaXRzIFB0eSBMdGQwHhcNMTQwODIzMTkzODMzWhcNMjQwODIwMTkzODMzWjBF | |
MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50 | |
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB | |
CgKCAQEAwhwJ/g8dYu0wvGiQPiRhqwTW1uxPKHdV2HlhihVtc74mVf+jISYd/M/k | |
vzHFAtHI2/t+sGfgHCEVmYVPU6PykWWtxnZUWD37D7CJbxhNu4FPZ+tLpTJ9+dW+ | |
CNUYa7ghN7ESdkg6xPBq2F5Qi9yZJ1MertAWVF2ktmZSHzWI7wJYqU9XV0P3VrmP | |
DRD+iQvKr/j3M097+N3CEQyl+DYYev5rWyNhurCzKi+yQbmqdEu7TlGUjwiEpaZX | |
9mrMhfS0y61VFeL3fiYjG5tmJmUdGdRQBJxokl9cUjZtEqlIA/8YsgrbkBfA3K4j | |
+hpuu700liuC24ERC3seoHP5+4q2gwIDAQABo4GnMIGkMB0GA1UdDgQWBBQ43MRz | |
ozrcqMpfvNv6wMzf4wo/4zB1BgNVHSMEbjBsgBQ43MRzozrcqMpfvNv6wMzf4wo/ | |
46FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNV | |
BAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAM8LgmA1hhL5MAwGA1UdEwQF | |
MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAEtFvNMhc80qAYmhM4Vv6fa7q9sTtS1z | |
viiQUxn047mUWc9RJqNY6rthVM9GUsw8+y4acvOFyJGHX41NlxGd/TQo8EyVJkAs | |
mxxpD9NGEytqa69CvA2qiMLnsuuzIAXZp+JjPm25ingOSa9V9jhmCl5kMkqJRajd | |
naZ2rRlVY2rbJdM8ZNI9aUGsqoih99mlSR2C+/D4snOoDu0miea21sGBQiiSY5Mb | |
ybB62z3XdPaxgGeNz6IBijeMvxBDnyf6/5AHksleTJPYSfhCOKn4cNYU5WT2hwws | |
k7qEMeeFv8dQQItWJpmeYCXJR4vXjbXygy71vx0GisbqsTgu2XuXu1g= | |
-----END CERTIFICATE----- |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# encoding: UTF-8 | |
require "lumberjack/client" | |
require 'hexdump' | |
TEST_STRINGS = [ "This is plain ASCII", | |
"This is UTF-8 ✓ text"] | |
client = Lumberjack::Client.new(:addresses => ["127.0.0.1"], :port => 5555, | |
:ssl_certificate => "cert.pem", :window_size => 5000) | |
TEST_STRINGS.each do |line| | |
client.write({ 'line' => line }) | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
source 'https://rubygems.org' | |
gem 'jls-lumberjack', '~> 0.0.20' | |
gem 'hexdump', '~> 0.2.3' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-----BEGIN RSA PRIVATE KEY----- | |
MIIEpAIBAAKCAQEAwhwJ/g8dYu0wvGiQPiRhqwTW1uxPKHdV2HlhihVtc74mVf+j | |
ISYd/M/kvzHFAtHI2/t+sGfgHCEVmYVPU6PykWWtxnZUWD37D7CJbxhNu4FPZ+tL | |
pTJ9+dW+CNUYa7ghN7ESdkg6xPBq2F5Qi9yZJ1MertAWVF2ktmZSHzWI7wJYqU9X | |
V0P3VrmPDRD+iQvKr/j3M097+N3CEQyl+DYYev5rWyNhurCzKi+yQbmqdEu7TlGU | |
jwiEpaZX9mrMhfS0y61VFeL3fiYjG5tmJmUdGdRQBJxokl9cUjZtEqlIA/8Ysgrb | |
kBfA3K4j+hpuu700liuC24ERC3seoHP5+4q2gwIDAQABAoIBAQCa0iJmMUgPD4A/ | |
xmbGKd58uW9iHTlF3WjrMGVL7atPFesdzLggSHbCnk6k8N1iUlESpJV3vmJSDVFd | |
Eacj3zAqKB9inB7KAyWsbfIwWgIl/A2JpXLAYHV6P7FC+jRwNnzIHsPK8/FsAxY1 | |
XYSBCYJeiz190Rr+T3KAyTvXCKwfdSoei+p6o+LYSM18HKI5UegUc47fmCp8v+DI | |
SQ5rNZET5yi85I3xGyny+FiaAgd71KsyOnpDv+u8mP2lvzarouAzQIA/BtBSTKE1 | |
r91TyZydILiR6R0cnr4qmuDsD/TWRVks7tRoIVGLTU/MkMabonKzJE0kBzxPODWF | |
pbwsxk6BAoGBAPdHSY50jlueLwIpd3s5b2UYjZuCsDt+wwo7mHo3iDPnE5i+0bFS | |
X8ye21yvW1rHy6djz3gNBGiqZ7yQOg2Rc9SOKMZsce24SRTOOs3kupoEjYUvKebr | |
fhCV0ZcL4VdAOLbZiV0MgncKWPMfx7f7hPwGtFhD1jPwgugv1i5BW3eXAoGBAMj0 | |
robL6jMhQCi4xBH5ZTmZyqB5WCFsLxqGz6lrj74ipc33swllX0O5AG7ey4lvZhs/ | |
gBdYR2wo+7dhMNeBvROJIZKA+TrcDdtHarA3cgNTCWi3CR4vjx9Wt68MQwnjObrZ | |
zHo/nhh4xg1i0oCfQ6toaIME9RF/Ayjk7MXqmTX1AoGBALe2fM2bhtBGe4JNsHka | |
OMqRLVPmCmyJRvppQGU8sLJu8T5ANqZZHtd1BmCb33FYktNv8gmtEiN4xs1vEdJW | |
yAmY/G4+z33ftlwAw+uIDaKz0zipy6XGO8iyph5kMyyRiBFBGS7KRnuOcntelxD3 | |
itt7V61j6NZ5z6gVMjj3Ua9NAoGAO/L6qc3lZTFzMXLFU1NiRkfB8hOhHf9nIfO7 | |
uaAT9rXhXsuZRqFORSbIoUqnz61C+bf833n/fJ3RUgiViIT0wgIz2L/PGicRnyv0 | |
APPZeHJqKSoJd07a1I+LJpZy3V1DGKHm5UVbRZOqCc5EXAinKFhybTuqXHjWmXmJ | |
xRVSdY0CgYAOIvBsjWg1GIczzNzHqJp1hrvEXVcMuc7gjZ3/KCPMB7E6oNi5W/6M | |
a26SH4ZiSTlQfJb6K6w31WXCBrI1j03yQbTK9czx0yWf3kpBvak9Yf2CAuAnV15r | |
UtSCIYbUy1JxAHwGT0d3KGmdepQvPleaZwsDj5jMwxU0GvNRsxzMFg== | |
-----END RSA PRIVATE KEY----- |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- client.rb.orig 2014-05-16 19:09:53.000000000 -0400 | |
+++ client.rb 2014-08-23 14:29:29.000000000 -0400 | |
@@ -121,7 +121,7 @@ | |
frame << keys.length | |
pack << "N" | |
keys.each do |k| | |
- val = deep_get(hash,k) | |
+ val = deep_get(hash,k).force_encoding("BINARY") | |
key_length = k.length | |
val_length = val.length | |
frame << key_length |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# encoding: UTF-8 | |
require "lumberjack/server" | |
require 'hexdump' | |
lumberjack = Lumberjack::Server.new(:address => '127.0.0.1', :port => 5555, | |
:ssl_certificate => 'cert.pem', :ssl_key => 'key.pem') | |
lumberjack.run do |l| | |
puts l['line'].chomp | |
puts Hexdump.dump(l['line']) | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment