girl 0.73.1 → 0.78.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: 33af151d416edee9c887ce27984d09f2dd29f9ab73b2f09beac406bdde96eba4
4
- data.tar.gz: bd0271ae4f10083e473ec9ec9794becccb2a24f5d2888b94c48e8402ab08f475
3
+ metadata.gz: cb6d635f9fb525291d4b0c32b749245255a52234ff9b850add473b430aa5e732
4
+ data.tar.gz: c336934bd1fd8825f72e65fdcc9dd708788f53bec7a175a37228ec724b970869
5
5
  SHA512:
6
- metadata.gz: 699f24fd304267c96841c882290a47961a3fefcd21bdf8b8bef509b20eaaa7200f5292d58cc10248a251e541cf6a5bb68d43bef1ad7f4d24881b8ef8c994130a
7
- data.tar.gz: 7c3e71e1c31c9e61f3584b2b1b0a78b505a7e222c61d6b5edd041f7a25a985267ec13bf1432d6bcdfc46c89d9fb0bf32678fda57b47e8a917c40f4451da93e82
6
+ metadata.gz: 81f96a6e78ddf2cf00ff331002b145871eca5b72653bf822d42943858f887be4e996fa47a98e18313800d2a461899280fa6db6eff3781daa3d714b5e54a489dd
7
+ data.tar.gz: 29aaac2d5eae5d9889dcc033048929ff8fffac95c422b5322467ba8859df664097a600e14e9c26ac30e2babadc79463b05d32969565b176f990a52c708dbda80
@@ -30,21 +30,10 @@ module Girl
30
30
  RESERVED_ROUTE = <<EOF
31
31
  0.0.0.0/8
32
32
  10.0.0.0/8
33
- 100.64.0.0/10
34
33
  127.0.0.0/8
35
34
  169.254.0.0/16
36
35
  172.16.0.0/12
37
- 192.0.0.0/24
38
- 192.0.2.0/24
39
- 192.31.196.0/24
40
- 192.52.193.0/24
41
- 192.88.99.0/24
42
36
  192.168.0.0/16
43
- 192.175.48.0/24
44
- 198.18.0.0/15
45
- 198.51.100.0/24
46
- 203.0.113.0/24
47
- 240.0.0.0/4
48
37
  255.255.255.255/32
49
38
  EOF
50
39
  end
@@ -113,7 +113,7 @@ module Girl
113
113
 
114
114
  @tun_info[ :src_exts ].each do | src_id, src_ext |
115
115
  if src_ext[ :src ].closed? && ( now - src_ext[ :last_continue_at ] > EXPIRE_AFTER )
116
- puts "p#{ Process.pid } #{ Time.new } expire src ext #{ src_id }"
116
+ puts "p#{ Process.pid } #{ Time.new } expire src ext #{ src_ext[ :destination_domain ] }"
117
117
  del_src_ext( src_id )
118
118
  end
119
119
  end
@@ -124,7 +124,7 @@ module Girl
124
124
 
125
125
  @src_infos.each do | src, src_info |
126
126
  if now - src_info[ :last_continue_at ] > EXPIRE_AFTER
127
- puts "p#{ Process.pid } #{ Time.new } expire src"
127
+ puts "p#{ Process.pid } #{ Time.new } expire src #{ src_info[ :destination_domain ] }"
128
128
  set_is_closing( src )
129
129
  need_trigger = true
130
130
  end
@@ -393,27 +393,29 @@ module Girl
393
393
  new_a_tun
394
394
  end
395
395
 
396
+ src_info = @src_infos[ src ]
397
+ src_id = src_info[ :id ]
398
+ destination_port = src_info[ :destination_port ]
399
+ destination_domain = src_info[ :destination_domain ]
400
+
396
401
  src_ext = {
397
- src: src, # src
398
- dst_port: nil, # 远端dst端口
399
- wmems: {}, # 写后 pack_id => data
400
- send_ats: {}, # 上一次发出时间 pack_id => send_at
401
- relay_pack_id: 0, # 转发到几
402
- continue_dst_pack_id: 0, # 收到几
403
- pieces: {}, # 跳号包 dst_pack_id => data
404
- is_dst_closed: false, # dst是否已关闭
405
- biggest_dst_pack_id: 0, # dst最大包号码
406
- completed_pack_id: 0, # 完成到几(对面收到几)
407
- last_continue_at: Time.new # 上一次发生流量的时间
402
+ src: src, # src
403
+ dst_port: nil, # 远端dst端口
404
+ destination_domain: destination_domain, # 目的地域名
405
+ wmems: {}, # 写后 pack_id => data
406
+ send_ats: {}, # 上一次发出时间 pack_id => send_at
407
+ relay_pack_id: 0, # 转发到几
408
+ continue_dst_pack_id: 0, # 收到几
409
+ pieces: {}, # 跳号包 dst_pack_id => data
410
+ is_dst_closed: false, # dst是否已关闭
411
+ biggest_dst_pack_id: 0, # dst最大包号码
412
+ completed_pack_id: 0, # 完成到几(对面收到几)
413
+ last_continue_at: Time.new # 上一次发生流量的时间
408
414
  }
409
415
 
410
- src_info = @src_infos[ src ]
411
- src_id = src_info[ :id ]
412
416
  @tun_info[ :src_exts ][ src_id ] = src_ext
413
417
  src_info[ :proxy_type ] = :tunnel
414
418
 
415
- destination_port = src_info[ :destination_port ]
416
- destination_domain = src_info[ :destination_domain ]
417
419
  destination_domain_port = [ destination_domain, destination_port ].join( ':' )
418
420
  data = [ [ 0, A_NEW_SOURCE, src_id ].pack( 'Q>CQ>' ), @custom.encode( destination_domain_port ) ].join
419
421
  loop_send_a_new_source( src_ext, data )
@@ -599,6 +601,23 @@ module Girl
599
601
  end
600
602
  end
601
603
 
604
+ ##
605
+ # send data
606
+ #
607
+ def send_data( tun, data, to_addr )
608
+ begin
609
+ tun.sendmsg( data, 0, to_addr )
610
+ rescue IO::WaitWritable, Errno::EINTR
611
+ return false
612
+ rescue Errno::EHOSTUNREACH, Errno::ENETUNREACH, Errno::ENETDOWN => e
613
+ puts "#{ Time.new } #{ e.class }, close tun"
614
+ close_tun( tun )
615
+ return false
616
+ end
617
+
618
+ true
619
+ end
620
+
602
621
  ##
603
622
  # close src
604
623
  #
@@ -835,13 +854,7 @@ module Girl
835
854
  while @tun_info[ :ctlmsgs ].any?
836
855
  to_addr, data = @tun_info[ :ctlmsgs ].first
837
856
 
838
- begin
839
- tun.sendmsg( data, 0, to_addr )
840
- rescue IO::WaitWritable, Errno::EINTR
841
- return
842
- rescue Errno::EHOSTUNREACH, Errno::ENETUNREACH => e
843
- puts "#{ Time.new } #{ e.class }, close tun"
844
- close_tun( tun )
857
+ unless send_data( tun, data, to_addr )
845
858
  return
846
859
  end
847
860
 
@@ -857,15 +870,11 @@ module Girl
857
870
  data = src_ext[ :wmems ][ pack_id ]
858
871
 
859
872
  if data
860
- begin
861
- tun.sendmsg( data, 0, @tun_info[ :tund_addr ] )
862
- rescue IO::WaitWritable, Errno::EINTR
863
- return
864
- rescue Errno::EHOSTUNREACH, Errno::ENETUNREACH => e
865
- puts "#{ Time.new } #{ e.class }, close tun"
866
- close_tun( tun )
873
+ unless send_data( tun, data, @tun_info[ :tund_addr ] )
867
874
  return
868
875
  end
876
+
877
+ src_ext[ :last_continue_at ] = now
869
878
  end
870
879
  end
871
880
 
@@ -929,13 +938,7 @@ module Girl
929
938
 
930
939
  data = [ [ pack_id, src_id ].pack( 'Q>Q>' ), data ].join
931
940
 
932
- begin
933
- tun.sendmsg( data, 0, @tun_info[ :tund_addr ] )
934
- rescue IO::WaitWritable, Errno::EINTR
935
- return
936
- rescue Errno::EHOSTUNREACH, Errno::ENETUNREACH => e
937
- puts "#{ Time.new } #{ e.class }, close tun"
938
- close_tun( tun )
941
+ unless send_data( tun, data, @tun_info[ :tund_addr ] )
939
942
  return
940
943
  end
941
944
 
@@ -966,7 +969,7 @@ module Girl
966
969
  return
967
970
  end
968
971
 
969
- id = rand( ( 2 ** 64 ) - 1 ) + 1
972
+ id = rand( ( 2 ** 64 ) - 2 ) + 1
970
973
  # puts "debug1 accept a src #{ addrinfo.inspect } #{ id }"
971
974
 
972
975
  @src_infos[ src ] = {
@@ -112,7 +112,7 @@ module Girl
112
112
 
113
113
  tund_info[ :dst_exts ].each do | dst_local_port, dst_ext |
114
114
  if dst_ext[ :dst ].closed? && ( now - dst_ext[ :last_continue_at ] > EXPIRE_AFTER )
115
- puts "p#{ Process.pid } #{ Time.new } expire dst ext #{ dst_local_port }"
115
+ puts "p#{ Process.pid } #{ Time.new } expire dst ext #{ dst_ext[ :domain_port ] }"
116
116
  del_dst_ext( tund, dst_local_port )
117
117
  end
118
118
  end
@@ -264,17 +264,18 @@ module Girl
264
264
  tund_info = @tund_infos[ tund ]
265
265
  tund_info[ :dst_local_ports ][ src_id ] = local_port
266
266
  tund_info[ :dst_exts ][ local_port ] = {
267
- dst: dst, # dst
268
- src_id: src_id, # 近端src id
269
- wmems: {}, # 写后 pack_id => data
270
- send_ats: {}, # 上一次发出时间 pack_id => send_at
271
- relay_pack_id: 0, # 转发到几
272
- continue_src_pack_id: 0, # 收到几
273
- pieces: {}, # 跳号包 src_pack_id => data
274
- is_src_closed: false, # src是否已关闭
275
- biggest_src_pack_id: 0, # src最大包号码
276
- completed_pack_id: 0, # 完成到几(对面收到几)
277
- last_continue_at: Time.new # 上一次发生流量的时间
267
+ dst: dst, # dst
268
+ src_id: src_id, # 近端src id
269
+ domain_port: destination_domain_port, # 域名和端口
270
+ wmems: {}, # 写后 pack_id => data
271
+ send_ats: {}, # 上一次发出时间 pack_id => send_at
272
+ relay_pack_id: 0, # 转发到几
273
+ continue_src_pack_id: 0, # 收到几
274
+ pieces: {}, # 跳号包 src_pack_id => data
275
+ is_src_closed: false, # src是否已关闭
276
+ biggest_src_pack_id: 0, # src最大包号码
277
+ completed_pack_id: 0, # 完成到几(对面收到几)
278
+ last_continue_at: Time.new # 上一次发生流量的时间
278
279
  }
279
280
 
280
281
  data = [ 0, PAIRED, src_id, local_port ].pack( 'Q>CQ>n' )
@@ -414,6 +415,23 @@ module Girl
414
415
  end
415
416
  end
416
417
 
418
+ ##
419
+ # send data
420
+ #
421
+ def send_data( tund, data, to_addr )
422
+ begin
423
+ tund.sendmsg( data, 0, to_addr )
424
+ rescue IO::WaitWritable, Errno::EINTR
425
+ return false
426
+ rescue Errno::EHOSTUNREACH, Errno::ENETUNREACH, Errno::ENETDOWN => e
427
+ puts "#{ Time.new } #{ e.class }, close tund"
428
+ close_tund( tund )
429
+ return false
430
+ end
431
+
432
+ true
433
+ end
434
+
417
435
  ##
418
436
  # close dst
419
437
  #
@@ -591,6 +609,7 @@ module Girl
591
609
  # write tund
592
610
  #
593
611
  def write_tund( tund )
612
+ now = Time.new
594
613
  tund_info = @tund_infos[ tund ]
595
614
 
596
615
  if tund_info[ :is_closing ]
@@ -602,9 +621,7 @@ module Girl
602
621
  while tund_info[ :ctlmsgs ].any?
603
622
  data = tund_info[ :ctlmsgs ].first
604
623
 
605
- begin
606
- tund.sendmsg( data, 0, tund_info[ :tun_addr ] )
607
- rescue IO::WaitWritable, Errno::EINTR
624
+ unless send_data( tund, data, tund_info[ :tun_addr ] )
608
625
  return
609
626
  end
610
627
 
@@ -620,11 +637,11 @@ module Girl
620
637
  data = dst_ext[ :wmems ][ pack_id ]
621
638
 
622
639
  if data
623
- begin
624
- tund.sendmsg( data, 0, tund_info[ :tun_addr ] )
625
- rescue IO::WaitWritable, Errno::EINTR
640
+ unless send_data( tund, data, tund_info[ :tun_addr ] )
626
641
  return
627
642
  end
643
+
644
+ dst_ext[ :last_continue_at ] = now
628
645
  end
629
646
  end
630
647
 
@@ -688,14 +705,11 @@ module Girl
688
705
 
689
706
  data = [ [ pack_id, dst_local_port ].pack( 'Q>n' ), data ].join
690
707
 
691
- begin
692
- tund.sendmsg( data, 0, tund_info[ :tun_addr ] )
693
- rescue IO::WaitWritable, Errno::EINTR
708
+ unless send_data( tund, data, tund_info[ :tun_addr ] )
694
709
  return
695
710
  end
696
711
 
697
712
  # puts "debug2 written pack #{ pack_id }"
698
- now = Time.new
699
713
  dst_ext[ :relay_pack_id ] = pack_id
700
714
  dst_ext[ :wmems ][ pack_id ] = data
701
715
  dst_ext[ :send_ats ][ pack_id ] = now
@@ -1,3 +1,3 @@
1
1
  module Girl
2
- VERSION = '0.73.1'.freeze
2
+ VERSION = '0.78.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: girl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.73.1
4
+ version: 0.78.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-07-19 00:00:00.000000000 Z
11
+ date: 2020-08-21 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: while internet is evil, here's a girl.
14
14
  email:
@@ -49,8 +49,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
49
49
  - !ruby/object:Gem::Version
50
50
  version: '0'
51
51
  requirements: []
52
- rubyforge_project:
53
- rubygems_version: 2.7.6.2
52
+ rubygems_version: 3.1.2
54
53
  signing_key:
55
54
  specification_version: 4
56
55
  summary: 妹子