arachni-rpc 0.1.1 → 0.1.2
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.
- data/CHANGELOG.md +6 -0
- data/LICENSE.md +1 -1
- data/README.md +3 -3
- data/Rakefile +4 -28
- data/lib/arachni/rpc/exceptions.rb +3 -1
- data/lib/arachni/rpc/message.rb +9 -21
- data/lib/arachni/rpc/remote_object_mapper.rb +1 -4
- data/lib/arachni/rpc/request.rb +4 -10
- data/lib/arachni/rpc/response.rb +3 -8
- data/lib/arachni/rpc/version.rb +1 -1
- metadata +30 -22
data/CHANGELOG.md
CHANGED
data/LICENSE.md
CHANGED
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
<table>
|
3
3
|
<tr>
|
4
4
|
<th>Version</th>
|
5
|
-
<td>0.1.
|
5
|
+
<td>0.1.2</td>
|
6
6
|
</tr>
|
7
7
|
<tr>
|
8
8
|
<th>Github page</th>
|
@@ -14,7 +14,7 @@
|
|
14
14
|
</tr>
|
15
15
|
<tr>
|
16
16
|
<th>Author</th>
|
17
|
-
<td><a href="mailto:tasos.laskos@gmail.com">Tasos
|
17
|
+
<td><a href="mailto:tasos.laskos@gmail.com">Tasos "Zapotek" Laskos</a></td>
|
18
18
|
</tr>
|
19
19
|
<tr>
|
20
20
|
<th>Twitter</th>
|
@@ -22,7 +22,7 @@
|
|
22
22
|
</tr>
|
23
23
|
<tr>
|
24
24
|
<th>Copyright</th>
|
25
|
-
<td>2011</td>
|
25
|
+
<td>2011-2012</td>
|
26
26
|
</tr>
|
27
27
|
<tr>
|
28
28
|
<th>License</th>
|
data/Rakefile
CHANGED
@@ -7,21 +7,20 @@
|
|
7
7
|
=end
|
8
8
|
|
9
9
|
require 'rubygems'
|
10
|
+
require File.expand_path( File.dirname( __FILE__ ) ) + '/lib/arachni/rpc/version'
|
10
11
|
|
11
12
|
begin
|
12
13
|
require 'rspec'
|
13
14
|
require 'rspec/core/rake_task'
|
14
15
|
|
15
|
-
RSpec::Core::RakeTask.new
|
16
|
-
t.rspec_opts = ['--options', "\"#{File.dirname(__FILE__)}/spec/spec.opts\""]
|
17
|
-
end
|
16
|
+
RSpec::Core::RakeTask.new
|
18
17
|
rescue
|
19
18
|
end
|
20
19
|
|
21
|
-
|
20
|
+
task default: [ :spec ]
|
22
21
|
|
22
|
+
desc "Generate docs"
|
23
23
|
task :docs do
|
24
|
-
|
25
24
|
outdir = "../arachni-rpc-pages"
|
26
25
|
sh "mkdir #{outdir}" if !File.directory?( outdir )
|
27
26
|
|
@@ -34,45 +33,22 @@ task :docs do
|
|
34
33
|
sh "rm -rf .yard*"
|
35
34
|
end
|
36
35
|
|
37
|
-
|
38
|
-
#
|
39
|
-
# Cleans reports and logs
|
40
|
-
#
|
41
36
|
desc "Cleaning..."
|
42
37
|
task :clean do
|
43
38
|
sh "rm *.gem || true"
|
44
39
|
end
|
45
40
|
|
46
|
-
|
47
|
-
|
48
|
-
#
|
49
|
-
# Building
|
50
|
-
#
|
51
41
|
desc "Build the arachni-rpc gem."
|
52
42
|
task :build => [ :clean ] do
|
53
43
|
sh "gem build arachni-rpc.gemspec"
|
54
44
|
end
|
55
45
|
|
56
|
-
|
57
|
-
#
|
58
|
-
# Installing
|
59
|
-
#
|
60
46
|
desc "Build and install the arachni gem."
|
61
47
|
task :install => [ :build ] do
|
62
|
-
|
63
|
-
require File.expand_path( File.dirname( __FILE__ ) ) + '/lib/arachni/rpc/version'
|
64
|
-
|
65
48
|
sh "gem install arachni-rpc-#{Arachni::RPC::VERSION}.gem"
|
66
49
|
end
|
67
50
|
|
68
|
-
|
69
|
-
#
|
70
|
-
# Publishing
|
71
|
-
#
|
72
51
|
desc "Push a new version to Gemcutter"
|
73
52
|
task :publish => [ :build ] do
|
74
|
-
|
75
|
-
require File.expand_path( File.dirname( __FILE__ ) ) + '/lib/arachni/rpc/version'
|
76
|
-
|
77
53
|
sh "gem push arachni-rpc-#{Arachni::RPC::VERSION}.gem"
|
78
54
|
end
|
@@ -19,6 +19,8 @@
|
|
19
19
|
# By default they'll return false, individual RPC Exceptions will overwrite them to
|
20
20
|
# return true when applicable.
|
21
21
|
#
|
22
|
+
# @author: Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
23
|
+
#
|
22
24
|
class Object
|
23
25
|
|
24
26
|
# @return [Bool] false
|
@@ -69,7 +71,7 @@ module Exceptions
|
|
69
71
|
klass = Arachni::RPC::Exceptions.const_get( obj['type'].to_sym )
|
70
72
|
e = klass.new( obj['exception'] )
|
71
73
|
e.set_backtrace( obj['backtrace'] )
|
72
|
-
|
74
|
+
e
|
73
75
|
end
|
74
76
|
|
75
77
|
class Base < ::Exception
|
data/lib/arachni/rpc/message.rb
CHANGED
@@ -6,18 +6,13 @@
|
|
6
6
|
|
7
7
|
=end
|
8
8
|
|
9
|
-
require File.join( File.expand_path( File.dirname( __FILE__ ) ), '../', 'rpc' )
|
10
|
-
|
11
9
|
module Arachni
|
12
10
|
module RPC
|
13
11
|
|
14
12
|
#
|
15
13
|
# Represents an RPC message, serves as the basis for {Request} and {Response}.
|
16
14
|
#
|
17
|
-
# @author: Tasos "Zapotek" Laskos
|
18
|
-
# <tasos.laskos@gmail.com>
|
19
|
-
# <zapotek@segfault.gr>
|
20
|
-
# @version: 0.1
|
15
|
+
# @author: Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
21
16
|
#
|
22
17
|
class Message
|
23
18
|
|
@@ -25,10 +20,7 @@ class Message
|
|
25
20
|
# @param [Hash] opts sets instance attributes
|
26
21
|
#
|
27
22
|
def initialize( opts = {} )
|
28
|
-
opts.each_pair {
|
29
|
-
|k, v|
|
30
|
-
instance_variable_set( "@#{k}".to_sym, v )
|
31
|
-
}
|
23
|
+
opts.each_pair { |k, v| instance_variable_set( "@#{k}".to_sym, v ) }
|
32
24
|
end
|
33
25
|
|
34
26
|
#
|
@@ -39,11 +31,10 @@ class Message
|
|
39
31
|
# @param [Message] message
|
40
32
|
#
|
41
33
|
def merge!( message )
|
42
|
-
message.instance_variables.each
|
43
|
-
|var|
|
34
|
+
message.instance_variables.each do |var|
|
44
35
|
val = message.instance_variable_get( var )
|
45
36
|
instance_variable_set( var, val )
|
46
|
-
|
37
|
+
end
|
47
38
|
end
|
48
39
|
|
49
40
|
#
|
@@ -55,13 +46,10 @@ class Message
|
|
55
46
|
# @return [Hash]
|
56
47
|
#
|
57
48
|
def prepare_for_tx
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
hash[normalize( k )] = instance_variable_get( k )
|
63
|
-
}
|
64
|
-
return hash
|
49
|
+
instance_variables.inject({}) do |h, k|
|
50
|
+
h[normalize( k )] = instance_variable_get( k ) if transmit?( k )
|
51
|
+
h
|
52
|
+
end
|
65
53
|
end
|
66
54
|
|
67
55
|
#
|
@@ -70,7 +58,7 @@ class Message
|
|
70
58
|
# @param [Symbol] attr attribute symbol (i.e. :@token)
|
71
59
|
#
|
72
60
|
def transmit?( attr )
|
73
|
-
|
61
|
+
true
|
74
62
|
end
|
75
63
|
|
76
64
|
private
|
@@ -41,10 +41,7 @@ module RPC
|
|
41
41
|
# server = Arachni::RPC::EM::Server.new( :host => 'localhost', :port => 7331 )
|
42
42
|
# server.add_handler( 'bench', Bench.new )
|
43
43
|
#
|
44
|
-
# @author: Tasos "Zapotek" Laskos
|
45
|
-
# <tasos.laskos@gmail.com>
|
46
|
-
# <zapotek@segfault.gr>
|
47
|
-
# @version: 0.1
|
44
|
+
# @author: Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
48
45
|
#
|
49
46
|
class RemoteObjectMapper
|
50
47
|
|
data/lib/arachni/rpc/request.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
=end
|
8
8
|
|
9
|
-
require File.join( File.expand_path( File.dirname( __FILE__ ) ), '
|
9
|
+
require File.join( File.expand_path( File.dirname( __FILE__ ) ), 'message' )
|
10
10
|
|
11
11
|
module Arachni
|
12
12
|
module RPC
|
@@ -30,10 +30,7 @@ module RPC
|
|
30
30
|
# Any client that has SSL support and can serialize a Hash
|
31
31
|
# just like the one above can communicate with the RPC server.
|
32
32
|
#
|
33
|
-
# @author: Tasos "Zapotek" Laskos
|
34
|
-
# <tasos.laskos@gmail.com>
|
35
|
-
# <zapotek@segfault.gr>
|
36
|
-
# @version: 0.1
|
33
|
+
# @author: Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
37
34
|
#
|
38
35
|
class Request < Message
|
39
36
|
|
@@ -70,7 +67,7 @@ class Request < Message
|
|
70
67
|
super
|
71
68
|
end
|
72
69
|
|
73
|
-
def do_not_defer
|
70
|
+
def do_not_defer
|
74
71
|
@defer = false
|
75
72
|
end
|
76
73
|
|
@@ -81,10 +78,7 @@ class Request < Message
|
|
81
78
|
private
|
82
79
|
|
83
80
|
def transmit?( attr )
|
84
|
-
![
|
85
|
-
:@defer,
|
86
|
-
:@callback
|
87
|
-
].include?( attr )
|
81
|
+
![ :@defer, :@callback ].include?( attr )
|
88
82
|
end
|
89
83
|
|
90
84
|
end
|
data/lib/arachni/rpc/response.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
=end
|
8
8
|
|
9
|
-
require File.join( File.expand_path( File.dirname( __FILE__ ) ), '
|
9
|
+
require File.join( File.expand_path( File.dirname( __FILE__ ) ), 'message' )
|
10
10
|
|
11
11
|
module Arachni
|
12
12
|
module RPC
|
@@ -25,10 +25,7 @@ module RPC
|
|
25
25
|
# 'obj' => object
|
26
26
|
# }
|
27
27
|
#
|
28
|
-
# @author: Tasos "Zapotek" Laskos
|
29
|
-
# <tasos.laskos@gmail.com>
|
30
|
-
# <zapotek@segfault.gr>
|
31
|
-
# @version: 0.1
|
28
|
+
# @author: Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
|
32
29
|
#
|
33
30
|
class Response < Message
|
34
31
|
|
@@ -72,9 +69,7 @@ class Response < Message
|
|
72
69
|
private
|
73
70
|
|
74
71
|
def transmit?( attr )
|
75
|
-
![
|
76
|
-
:@async
|
77
|
-
].include?( attr )
|
72
|
+
![ :@async ].include?( attr )
|
78
73
|
end
|
79
74
|
|
80
75
|
|
data/lib/arachni/rpc/version.rb
CHANGED
metadata
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arachni-rpc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
4
|
+
prerelease:
|
5
|
+
version: 0.1.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Tasos Laskos
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-06-18 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
|
-
description: ! " Arachni-RPC is a simple and lightweight Remote Procedure Call
|
15
|
-
protocol\n used to provide the basis for Arachni's Grid infrastructure.\n"
|
14
|
+
description: ! " Arachni-RPC is a simple and lightweight Remote Procedure Call\
|
15
|
+
\ protocol\n used to provide the basis for Arachni's Grid infrastructure.\n"
|
16
16
|
email: tasos.laskos@gmail.com
|
17
17
|
executables: []
|
18
18
|
extensions: []
|
@@ -25,37 +25,45 @@ files:
|
|
25
25
|
- Rakefile
|
26
26
|
- LICENSE.md
|
27
27
|
- CHANGELOG.md
|
28
|
-
-
|
29
|
-
|
30
|
-
-
|
31
|
-
|
32
|
-
-
|
33
|
-
|
34
|
-
-
|
28
|
+
- !binary |-
|
29
|
+
bGliL2FyYWNobmkvcnBjLnJi
|
30
|
+
- !binary |-
|
31
|
+
bGliL2FyYWNobmkvcnBjL3JlcXVlc3QucmI=
|
32
|
+
- !binary |-
|
33
|
+
bGliL2FyYWNobmkvcnBjL3JlbW90ZV9vYmplY3RfbWFwcGVyLnJi
|
34
|
+
- !binary |-
|
35
|
+
bGliL2FyYWNobmkvcnBjL3ZlcnNpb24ucmI=
|
36
|
+
- !binary |-
|
37
|
+
bGliL2FyYWNobmkvcnBjL2V4Y2VwdGlvbnMucmI=
|
38
|
+
- !binary |-
|
39
|
+
bGliL2FyYWNobmkvcnBjL3Jlc3BvbnNlLnJi
|
40
|
+
- !binary |-
|
41
|
+
bGliL2FyYWNobmkvcnBjL21lc3NhZ2UucmI=
|
35
42
|
homepage: https://github.com/Arachni/arachni-rpc
|
36
43
|
licenses: []
|
37
|
-
post_install_message:
|
44
|
+
post_install_message:
|
38
45
|
rdoc_options:
|
39
46
|
- --charset=UTF-8
|
40
47
|
require_paths:
|
41
48
|
- lib
|
42
49
|
required_ruby_version: !ruby/object:Gem::Requirement
|
43
|
-
none: false
|
44
50
|
requirements:
|
45
51
|
- - ! '>='
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
|
53
|
+
version: !binary |-
|
54
|
+
MA==
|
49
55
|
none: false
|
56
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
57
|
requirements:
|
51
58
|
- - ! '>='
|
52
59
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
60
|
+
version: !binary |-
|
61
|
+
MA==
|
62
|
+
none: false
|
54
63
|
requirements: []
|
55
|
-
rubyforge_project:
|
56
|
-
rubygems_version: 1.8.
|
57
|
-
signing_key:
|
64
|
+
rubyforge_project:
|
65
|
+
rubygems_version: 1.8.24
|
66
|
+
signing_key:
|
58
67
|
specification_version: 3
|
59
68
|
summary: The RPC protocol specification of the Arachni WebAppSec scanner Grid.
|
60
69
|
test_files: []
|
61
|
-
has_rdoc:
|