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.
- checksums.yaml +4 -4
- data/girl.gemspec +0 -1
- data/lib/girl/head.rb +6 -2
- data/lib/girl/proxy.rb +4 -6
- data/lib/girl/proxy_worker.rb +133 -80
- data/lib/girl/proxyd_worker.rb +107 -38
- data/lib/girl/relay.rb +1 -1
- data/lib/girl/relay_worker.rb +125 -75
- data/lib/girl/resolv_custom.rb +2 -2
- data/lib/girl/resolvd_worker.rb +4 -4
- data/lib/girl/ssl_worker.rb +27 -11
- data/lib/girl/version.rb +1 -1
- metadata +3 -4
- data/lib/girl/custom_dns_query.rb +0 -11
data/lib/girl/resolv_custom.rb
CHANGED
data/lib/girl/resolvd_worker.rb
CHANGED
@@ -5,7 +5,7 @@ module Girl
|
|
5
5
|
# initialize
|
6
6
|
#
|
7
7
|
def initialize( resolvd_port, nameserver )
|
8
|
-
@
|
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(
|
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 = @
|
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 = @
|
190
|
+
data = @custom.encode( data )
|
191
191
|
send_data( @resolvd, dst_info[ :src_addr ], data )
|
192
192
|
close_dst( dst )
|
193
193
|
end
|
data/lib/girl/ssl_worker.rb
CHANGED
@@ -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
|
375
|
-
|
376
|
-
|
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(
|
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
|
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(
|
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(
|
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
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.
|
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-
|
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.
|
58
|
+
rubygems_version: 3.1.4
|
60
59
|
signing_key:
|
61
60
|
specification_version: 4
|
62
61
|
summary: 妹子
|