c3d 0.4.3 → 0.4.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/lib/c3d/actors/assemble.rb +144 -0
- data/lib/c3d/connectors/connect_ethereum.rb +4 -4
- data/lib/c3d/connectors/connect_torrent.rb +4 -4
- data/lib/c3d/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6cd7c5c2ac990aa936c937472a9b113bcbaadd3f
|
4
|
+
data.tar.gz: 48b40486ae1b6e22e51ef0d1c37cba2ccc23bcab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf6bc805aaaa88c9a2efed4bd89f05e281eb0d01af1144077898ed2255694778e8552c0232f4715ec3e093cb055fa5156abb75c5cdcb36a5b857c7d7bcccd239
|
7
|
+
data.tar.gz: ea59eda6d8a2691771667bcade3f93f3b8db42f3987e58aa751a7b85da95db35570635e214503d9506137b0228066f5caf56c36898a31ce838658679de41701d
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
c3d (0.3
|
4
|
+
c3d (0.4.3)
|
5
5
|
bencode (~> 0.8)
|
6
6
|
celluloid (~> 0.15)
|
7
7
|
commander (~> 4.1)
|
@@ -16,7 +16,7 @@ GEM
|
|
16
16
|
commander (4.1.6)
|
17
17
|
highline (~> 1.6.11)
|
18
18
|
diff-lcs (1.2.5)
|
19
|
-
epm (0.3.
|
19
|
+
epm (0.3.8)
|
20
20
|
commander (~> 4.1.6)
|
21
21
|
highline (1.6.21)
|
22
22
|
httparty (0.13.1)
|
@@ -0,0 +1,144 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
module C3D
|
4
|
+
class Assemble
|
5
|
+
attr_reader :content
|
6
|
+
|
7
|
+
def initialize contract
|
8
|
+
@content = []
|
9
|
+
assemble_and_perform_queries contract
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def assemble_and_perform_queries contract
|
15
|
+
contract = address_guard contract
|
16
|
+
puts "[C3D::#{Time.now.strftime( "%F %T" )}] Assembling >>\t" + contract
|
17
|
+
get_the_contract contract
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_the_contract contract
|
21
|
+
if ab? contract
|
22
|
+
get_ab_content contract
|
23
|
+
elsif ba? contract
|
24
|
+
get_ba_content contract
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def get_ab_content contract
|
29
|
+
if can_we_get_the_k? contract
|
30
|
+
blob = send_query contract, '0x13'
|
31
|
+
get_the_blob blob, contract
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def get_ba_content contract
|
36
|
+
if can_we_get_the_k? contract
|
37
|
+
group = {}
|
38
|
+
group[:prev] = send_query contract, '0x19'
|
39
|
+
until group[:prev] == '0x30'
|
40
|
+
group = get_the_group contract, group[:prev]
|
41
|
+
get_the_blob group[:blob], group[:this] if group[:blob]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def can_we_get_the_k? contract
|
47
|
+
behav = send_query contract, '0x18'
|
48
|
+
if behav == ('0x01' || '0x1')
|
49
|
+
return true
|
50
|
+
end
|
51
|
+
return false
|
52
|
+
end
|
53
|
+
|
54
|
+
def get_the_group contract, group_id
|
55
|
+
this_group = {}
|
56
|
+
this_group[:this] = group_id
|
57
|
+
if can_we_get_the_group? contract, group_id
|
58
|
+
this_group[:blob] = send_query(contract, content_slot(group_id))
|
59
|
+
this_group[:prev] = send_query(contract, prev_link_slot(group_id))
|
60
|
+
else
|
61
|
+
this_group[:prev] = send_query(contract, prev_link_slot(group_id))
|
62
|
+
end
|
63
|
+
return this_group
|
64
|
+
end
|
65
|
+
|
66
|
+
def can_we_get_the_group? contract, group_id
|
67
|
+
behav = send_query(contract, behav_slot(group_id))
|
68
|
+
if behav == ('0x01' || '0x1' || '0x')
|
69
|
+
return true
|
70
|
+
end
|
71
|
+
return false
|
72
|
+
end
|
73
|
+
|
74
|
+
def does_the_group_have_blobs? contract, group_id
|
75
|
+
type = send_query(contract, type_slot(group_id))
|
76
|
+
if type == ('0x01' || '0x1')
|
77
|
+
return true
|
78
|
+
end
|
79
|
+
return false
|
80
|
+
end
|
81
|
+
|
82
|
+
def send_query contract, storage
|
83
|
+
$eth.get_storage_at contract, storage
|
84
|
+
end
|
85
|
+
|
86
|
+
def ab? contract
|
87
|
+
location = send_query contract, '0x10'
|
88
|
+
if location == '0x88554646ab'
|
89
|
+
return true
|
90
|
+
else
|
91
|
+
return false
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def ba? contract
|
96
|
+
location = send_query contract, '0x10'
|
97
|
+
if location == '0x88554646ba'
|
98
|
+
return true
|
99
|
+
else
|
100
|
+
return false
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def get_the_blob blob, contract
|
105
|
+
begin
|
106
|
+
dn = blob[42..-1]
|
107
|
+
blob_file = File.join(ENV['BLOBS_DIR'], dn)
|
108
|
+
if File.exists? blob_file
|
109
|
+
blob = File.read blob_file
|
110
|
+
sha1_full = Digest::SHA1.hexdigest blob
|
111
|
+
sha1_trun = sha1_full[0..23]
|
112
|
+
if sha1_trun == dn
|
113
|
+
@content << { contract => blob }
|
114
|
+
puts "[C3D::#{Time.now.strftime( "%F %T" )}] Assembling >>\t" + contract
|
115
|
+
return true
|
116
|
+
end
|
117
|
+
end
|
118
|
+
return false
|
119
|
+
rescue
|
120
|
+
return false
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def prev_link_slot group_id
|
125
|
+
slot = "0x" + ((group_id.hex + 0x1).to_s(16))
|
126
|
+
end
|
127
|
+
|
128
|
+
def type_slot group_id
|
129
|
+
slot = "0x" + ((group_id.hex + 0x3).to_s(16))
|
130
|
+
end
|
131
|
+
|
132
|
+
def behav_slot group_id
|
133
|
+
slot = "0x" + ((group_id.hex + 0x4).to_s(16))
|
134
|
+
end
|
135
|
+
|
136
|
+
def content_slot group_id
|
137
|
+
slot = "0x" + ((group_id.hex + 0x5).to_s(16))
|
138
|
+
end
|
139
|
+
|
140
|
+
def address_guard contract
|
141
|
+
contract = "0x#{contract}" unless contract[0..1] == '0x'
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
@@ -11,7 +11,7 @@ module C3D
|
|
11
11
|
@request = Net::HTTP::Post.new @uri.request_uri
|
12
12
|
@request.content_type = 'application/json'
|
13
13
|
@last_push = Time.now
|
14
|
-
puts "[C3D
|
14
|
+
puts "[C3D::#{Time.now.strftime( "%F %T" )}] c3D->eth via RPC on port >>\t#{ENV['ETH_PORT']}"
|
15
15
|
end
|
16
16
|
|
17
17
|
def get_storage_at address, storage_location
|
@@ -129,16 +129,16 @@ module C3D
|
|
129
129
|
|
130
130
|
def send_command request
|
131
131
|
@request.body = request.to_json
|
132
|
-
puts "[C3D
|
132
|
+
puts "[C3D::#{Time.now.strftime( "%F %T" )}] Sending Question >>\t#{@request.body}"
|
133
133
|
handle_response JSON.parse(@question_socket.request(@request).body)
|
134
134
|
end
|
135
135
|
|
136
136
|
def handle_response response
|
137
137
|
unless response["error"]
|
138
|
-
puts "[C3D
|
138
|
+
puts "[C3D::#{Time.now.strftime( "%F %T" )}] Received Answer >>\tanswer:#{response['result']}"
|
139
139
|
return response["result"]
|
140
140
|
else
|
141
|
-
puts "[C3D
|
141
|
+
puts "[C3D::#{Time.now.strftime( "%F %T" )}] Received Answer >>\tERROR!"
|
142
142
|
return nil
|
143
143
|
end
|
144
144
|
end
|
@@ -23,7 +23,7 @@ module C3D
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def all
|
26
|
-
log ("[C3D
|
26
|
+
log ("[C3D::#{Time.now.strftime( "%F %T" )}] Getting All Torrents"), true
|
27
27
|
|
28
28
|
response =
|
29
29
|
post(
|
@@ -37,7 +37,7 @@ module C3D
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def find id
|
40
|
-
log ("[C3D
|
40
|
+
log ("[C3D::#{Time.now.strftime( "%F %T" )}] Getting Torrent ID >> "+ "#{id}"), true
|
41
41
|
|
42
42
|
response =
|
43
43
|
post(
|
@@ -52,7 +52,7 @@ module C3D
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def create filename
|
55
|
-
log ("[C3D
|
55
|
+
log ("[C3D::#{Time.now.strftime( "%F %T" )}] Adding Blob >>\t\t"+ "#{filename}"), true
|
56
56
|
|
57
57
|
response =
|
58
58
|
post(
|
@@ -68,7 +68,7 @@ module C3D
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def destroy id
|
71
|
-
log ("[C3D
|
71
|
+
log ("[C3D::#{Time.now.strftime( "%F %T" )}] Remove Torrent ID >> "+ "#{id}"), true
|
72
72
|
|
73
73
|
response =
|
74
74
|
post(
|
data/lib/c3d/version.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
VERSION ||= "0.4.
|
1
|
+
VERSION ||= "0.4.4"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: c3d
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Casey Kuhlman
|
@@ -113,6 +113,7 @@ files:
|
|
113
113
|
- bin/c3d
|
114
114
|
- c3d.gemspec
|
115
115
|
- lib/c3d.rb
|
116
|
+
- lib/c3d/actors/assemble.rb
|
116
117
|
- lib/c3d/actors/blacklist.rb
|
117
118
|
- lib/c3d/actors/crawler.rb
|
118
119
|
- lib/c3d/actors/getter.rb
|