girl 4.0.0 → 4.5.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.

@@ -1,7 +1,7 @@
1
- require 'girl/custom_dns_query'
1
+ require 'girl/custom'
2
2
 
3
3
  module Girl
4
4
  class ResolvCustom
5
- include CustomDnsQuery
5
+ include Custom
6
6
  end
7
7
  end
@@ -5,7 +5,7 @@ module Girl
5
5
  # initialize
6
6
  #
7
7
  def initialize( resolvd_port, nameserver )
8
- @resolv_custom = Girl::ResolvCustom.new
8
+ @custom = Girl::ResolvCustom.new
9
9
  @nameserver_addr = Socket.sockaddr_in( 53, nameserver )
10
10
  @roles = ConcurrentHash.new # :resolvd / :dst
11
11
  @reads = []
@@ -162,7 +162,7 @@ module Girl
162
162
  # read dotr
163
163
  #
164
164
  def read_dotr( dotr )
165
- dotr.read_nonblock( 65535 )
165
+ dotr.read_nonblock( READ_SIZE )
166
166
 
167
167
  if @closing_dsts.any? then
168
168
  @closing_dsts.each { | dst | close_dst( dst ) }
@@ -176,7 +176,7 @@ module Girl
176
176
  def read_resolvd( resolvd )
177
177
  data, addrinfo, rflags, *controls = resolvd.recvmsg
178
178
  # puts "debug1 resolvd recvmsg #{ addrinfo.ip_unpack.inspect } #{ data.inspect }"
179
- data = @resolv_custom.decode( data )
179
+ data = @custom.decode( data )
180
180
  new_a_dst( addrinfo.to_sockaddr, data )
181
181
  end
182
182
 
@@ -187,7 +187,7 @@ module Girl
187
187
  data, addrinfo, rflags, *controls = dst.recvmsg
188
188
  # puts "debug1 dst recvmsg #{ addrinfo.ip_unpack.inspect } #{ data.inspect }"
189
189
  dst_info = @dst_infos[ dst ]
190
- data = @resolv_custom.encode( data )
190
+ data = @custom.encode( data )
191
191
  send_data( @resolvd, dst_info[ :src_addr ], data )
192
192
  close_dst( dst )
193
193
  end
@@ -236,6 +236,17 @@ module Girl
236
236
  end
237
237
  end
238
238
 
239
+ ##
240
+ # close redir
241
+ #
242
+ def close_redir( redir )
243
+ return if redir.closed?
244
+ redir.close
245
+ @roles.delete( redir )
246
+ @reads.delete( redir )
247
+ @src_infos.each { | src, _ | close_src( src ) }
248
+ end
249
+
239
250
  ##
240
251
  # close sock
241
252
  #
@@ -356,7 +367,7 @@ module Girl
356
367
  src_info = @src_infos[ src ]
357
368
  dst = src_info[ :dst ]
358
369
 
359
- if dst then
370
+ if dst && !dst.closed? then
360
371
  dst_info = @dst_infos[ dst ]
361
372
 
362
373
  if dst_info[ :wbuff ].size < RESUME_BELOW then
@@ -369,11 +380,14 @@ module Girl
369
380
  @paused_dsts.each do | dst |
370
381
  dst_info = @dst_infos[ dst ]
371
382
  src = dst_info[ :src ]
372
- src_info = @src_infos[ src ]
373
383
 
374
- if src_info[ :wbuff ].size < RESUME_BELOW then
375
- puts "p#{ Process.pid } #{ Time.new } resume dst #{ dst_info[ :domain ] }"
376
- add_resume_dst( dst )
384
+ if src && !src.closed? then
385
+ src_info = @src_infos[ src ]
386
+
387
+ if src_info[ :wbuff ].size < RESUME_BELOW then
388
+ puts "p#{ Process.pid } #{ Time.new } resume dst #{ dst_info[ :domain ] }"
389
+ add_resume_dst( dst )
390
+ end
377
391
  end
378
392
  end
379
393
  end
@@ -520,7 +534,7 @@ module Girl
520
534
  # read dotr
521
535
  #
522
536
  def read_dotr( dotr )
523
- dotr.read_nonblock( 65535 )
537
+ dotr.read_nonblock( READ_SIZE )
524
538
 
525
539
  if @closing_srcs.any? then
526
540
  @closing_srcs.each { | src | close_src( src ) }
@@ -557,15 +571,17 @@ module Girl
557
571
 
558
572
  unless accepted then
559
573
  puts "p#{ Process.pid } #{ Time.new } accept timeout"
560
- redir.close
561
- @roles.delete( redir )
562
- @reads.delete( redir )
574
+ close_redir( redir )
563
575
  new_a_redir
564
576
  end
565
577
  end
566
578
 
567
579
  begin
568
580
  src = redir.accept
581
+ rescue SystemExit => e
582
+ puts "p#{ Process.pid } #{ Time.new } redir accept #{ e.class }"
583
+ close_redir( redir )
584
+ return
569
585
  rescue Exception => e
570
586
  puts "p#{ Process.pid } #{ Time.new } redir accept #{ e.class }"
571
587
  puts e.full_message
@@ -607,7 +623,7 @@ module Girl
607
623
  src_info = @src_infos[ src ]
608
624
 
609
625
  begin
610
- data = src.read_nonblock( 65535 )
626
+ data = src.read_nonblock( READ_SIZE )
611
627
  rescue IO::WaitReadable
612
628
  return
613
629
  rescue Errno::EINTR => e
@@ -725,7 +741,7 @@ module Girl
725
741
  src = dst_info[ :src ]
726
742
 
727
743
  begin
728
- data = dst.read_nonblock( 65535 )
744
+ data = dst.read_nonblock( READ_SIZE )
729
745
  rescue IO::WaitReadable, Errno::EINTR
730
746
  print 'r'
731
747
  return
data/lib/girl/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Girl
2
- VERSION = '4.0.0'.freeze
2
+ VERSION = '4.5.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: 4.0.0
4
+ version: 4.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - takafan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-09 00:00:00.000000000 Z
11
+ date: 2021-04-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: escape evil.
14
14
  email:
@@ -21,7 +21,6 @@ files:
21
21
  - lib/girl.rb
22
22
  - lib/girl/concurrent_hash.rb
23
23
  - lib/girl/custom.rb
24
- - lib/girl/custom_dns_query.rb
25
24
  - lib/girl/head.rb
26
25
  - lib/girl/proxy.rb
27
26
  - lib/girl/proxy_custom.rb
@@ -56,7 +55,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
56
55
  - !ruby/object:Gem::Version
57
56
  version: '0'
58
57
  requirements: []
59
- rubygems_version: 3.2.15
58
+ rubygems_version: 3.1.4
60
59
  signing_key:
61
60
  specification_version: 4
62
61
  summary: 妹子
@@ -1,11 +0,0 @@
1
- module Girl
2
- module CustomDnsQuery
3
- def encode( data )
4
- data.reverse
5
- end
6
-
7
- def decode( data )
8
- data.reverse
9
- end
10
- end
11
- end