girl 0.83.0 → 0.84.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of girl might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/girl.gemspec +1 -1
- data/lib/girl/head.rb +3 -2
- data/lib/girl/proxy_worker.rb +12 -12
- data/lib/girl/proxyd_worker.rb +12 -10
- data/lib/girl/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e4aab3d7602140945fbcdf5717c347e2cfa7bb409107f95453d604e334e4cf2
|
4
|
+
data.tar.gz: abad237f14da90667f236445a468be63107f8da57b92556507bd2fc71eb14b3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20fa20702e7a4f174a7b44793db3c05dd9f42ae6449f708b025b716baf69fd339fb908d6399d82e9f625b598155f5683ee21d3018a16c3e75a0c0ffedcd8e3e0
|
7
|
+
data.tar.gz: 3e38693a5d467b323faf00feda3775f7a560a5e9744efa1116d942fdbc88f86de9ae4ac8f5eb4dc2ce8b14d92c522604bf0c8f83b0e51eb9d87861ee9d9ec3b2
|
data/girl.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ['qqtakafan@gmail.com']
|
11
11
|
|
12
12
|
spec.summary = %q{妹子}
|
13
|
-
spec.description = %q{
|
13
|
+
spec.description = %q{escape evil.}
|
14
14
|
spec.homepage = 'https://github.com/takafan/girl'
|
15
15
|
spec.license = 'MIT'
|
16
16
|
|
data/lib/girl/head.rb
CHANGED
@@ -7,9 +7,10 @@ module Girl
|
|
7
7
|
EXPIRE_NEW = 10 # 创建之后多久没有流量进来,过期
|
8
8
|
EXPIRE_AFTER = 300 # 多久没有新流量,过期
|
9
9
|
CHECK_EXPIRE_INTERVAL = 30 # 检查过期间隔
|
10
|
-
|
10
|
+
CHECK_STATUS_INTERVAL = 0.5 # 发送状态间隔
|
11
11
|
SEND_STATUS_UNTIL = 10 # 持续的告之对面状态,直到没有流量往来,持续多少秒
|
12
|
-
|
12
|
+
MISS_RANGE_LIMIT = 100 # miss段上限,达到上限忽略要后面的段
|
13
|
+
RESENDING_LIMIT = 5000 # 重传队列上限
|
13
14
|
CONFUSE_UNTIL = 5 # 混淆前几个包
|
14
15
|
RESOLV_CACHE_EXPIRE = 300 # dns查询结果缓存多久过期
|
15
16
|
TUND_PORT = 1
|
data/lib/girl/proxy_worker.rb
CHANGED
@@ -152,7 +152,7 @@ module Girl
|
|
152
152
|
def loop_check_status
|
153
153
|
Thread.new do
|
154
154
|
loop do
|
155
|
-
sleep
|
155
|
+
sleep CHECK_STATUS_INTERVAL
|
156
156
|
|
157
157
|
@mutex.synchronize do
|
158
158
|
if @tun && !@tun.closed? && @tun_info[ :tund_addr ]
|
@@ -1226,7 +1226,7 @@ module Girl
|
|
1226
1226
|
|
1227
1227
|
tund_port = data[ 9, 2 ].unpack( 'n' ).first
|
1228
1228
|
|
1229
|
-
|
1229
|
+
puts "p#{ Process.pid } #{ Time.new } got tund port #{ tund_port }"
|
1230
1230
|
tund_addr = Socket.sockaddr_in( tund_port, @proxyd_host )
|
1231
1231
|
@tun_info[ :tund_addr ] = tund_addr
|
1232
1232
|
|
@@ -1291,36 +1291,36 @@ module Girl
|
|
1291
1291
|
# 发miss
|
1292
1292
|
if !src_ext[ :src ].closed? && ( src_ext[ :continue_dst_pack_id ] < relay_dst_pack_id )
|
1293
1293
|
ranges = []
|
1294
|
+
ignored = false
|
1294
1295
|
curr_pack_id = src_ext[ :continue_dst_pack_id ] + 1
|
1295
1296
|
|
1296
1297
|
src_ext[ :pieces ].keys.sort.each do | pack_id |
|
1297
1298
|
if pack_id > curr_pack_id
|
1298
1299
|
ranges << [ curr_pack_id, pack_id - 1 ]
|
1300
|
+
|
1301
|
+
if range.size >= MISS_RANGE_LIMIT
|
1302
|
+
puts "p#{ Process.pid } #{ Time.new } break add miss range at #{ pack_id }"
|
1303
|
+
ignored = true
|
1304
|
+
break
|
1305
|
+
end
|
1299
1306
|
end
|
1300
1307
|
|
1301
1308
|
curr_pack_id = pack_id + 1
|
1302
1309
|
end
|
1303
1310
|
|
1304
|
-
if curr_pack_id <= relay_dst_pack_id
|
1311
|
+
if !ignored && ( curr_pack_id <= relay_dst_pack_id )
|
1305
1312
|
ranges << [ curr_pack_id, relay_dst_pack_id ]
|
1306
1313
|
end
|
1307
1314
|
|
1308
|
-
pack_count = 0
|
1309
1315
|
# puts "debug1 continue/relay #{ src_ext[ :continue_dst_pack_id ] }/#{ relay_dst_pack_id } send MISS #{ ranges.size }"
|
1310
1316
|
|
1311
1317
|
ranges.each do | pack_id_begin, pack_id_end |
|
1312
|
-
if pack_count >= BREAK_SEND_MISS
|
1313
|
-
puts "p#{ Process.pid } #{ Time.new } break send miss at #{ pack_id_begin }"
|
1314
|
-
break
|
1315
|
-
end
|
1316
|
-
|
1317
1318
|
data2 = [ 0, MISS, dst_port, pack_id_begin, pack_id_end ].pack( 'Q>CnQ>Q>' )
|
1318
1319
|
add_tun_ctlmsg( data2 )
|
1319
|
-
pack_count += ( pack_id_end - pack_id_begin + 1 )
|
1320
1320
|
end
|
1321
1321
|
end
|
1322
1322
|
when MISS
|
1323
|
-
return if from_addr != @tun_info[ :tund_addr ]
|
1323
|
+
return if ( from_addr != @tun_info[ :tund_addr ] ) || ( @tun_info[ :resendings ].size >= RESENDING_LIMIT )
|
1324
1324
|
|
1325
1325
|
src_id, pack_id_begin, pack_id_end = data[ 9, 24 ].unpack( 'Q>Q>Q>' )
|
1326
1326
|
|
@@ -1331,7 +1331,7 @@ module Girl
|
|
1331
1331
|
send_at = src_ext[ :send_ats ][ pack_id ]
|
1332
1332
|
|
1333
1333
|
if send_at
|
1334
|
-
break if now - send_at <
|
1334
|
+
break if now - send_at < CHECK_STATUS_INTERVAL
|
1335
1335
|
@tun_info[ :resendings ] << [ src_id, pack_id ]
|
1336
1336
|
end
|
1337
1337
|
end
|
data/lib/girl/proxyd_worker.rb
CHANGED
@@ -144,7 +144,7 @@ module Girl
|
|
144
144
|
def loop_check_status
|
145
145
|
Thread.new do
|
146
146
|
loop do
|
147
|
-
sleep
|
147
|
+
sleep CHECK_STATUS_INTERVAL
|
148
148
|
|
149
149
|
if @tunds.any?
|
150
150
|
@mutex.synchronize do
|
@@ -866,35 +866,37 @@ module Girl
|
|
866
866
|
# 发miss
|
867
867
|
if !dst_ext[ :dst ].closed? && ( dst_ext[ :continue_src_pack_id ] < relay_src_pack_id )
|
868
868
|
ranges = []
|
869
|
+
ignored = false
|
869
870
|
curr_pack_id = dst_ext[ :continue_src_pack_id ] + 1
|
870
871
|
|
871
872
|
dst_ext[ :pieces ].keys.sort.each do | pack_id |
|
872
873
|
if pack_id > curr_pack_id
|
873
874
|
ranges << [ curr_pack_id, pack_id - 1 ]
|
875
|
+
|
876
|
+
if range.size >= MISS_RANGE_LIMIT
|
877
|
+
puts "p#{ Process.pid } #{ Time.new } break add miss range at #{ pack_id }"
|
878
|
+
ignored = true
|
879
|
+
break
|
880
|
+
end
|
874
881
|
end
|
875
882
|
|
876
883
|
curr_pack_id = pack_id + 1
|
877
884
|
end
|
878
885
|
|
879
|
-
if curr_pack_id <= relay_src_pack_id
|
886
|
+
if !ignored && ( curr_pack_id <= relay_src_pack_id )
|
880
887
|
ranges << [ curr_pack_id, relay_src_pack_id ]
|
881
888
|
end
|
882
889
|
|
883
|
-
pack_count = 0
|
884
890
|
# puts "debug1 continue/relay #{ dst_ext[ :continue_src_pack_id ] }/#{ relay_src_pack_id } send MISS #{ ranges.size }"
|
885
891
|
|
886
892
|
ranges.each do | pack_id_begin, pack_id_end |
|
887
|
-
if pack_count >= BREAK_SEND_MISS
|
888
|
-
puts "p#{ Process.pid } #{ Time.new } break send miss at #{ pack_id_begin }"
|
889
|
-
break
|
890
|
-
end
|
891
|
-
|
892
893
|
data2 = [ 0, MISS, src_id, pack_id_begin, pack_id_end ].pack( 'Q>CQ>Q>Q>' )
|
893
894
|
add_tund_ctlmsg( tund, data2 )
|
894
|
-
pack_count += ( pack_id_end - pack_id_begin + 1 )
|
895
895
|
end
|
896
896
|
end
|
897
897
|
when MISS
|
898
|
+
return if tund_info[ :resendings ].size >= RESENDING_LIMIT
|
899
|
+
|
898
900
|
dst_local_port, pack_id_begin, pack_id_end = data[ 9, 18 ].unpack( 'nQ>Q>' )
|
899
901
|
|
900
902
|
dst_ext = tund_info[ :dst_exts ][ dst_local_port ]
|
@@ -904,7 +906,7 @@ module Girl
|
|
904
906
|
send_at = dst_ext[ :send_ats ][ pack_id ]
|
905
907
|
|
906
908
|
if send_at
|
907
|
-
break if now - send_at <
|
909
|
+
break if now - send_at < CHECK_STATUS_INTERVAL
|
908
910
|
tund_info[ :resendings ] << [ dst_local_port, pack_id ]
|
909
911
|
end
|
910
912
|
end
|
data/lib/girl/version.rb
CHANGED
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: girl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.84.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- takafan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-09-
|
11
|
+
date: 2020-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
13
|
+
description: escape evil.
|
14
14
|
email:
|
15
15
|
- qqtakafan@gmail.com
|
16
16
|
executables: []
|