redcap 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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