le 1.4

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.
@@ -0,0 +1,19 @@
1
+ dir = File.dirname(__FILE__)
2
+ require File.expand_path(File.join(dir, 'lib1.2backup', 'le'))
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "le"
6
+ s.version = "1.4"
7
+ s.date = Time.now
8
+ s.summary = "Logentries plugin"
9
+ s.description =<<EOD
10
+
11
+ EOD
12
+
13
+ s.authors = ["Mark Lacomber (Logentries)"]
14
+ s.email = "marklacomber@gmail.com"
15
+
16
+ s.files = %w{ LE.gemspec } + Dir["#{dir}/lib1.2backup/**/*.rb"]
17
+ s.require_paths = ["lib1.2backup"]
18
+
19
+ end
@@ -0,0 +1,18 @@
1
+ #This will be the main le script
2
+ require File.join(File.dirname(__FILE__), 'le', 'host')
3
+
4
+ require 'logger'
5
+
6
+ module Le
7
+
8
+ def self.new(key, location)
9
+
10
+ host = Le::Host.new(key, location)
11
+ logger = Logger.new(host)
12
+
13
+ logger.formatter = host.formatter
14
+
15
+ logger
16
+ end
17
+
18
+ end
@@ -0,0 +1,35 @@
1
+ #this is the client page
2
+ module Le
3
+ module Host
4
+
5
+ # Creates a new Logentries host, based on a user-key and location of destination file on logentries,
6
+ # both must be provided correctly for a connection to be made.
7
+
8
+ def self.new(key, location)
9
+
10
+ Le::Host::HTTPS.new(key, location)
11
+
12
+ end
13
+
14
+ module HelperMethods
15
+
16
+ def formatter
17
+ proc do |severity, datetime, progname, msg|
18
+ message = "#{datetime} "
19
+ message << format_message(msg, severity)
20
+ end
21
+ end
22
+
23
+ def format_message(msg_in, severity)
24
+ msg_out = ""
25
+ msg_out << "severity=#{severity}, "
26
+
27
+ msg_out << msg_in
28
+
29
+ msg_out
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ require File.join(File.dirname(__FILE__), 'host', 'https')
@@ -0,0 +1,33 @@
1
+ require 'socket'
2
+ require 'openssl'
3
+
4
+ require File.join(File.dirname(__FILE__), 'https', 'tcp')
5
+
6
+ module Le
7
+ module Host
8
+ class HTTPS
9
+ include Le::Host::HelperMethods
10
+
11
+ attr_reader :deliverer
12
+
13
+ def initialize(key, location)
14
+
15
+ @deliverer = Le::Host::HTTPS::TCPSOCKET.new(key, location)
16
+
17
+ end
18
+
19
+ def write(message)
20
+
21
+ # In the Heroku environment, this puts command will write the message to standard Heroku logs also
22
+ puts message
23
+ # Deliver the message to logentries via TCP
24
+ @deliverer.deliver(message)
25
+ end
26
+
27
+ def close
28
+ nil
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,41 @@
1
+ module Le
2
+ module Host
3
+ class HTTPS
4
+
5
+ class TCPSOCKET
6
+
7
+ attr_accessor :sock, :conn
8
+ def initialize(key, location)
9
+
10
+ # Create the unique address comprising of user-key and location of file on logentries server
11
+ addr = sprintf('/%s/hosts/%s/?realtime=1', key, location)
12
+
13
+ # Open the TCP connection to the Logentries Server
14
+ @sock = TCPSocket.new('api.logentries.com', 443)
15
+
16
+ @conn = OpenSSL::SSL::SSLSocket.new(@sock, OpenSSL::SSL::SSLContext.new())
17
+ @conn.sync_close = true
18
+ @conn.connect
19
+
20
+ # Set up connection with Logentries API to receive messages in chunks, i.e, logs
21
+ request = sprintf("PUT %s HTTP/1.1\r\n", addr)
22
+ @conn.print(request)
23
+ @conn.print("Accept-Encoding: identity\r\n")
24
+ @conn.print("Transfer_Encoding: chunked\r\n\r\n")
25
+ end
26
+
27
+ def deliver(message)
28
+
29
+ # Sends the log to the Logentries Server
30
+ begin
31
+ @conn.print(message + "\r\n")
32
+ rescue OpenSSL::SSL::SSLError, TimeoutError, Errno::ECONNRESET, EOFError => e
33
+ $stderr.puts "WARNING: #{e.class} sending log #{message}"
34
+ end
35
+ end
36
+
37
+ end
38
+
39
+ end
40
+ end
41
+ end
metadata ADDED
@@ -0,0 +1,70 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: le
3
+ version: !ruby/object:Gem::Version
4
+ hash: 7
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 4
9
+ version: "1.4"
10
+ platform: ruby
11
+ authors:
12
+ - Mark Lacomber (Logentries)
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-07-20 00:00:00 Z
18
+ dependencies: []
19
+
20
+ description: |
21
+
22
+
23
+ email: marklacomber@gmail.com
24
+ executables: []
25
+
26
+ extensions: []
27
+
28
+ extra_rdoc_files: []
29
+
30
+ files:
31
+ - LE.gemspec
32
+ - ./lib1.2backup/le.rb
33
+ - ./lib1.2backup/le/host.rb
34
+ - ./lib1.2backup/le/host/https.rb
35
+ - ./lib1.2backup/le/host/https/tcp.rb
36
+ homepage:
37
+ licenses: []
38
+
39
+ post_install_message:
40
+ rdoc_options: []
41
+
42
+ require_paths:
43
+ - lib1.2backup
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ none: false
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ hash: 3
50
+ segments:
51
+ - 0
52
+ version: "0"
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
61
+ version: "0"
62
+ requirements: []
63
+
64
+ rubyforge_project:
65
+ rubygems_version: 1.8.3
66
+ signing_key:
67
+ specification_version: 3
68
+ summary: Logentries plugin
69
+ test_files: []
70
+