shadowsocks 0.2 → 0.3

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