shadowsocks 0.10 → 0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -4
- data/config.json +2 -2
- data/lib/shadowsocks/ip_detector.rb +23 -5
- data/lib/shadowsocks/local.rb +24 -11
- data/lib/shadowsocks/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13cd39701958e9cbe3c1aa72e2f4037becf509d6
|
4
|
+
data.tar.gz: f1d90a849085aec7408ce5f09e0e2f8e8a2cd350
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 688d4af6514d67b927edfcac45958619d844c07ad48473a7174ac84c34bf9625ffbe26ad0151a7a6e6c6625c683d58c4f8050d99cf64713614a6f53209d64122
|
7
|
+
data.tar.gz: 54a763dc6a4078a4fdff3b2bb4735139795b03e9f1cb9635e46110d32846125d9c2fb311dec77c2632be518a14595c1fe4eabea7fb2f4023aa80a299208a608a
|
data/README.md
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
shadowsocks-ruby
|
2
2
|
================
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
Current version: 0.7
|
4
|
+
Current version: 0.11
|
7
5
|
|
8
6
|
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).
|
9
7
|
|
@@ -59,7 +57,7 @@ Command line args
|
|
59
57
|
|
60
58
|
You can use args to override settings from `config.json`.
|
61
59
|
|
62
|
-
ss-local -s server_name -p server_port -l local_port -k password
|
60
|
+
ss-local -s server_name -p server_port -l local_port -k password -m aes-128-cfb -d true
|
63
61
|
ss-server -p server_port -k password
|
64
62
|
ss-server -c /etc/shadowsocks/config.json
|
65
63
|
|
data/config.json
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'ipaddr'
|
2
2
|
require 'socket'
|
3
|
+
require 'digest/md5'
|
3
4
|
|
4
5
|
module Shadowsocks
|
5
6
|
class IPDetector
|
@@ -8,6 +9,7 @@ module Shadowsocks
|
|
8
9
|
def initialize
|
9
10
|
@internals = {}
|
10
11
|
@nums = []
|
12
|
+
@dns_cache = {}
|
11
13
|
lines = File.readlines(GFW_LIST_PATH)
|
12
14
|
lines.each do |line|
|
13
15
|
num = IPAddr.new(line).to_i
|
@@ -18,13 +20,29 @@ module Shadowsocks
|
|
18
20
|
end
|
19
21
|
|
20
22
|
def behind_gfw?(domain)
|
21
|
-
|
23
|
+
key = Digest::MD5.hexdigest domain
|
22
24
|
|
23
|
-
|
25
|
+
if @dns_cache[key]
|
26
|
+
@dns_cache[key]
|
27
|
+
else
|
28
|
+
begin
|
29
|
+
ip = IPSocket::getaddress(domain)
|
24
30
|
|
25
|
-
|
26
|
-
|
27
|
-
|
31
|
+
ip_num = IPAddr.new(ip).to_i
|
32
|
+
|
33
|
+
i = @nums.bsearch { |x| x > ip_num }
|
34
|
+
index = @nums.index(i) - 1
|
35
|
+
r = IPAddr.new(@internals[@nums[index].to_s]).include? ip
|
36
|
+
if @dns_cache.size > 512
|
37
|
+
@dns_cache.delete @dns_cache.first[0]
|
38
|
+
end
|
39
|
+
|
40
|
+
@dns_cache[key] = r
|
41
|
+
r
|
42
|
+
rescue Exception
|
43
|
+
false
|
44
|
+
end
|
45
|
+
end
|
28
46
|
end
|
29
47
|
end
|
30
48
|
end
|
data/lib/shadowsocks/local.rb
CHANGED
@@ -71,19 +71,32 @@ module Shadowsocks
|
|
71
71
|
|
72
72
|
@stage = 4
|
73
73
|
|
74
|
-
|
75
|
-
|
76
|
-
|
74
|
+
op = proc {
|
75
|
+
if config.chnroutes
|
76
|
+
@behind_gfw = @ip_detector.behind_gfw?(@remote_addr[3..-1])
|
77
|
+
else
|
78
|
+
false
|
79
|
+
end
|
80
|
+
}
|
81
|
+
|
82
|
+
callback = proc { |result|
|
83
|
+
begin
|
84
|
+
if !(config.chnroutes and result)
|
85
|
+
raise 'will use remote server'
|
86
|
+
end
|
87
|
+
@connector = EM.connect @remote_addr[3..-1], @remote_port, \
|
88
|
+
DirectConnector, self, crypto
|
89
|
+
rescue Exception
|
90
|
+
@connector = EM.connect config.server, config.server_port, \
|
91
|
+
ServerConnector, self, crypto
|
92
|
+
end
|
77
93
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
end
|
94
|
+
if data.size > header_length
|
95
|
+
cached_pieces.push data[header_length, data.size]
|
96
|
+
end
|
97
|
+
}
|
83
98
|
|
84
|
-
|
85
|
-
cached_pieces.push data[header_length, data.size]
|
86
|
-
end
|
99
|
+
EM.defer op, callback
|
87
100
|
rescue Exception => e
|
88
101
|
warn e
|
89
102
|
connection_cleanup
|
data/lib/shadowsocks/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shadowsocks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.11'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eventmachine
|