girl 4.2.0 → 4.3.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/proxy_worker.rb +34 -12
- data/lib/girl/proxyd_worker.rb +34 -12
- data/lib/girl/relay_worker.rb +34 -11
- data/lib/girl/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43a48060a5cd6624864bceaa00824b736918f484b5a9342f67a7e885b401b276
|
4
|
+
data.tar.gz: f08b961719f618da8833746996c9bb66698a35e1d43526e63dd2792df2ed53da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa1c6709b604a13c80b9b4c66f09ae80f5ceb7714c8d8f3f0d9ee7cd906f1179399e8f75f31e8e8763bef0eb0ea62f4ddc46b646585833d75a4fdc07fc84c0f6
|
7
|
+
data.tar.gz: 5443ef6598cc196a27dcf50ec0e0f8d39cf65cc01a268092c0f2b9db2d1add65b1ee33eba8bdce17bd1be8b3e256fcc37bf731aecd4a3bee62d35eb198074934
|
data/lib/girl/proxy_worker.rb
CHANGED
@@ -776,7 +776,8 @@ module Girl
|
|
776
776
|
domain: domain, # 目的地
|
777
777
|
wbuff: btun_wbuff, # 写前
|
778
778
|
rbuff: '', # 暂存当前块没收全的流量
|
779
|
-
wait_bytes: 0
|
779
|
+
wait_bytes: 0, # 还差多少字节收全当前块
|
780
|
+
lbuff: '' # 流量截断在长度前缀处
|
780
781
|
}
|
781
782
|
|
782
783
|
src_info[ :dst_id ] = dst_id
|
@@ -808,7 +809,6 @@ module Girl
|
|
808
809
|
# pack a chunk
|
809
810
|
#
|
810
811
|
def pack_a_chunk( data )
|
811
|
-
# puts "debug pack a chunk"
|
812
812
|
data = @custom.encode( data )
|
813
813
|
"#{ [ data.bytesize ].pack( 'n' ) }#{ data }"
|
814
814
|
end
|
@@ -1289,22 +1289,44 @@ module Girl
|
|
1289
1289
|
end
|
1290
1290
|
|
1291
1291
|
until data.empty? do
|
1292
|
-
rbuff = btun_info[ :rbuff ]
|
1293
1292
|
wait_bytes = btun_info[ :wait_bytes ]
|
1294
1293
|
|
1295
1294
|
if wait_bytes > 0 then
|
1296
1295
|
len = wait_bytes
|
1297
1296
|
# puts "debug wait bytes #{ len }"
|
1298
1297
|
else
|
1299
|
-
|
1300
|
-
|
1301
|
-
|
1302
|
-
|
1303
|
-
|
1298
|
+
lbuff = btun_info[ :lbuff ]
|
1299
|
+
|
1300
|
+
if lbuff.empty? then
|
1301
|
+
# 长度缓存为空,从读到的流量里取长度
|
1302
|
+
# 两个字节以下,记进长度缓存
|
1303
|
+
if data.bytesize <= 2 then
|
1304
|
+
# puts "debug set btun.lbuff #{ data.inspect }"
|
1305
|
+
btun_info[ :lbuff ] = data
|
1306
|
+
return
|
1307
|
+
end
|
1304
1308
|
|
1305
|
-
|
1306
|
-
|
1307
|
-
|
1309
|
+
len = data[ 0, 2 ].unpack( 'n' ).first
|
1310
|
+
data = data[ 2..-1 ]
|
1311
|
+
elsif lbuff.bytesize == 1 then
|
1312
|
+
# 长度缓存记有一个字节,补一个字节
|
1313
|
+
lbuff = "#{ lbuff }#{ data[ 0 ] }"
|
1314
|
+
|
1315
|
+
if data.bytesize == 1 then
|
1316
|
+
# puts "debug add btun.lbuff a byte #{ data.inspect }"
|
1317
|
+
btun_info[ :lbuff ] = lbuff
|
1318
|
+
return
|
1319
|
+
end
|
1320
|
+
|
1321
|
+
# 使用长度缓存
|
1322
|
+
len = lbuff.unpack( 'n' ).first
|
1323
|
+
btun_info[ :lbuff ].clear
|
1324
|
+
data = data[ 1..-1 ]
|
1325
|
+
else
|
1326
|
+
# 使用长度缓存
|
1327
|
+
len = lbuff.unpack( 'n' ).first
|
1328
|
+
btun_info[ :lbuff ].clear
|
1329
|
+
end
|
1308
1330
|
end
|
1309
1331
|
|
1310
1332
|
chunk = data[ 0, len ]
|
@@ -1312,7 +1334,7 @@ module Girl
|
|
1312
1334
|
|
1313
1335
|
if chunk_size == len then
|
1314
1336
|
# 取完整了
|
1315
|
-
chunk = @custom.decode( "#{ rbuff }#{ chunk }" )
|
1337
|
+
chunk = @custom.decode( "#{ btun_info[ :rbuff ] }#{ chunk }" )
|
1316
1338
|
# puts "debug decode and add src.wbuff #{ chunk.bytesize }"
|
1317
1339
|
add_src_wbuff( src, chunk )
|
1318
1340
|
btun_info[ :rbuff ].clear
|
data/lib/girl/proxyd_worker.rb
CHANGED
@@ -523,7 +523,6 @@ module Girl
|
|
523
523
|
# pack a chunk
|
524
524
|
#
|
525
525
|
def pack_a_chunk( data )
|
526
|
-
# puts "debug pack a chunk"
|
527
526
|
data = @custom.encode( data )
|
528
527
|
"#{ [ data.bytesize ].pack( 'n' ) }#{ data }"
|
529
528
|
end
|
@@ -826,7 +825,8 @@ module Girl
|
|
826
825
|
dst: nil, # 对应dst
|
827
826
|
domain_port: nil, # dst的目的地和端口
|
828
827
|
rbuff: '', # 暂存当前块没收全的流量
|
829
|
-
wait_bytes: 0
|
828
|
+
wait_bytes: 0, # 还差多少字节收全当前块
|
829
|
+
lbuff: '' # 流量截断在长度前缀处
|
830
830
|
}
|
831
831
|
|
832
832
|
add_read( atun, :atun )
|
@@ -922,22 +922,44 @@ module Girl
|
|
922
922
|
end
|
923
923
|
|
924
924
|
until data.empty? do
|
925
|
-
rbuff = atun_info[ :rbuff ]
|
926
925
|
wait_bytes = atun_info[ :wait_bytes ]
|
927
926
|
|
928
927
|
if wait_bytes > 0 then
|
929
928
|
len = wait_bytes
|
930
929
|
# puts "debug wait bytes #{ len }"
|
931
930
|
else
|
932
|
-
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
|
931
|
+
lbuff = atun_info[ :lbuff ]
|
932
|
+
|
933
|
+
if lbuff.empty? then
|
934
|
+
# 长度缓存为空,从读到的流量里取长度
|
935
|
+
# 两个字节以下,记进长度缓存
|
936
|
+
if data.bytesize <= 2 then
|
937
|
+
# puts "debug set atun.lbuff #{ data.inspect }"
|
938
|
+
atun_info[ :lbuff ] = data
|
939
|
+
return
|
940
|
+
end
|
941
|
+
|
942
|
+
len = data[ 0, 2 ].unpack( 'n' ).first
|
943
|
+
data = data[ 2..-1 ]
|
944
|
+
elsif lbuff.bytesize == 1 then
|
945
|
+
# 长度缓存记有一个字节,补一个字节
|
946
|
+
lbuff = "#{ lbuff }#{ data[ 0 ] }"
|
937
947
|
|
938
|
-
|
939
|
-
|
940
|
-
|
948
|
+
if data.bytesize == 1 then
|
949
|
+
# puts "debug add atun.lbuff a byte #{ data.inspect }"
|
950
|
+
atun_info[ :lbuff ] = lbuff
|
951
|
+
return
|
952
|
+
end
|
953
|
+
|
954
|
+
# 使用长度缓存
|
955
|
+
len = lbuff.unpack( 'n' ).first
|
956
|
+
atun_info[ :lbuff ].clear
|
957
|
+
data = data[ 1..-1 ]
|
958
|
+
else
|
959
|
+
# 使用长度缓存
|
960
|
+
len = lbuff.unpack( 'n' ).first
|
961
|
+
atun_info[ :lbuff ].clear
|
962
|
+
end
|
941
963
|
end
|
942
964
|
|
943
965
|
chunk = data[ 0, len ]
|
@@ -945,7 +967,7 @@ module Girl
|
|
945
967
|
|
946
968
|
if chunk_size == len then
|
947
969
|
# 取完整了
|
948
|
-
chunk = @custom.decode( "#{ rbuff }#{ chunk }" )
|
970
|
+
chunk = @custom.decode( "#{ atun_info[ :rbuff ] }#{ chunk }" )
|
949
971
|
# puts "debug decode and add dst.wbuff #{ chunk.bytesize }"
|
950
972
|
add_dst_wbuff( dst, chunk )
|
951
973
|
atun_info[ :rbuff ].clear
|
data/lib/girl/relay_worker.rb
CHANGED
@@ -824,7 +824,8 @@ module Girl
|
|
824
824
|
domain: domain, # 目的地
|
825
825
|
wbuff: btun_wbuff, # 写前
|
826
826
|
rbuff: '', # 暂存当前块没收全的流量
|
827
|
-
wait_bytes: 0
|
827
|
+
wait_bytes: 0, # 还差多少字节收全当前块
|
828
|
+
lbuff: '' # 流量截断在长度前缀处
|
828
829
|
}
|
829
830
|
|
830
831
|
src_info[ :dst_id ] = dst_id
|
@@ -1216,22 +1217,44 @@ module Girl
|
|
1216
1217
|
end
|
1217
1218
|
|
1218
1219
|
until data.empty? do
|
1219
|
-
rbuff = btun_info[ :rbuff ]
|
1220
1220
|
wait_bytes = btun_info[ :wait_bytes ]
|
1221
1221
|
|
1222
1222
|
if wait_bytes > 0 then
|
1223
1223
|
len = wait_bytes
|
1224
1224
|
# puts "debug wait bytes #{ len }"
|
1225
1225
|
else
|
1226
|
-
|
1227
|
-
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1226
|
+
lbuff = btun_info[ :lbuff ]
|
1227
|
+
|
1228
|
+
if lbuff.empty? then
|
1229
|
+
# 长度缓存为空,从读到的流量里取长度
|
1230
|
+
# 两个字节以下,记进长度缓存
|
1231
|
+
if data.bytesize <= 2 then
|
1232
|
+
# puts "debug set btun.lbuff #{ data.inspect }"
|
1233
|
+
btun_info[ :lbuff ] = data
|
1234
|
+
return
|
1235
|
+
end
|
1236
|
+
|
1237
|
+
len = data[ 0, 2 ].unpack( 'n' ).first
|
1238
|
+
data = data[ 2..-1 ]
|
1239
|
+
elsif lbuff.bytesize == 1 then
|
1240
|
+
# 长度缓存记有一个字节,补一个字节
|
1241
|
+
lbuff = "#{ lbuff }#{ data[ 0 ] }"
|
1231
1242
|
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1243
|
+
if data.bytesize == 1 then
|
1244
|
+
# puts "debug add btun.lbuff a byte #{ data.inspect }"
|
1245
|
+
btun_info[ :lbuff ] = lbuff
|
1246
|
+
return
|
1247
|
+
end
|
1248
|
+
|
1249
|
+
# 使用长度缓存
|
1250
|
+
len = lbuff.unpack( 'n' ).first
|
1251
|
+
btun_info[ :lbuff ].clear
|
1252
|
+
data = data[ 1..-1 ]
|
1253
|
+
else
|
1254
|
+
# 使用长度缓存
|
1255
|
+
len = lbuff.unpack( 'n' ).first
|
1256
|
+
btun_info[ :lbuff ].clear
|
1257
|
+
end
|
1235
1258
|
end
|
1236
1259
|
|
1237
1260
|
chunk = data[ 0, len ]
|
@@ -1239,7 +1262,7 @@ module Girl
|
|
1239
1262
|
|
1240
1263
|
if chunk_size == len then
|
1241
1264
|
# 取完整了
|
1242
|
-
chunk = @custom.decode( "#{ rbuff }#{ chunk }" )
|
1265
|
+
chunk = @custom.decode( "#{ btun_info[ :rbuff ] }#{ chunk }" )
|
1243
1266
|
# puts "debug read btun decoded #{ chunk.bytesize }"
|
1244
1267
|
add_src_wbuff( src, chunk )
|
1245
1268
|
btun_info[ :rbuff ] = ''
|
data/lib/girl/version.rb
CHANGED