p2p2 0.22.0 → 0.23.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ed5928f54a6129f64cc843748d5f337d9f5fdccfed90239b9a594bf6ecd577bc
4
- data.tar.gz: 1ec20b3e82bf69b5e371ceb89dcc666b97f0a2407072647271e481c7a3166e4e
3
+ metadata.gz: 93622e13a1c4a94debd120c4295bed86f0d451f83f05ecfc4bb2b29f63320a83
4
+ data.tar.gz: edcf0aefb969653a5b73201722ac2ab61a24488f5124a0cba3d78f2c0fc17073
5
5
  SHA512:
6
- metadata.gz: 2b35b3bc6a54ceb236aee2f9258580c381397619dcdfbe4dfd3ea61c8c6deeda1e6e188a64b6921794d801fd2838f5db3c7e00462be3cebfe5158e589356a8ff
7
- data.tar.gz: 9bd26990e4e3aff5285a10b011c322251ba3c64f5379e02172d70f16d9624355c8a9ec3f194b108c3681b966b38749d4bded464a9c9588bf3aca4e7645026e3f
6
+ metadata.gz: 558629edb45e53c9a9d0f1ad964e91b3b89c313181e8bbce2477ad0fbdad7aae43db37f59235340e4004dd6390b555817c513b88417c9e95fa9fbcdb2083e772
7
+ data.tar.gz: 387354b5932fb4a7994a1970e649521d357db94e7eb6521fa33991ccd25a4436c2064e43508e51adeb5827871f309cb41dbe0caf2c22fa18a375d269e8606232
@@ -99,14 +99,14 @@ module P2p2
99
99
  else
100
100
  @tund_info[ :dst_exts ].each do | dst_local_port, dst_ext |
101
101
  if dst_ext[ :dst ].closed? && ( now - dst_ext[ :last_continue_at ] > EXPIRE_AFTER )
102
- puts "#{ Time.new } expire dst ext #{ dst_local_port }"
102
+ puts "#{ Time.new } expire dst ext"
103
103
  del_dst_ext( dst_local_port )
104
104
  end
105
105
  end
106
106
  end
107
107
 
108
108
  @dst_infos.each do | dst, dst_info |
109
- if dst_info[ :last_recv_at ].nil? && ( now - dst_info[ :created_at ] > EXPIRE_NEW )
109
+ if now - dst_info[ :last_continue_at ] > EXPIRE_AFTER
110
110
  puts "#{ Time.new } expire dst"
111
111
  set_is_closing( dst )
112
112
  end
@@ -519,6 +519,7 @@ module P2p2
519
519
  # puts "debug2 write dst #{ written }"
520
520
  data = data[ written..-1 ]
521
521
  dst_info[ from ] = data
522
+ dst_info[ :last_continue_at ] = Time.new
522
523
  end
523
524
 
524
525
  ##
@@ -673,7 +674,7 @@ module P2p2
673
674
 
674
675
  # puts "debug2 read dst #{ data.inspect }"
675
676
  dst_info = @dst_infos[ dst ]
676
- dst_info[ :last_recv_at ] = Time.new
677
+ dst_info[ :last_continue_at ] = Time.new
677
678
 
678
679
  if @tund.closed?
679
680
  puts "#{ Time.new } tund closed, close dst"
@@ -751,8 +752,7 @@ module P2p2
751
752
  cache: '', # 块读出缓存
752
753
  chunks: [], # 块队列,写前达到块大小时结一个块 filename
753
754
  spring: 0, # 块后缀,结块时,如果块队列不为空,则自增,为空,则置为0
754
- created_at: Time.new, # 创建时间
755
- last_recv_at: nil, # 上一次收到流量的时间,过期关闭
755
+ last_continue_at: Time.new, # 上一次发生流量的时间
756
756
  is_closing: false # 是否准备关闭
757
757
  }
758
758
  add_read( dst, :dst )
@@ -769,7 +769,7 @@ module P2p2
769
769
  is_src_closed: false, # src是否已关闭
770
770
  biggest_src_pack_id: 0, # src最大包号码
771
771
  completed_pack_id: 0, # 完成到几(对面收到几)
772
- last_continue_at: Time.new # 创建,或者上一次收到连续流量,或者发出新包的时间
772
+ last_continue_at: Time.new # 上一次发生流量的时间
773
773
  }
774
774
  end
775
775
 
@@ -100,14 +100,14 @@ module P2p2
100
100
  else
101
101
  @tun_info[ :src_exts ].each do | src_id, src_ext |
102
102
  if src_ext[ :src ].closed? && ( now - src_ext[ :last_continue_at ] > EXPIRE_AFTER )
103
- puts "#{ Time.new } expire src ext #{ src_id }"
103
+ puts "#{ Time.new } expire src ext"
104
104
  del_src_ext( src_id )
105
105
  end
106
106
  end
107
107
  end
108
108
 
109
109
  @src_infos.each do | src, src_info |
110
- if src_info[ :last_recv_at ].nil? && ( now - src_info[ :created_at ] > EXPIRE_NEW )
110
+ if now - src_info[ :last_continue_at ] > EXPIRE_AFTER
111
111
  puts "#{ Time.new } expire src"
112
112
  set_is_closing( src )
113
113
  end
@@ -263,7 +263,7 @@ module P2p2
263
263
  @tun = tun
264
264
  @tun_info = tun_info
265
265
  add_read( tun, :tun )
266
- add_tun_ctlmsg( @room, @p2pd_addr )
266
+ add_tun_ctlmsg( [ '2', @room ].join, @p2pd_addr )
267
267
  end
268
268
 
269
269
  ##
@@ -546,6 +546,7 @@ module P2p2
546
546
  # puts "debug2 write src #{ written }"
547
547
  data = data[ written..-1 ]
548
548
  src_info[ from ] = data
549
+ src_info[ :last_continue_at ] = Time.new
549
550
  end
550
551
 
551
552
  ##
@@ -697,16 +698,15 @@ module P2p2
697
698
  # puts "debug1 accept a src #{ addrinfo.inspect } #{ id }"
698
699
 
699
700
  @src_infos[ src ] = {
700
- id: id, # id
701
- biggest_pack_id: 0, # 最大包号码
702
- rbuffs: [], # p1端dst未准备好,暂存流量 [ pack_id, data ]
703
- wbuff: '', # 写前
704
- cache: '', # 块读出缓存
705
- chunks: [], # 块队列,写前达到块大小时结一个块 filename
706
- spring: 0, # 块后缀,结块时,如果块队列不为空,则自增,为空,则置为0
707
- created_at: Time.new, # 创建时间
708
- last_recv_at: nil, # 上一次收到流量的时间,过期关闭
709
- is_closing: false # 是否准备关闭
701
+ id: id, # id
702
+ biggest_pack_id: 0, # 最大包号码
703
+ rbuffs: [], # p1端dst未准备好,暂存流量 [ pack_id, data ]
704
+ wbuff: '', # 写前
705
+ cache: '', # 块读出缓存
706
+ chunks: [], # 块队列,写前达到块大小时结一个块 filename
707
+ spring: 0, # 块后缀,结块时,如果块队列不为空,则自增,为空,则置为0
708
+ last_continue_at: Time.new, # 上一次发生流量的时间
709
+ is_closing: false # 是否准备关闭
710
710
  }
711
711
 
712
712
  add_read( src, :src )
@@ -726,7 +726,7 @@ module P2p2
726
726
  is_dst_closed: false, # dst是否已关闭
727
727
  biggest_dst_pack_id: 0, # dst最大包号码
728
728
  completed_pack_id: 0, # 完成到几(对面收到几)
729
- last_continue_at: Time.new # 创建,或者上一次收到连续流量,或者发出新包的时间
729
+ last_continue_at: Time.new # 上一次发生流量的时间
730
730
  }
731
731
 
732
732
  @tun_info[ :src_exts ][ id ] = src_ext
@@ -750,7 +750,7 @@ module P2p2
750
750
 
751
751
  # puts "debug2 read src #{ data.inspect }"
752
752
  src_info = @src_infos[ src ]
753
- src_info[ :last_recv_at ] = Time.new
753
+ src_info[ :last_continue_at ] = Time.new
754
754
  src_id = src_info[ :id ]
755
755
  src_ext = @tun_info[ :src_exts ][ src_id ]
756
756
 
@@ -32,17 +32,21 @@ module P2p2
32
32
  data, addrinfo, rflags, *controls = p2pd.recvmsg
33
33
  return if ( data.bytesize == 1 ) || ( data.bytesize > 255 ) || ( data =~ /\/|\.|\ / )
34
34
 
35
+ if data[0] == '2'
36
+ is_p2 = true
37
+ data = data[ 1..-1 ]
38
+ else
39
+ is_p2 = false
40
+ end
41
+
35
42
  from_addr = addrinfo.to_sockaddr
36
43
  room_path = File.join( @p2pd_tmp_dir, data.gsub( "\u0000" , '' ) )
37
44
 
38
- unless File.exist?( room_path )
39
- puts "#{ Time.new } create #{ room_path } #{ addrinfo.inspect }"
40
- write_room( room_path, from_addr )
41
- return
42
- end
43
-
44
- if Time.new - File.mtime( room_path ) > EXPIRE_AFTER
45
- puts "#{ Time.new } overwrite #{ room_path } #{ addrinfo.inspect }"
45
+ if is_p2
46
+ unless File.exist?( room_path )
47
+ return
48
+ end
49
+ else
46
50
  write_room( room_path, from_addr )
47
51
  return
48
52
  end
@@ -50,13 +54,9 @@ module P2p2
50
54
  op_addr = IO.binread( room_path )
51
55
  op_addrinfo = Addrinfo.new( op_addr )
52
56
 
53
- if ( addrinfo.ip_address == op_addrinfo.ip_address ) || ( addrinfo.ip_port == op_addrinfo.ip_port )
54
- write_room( room_path, from_addr )
55
- else
56
- puts "#{ Time.new } paired #{ addrinfo.inspect } #{ op_addrinfo.inspect }"
57
- send_pack( [ [ 0, PEER_ADDR ].pack( 'Q>C' ), op_addr ].join, from_addr )
58
- send_pack( [ [ 0, PEER_ADDR ].pack( 'Q>C' ), from_addr ].join, op_addr )
59
- end
57
+ puts "#{ Time.new } paired #{ addrinfo.inspect } #{ op_addrinfo.inspect }"
58
+ send_pack( [ [ 0, PEER_ADDR ].pack( 'Q>C' ), op_addr ].join, from_addr )
59
+ send_pack( [ [ 0, PEER_ADDR ].pack( 'Q>C' ), from_addr ].join, op_addr )
60
60
  end
61
61
 
62
62
  def write_room( room_path, data )
@@ -1,3 +1,3 @@
1
1
  module P2p2
2
- VERSION = '0.22.0'.freeze
2
+ VERSION = '0.23.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: p2p2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.22.0
4
+ version: 0.23.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-08 00:00:00.000000000 Z
11
+ date: 2020-07-21 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 内网里的任意应用,访问另一个内网里的应用服务端。
14
14
  email: