shadowsocks 0.2 → 0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8f8f39128d624bf5685bbaeb8c14064a65138c85
4
- data.tar.gz: 4213b2dab798ad6f171b433e2aa65720cbec65cb
3
+ metadata.gz: 210530027df71869738df356d97c6d3155592ab9
4
+ data.tar.gz: 8a45ea79d7cfe255af4f1926dd26eb9b7c4f3328
5
5
  SHA512:
6
- metadata.gz: 0ca6c7ae4445e8ee40e7fbd911264feef6be241c43d5f349cd8c24b33abd1e92e5aa41ee5e2d134f6e2e56105182902b23746cbc865479864f3a827bc970eca4
7
- data.tar.gz: 9a0d34d608289ea5587f4368d1e8dd3d991812eb763397ebfb12b7e4121c1fb56d9d9aa1e83d1b853f22d81f26591f29598c460684928ad26a4a59f81d95ca26
6
+ metadata.gz: 78fe95f2a08447581d78d6b2f6e31cf5ef9ca60fd5d27e722949b0f3a50070166cf6ac316a092e4c21f655168a2168e091c5b9ba365e807afa19b12ee99a8ce7
7
+ data.tar.gz: 73b565053f9dbee59d094485e68797e0e740475e4ccd56739f8df62f15b12f7c096e484b6b33aa11ae11e0709762f31f03a73980d6b15240c2172b732e80800c
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  shadowsocks-ruby
2
2
  ================
3
3
 
4
+ [![Code Climate](https://codeclimate.com/repos/524baea6c7f3a37df208dd4c/badges/9dd6c11b6a17c3a55631/gpa.png)](https://codeclimate.com/repos/524baea6c7f3a37df208dd4c/feed)
5
+
4
6
  Current version: 0.2
5
7
 
6
8
  shadowsocks-ruby is a lightweight tunnel proxy which can help you get through firewalls. It is a port of [shadowsocks](https://github.com/clowwindy/shadowsocks).
data/config.json CHANGED
@@ -3,5 +3,5 @@
3
3
  "server_port":8388,
4
4
  "local_port":1080,
5
5
  "password":"barfoo!",
6
- "timeout":600
6
+ "timeout":60
7
7
  }
data/lib/shadowsocks.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  require 'eventmachine'
2
2
 
3
3
  module Shadowsocks
4
- autoload :Server, 'shadowsocks/server'
5
- autoload :Local, 'shadowsocks/local'
6
- autoload :Table, 'shadowsocks/table'
7
- autoload :Tunnel, 'shadowsocks/tunnel'
8
- autoload :Listener, 'shadowsocks/listener'
4
+ autoload :Connection, 'shadowsocks/connection'
5
+ autoload :Server, 'shadowsocks/server'
6
+ autoload :Local, 'shadowsocks/local'
7
+ autoload :Table, 'shadowsocks/table'
8
+ autoload :Tunnel, 'shadowsocks/tunnel'
9
+ autoload :Listener, 'shadowsocks/listener'
9
10
  end
@@ -0,0 +1,20 @@
1
+ module Shadowsocks
2
+ class Connection < EventMachine::Connection
3
+ BackpressureLevel = 2097152 # 2m
4
+
5
+ private
6
+
7
+ def over_pressure?
8
+ remote.get_outbound_data_size > BackpressureLevel
9
+ end
10
+
11
+ def outbound_checker
12
+ if over_pressure?
13
+ pause unless paused?
14
+ EM.add_timer(1) { outbound_checker }
15
+ else
16
+ resume if paused?
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,5 +1,5 @@
1
1
  module Shadowsocks
2
- class Listener < EventMachine::Connection
2
+ class Listener < ::Shadowsocks::Connection
3
3
  include ::Shadowsocks::Table
4
4
 
5
5
  attr_accessor :stage, :remote_addr, :remote_port, :addr_to_send, :cached_pieces,
@@ -7,6 +7,7 @@ module Shadowsocks
7
7
 
8
8
  def receive_data data
9
9
  data_handler data
10
+ outbound_checker if connector
10
11
  end
11
12
 
12
13
  def post_init
@@ -20,6 +21,10 @@ module Shadowsocks
20
21
  connection_cleanup
21
22
  end
22
23
 
24
+ def remote
25
+ connector
26
+ end
27
+
23
28
  private
24
29
 
25
30
  def connection_cleanup
@@ -14,6 +14,7 @@ module Shadowsocks
14
14
 
15
15
  def receive_data data
16
16
  server.send_data encrypt(table[:decrypt_table], data)
17
+ outbound_checker
17
18
  end
18
19
  end
19
20
 
@@ -12,6 +12,7 @@ module Shadowsocks
12
12
 
13
13
  def receive_data data
14
14
  server.send_data encrypt(table[:encrypt_table], data)
15
+ outbound_checker
15
16
  end
16
17
  end
17
18
 
@@ -1,5 +1,5 @@
1
1
  module Shadowsocks
2
- class Tunnel < EventMachine::Connection
2
+ class Tunnel < ::Shadowsocks::Connection
3
3
  attr_accessor :server, :table
4
4
 
5
5
  def initialize server, table
@@ -12,6 +12,10 @@ module Shadowsocks
12
12
  server.close_connection_after_writing
13
13
  end
14
14
 
15
+ def remote
16
+ server
17
+ end
18
+
15
19
  def encrypt table, data
16
20
  server.encrypt table, data
17
21
  end
@@ -1,3 +1,3 @@
1
1
  module Shadowsocks
2
- VERSION = '0.2'
2
+ VERSION = '0.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shadowsocks
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: '0.3'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sen
@@ -117,6 +117,7 @@ files:
117
117
  - lib/shadowsocks.rb
118
118
  - lib/shadowsocks/cli.rb
119
119
  - lib/shadowsocks/config.rb
120
+ - lib/shadowsocks/connection.rb
120
121
  - lib/shadowsocks/listener.rb
121
122
  - lib/shadowsocks/local.rb
122
123
  - lib/shadowsocks/server.rb
@@ -146,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
147
  version: '0'
147
148
  requirements: []
148
149
  rubyforge_project:
149
- rubygems_version: 2.0.3
150
+ rubygems_version: 2.1.5
150
151
  signing_key:
151
152
  specification_version: 4
152
153
  summary: ruby version of shadowsocks