tunnels 1.1.0 → 1.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.
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  Tunnels
2
2
  =======
3
3
 
4
- ![image](http://i.imgur.com/5F9tJ.png)
4
+ ![image](http://i.imgur.com/Ej5dz.png)
5
5
 
6
6
  Tunnels is a proxy to http from https.
7
7
 
@@ -17,15 +17,19 @@ Run
17
17
 
18
18
  $ sudo tunnels
19
19
 
20
+ If you are using rvm:
21
+
22
+ $ rvmsudo tunnels
23
+
20
24
  By default, proxy to 80 port from 443 port.
21
25
 
22
- specify `http` port:
26
+ specify "http" port and "https" port:
23
27
 
24
- $ sudo tunnels 4567
28
+ $ sudo tunnels 443 3000
25
29
 
26
- specify `http` port and `https` port:
30
+ or
27
31
 
28
- $ sudo tunnels 4567 443
32
+ $ sudo tunnels 127.0.0.1:443 127.0.0.1:3000
29
33
 
30
34
  Copyright
31
35
  ---------
data/bin/tunnels CHANGED
@@ -1,3 +1,16 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'tunnels'
3
- Tunnels.run!('127.0.0.1', *ARGV[0..1])
3
+ unless ARGV.size == 0 || ARGV.size == 2
4
+ puts <<-D
5
+ Usage:
6
+ tunnels [from to]
7
+
8
+ Examples:
9
+ tunnels 443 3000
10
+ tunnels localhost:443 localhost:3000
11
+
12
+ D
13
+ exit!
14
+ end
15
+
16
+ Tunnels.run!(*ARGV)
@@ -1,3 +1,3 @@
1
1
  module Tunnels
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
data/lib/tunnels.rb CHANGED
@@ -5,9 +5,13 @@ require "eventmachine"
5
5
  # Copyright © 2012, Thin::Glazed was a Rails Camp New Zealand project, and is developed and maintained by Pat Allan. It is released under the open MIT Licence.
6
6
 
7
7
  module Tunnels
8
- def self.run!(host = '127.0.0.1', to = 80, from = 443)
8
+ def self.run!(from = '127.0.0.1:443', to = '127.0.0.1:80')
9
+ from_host, from_port = parse_host_str(from)
10
+ to_host, to_port = parse_host_str(to)
11
+ puts "#{from_host}:#{from_port} --(--)--> #{to_host}:#{to_port}"
12
+
9
13
  EventMachine.run do
10
- EventMachine.start_server(host, from, HttpsProxy, to)
14
+ EventMachine.start_server(from_host, from_port, HttpsProxy, to_port)
11
15
  puts "Ready :)"
12
16
  end
13
17
  rescue => e
@@ -15,6 +19,16 @@ module Tunnels
15
19
  puts "Maybe you should run on `sudo`"
16
20
  end
17
21
 
22
+ def self.parse_host_str(str)
23
+ raise ArgumentError, 'arg must not be empty' if str.empty?
24
+ parts = str.split(':')
25
+ if parts.size == 1
26
+ ['127.0.0.1', parts[0].to_i]
27
+ else
28
+ [parts[0], parts[1].to_i]
29
+ end
30
+ end
31
+
18
32
  class HttpClient < EventMachine::Connection
19
33
  attr_reader :proxy
20
34
 
@@ -0,0 +1,6 @@
1
+ require 'rspec'
2
+ require 'tunnels'
3
+
4
+ RSpec.configure do |config|
5
+ config.mock_with :rr
6
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ # to stub
4
+ def EventMachine.run(&block)
5
+ block.call
6
+ end
7
+
8
+ describe Tunnels do
9
+ describe '.run!' do
10
+ context 'with no args' do
11
+ it 'works' do
12
+ mock(EventMachine).start_server('127.0.0.1', 443, Tunnels::HttpsProxy, 80)
13
+ Tunnels.run!
14
+ end
15
+ end
16
+
17
+ context 'with args' do
18
+ it 'works' do
19
+ mock(EventMachine).start_server('127.0.0.1', 443, Tunnels::HttpsProxy, 80)
20
+ Tunnels.run!('127.0.0.1:443', '127.0.0.1:80')
21
+ end
22
+ end
23
+ end
24
+ end
data/tunnels.gemspec CHANGED
@@ -20,5 +20,7 @@ Gem::Specification.new do |s|
20
20
 
21
21
  # specify any dependencies here; for example:
22
22
  # s.add_development_dependency "rspec"
23
+ s.add_development_dependency "rspec"
24
+ s.add_development_dependency "rr"
23
25
  s.add_runtime_dependency "eventmachine"
24
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tunnels
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,33 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-07 00:00:00.000000000Z
12
+ date: 2012-03-08 00:00:00.000000000Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: &70272751148400 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *70272751148400
25
+ - !ruby/object:Gem::Dependency
26
+ name: rr
27
+ requirement: &70272751147980 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70272751147980
14
36
  - !ruby/object:Gem::Dependency
15
37
  name: eventmachine
16
- requirement: &70342271897640 !ruby/object:Gem::Requirement
38
+ requirement: &70272751147480 !ruby/object:Gem::Requirement
17
39
  none: false
18
40
  requirements:
19
41
  - - ! '>='
@@ -21,7 +43,7 @@ dependencies:
21
43
  version: '0'
22
44
  type: :runtime
23
45
  prerelease: false
24
- version_requirements: *70342271897640
46
+ version_requirements: *70272751147480
25
47
  description: This tunnels https to http.
26
48
  email:
27
49
  - jugyo.org@gmail.com
@@ -36,6 +58,8 @@ files:
36
58
  - bin/tunnels
37
59
  - lib/tunnels.rb
38
60
  - lib/tunnels/version.rb
61
+ - spec/spec_helper.rb
62
+ - spec/tunnels_spec.rb
39
63
  - tunnels.gemspec
40
64
  homepage: https://github.com/jugyo/tunnels
41
65
  licenses: []
@@ -61,4 +85,6 @@ rubygems_version: 1.8.10
61
85
  signing_key:
62
86
  specification_version: 3
63
87
  summary: https --(--)--> http
64
- test_files: []
88
+ test_files:
89
+ - spec/spec_helper.rb
90
+ - spec/tunnels_spec.rb