instrumental_agent 0.12.7 → 0.13.0
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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -2
- data/CHANGELOG.md +5 -2
- data/Gemfile +2 -2
- data/README.md +2 -2
- data/Rakefile +1 -0
- data/certs/equifax.ca.pem +69 -0
- data/certs/geotrust.ca.pem +80 -0
- data/certs/rapidssl.ca.pem +94 -0
- data/instrumental_agent.gemspec +1 -7
- data/lib/instrumental/agent.rb +99 -16
- data/lib/instrumental/version.rb +1 -1
- data/spec/agent_spec.rb +417 -392
- data/spec/test.crt +16 -0
- data/spec/test.csr +12 -0
- data/spec/test.key +15 -0
- data/spec/test_server.rb +50 -14
- metadata +13 -60
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68d5c4451d15ba2eeb83f189d14f4a34c6ec77fd
|
4
|
+
data.tar.gz: 6e7e2fd6ec37a5eb210563deec7c04ee91794a84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7973eec6253fe0e536480351318746c2ab6561a272485d39297b13e4cc50fdda98dd32fd538baf22c7eac9128ba61cb64982b0c221002155bf14a77862d04ede
|
7
|
+
data.tar.gz: c1979ec7dcc1f04c3c5d4aaad1debf8d6ffecaa87ee2e527332e3fda2d96904db701f2f5c922897f09ed841775c3c84233682edb18c101b963553aeaba5c42e7
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
### 0.13.0 [August 3, 2015]
|
2
|
+
* Add support for encrypted transport, tests for same
|
3
|
+
|
1
4
|
### 0.12.7 [August 11th, 2014]
|
2
5
|
* Fix MRI 1.8.7 incompatibility due to RUBY_ENGINE constant
|
3
6
|
|
@@ -53,7 +56,7 @@
|
|
53
56
|
* Fix for dead lock issuew
|
54
57
|
|
55
58
|
### 0.9.5 [March 23rd, 2012]
|
56
|
-
* Defer startup of agent thread until metrics are submitted - this update is strongly recommended for anyone using Ruby Enterprise Edition in concert w/ a preforking application server (like Phusion Passenger). See the [REE wiki page](https://github.com/
|
59
|
+
* Defer startup of agent thread until metrics are submitted - this update is strongly recommended for anyone using Ruby Enterprise Edition in concert w/ a preforking application server (like Phusion Passenger). See the [REE wiki page](https://github.com/expectedbehavior/instrumental_agent/wiki/Using-with-Ruby-Enterprise-Edition) for more information.
|
57
60
|
* Add .stop method for cancelling agent processing
|
58
61
|
* Changes to how defaults are processed at initialization
|
59
62
|
* Documentation for usage w/ Resque and Resque like scenarios
|
@@ -100,7 +103,7 @@
|
|
100
103
|
* Code cleanup
|
101
104
|
|
102
105
|
### 0.5.1 [December 12, 2011]
|
103
|
-
* instrument_server moved to instrumental_tools gem (https://github.com/
|
106
|
+
* instrument_server moved to instrumental_tools gem (https://github.com/expectedbehavior/instrumental_tools)
|
104
107
|
|
105
108
|
### 0.5 [December 9, 2011]
|
106
109
|
* Allow negative numbers to be submitted
|
data/Gemfile
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
3
|
gemspec
|
4
|
-
|
5
|
-
if RUBY_VERSION < "1.9"
|
4
|
+
ruby_engine = defined?(RUBY_ENGINE) && RUBY_ENGINE
|
5
|
+
if RUBY_VERSION < "1.9" && !%w{jruby rbx}.include?(ruby_engine)
|
6
6
|
# Built and installed via ext/mkrf_conf.rb
|
7
7
|
gem 'system_timer', '~> 1.2'
|
8
8
|
end
|
data/README.md
CHANGED
@@ -59,7 +59,7 @@ end
|
|
59
59
|
|
60
60
|
## Server Stats
|
61
61
|
|
62
|
-
Want some general server stats (load, memory, etc.)? Check out the [instrumental_tools](https://github.com/
|
62
|
+
Want some general server stats (load, memory, etc.)? Check out the [instrumental_tools](https://github.com/expectedbehavior/instrumental_tools) gem.
|
63
63
|
|
64
64
|
```sh
|
65
65
|
gem install instrumental_tools
|
@@ -104,4 +104,4 @@ Users of Ruby Enterprise Edition should plan on using version 0.9.5 of the Instr
|
|
104
104
|
|
105
105
|
## Troubleshooting & Help
|
106
106
|
|
107
|
-
We are here to help. Email us at [support@instrumentalapp.com](mailto:support@instrumentalapp.com)
|
107
|
+
We are here to help. Email us at [support@instrumentalapp.com](mailto:support@instrumentalapp.com).
|
data/Rakefile
CHANGED
@@ -0,0 +1,69 @@
|
|
1
|
+
Certificate:
|
2
|
+
Data:
|
3
|
+
Version: 3 (0x2)
|
4
|
+
Serial Number: 903804111 (0x35def4cf)
|
5
|
+
Signature Algorithm: sha1WithRSAEncryption
|
6
|
+
Issuer: C=US, O=Equifax, OU=Equifax Secure Certificate Authority
|
7
|
+
Validity
|
8
|
+
Not Before: Aug 22 16:41:51 1998 GMT
|
9
|
+
Not After : Aug 22 16:41:51 2018 GMT
|
10
|
+
Subject: C=US, O=Equifax, OU=Equifax Secure Certificate Authority
|
11
|
+
Subject Public Key Info:
|
12
|
+
Public Key Algorithm: rsaEncryption
|
13
|
+
RSA Public Key: (1024 bit)
|
14
|
+
Modulus (1024 bit):
|
15
|
+
00:c1:5d:b1:58:67:08:62:ee:a0:9a:2d:1f:08:6d:
|
16
|
+
91:14:68:98:0a:1e:fe:da:04:6f:13:84:62:21:c3:
|
17
|
+
d1:7c:ce:9f:05:e0:b8:01:f0:4e:34:ec:e2:8a:95:
|
18
|
+
04:64:ac:f1:6b:53:5f:05:b3:cb:67:80:bf:42:02:
|
19
|
+
8e:fe:dd:01:09:ec:e1:00:14:4f:fc:fb:f0:0c:dd:
|
20
|
+
43:ba:5b:2b:e1:1f:80:70:99:15:57:93:16:f1:0f:
|
21
|
+
97:6a:b7:c2:68:23:1c:cc:4d:59:30:ac:51:1e:3b:
|
22
|
+
af:2b:d6:ee:63:45:7b:c5:d9:5f:50:d2:e3:50:0f:
|
23
|
+
3a:88:e7:bf:14:fd:e0:c7:b9
|
24
|
+
Exponent: 65537 (0x10001)
|
25
|
+
X509v3 extensions:
|
26
|
+
X509v3 CRL Distribution Points:
|
27
|
+
DirName:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority/CN=CRL1
|
28
|
+
|
29
|
+
X509v3 Private Key Usage Period:
|
30
|
+
Not After: Aug 22 16:41:51 2018 GMT
|
31
|
+
X509v3 Key Usage:
|
32
|
+
Certificate Sign, CRL Sign
|
33
|
+
X509v3 Authority Key Identifier:
|
34
|
+
keyid:48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:4F:33:98:90:9F:D4
|
35
|
+
|
36
|
+
X509v3 Subject Key Identifier:
|
37
|
+
48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:4F:33:98:90:9F:D4
|
38
|
+
X509v3 Basic Constraints:
|
39
|
+
CA:TRUE
|
40
|
+
1.2.840.113533.7.65.0:
|
41
|
+
0...V3.0c....
|
42
|
+
Signature Algorithm: sha1WithRSAEncryption
|
43
|
+
58:ce:29:ea:fc:f7:de:b5:ce:02:b9:17:b5:85:d1:b9:e3:e0:
|
44
|
+
95:cc:25:31:0d:00:a6:92:6e:7f:b6:92:63:9e:50:95:d1:9a:
|
45
|
+
6f:e4:11:de:63:85:6e:98:ee:a8:ff:5a:c8:d3:55:b2:66:71:
|
46
|
+
57:de:c0:21:eb:3d:2a:a7:23:49:01:04:86:42:7b:fc:ee:7f:
|
47
|
+
a2:16:52:b5:67:67:d3:40:db:3b:26:58:b2:28:77:3d:ae:14:
|
48
|
+
77:61:d6:fa:2a:66:27:a0:0d:fa:a7:73:5c:ea:70:f1:94:21:
|
49
|
+
65:44:5f:fa:fc:ef:29:68:a9:a2:87:79:ef:79:ef:4f:ac:07:
|
50
|
+
77:38
|
51
|
+
-----BEGIN CERTIFICATE-----
|
52
|
+
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV
|
53
|
+
UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy
|
54
|
+
dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1
|
55
|
+
MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx
|
56
|
+
dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B
|
57
|
+
AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f
|
58
|
+
BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A
|
59
|
+
cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC
|
60
|
+
AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ
|
61
|
+
MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm
|
62
|
+
aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw
|
63
|
+
ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj
|
64
|
+
IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF
|
65
|
+
MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA
|
66
|
+
A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y
|
67
|
+
7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh
|
68
|
+
1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4
|
69
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,80 @@
|
|
1
|
+
Certificate:
|
2
|
+
Data:
|
3
|
+
Version: 3 (0x2)
|
4
|
+
Serial Number: 1227750 (0x12bbe6)
|
5
|
+
Signature Algorithm: sha1WithRSAEncryption
|
6
|
+
Issuer: C=US, O=Equifax, OU=Equifax Secure Certificate Authority
|
7
|
+
Validity
|
8
|
+
Not Before: May 21 04:00:00 2002 GMT
|
9
|
+
Not After : Aug 21 04:00:00 2018 GMT
|
10
|
+
Subject: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA
|
11
|
+
Subject Public Key Info:
|
12
|
+
Public Key Algorithm: rsaEncryption
|
13
|
+
RSA Public Key: (2048 bit)
|
14
|
+
Modulus (2048 bit):
|
15
|
+
00:da:cc:18:63:30:fd:f4:17:23:1a:56:7e:5b:df:
|
16
|
+
3c:6c:38:e4:71:b7:78:91:d4:bc:a1:d8:4c:f8:a8:
|
17
|
+
43:b6:03:e9:4d:21:07:08:88:da:58:2f:66:39:29:
|
18
|
+
bd:05:78:8b:9d:38:e8:05:b7:6a:7e:71:a4:e6:c4:
|
19
|
+
60:a6:b0:ef:80:e4:89:28:0f:9e:25:d6:ed:83:f3:
|
20
|
+
ad:a6:91:c7:98:c9:42:18:35:14:9d:ad:98:46:92:
|
21
|
+
2e:4f:ca:f1:87:43:c1:16:95:57:2d:50:ef:89:2d:
|
22
|
+
80:7a:57:ad:f2:ee:5f:6b:d2:00:8d:b9:14:f8:14:
|
23
|
+
15:35:d9:c0:46:a3:7b:72:c8:91:bf:c9:55:2b:cd:
|
24
|
+
d0:97:3e:9c:26:64:cc:df:ce:83:19:71:ca:4e:e6:
|
25
|
+
d4:d5:7b:a9:19:cd:55:de:c8:ec:d2:5e:38:53:e5:
|
26
|
+
5c:4f:8c:2d:fe:50:23:36:fc:66:e6:cb:8e:a4:39:
|
27
|
+
19:00:b7:95:02:39:91:0b:0e:fe:38:2e:d1:1d:05:
|
28
|
+
9a:f6:4d:3e:6f:0f:07:1d:af:2c:1e:8f:60:39:e2:
|
29
|
+
fa:36:53:13:39:d4:5e:26:2b:db:3d:a8:14:bd:32:
|
30
|
+
eb:18:03:28:52:04:71:e5:ab:33:3d:e1:38:bb:07:
|
31
|
+
36:84:62:9c:79:ea:16:30:f4:5f:c0:2b:e8:71:6b:
|
32
|
+
e4:f9
|
33
|
+
Exponent: 65537 (0x10001)
|
34
|
+
X509v3 extensions:
|
35
|
+
X509v3 Authority Key Identifier:
|
36
|
+
keyid:48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:4F:33:98:90:9F:D4
|
37
|
+
|
38
|
+
X509v3 Subject Key Identifier:
|
39
|
+
C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E
|
40
|
+
X509v3 Basic Constraints: critical
|
41
|
+
CA:TRUE
|
42
|
+
X509v3 Key Usage: critical
|
43
|
+
Certificate Sign, CRL Sign
|
44
|
+
X509v3 CRL Distribution Points:
|
45
|
+
URI:http://crl.geotrust.com/crls/secureca.crl
|
46
|
+
|
47
|
+
X509v3 Certificate Policies:
|
48
|
+
Policy: X509v3 Any Policy
|
49
|
+
CPS: https://www.geotrust.com/resources/repository
|
50
|
+
|
51
|
+
Signature Algorithm: sha1WithRSAEncryption
|
52
|
+
76:e1:12:6e:4e:4b:16:12:86:30:06:b2:81:08:cf:f0:08:c7:
|
53
|
+
c7:71:7e:66:ee:c2:ed:d4:3b:1f:ff:f0:f0:c8:4e:d6:43:38:
|
54
|
+
b0:b9:30:7d:18:d0:55:83:a2:6a:cb:36:11:9c:e8:48:66:a3:
|
55
|
+
6d:7f:b8:13:d4:47:fe:8b:5a:5c:73:fc:ae:d9:1b:32:19:38:
|
56
|
+
ab:97:34:14:aa:96:d2:eb:a3:1c:14:08:49:b6:bb:e5:91:ef:
|
57
|
+
83:36:eb:1d:56:6f:ca:da:bc:73:63:90:e4:7f:7b:3e:22:cb:
|
58
|
+
3d:07:ed:5f:38:74:9c:e3:03:50:4e:a1:af:98:ee:61:f2:84:
|
59
|
+
3f:12
|
60
|
+
-----BEGIN CERTIFICATE-----
|
61
|
+
MIIDfTCCAuagAwIBAgIDErvmMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT
|
62
|
+
MRAwDgYDVQQKEwdFcXVpZmF4MS0wKwYDVQQLEyRFcXVpZmF4IFNlY3VyZSBDZXJ0
|
63
|
+
aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDIwNTIxMDQwMDAwWhcNMTgwODIxMDQwMDAw
|
64
|
+
WjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UE
|
65
|
+
AxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
66
|
+
CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9m
|
67
|
+
OSm9BXiLnTjoBbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIu
|
68
|
+
T8rxh0PBFpVXLVDviS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6c
|
69
|
+
JmTM386DGXHKTubU1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmR
|
70
|
+
Cw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5asz
|
71
|
+
PeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo4HwMIHtMB8GA1UdIwQYMBaAFEjm
|
72
|
+
aPkr0rKV10fYIyAQTzOYkJ/UMB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrM
|
73
|
+
TjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjA6BgNVHR8EMzAxMC+g
|
74
|
+
LaArhilodHRwOi8vY3JsLmdlb3RydXN0LmNvbS9jcmxzL3NlY3VyZWNhLmNybDBO
|
75
|
+
BgNVHSAERzBFMEMGBFUdIAAwOzA5BggrBgEFBQcCARYtaHR0cHM6Ly93d3cuZ2Vv
|
76
|
+
dHJ1c3QuY29tL3Jlc291cmNlcy9yZXBvc2l0b3J5MA0GCSqGSIb3DQEBBQUAA4GB
|
77
|
+
AHbhEm5OSxYShjAGsoEIz/AIx8dxfmbuwu3UOx//8PDITtZDOLC5MH0Y0FWDomrL
|
78
|
+
NhGc6Ehmo21/uBPUR/6LWlxz/K7ZGzIZOKuXNBSqltLroxwUCEm2u+WR74M26x1W
|
79
|
+
b8ravHNjkOR/ez4iyz0H7V84dJzjA1BOoa+Y7mHyhD8S
|
80
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,94 @@
|
|
1
|
+
Certificate:
|
2
|
+
Data:
|
3
|
+
Version: 3 (0x2)
|
4
|
+
Serial Number: 146039 (0x23a77)
|
5
|
+
Signature Algorithm: sha256WithRSAEncryption
|
6
|
+
Issuer: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA
|
7
|
+
Validity
|
8
|
+
Not Before: Aug 29 21:39:32 2014 GMT
|
9
|
+
Not After : May 20 21:39:32 2022 GMT
|
10
|
+
Subject: C=US, O=GeoTrust Inc., CN=RapidSSL SHA256 CA - G3
|
11
|
+
Subject Public Key Info:
|
12
|
+
Public Key Algorithm: rsaEncryption
|
13
|
+
RSA Public Key: (2048 bit)
|
14
|
+
Modulus (2048 bit):
|
15
|
+
00:af:54:9b:d9:58:5d:1e:2c:56:c6:d5:e8:7f:f4:
|
16
|
+
7d:16:03:ff:d0:8b:5a:e4:8e:a7:dd:54:2e:d4:04:
|
17
|
+
c0:5d:98:9c:8d:90:0f:bc:10:65:5f:da:9a:d6:44:
|
18
|
+
7c:c0:9f:b5:e9:4a:8c:0b:06:43:04:bb:f4:96:e2:
|
19
|
+
26:f6:61:01:91:66:31:22:c3:34:34:5f:3f:3f:91:
|
20
|
+
2f:44:5f:dc:c7:14:b6:03:9f:86:4b:0e:a3:ff:a0:
|
21
|
+
80:02:83:c3:d3:1f:69:52:d6:9d:64:0f:c9:83:e7:
|
22
|
+
1b:c4:70:ac:94:e7:c3:a4:6a:2c:bd:b8:9e:69:d8:
|
23
|
+
be:0a:8f:16:63:5a:68:71:80:7b:30:de:15:04:bf:
|
24
|
+
cc:d3:bf:3e:48:05:55:7a:b3:d7:10:0c:03:fc:9b:
|
25
|
+
fd:08:a7:8c:8c:db:a7:8e:f1:1e:63:dc:b3:01:2f:
|
26
|
+
7f:af:57:c3:3c:48:a7:83:68:21:a7:2f:e7:a7:3f:
|
27
|
+
f0:b5:0c:fc:f5:84:d1:53:bc:0e:72:4f:60:0c:42:
|
28
|
+
b8:98:ad:19:88:57:d7:04:ec:87:bf:7e:87:4e:a3:
|
29
|
+
21:f9:53:fd:36:98:48:8d:d6:f8:bb:48:f2:29:c8:
|
30
|
+
64:d1:cc:54:48:53:8b:af:b7:65:1e:bf:29:33:29:
|
31
|
+
d9:29:60:48:f8:ff:91:bc:57:58:e5:35:2e:bb:69:
|
32
|
+
b6:59
|
33
|
+
Exponent: 65537 (0x10001)
|
34
|
+
X509v3 extensions:
|
35
|
+
X509v3 Authority Key Identifier:
|
36
|
+
keyid:C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E
|
37
|
+
|
38
|
+
X509v3 Subject Key Identifier:
|
39
|
+
C3:9C:F3:FC:D3:46:08:34:BB:CE:46:7F:A0:7C:5B:F3:E2:08:CB:59
|
40
|
+
X509v3 Basic Constraints: critical
|
41
|
+
CA:TRUE, pathlen:0
|
42
|
+
X509v3 Key Usage: critical
|
43
|
+
Certificate Sign, CRL Sign
|
44
|
+
X509v3 CRL Distribution Points:
|
45
|
+
URI:http://g.symcb.com/crls/gtglobal.crl
|
46
|
+
|
47
|
+
Authority Information Access:
|
48
|
+
OCSP - URI:http://g.symcd.com
|
49
|
+
|
50
|
+
X509v3 Certificate Policies:
|
51
|
+
Policy: 2.16.840.1.113733.1.7.54
|
52
|
+
CPS: http://www.geotrust.com/resources/cps
|
53
|
+
|
54
|
+
Signature Algorithm: sha256WithRSAEncryption
|
55
|
+
a3:58:1e:c6:43:32:ac:ac:2f:93:78:b7:ea:ae:54:40:47:2d:
|
56
|
+
7e:78:8d:50:f6:f8:66:ac:d6:4f:73:d6:44:ef:af:0b:cc:5b:
|
57
|
+
c1:f4:4f:9a:8f:49:7e:60:af:c2:27:c7:16:f1:fb:93:81:90:
|
58
|
+
a9:7c:ef:6f:7e:6e:45:94:16:84:bd:ec:49:f1:c4:0e:f4:af:
|
59
|
+
04:59:83:87:0f:2c:3b:97:c3:5a:12:9b:7b:04:35:7b:a3:95:
|
60
|
+
33:08:7b:93:71:22:42:b3:a9:d9:6f:4f:81:92:fc:07:b6:79:
|
61
|
+
bc:84:4a:9d:77:09:f1:c5:89:f2:f0:b4:9c:54:aa:12:7b:0d:
|
62
|
+
ba:4f:ef:93:19:ec:ef:7d:4e:61:a3:8e:76:9c:59:cf:8c:94:
|
63
|
+
b1:84:97:f7:1a:b9:07:b8:b2:c6:4f:13:79:db:bf:4f:51:1b:
|
64
|
+
7f:69:0d:51:2a:c1:d6:15:ff:37:51:34:65:51:f4:1e:be:38:
|
65
|
+
6a:ec:0e:ab:bf:3d:7b:39:05:7b:f4:f3:fb:1a:a1:d0:c8:7e:
|
66
|
+
4e:64:8d:cd:8c:61:55:90:fe:3a:ca:5d:25:0f:f8:1d:a3:4a:
|
67
|
+
74:56:4f:1a:55:40:70:75:25:a6:33:2e:ba:4b:a5:5d:53:9a:
|
68
|
+
0d:30:e1:8d:5f:61:2c:af:cc:ef:b0:99:a1:80:ff:0b:f2:62:
|
69
|
+
4c:70:26:98
|
70
|
+
-----BEGIN CERTIFICATE-----
|
71
|
+
MIIEJTCCAw2gAwIBAgIDAjp3MA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT
|
72
|
+
MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i
|
73
|
+
YWwgQ0EwHhcNMTQwODI5MjEzOTMyWhcNMjIwNTIwMjEzOTMyWjBHMQswCQYDVQQG
|
74
|
+
EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXUmFwaWRTU0wg
|
75
|
+
U0hBMjU2IENBIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCv
|
76
|
+
VJvZWF0eLFbG1eh/9H0WA//Qi1rkjqfdVC7UBMBdmJyNkA+8EGVf2prWRHzAn7Xp
|
77
|
+
SowLBkMEu/SW4ib2YQGRZjEiwzQ0Xz8/kS9EX9zHFLYDn4ZLDqP/oIACg8PTH2lS
|
78
|
+
1p1kD8mD5xvEcKyU58Okaiy9uJ5p2L4KjxZjWmhxgHsw3hUEv8zTvz5IBVV6s9cQ
|
79
|
+
DAP8m/0Ip4yM26eO8R5j3LMBL3+vV8M8SKeDaCGnL+enP/C1DPz1hNFTvA5yT2AM
|
80
|
+
QriYrRmIV9cE7Ie/fodOoyH5U/02mEiN1vi7SPIpyGTRzFRIU4uvt2UevykzKdkp
|
81
|
+
YEj4/5G8V1jlNS67abZZAgMBAAGjggEdMIIBGTAfBgNVHSMEGDAWgBTAephojYn7
|
82
|
+
qwVkDBF9qn1luMrMTjAdBgNVHQ4EFgQUw5zz/NNGCDS7zkZ/oHxb8+IIy1kwEgYD
|
83
|
+
VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwNQYDVR0fBC4wLDAqoCig
|
84
|
+
JoYkaHR0cDovL2cuc3ltY2IuY29tL2NybHMvZ3RnbG9iYWwuY3JsMC4GCCsGAQUF
|
85
|
+
BwEBBCIwIDAeBggrBgEFBQcwAYYSaHR0cDovL2cuc3ltY2QuY29tMEwGA1UdIARF
|
86
|
+
MEMwQQYKYIZIAYb4RQEHNjAzMDEGCCsGAQUFBwIBFiVodHRwOi8vd3d3Lmdlb3Ry
|
87
|
+
dXN0LmNvbS9yZXNvdXJjZXMvY3BzMA0GCSqGSIb3DQEBCwUAA4IBAQCjWB7GQzKs
|
88
|
+
rC+TeLfqrlRARy1+eI1Q9vhmrNZPc9ZE768LzFvB9E+aj0l+YK/CJ8cW8fuTgZCp
|
89
|
+
fO9vfm5FlBaEvexJ8cQO9K8EWYOHDyw7l8NaEpt7BDV7o5UzCHuTcSJCs6nZb0+B
|
90
|
+
kvwHtnm8hEqddwnxxYny8LScVKoSew26T++TGezvfU5ho452nFnPjJSxhJf3GrkH
|
91
|
+
uLLGTxN5279PURt/aQ1RKsHWFf83UTRlUfQevjhq7A6rvz17OQV79PP7GqHQyH5O
|
92
|
+
ZI3NjGFVkP46yl0lD/gdo0p0Vk8aVUBwdSWmMy66S6VdU5oNMOGNX2Esr8zvsJmh
|
93
|
+
gP8L8mJMcCaY
|
94
|
+
-----END CERTIFICATE-----
|
data/instrumental_agent.gemspec
CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.version = Instrumental::VERSION
|
7
7
|
s.authors = ["Elijah Miller", "Christopher Zelenak", "Kristopher Chambers", "Matthew Hassfurder"]
|
8
8
|
s.email = ["support@instrumentalapp.com"]
|
9
|
-
s.homepage = "http://github.com/
|
9
|
+
s.homepage = "http://github.com/expectedbehavior/instrumental_agent"
|
10
10
|
s.summary = %q{Agent for reporting data to instrumentalapp.com}
|
11
11
|
s.description = %q{Track anything.}
|
12
12
|
s.license = "MIT"
|
@@ -19,10 +19,4 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.add_development_dependency(%q<rake>, [">= 0"])
|
20
20
|
s.add_development_dependency(%q<rspec>, ["~> 2.0"])
|
21
21
|
s.add_development_dependency(%q<fuubar>, [">= 0"])
|
22
|
-
if RUBY_VERSION >= "1.9.2"
|
23
|
-
s.add_development_dependency(%q<guard>, [">= 0"])
|
24
|
-
s.add_development_dependency(%q<guard-rspec>, [">= 0"])
|
25
|
-
s.add_development_dependency(%q<growl>, [">= 0"])
|
26
|
-
s.add_development_dependency(%q<rb-fsevent>, [">= 0"])
|
27
|
-
end
|
28
22
|
end
|
data/lib/instrumental/agent.rb
CHANGED
@@ -1,22 +1,24 @@
|
|
1
1
|
require 'instrumental/version'
|
2
2
|
require 'instrumental/system_timer'
|
3
3
|
require 'logger'
|
4
|
+
require 'openssl' rescue nil
|
4
5
|
require 'thread'
|
5
6
|
require 'socket'
|
6
7
|
|
7
8
|
|
8
9
|
module Instrumental
|
9
10
|
class Agent
|
10
|
-
BACKOFF
|
11
|
+
BACKOFF = 2.0
|
12
|
+
CONNECT_TIMEOUT = 20
|
13
|
+
EXIT_FLUSH_TIMEOUT = 5
|
14
|
+
HOSTNAME = Socket.gethostbyname(Socket.gethostname).first rescue Socket.gethostname
|
15
|
+
MAX_BUFFER = 5000
|
11
16
|
MAX_RECONNECT_DELAY = 15
|
12
|
-
|
13
|
-
|
14
|
-
CONNECT_TIMEOUT = 20
|
15
|
-
EXIT_FLUSH_TIMEOUT = 5
|
16
|
-
HOSTNAME = Socket.gethostbyname(Socket.gethostname).first rescue Socket.gethostname
|
17
|
+
REPLY_TIMEOUT = 10
|
18
|
+
|
17
19
|
|
18
20
|
attr_accessor :host, :port, :synchronous, :queue
|
19
|
-
attr_reader :connection, :enabled
|
21
|
+
attr_reader :connection, :enabled, :secure
|
20
22
|
|
21
23
|
def self.logger=(l)
|
22
24
|
@logger = l
|
@@ -42,18 +44,33 @@ module Instrumental
|
|
42
44
|
|
43
45
|
# defaults
|
44
46
|
# host: collector.instrumentalapp.com
|
45
|
-
# port:
|
47
|
+
# port: 8001
|
46
48
|
# enabled: true
|
47
49
|
# synchronous: false
|
50
|
+
# secure: true
|
51
|
+
# verify: true
|
48
52
|
@api_key = api_key
|
49
53
|
@host, @port = options[:collector].to_s.split(':')
|
50
54
|
@host ||= 'collector.instrumentalapp.com'
|
51
|
-
|
55
|
+
requested_secure = options[:secure] == true
|
56
|
+
desired_secure = options[:secure].nil? ? allows_secure? : !!options[:secure]
|
57
|
+
if !allows_secure? && desired_secure
|
58
|
+
logger.warn "Cannot connect to Instrumental via encrypted transport, SSL not available"
|
59
|
+
if requested_secure
|
60
|
+
options[:enabled] = false
|
61
|
+
logger.error "You requested secure protocol to connect to Instrumental, but it is not available on this system (OpenSSL is not defined). Connecting to Instrumental has been disabled."
|
62
|
+
end
|
63
|
+
desired_secure = false
|
64
|
+
end
|
65
|
+
@secure = desired_secure
|
66
|
+
@verify_cert = options[:verify_cert].nil? ? true : !!options[:verify_cert]
|
67
|
+
default_port = @secure ? 8001 : 8000
|
68
|
+
@port = (@port || default_port).to_i
|
52
69
|
@enabled = options.has_key?(:enabled) ? !!options[:enabled] : true
|
53
70
|
@synchronous = !!options[:synchronous]
|
54
71
|
@pid = Process.pid
|
55
72
|
@allow_reconnect = true
|
56
|
-
|
73
|
+
@certs = certificates
|
57
74
|
setup_cleanup_at_exit if @enabled
|
58
75
|
end
|
59
76
|
|
@@ -291,10 +308,41 @@ module Instrumental
|
|
291
308
|
message
|
292
309
|
end
|
293
310
|
|
311
|
+
def wait_exceptions
|
312
|
+
classes = [Errno::EAGAIN]
|
313
|
+
if defined?(IO::EAGAINWaitReadable)
|
314
|
+
classes << IO::EAGAINWaitReadable
|
315
|
+
end
|
316
|
+
if defined?(IO::EWOULDBLOCKWaitReadable)
|
317
|
+
classes << IO::EWOULDBLOCKWaitReadable
|
318
|
+
end
|
319
|
+
if defined?(IO::WaitReadable)
|
320
|
+
classes << IO::WaitReadable
|
321
|
+
end
|
322
|
+
classes
|
323
|
+
end
|
324
|
+
|
325
|
+
|
294
326
|
def test_connection
|
295
327
|
begin
|
296
|
-
|
297
|
-
|
328
|
+
# In the case where the socket is an OpenSSL::SSL::SSLSocket,
|
329
|
+
# on Ruby 1.8.6, 1.8.7 or 1.9.1, read_nonblock does not exist,
|
330
|
+
# and so the case of testing socket liveliness via a nonblocking
|
331
|
+
# read that catches a wait condition won't work.
|
332
|
+
#
|
333
|
+
# We grab the SSL socket's underlying IO object and perform the
|
334
|
+
# non blocking read there in order to ensure the socket is still
|
335
|
+
# valid
|
336
|
+
if @socket.respond_to?(:read_nonblock)
|
337
|
+
@socket.read_nonblock(1)
|
338
|
+
elsif @socket.respond_to?(:io)
|
339
|
+
# The SSL Socket may send down additional data at close time,
|
340
|
+
# so we perform two nonblocking reads, one to pull any pending
|
341
|
+
# data on the socket, and the second to actually perform the connection
|
342
|
+
# liveliness test
|
343
|
+
@socket.io.read_nonblock(1024) && @socket.io.read_nonblock(1024)
|
344
|
+
end
|
345
|
+
rescue *wait_exceptions
|
298
346
|
# noop
|
299
347
|
end
|
300
348
|
end
|
@@ -323,15 +371,29 @@ module Instrumental
|
|
323
371
|
end
|
324
372
|
end
|
325
373
|
|
326
|
-
|
374
|
+
def open_socket(remote_host, remote_port, secure, verify_cert)
|
375
|
+
sock = TCPSocket.open(remote_host, remote_port)
|
376
|
+
if secure
|
377
|
+
context = OpenSSL::SSL::SSLContext.new()
|
378
|
+
if verify_cert
|
379
|
+
context.set_params(:verify_mode => OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT)
|
380
|
+
else
|
381
|
+
context.set_params(:verify_mode => OpenSSL::SSL::VERIFY_NONE)
|
382
|
+
end
|
383
|
+
ssl_socket = OpenSSL::SSL::SSLSocket.new(sock, context)
|
384
|
+
ssl_socket.sync_close = true
|
385
|
+
ssl_socket.connect
|
386
|
+
sock = ssl_socket
|
387
|
+
end
|
388
|
+
sock
|
389
|
+
end
|
327
390
|
|
328
391
|
def run_worker_loop
|
329
392
|
command_and_args = nil
|
330
393
|
command_options = nil
|
331
394
|
logger.info "connecting to collector"
|
332
|
-
@socket = Socket.new(Socket::PF_INET, Socket::SOCK_STREAM, 0)
|
333
395
|
with_timeout(CONNECT_TIMEOUT) do
|
334
|
-
@socket
|
396
|
+
@socket = open_socket(host, port, @secure, @verify_cert)
|
335
397
|
end
|
336
398
|
logger.info "connected to collector at #{host}:#{port}"
|
337
399
|
hello_options = {
|
@@ -404,11 +466,17 @@ module Instrumental
|
|
404
466
|
!@thread.nil? && @pid == Process.pid
|
405
467
|
end
|
406
468
|
|
469
|
+
def flush_socket(socket)
|
470
|
+
socket.flush
|
471
|
+
end
|
472
|
+
|
407
473
|
def disconnect
|
408
474
|
if connected?
|
409
475
|
logger.info "Disconnecting..."
|
410
476
|
begin
|
411
|
-
with_timeout(EXIT_FLUSH_TIMEOUT)
|
477
|
+
with_timeout(EXIT_FLUSH_TIMEOUT) do
|
478
|
+
flush_socket(@socket)
|
479
|
+
end
|
412
480
|
rescue Timeout::Error
|
413
481
|
logger.info "Timed out flushing socket..."
|
414
482
|
end
|
@@ -417,6 +485,21 @@ module Instrumental
|
|
417
485
|
@socket = nil
|
418
486
|
end
|
419
487
|
|
488
|
+
def allows_secure?
|
489
|
+
defined?(OpenSSL)
|
490
|
+
end
|
491
|
+
|
492
|
+
def certificates
|
493
|
+
if allows_secure?
|
494
|
+
base_dir = File.expand_path(File.join(File.dirname(__FILE__), "..", ".."))
|
495
|
+
%w{equifax geotrust rapidssl}.map do |name|
|
496
|
+
OpenSSL::X509::Certificate.new(File.open(File.join(base_dir, "certs", "#{name}.ca.pem")))
|
497
|
+
end
|
498
|
+
else
|
499
|
+
[]
|
500
|
+
end
|
501
|
+
end
|
502
|
+
|
420
503
|
end
|
421
504
|
|
422
505
|
end
|