redcap 0.1.1 → 0.2.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1fff71b17f4d498a4616e2b89bd5ab14b0a5c3bd
4
+ data.tar.gz: 781d7208172e418708ec5d0707a2a50074b8fb0f
5
+ SHA512:
6
+ metadata.gz: dcf6724fe98fe543339836cf4755cd316701b9c4f087409df3904c0f3bdf1b4a1ecc516f9bd29dd1ee4094db2ad30e561c9626ff78ce3d975e3e00854d53473b
7
+ data.tar.gz: e47c3fea6987cfdcf3bcdfdc51e63ddc09ee08cfac43b969c8d4183fe6183bcc51f7d133237ad104d237a9cbc1f9e553593cc28fb15023684248f665e6d59095
@@ -0,0 +1,8 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ - rbx
5
+ - rbx-2.0
6
+ - ree
7
+ - jruby
8
+ - ruby-head
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
1
  source :rubygems
2
2
 
3
3
  gemspec
4
+
5
+ gem 'eventmachine', '>= 0.12.10'
@@ -8,7 +8,11 @@ h2. Installation
8
8
 
9
9
  h2. Usage
10
10
 
11
- As a server:
11
+ As a server, you'll also want EventMachine installed:
12
+
13
+ <pre><code>gem install eventmachine</code></pre>
14
+
15
+ And then, the service must be run as root (so it can get all the requierd port and process information):
12
16
 
13
17
  <pre><code>$ sudo redcap</code></pre>
14
18
 
data/Rakefile CHANGED
@@ -7,3 +7,6 @@ Bundler::GemHelper.install_tasks
7
7
 
8
8
  require 'rspec/core/rake_task'
9
9
  RSpec::Core::RakeTask.new
10
+
11
+ task :default => :test
12
+ task :test => :spec
data/bin/redcap CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'redcap'
3
+ require 'redcap/server'
3
4
 
4
5
  Redcap::App.daemonise!
5
6
  Redcap::App.run
@@ -1,22 +1,20 @@
1
1
  require 'socket'
2
2
  require 'singleton'
3
3
  require 'logger'
4
- require 'eventmachine'
5
4
 
6
5
  module Redcap
7
6
  def self.pid_for_port(port, options = {})
8
7
  options[:server] ||= '127.0.0.1'
9
8
  options[:port] ||= 11000
10
-
9
+
11
10
  socket = TCPSocket.new options[:server], options[:port]
12
11
  socket.write "#{port}\n"
13
12
  pid = socket.read.to_i
14
13
  socket.close
15
-
14
+
16
15
  pid
17
16
  end
18
17
  end
19
18
 
20
19
  require 'redcap/app'
21
- require 'redcap/server'
22
20
  require 'redcap/version'
@@ -1,18 +1,20 @@
1
+ require 'eventmachine'
2
+
1
3
  class Redcap::Server < EventMachine::Protocols::LineAndTextProtocol
2
4
  attr_accessor :logger
3
-
5
+
4
6
  def receive_line(line)
5
7
  port = line.to_i
6
8
  pid = pid_for_port(port)
7
-
9
+
8
10
  logger.info "port: #{port} -> pid: #{pid}"
9
-
11
+
10
12
  send_data pid
11
13
  close_connection_after_writing
12
14
  end
13
-
15
+
14
16
  private
15
-
17
+
16
18
  def pid_for_port(port)
17
19
  `lsof -i :#{port} | grep ssh | awk '{print $2}'`[/\d+/] || 'Unknown'
18
20
  end
@@ -1 +1,3 @@
1
- Redcap::Version = '0.1.1'
1
+ module Redcap
2
+ Version = '0.2.0'
3
+ end
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $:.push File.expand_path('../lib', __FILE__)
3
- require 'redcap'
3
+ require 'redcap/version'
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'redcap'
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  File.basename(f)
21
21
  }
22
22
  s.require_paths = ['lib']
23
-
24
- s.add_runtime_dependency 'eventmachine', ['>= 0.12.10']
25
- s.add_development_dependency 'rspec', ['2.5.0']
23
+
24
+ s.add_development_dependency 'rake'
25
+ s.add_development_dependency 'rspec'
26
26
  end
@@ -3,32 +3,32 @@ require 'spec_helper'
3
3
  describe Redcap::Server do
4
4
  describe '#receive_line' do
5
5
  let(:server) { Redcap::Server.new :spec }
6
- let(:logger) { stub('logger', :info => nil) }
7
-
6
+ let(:logger) { double('logger', :info => nil) }
7
+
8
8
  before :each do
9
9
  server.logger = logger
10
- server.stub!(
10
+ allow(server).to receive_messages(
11
11
  :` => '24',
12
12
  :close_connection_after_writing => nil,
13
13
  :send_data => nil
14
14
  )
15
15
  end
16
-
16
+
17
17
  it "sends the process id for a given port" do
18
- server.should_receive(:send_data).with('24')
19
-
18
+ expect(server).to receive(:send_data).with('24')
19
+
20
20
  server.receive_line('101')
21
21
  end
22
-
22
+
23
23
  it "closes the connection once writing is finished" do
24
- server.should_receive(:close_connection_after_writing)
25
-
24
+ expect(server).to receive(:close_connection_after_writing)
25
+
26
26
  server.receive_line('101')
27
27
  end
28
-
28
+
29
29
  it "logs the request" do
30
- logger.should_receive(:info).with('port: 101 -> pid: 24')
31
-
30
+ expect(logger).to receive(:info).with('port: 101 -> pid: 24')
31
+
32
32
  server.receive_line('101')
33
33
  end
34
34
  end
@@ -2,20 +2,22 @@ require 'spec_helper'
2
2
 
3
3
  describe Redcap do
4
4
  describe '.pid_for_port' do
5
- let(:socket) { stub('socket', :write => nil, :read => '42', :close => nil) }
6
-
5
+ let(:socket) {
6
+ double('socket', :write => nil, :read => '42', :close => nil)
7
+ }
8
+
7
9
  before :each do
8
- TCPSocket.stub! :new => socket
10
+ allow(TCPSocket).to receive(:new).and_return(socket)
9
11
  end
10
-
12
+
11
13
  it "sends the given port to the socket" do
12
- socket.should_receive(:write).with("101\n")
13
-
14
+ expect(socket).to receive(:write).with("101\n")
15
+
14
16
  Redcap.pid_for_port(101)
15
17
  end
16
-
18
+
17
19
  it "returns the socket output as an integer" do
18
- Redcap.pid_for_port(101).should == 42
20
+ expect(Redcap.pid_for_port(101)).to eq(42)
19
21
  end
20
22
  end
21
23
  end
@@ -7,7 +7,8 @@ $:.unshift File.dirname(__FILE__) + '/..'
7
7
  Bundler.require :default, :development
8
8
 
9
9
  require 'redcap'
10
+ require 'redcap/server'
10
11
 
11
12
  RSpec.configure do |config|
12
-
13
+
13
14
  end
metadata CHANGED
@@ -1,51 +1,54 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: redcap
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.1.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
6
5
  platform: ruby
7
- authors:
6
+ authors:
8
7
  - Pat Allan
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
-
13
- date: 2011-05-10 00:00:00 +10:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: eventmachine
18
- requirement: &id001 !ruby/object:Gem::Requirement
19
- none: false
20
- requirements:
11
+ date: 2017-05-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
21
17
  - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 0.12.10
24
- type: :runtime
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
25
21
  prerelease: false
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
- requirement: &id002 !ruby/object:Gem::Requirement
30
- none: false
31
- requirements:
32
- - - "="
33
- - !ruby/object:Gem::Version
34
- version: 2.5.0
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
35
34
  type: :development
36
35
  prerelease: false
37
- version_requirements: *id002
38
- description: A service that translates SSH forward ports to process IDs. Built for Flying Sphinx.
39
- email:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: A service that translates SSH forward ports to process IDs. Built for
42
+ Flying Sphinx.
43
+ email:
40
44
  - pat@freelancing-gods.com
41
- executables:
45
+ executables:
42
46
  - redcap
43
47
  extensions: []
44
-
45
48
  extra_rdoc_files: []
46
-
47
- files:
48
- - .gitignore
49
+ files:
50
+ - ".gitignore"
51
+ - ".travis.yml"
49
52
  - Gemfile
50
53
  - LICENCE
51
54
  - README.textile
@@ -59,41 +62,30 @@ files:
59
62
  - spec/redcap/server_spec.rb
60
63
  - spec/redcap_spec.rb
61
64
  - spec/spec_helper.rb
62
- has_rdoc: true
63
65
  homepage: http://github.com/flying-sphinx/redcap
64
66
  licenses: []
65
-
67
+ metadata: {}
66
68
  post_install_message:
67
69
  rdoc_options: []
68
-
69
- require_paths:
70
+ require_paths:
70
71
  - lib
71
- required_ruby_version: !ruby/object:Gem::Requirement
72
- none: false
73
- requirements:
72
+ required_ruby_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
74
  - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: -325199160494585366
77
- segments:
78
- - 0
79
- version: "0"
80
- required_rubygems_version: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ requirements:
83
79
  - - ">="
84
- - !ruby/object:Gem::Version
85
- hash: -325199160494585366
86
- segments:
87
- - 0
88
- version: "0"
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
89
82
  requirements: []
90
-
91
83
  rubyforge_project: redcap
92
- rubygems_version: 1.6.2
84
+ rubygems_version: 2.6.11
93
85
  signing_key:
94
- specification_version: 3
86
+ specification_version: 4
95
87
  summary: Translates SSH forward ports to process IDs
96
- test_files:
88
+ test_files:
97
89
  - spec/redcap/server_spec.rb
98
90
  - spec/redcap_spec.rb
99
91
  - spec/spec_helper.rb