p2p2 0.22.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: