Skip to content

Instantly share code, notes, and snippets.

@brianwells
Last active August 29, 2015 14:05
Show Gist options
  • Save brianwells/5a90abb94f3f8a295681 to your computer and use it in GitHub Desktop.
Save brianwells/5a90abb94f3f8a295681 to your computer and use it in GitHub Desktop.
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|
-----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-----
# 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
source 'https://rubygems.org'
gem 'jls-lumberjack', '~> 0.0.20'
gem 'hexdump', '~> 0.2.3'
-----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-----
--- 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
# 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