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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 28c02739bfb0608617fa46ef36d80d7ba9c84753eb3c34410eb98f05cab430f1
4
- data.tar.gz: 94a70957768e52b1e40782c0df53451e1caebcac096829648009c6977219dd8b
3
+ metadata.gz: 5e4aab3d7602140945fbcdf5717c347e2cfa7bb409107f95453d604e334e4cf2
4
+ data.tar.gz: abad237f14da90667f236445a468be63107f8da57b92556507bd2fc71eb14b3e
5
5
  SHA512:
6
- metadata.gz: d0e12984275ddf891c11b75ce86d13830798d2538b9b4b15962720ac268f61dc721d1fd355f99282f6274217879e1053d698dbcdaf59de30533fe59c53596173
7
- data.tar.gz: dc98d8959fd53fc51f8e0e2851ce46afe78a7ddedf293a595148b885a8ed2055a7e1fa92e88b22826528e0a6399ff5c16700c689bf4a766a6d7ca809567e0a1d
6
+ metadata.gz: 20fa20702e7a4f174a7b44793db3c05dd9f42ae6449f708b025b716baf69fd339fb908d6399d82e9f625b598155f5683ee21d3018a16c3e75a0c0ffedcd8e3e0
7
+ data.tar.gz: 3e38693a5d467b323faf00feda3775f7a560a5e9744efa1116d942fdbc88f86de9ae4ac8f5eb4dc2ce8b14d92c522604bf0c8f83b0e51eb9d87861ee9d9ec3b2
@@ -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{while internet is evil, here's a girl.}
13
+ spec.description = %q{escape evil.}
14
14
  spec.homepage = 'https://github.com/takafan/girl'
15
15
  spec.license = 'MIT'
16
16
 
@@ -7,9 +7,10 @@ module Girl
7
7
  EXPIRE_NEW = 10 # 创建之后多久没有流量进来,过期
8
8
  EXPIRE_AFTER = 300 # 多久没有新流量,过期
9
9
  CHECK_EXPIRE_INTERVAL = 30 # 检查过期间隔
10
- STATUS_INTERVAL = 0.5 # 发送状态间隔
10
+ CHECK_STATUS_INTERVAL = 0.5 # 发送状态间隔
11
11
  SEND_STATUS_UNTIL = 10 # 持续的告之对面状态,直到没有流量往来,持续多少秒
12
- BREAK_SEND_MISS = 10_000 # miss包个数上限,达到上限忽略要后面的段,可控碎片缓存
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
@@ -152,7 +152,7 @@ module Girl
152
152
  def loop_check_status
153
153
  Thread.new do
154
154
  loop do
155
- sleep STATUS_INTERVAL
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
- # puts "debug1 got tund port #{ tund_port }"
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 < STATUS_INTERVAL
1334
+ break if now - send_at < CHECK_STATUS_INTERVAL
1335
1335
  @tun_info[ :resendings ] << [ src_id, pack_id ]
1336
1336
  end
1337
1337
  end
@@ -144,7 +144,7 @@ module Girl
144
144
  def loop_check_status
145
145
  Thread.new do
146
146
  loop do
147
- sleep STATUS_INTERVAL
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 < STATUS_INTERVAL
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
@@ -1,3 +1,3 @@
1
1
  module Girl
2
- VERSION = '0.83.0'.freeze
2
+ VERSION = '0.84.0'.freeze
3
3
  end
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.83.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-05 00:00:00.000000000 Z
11
+ date: 2020-09-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: while internet is evil, here's a girl.
13
+ description: escape evil.
14
14
  email:
15
15
  - qqtakafan@gmail.com
16
16
  executables: []