girl 0.60.0 → 0.64.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/lib/girl/head.rb +1 -1
- data/lib/girl/proxy.rb +1 -1
- data/lib/girl/proxy_worker.rb +22 -4
- data/lib/girl/proxyd_worker.rb +9 -4
- data/lib/girl/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d96c9e43605e40ad98acf2a89db27292541f47b20028ae260350749f0cdbc84
|
4
|
+
data.tar.gz: 581cd684039584bc9ba2021029964dd884ed7663943bd45123449786283d3c53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46394dd642d41c03686a515c5b5b098ee60da4baa3f3c22545591f06c3d71094331ba5db9a3cb038a475a28c7064f093daeb2047506054464170c08dd078ea73
|
7
|
+
data.tar.gz: d87a827357c6840abdf41fad0d60d6dce9f90763d977aa210ff633c4e2a4f5a6a9e66255e5d858d530ff64a3fe08fec8335bec51ef367e781bd5983b5e4d7e5a
|
data/lib/girl/head.rb
CHANGED
@@ -7,7 +7,7 @@ module Girl
|
|
7
7
|
WMEMS_LIMIT = 100_000 # 写后上限,达到上限暂停写
|
8
8
|
RESUME_BELOW = 50_000 # 降到多少以下恢复写
|
9
9
|
EXPIRE_NEW = 10 # 创建之后多久没有流量进来,过期
|
10
|
-
EXPIRE_AFTER =
|
10
|
+
EXPIRE_AFTER = 3600 # 多久没有新流量进来,过期
|
11
11
|
CHECK_EXPIRE_INTERVAL = 30 # 检查过期间隔
|
12
12
|
HEARTBEAT_INTERVAL = 30 # 心跳间隔
|
13
13
|
STATUS_INTERVAL = 0.3 # 发送状态间隔
|
data/lib/girl/proxy.rb
CHANGED
@@ -99,7 +99,7 @@ module Girl
|
|
99
99
|
raise "not found direct file #{ direct_path }"
|
100
100
|
end
|
101
101
|
|
102
|
-
directs = ( RESERVED_ROUTE.split( "\n" ) + IO.binread( direct_path ).split( "\n" ) ).map { | line | IPAddr.new( line.strip ) }
|
102
|
+
directs = ( [ Addrinfo.ip( proxyd_host ).ip_address ] + RESERVED_ROUTE.split( "\n" ) + IO.binread( direct_path ).split( "\n" ) ).map { | line | IPAddr.new( line.strip ) }
|
103
103
|
end
|
104
104
|
|
105
105
|
remotes = []
|
data/lib/girl/proxy_worker.rb
CHANGED
@@ -102,7 +102,7 @@ module Girl
|
|
102
102
|
now = Time.new
|
103
103
|
|
104
104
|
if @tun && !@tun.closed?
|
105
|
-
is_expired = @tun_info[ :last_recv_at ]
|
105
|
+
is_expired = @tun_info[ :last_recv_at ].nil? && ( now - @tun_info[ :created_at ] > EXPIRE_NEW )
|
106
106
|
|
107
107
|
if is_expired
|
108
108
|
puts "p#{ Process.pid } #{ Time.new } expire tun"
|
@@ -113,7 +113,7 @@ module Girl
|
|
113
113
|
|
114
114
|
@tun_info[ :src_exts ].each do | src_addr, 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
|
116
|
+
puts "p#{ Process.pid } #{ Time.new } expire src ext"
|
117
117
|
del_src_ext( src_addr )
|
118
118
|
end
|
119
119
|
end
|
@@ -454,7 +454,13 @@ module Girl
|
|
454
454
|
# sub http request
|
455
455
|
#
|
456
456
|
def sub_http_request( data )
|
457
|
-
|
457
|
+
lines = data.split( "\r\n" )
|
458
|
+
|
459
|
+
if lines.empty?
|
460
|
+
return [ data, nil ]
|
461
|
+
end
|
462
|
+
|
463
|
+
method, url, proto = lines.first.split( ' ' )
|
458
464
|
|
459
465
|
if proto && url && proto[ 0, 4 ] == 'HTTP' && url[ 0, 7 ] == 'http://'
|
460
466
|
domain_and_port = url.split( '/' )[ 2 ]
|
@@ -491,7 +497,7 @@ module Girl
|
|
491
497
|
spring = @tun_info[ :chunks ].size > 0 ? ( @tun_info[ :spring ] + 1 ) : 0
|
492
498
|
filename = "#{ Process.pid }-#{ @tun_info[ :port ] }.#{ spring }"
|
493
499
|
chunk_path = File.join( @tun_chunk_dir, filename )
|
494
|
-
wbuffs = @tun_info[ :wbuffs ].map{ | _src_addr, _data | [ _src_addr, _data.bytesize.pack( 'n' ), _data ].join }
|
500
|
+
wbuffs = @tun_info[ :wbuffs ].map{ | _src_addr, _data | [ _src_addr, [ _data.bytesize ].pack( 'n' ), _data ].join }
|
495
501
|
|
496
502
|
begin
|
497
503
|
IO.binwrite( chunk_path, wbuffs.join )
|
@@ -1012,6 +1018,12 @@ module Girl
|
|
1012
1018
|
if data[ 0, 7 ] == 'CONNECT'
|
1013
1019
|
# puts "debug1 CONNECT"
|
1014
1020
|
domain_and_port = data.split( "\r\n" )[ 0 ].split( ' ' )[ 1 ]
|
1021
|
+
|
1022
|
+
unless domain_and_port
|
1023
|
+
puts "p#{ Process.pid } #{ Time.new } CONNECT miss domain"
|
1024
|
+
set_is_closing( src )
|
1025
|
+
return
|
1026
|
+
end
|
1015
1027
|
elsif data[ 0 ].unpack( 'C' ).first == 5
|
1016
1028
|
# puts "debug1 socks5 #{ data.inspect }"
|
1017
1029
|
|
@@ -1058,6 +1070,12 @@ module Girl
|
|
1058
1070
|
unless domain_and_port
|
1059
1071
|
# puts "debug1 not HTTP"
|
1060
1072
|
domain_and_port = host_line.split( ' ' )[ 1 ]
|
1073
|
+
|
1074
|
+
unless domain_and_port
|
1075
|
+
puts "p#{ Process.pid } #{ Time.new } Host line miss domain"
|
1076
|
+
set_is_closing( src )
|
1077
|
+
return
|
1078
|
+
end
|
1061
1079
|
end
|
1062
1080
|
|
1063
1081
|
src_info[ :rbuffs ] << data
|
data/lib/girl/proxyd_worker.rb
CHANGED
@@ -109,7 +109,7 @@ module Girl
|
|
109
109
|
else
|
110
110
|
tund_info[ :dst_exts ].each do | dst_local_port, dst_ext |
|
111
111
|
if dst_ext[ :dst ].closed? && ( now - dst_ext[ :last_continue_at ] > EXPIRE_AFTER )
|
112
|
-
puts "p#{ Process.pid } #{ Time.new } expire
|
112
|
+
puts "p#{ Process.pid } #{ Time.new } expire dst ext #{ dst_local_port }"
|
113
113
|
del_dst_ext( tund, dst_local_port )
|
114
114
|
need_trigger = true
|
115
115
|
end
|
@@ -119,7 +119,7 @@ module Girl
|
|
119
119
|
end
|
120
120
|
|
121
121
|
@dst_infos.each do | dst, dst_info |
|
122
|
-
is_expired = dst_info[ :last_recv_at ]
|
122
|
+
is_expired = dst_info[ :last_recv_at ].nil? && ( now - dst_info[ :created_at ] > EXPIRE_NEW )
|
123
123
|
|
124
124
|
if is_expired
|
125
125
|
puts "p#{ Process.pid } #{ Time.new } expire dst"
|
@@ -791,8 +791,13 @@ module Girl
|
|
791
791
|
tund_info = @tund_infos[ tund ]
|
792
792
|
|
793
793
|
if from_addr != tund_info[ :tun_addr ]
|
794
|
-
|
795
|
-
|
794
|
+
if addrinfo.ip_port == Addrinfo.new( tund_info[ :tun_addr ] ).ip_port
|
795
|
+
puts "p#{ Process.pid } #{ Time.new } tun ip changed #{ addrinfo.inspect }"
|
796
|
+
tund_info[ :tun_addr ] = from_addr
|
797
|
+
else
|
798
|
+
puts "p#{ Process.pid } #{ Time.new } #{ addrinfo.inspect } not match #{ Addrinfo.new( tund_info[ :tun_addr ] ).inspect }"
|
799
|
+
return
|
800
|
+
end
|
796
801
|
end
|
797
802
|
|
798
803
|
tund_info[ :is_tunneled ] = true
|
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: 0.
|
4
|
+
version: 0.64.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-
|
11
|
+
date: 2020-06-20 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: while internet is evil, here's a girl.
|
14
14
|
email:
|