buby 1.5.2-java → 1.6.0-java
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 +7 -0
- data/README.rdoc +60 -55
- data/VERSION.yml +3 -3
- data/buby.gemspec +5 -4
- data/ext/burp_interfaces/burp/IBurpExtenderCallbacks.java +250 -4
- data/ext/burp_interfaces/burp/IResponseInfo.java +22 -3
- data/lib/buby.jar +0 -0
- data/lib/buby.rb +919 -249
- data/lib/buby/burp_extender/console_pane.rb +8 -1
- data/lib/buby/context_menu_factory.rb +31 -2
- data/lib/buby/extender.rb +2 -0
- data/lib/buby/implants.rb +1 -0
- data/lib/buby/implants/buby_array_wrapper.rb +1 -0
- data/lib/buby/implants/context_menu_invocation.rb +43 -19
- data/lib/buby/implants/extension_helpers.rb +84 -32
- data/lib/buby/implants/jruby.rb +16 -0
- data/lib/buby/implants/message_editor.rb +6 -3
- data/lib/buby/implants/parameter.rb +1 -1
- data/lib/buby/implants/request_info.rb +6 -3
- data/lib/buby/implants/response_info.rb +2 -2
- data/lib/buby/implants/scan_issue.rb +1 -0
- data/lib/buby/implants/scan_queue_item.rb +3 -2
- data/lib/buby/intruder_payload_generator.rb +1 -0
- data/lib/buby/intruder_payload_generator_factory.rb +1 -0
- data/lib/buby/intruder_payload_processor.rb +1 -0
- data/lib/buby/message_editor_controller.rb +2 -0
- data/lib/buby/message_editor_tab.rb +15 -6
- data/lib/buby/parameter.rb +12 -0
- data/lib/buby/version.rb +3 -3
- data/lib/burp_interfaces.jar +0 -0
- metadata +12 -18
@@ -1,6 +1,7 @@
|
|
1
1
|
class BurpExtender
|
2
2
|
# @api private
|
3
3
|
class ConsolePane < Java::JavaxSwing::JScrollPane
|
4
|
+
HEADER = " Welcome to the Burp JRuby IRB Console [#{JRUBY_VERSION} (#{RUBY_VERSION})]\n\n"
|
4
5
|
attr_accessor :text, :tar
|
5
6
|
def initialize
|
6
7
|
super
|
@@ -11,7 +12,13 @@ class BurpExtender
|
|
11
12
|
@text.background = Java::JavaAwt::Color.new(0xf2f2f2)
|
12
13
|
@text.foreground = Java::JavaAwt::Color.new(0xa40000)
|
13
14
|
self.viewport_view = @text
|
14
|
-
@tar =
|
15
|
+
@tar = begin
|
16
|
+
Java::OrgJrubyDemo::TextAreaReadline.new(@text, HEADER)
|
17
|
+
rescue NameError
|
18
|
+
require 'readline'
|
19
|
+
Java::OrgJrubyDemoReadline::TextAreaReadline.new(text, HEADER)
|
20
|
+
end
|
21
|
+
|
15
22
|
JRuby.objectspace = true # useful for code completion
|
16
23
|
@tar.hook_into_runtime_with_streams(JRuby.runtime)
|
17
24
|
end
|
@@ -18,6 +18,7 @@ class Buby
|
|
18
18
|
# sub-menus, checkbox menu items, etc.) that should be displayed.
|
19
19
|
# Extensions may return +nil+ from this method, to indicate that no menu
|
20
20
|
# items are required.
|
21
|
+
# @deprecated
|
21
22
|
#
|
22
23
|
def self.createMenuItems invocation
|
23
24
|
pp [:got_create_menu_items, invocation] if $DEBUG
|
@@ -25,10 +26,38 @@ class Buby
|
|
25
26
|
nil
|
26
27
|
end
|
27
28
|
|
28
|
-
#
|
29
|
+
# This method will be called by Burp when the user invokes a context menu
|
30
|
+
# anywhere within Burp. The factory can then provide any custom context
|
31
|
+
# menu items that should be displayed in the context menu, based on the
|
32
|
+
# details of the menu invocation.
|
33
|
+
# This method calls create_menu_items after implanting the invocation class.
|
34
|
+
# Redefine to bypass this behavior
|
35
|
+
#
|
36
|
+
# @param [IContextMenuInvocation] invocation An object the extension can
|
37
|
+
# query to obtain details of the context menu invocation.
|
38
|
+
# @return [Array<JMenuItem>] A list of custom menu items (which may include
|
39
|
+
# sub-menus, checkbox menu items, etc.) that should be displayed.
|
40
|
+
# Extensions may return +nil+ from this method, to indicate that no menu
|
41
|
+
# items are required.
|
42
|
+
#
|
29
43
|
def createMenuItems invocation
|
30
44
|
pp [:got_create_menu_items, invocation] if $DEBUG
|
31
|
-
Buby::Implants::ContextMenuInvocation.implant
|
45
|
+
create_menu_items Buby::Implants::ContextMenuInvocation.implant(invocation)
|
46
|
+
end
|
47
|
+
|
48
|
+
# This method will be called by Burp when the user invokes a context menu
|
49
|
+
# anywhere within Burp. The factory can then provide any custom context
|
50
|
+
# menu items that should be displayed in the context menu, based on the
|
51
|
+
# details of the menu invocation.
|
52
|
+
#
|
53
|
+
# @param [IContextMenuInvocation] invocation An object the extension can
|
54
|
+
# query to obtain details of the context menu invocation.
|
55
|
+
# @return [Array<JMenuItem>] A list of custom menu items (which may include
|
56
|
+
# sub-menus, checkbox menu items, etc.) that should be displayed.
|
57
|
+
# Extensions may return +nil+ from this method, to indicate that no menu
|
58
|
+
# items are required.
|
59
|
+
#
|
60
|
+
def create_menu_items invocation
|
32
61
|
nil
|
33
62
|
end
|
34
63
|
end
|
data/lib/buby/extender.rb
CHANGED
data/lib/buby/implants.rb
CHANGED
@@ -8,38 +8,53 @@ class Buby
|
|
8
8
|
# This module is used to extend the JRuby proxy class returned by Burp.
|
9
9
|
#
|
10
10
|
module ContextMenuInvocation
|
11
|
+
|
11
12
|
# Context menu is being invoked in a request editor.
|
12
|
-
CONTEXT_MESSAGE_EDITOR_REQUEST = 0
|
13
|
+
CONTEXT_MESSAGE_EDITOR_REQUEST = 0
|
13
14
|
|
14
15
|
# Context menu is being invoked in a response editor.
|
15
|
-
CONTEXT_MESSAGE_EDITOR_RESPONSE = 1
|
16
|
+
CONTEXT_MESSAGE_EDITOR_RESPONSE = 1
|
16
17
|
|
17
18
|
# Context menu is being invoked in a non-editable request viewer.
|
18
|
-
CONTEXT_MESSAGE_VIEWER_REQUEST = 2
|
19
|
+
CONTEXT_MESSAGE_VIEWER_REQUEST = 2
|
19
20
|
|
20
21
|
# Context menu is being invoked in a non-editable response viewer.
|
21
|
-
CONTEXT_MESSAGE_VIEWER_RESPONSE = 3
|
22
|
+
CONTEXT_MESSAGE_VIEWER_RESPONSE = 3
|
22
23
|
|
23
24
|
# Context menu is being invoked in the Target site map tree.
|
24
|
-
CONTEXT_TARGET_SITE_MAP_TREE = 4
|
25
|
+
CONTEXT_TARGET_SITE_MAP_TREE = 4
|
25
26
|
|
26
27
|
# Context menu is being invoked in the Target site map table.
|
27
|
-
CONTEXT_TARGET_SITE_MAP_TABLE = 5
|
28
|
+
CONTEXT_TARGET_SITE_MAP_TABLE = 5
|
28
29
|
|
29
30
|
# Context menu is being invoked in the Proxy history.
|
30
|
-
CONTEXT_PROXY_HISTORY = 6
|
31
|
+
CONTEXT_PROXY_HISTORY = 6
|
31
32
|
|
32
33
|
# Context menu is being invoked in the Scanner results.
|
33
|
-
CONTEXT_SCANNER_RESULTS = 7
|
34
|
+
CONTEXT_SCANNER_RESULTS = 7
|
34
35
|
|
35
36
|
# Context menu is being invoked in the Intruder payload positions editor.
|
36
|
-
CONTEXT_INTRUDER_PAYLOAD_POSITIONS = 8
|
37
|
+
CONTEXT_INTRUDER_PAYLOAD_POSITIONS = 8
|
37
38
|
|
38
39
|
# Context menu is being invoked in an Intruder attack results.
|
39
|
-
CONTEXT_INTRUDER_ATTACK_RESULTS = 9
|
40
|
+
CONTEXT_INTRUDER_ATTACK_RESULTS = 9
|
40
41
|
|
41
42
|
# Context menu is being invoked in a search results window.
|
42
|
-
CONTEXT_SEARCH_RESULTS = 10
|
43
|
+
CONTEXT_SEARCH_RESULTS = 10
|
44
|
+
|
45
|
+
CONTEXTS = {
|
46
|
+
CONTEXT_MESSAGE_EDITOR_REQUEST => "message_editor_request",
|
47
|
+
CONTEXT_MESSAGE_EDITOR_RESPONSE => "message_editor_response",
|
48
|
+
CONTEXT_MESSAGE_VIEWER_REQUEST => "message_viewer_request",
|
49
|
+
CONTEXT_MESSAGE_VIEWER_RESPONSE => "message_viewer_response",
|
50
|
+
CONTEXT_TARGET_SITE_MAP_TREE => "target_site_map_tree",
|
51
|
+
CONTEXT_TARGET_SITE_MAP_TABLE => "target_site_map_table",
|
52
|
+
CONTEXT_PROXY_HISTORY => "proxy_history",
|
53
|
+
CONTEXT_SCANNER_RESULTS => "scanner_results",
|
54
|
+
CONTEXT_INTRUDER_PAYLOAD_POSITIONS => "intruder_payload_positions",
|
55
|
+
CONTEXT_INTRUDER_ATTACK_RESULTS => "intruder_attack_results",
|
56
|
+
CONTEXT_SEARCH_RESULTS => "search_results"
|
57
|
+
}
|
43
58
|
|
44
59
|
# This method can be used to retrieve details of the HTTP requests /
|
45
60
|
# responses that were shown or selected by the user when the context menu
|
@@ -57,30 +72,39 @@ class Buby
|
|
57
72
|
# +IBurpExtenderCallbacks.saveBuffersToTempFiles()+ to create a
|
58
73
|
# persistent read-only copy of the +IHttpRequestResponse+.
|
59
74
|
#
|
60
|
-
# @return [
|
75
|
+
# @return [HttpRequestResponseList,nil] An array of objects
|
61
76
|
# representing the items that were shown or selected by the user when
|
62
77
|
# the context menu was invoked. This method returns +nil+ if no messages
|
63
78
|
# are applicable to the invocation.
|
64
79
|
#
|
65
80
|
def getSelectedMessages
|
66
81
|
pp [:got_get_selected_messages] if $DEBUG
|
67
|
-
|
68
|
-
HttpRequestResponseHelper.implant(hrrl.first)
|
69
|
-
hrrl
|
82
|
+
HttpRequestResponseList.new(__getSelectedMessages)
|
70
83
|
end
|
71
84
|
|
72
85
|
# This method can be used to retrieve details of the Scanner issues that
|
73
86
|
# were selected by the user when the context menu was invoked.
|
74
87
|
#
|
75
|
-
# @return [
|
88
|
+
# @return [ScanIssuesList,nil] The issues that were selected by the
|
76
89
|
# user when the context menu was invoked. This method returns +nil+ if
|
77
90
|
# no Scanner issues are applicable to the invocation.
|
78
91
|
#
|
79
92
|
def getSelectedIssues
|
80
93
|
pp [:got_get_selected_issues] if $DEBUG
|
81
|
-
|
82
|
-
|
83
|
-
|
94
|
+
ScanIssuesList.new(__getSelectedIssues)
|
95
|
+
end
|
96
|
+
|
97
|
+
# Get the name of the tool invoking a context menu
|
98
|
+
# @return [String] Tool name
|
99
|
+
def tool_name
|
100
|
+
$burp.getToolName getToolFlag
|
101
|
+
end
|
102
|
+
|
103
|
+
# This method can be used to retrieve the context within which the menu
|
104
|
+
# was invoked.
|
105
|
+
# @return [String] Context name
|
106
|
+
def context_name
|
107
|
+
CONTEXTS[getInvocationContext]
|
84
108
|
end
|
85
109
|
|
86
110
|
# Install ourselves into the current +IContextMenuInvocation+ java class
|
@@ -8,6 +8,16 @@ class Buby
|
|
8
8
|
# This module is used to extend the JRuby proxy class returned by Burp.
|
9
9
|
#
|
10
10
|
module ExtensionHelpers
|
11
|
+
PARAM_TYPES = {
|
12
|
+
'url' => 0,
|
13
|
+
'body' => 1,
|
14
|
+
'cookie' => 2,
|
15
|
+
'xml' => 3,
|
16
|
+
'xml_attr' => 4,
|
17
|
+
'multipart_attr' => 5,
|
18
|
+
'json' => 6
|
19
|
+
}
|
20
|
+
|
11
21
|
# This method can be used to analyze an HTTP request, and obtain various
|
12
22
|
# key details about it. The resulting +IRequestInfo+ object
|
13
23
|
# will not include the full request URL.
|
@@ -21,9 +31,10 @@ class Buby
|
|
21
31
|
# @param [IHttpService] http_service HTTP service description
|
22
32
|
# @param [String, Array<byte>] request The request to be analyzed
|
23
33
|
# @overload analyzeRequest(request)
|
24
|
-
# Analyze a +String+ or +byte[]+ request. To obtain the full URL, use
|
25
|
-
# of the other overloaded {#analyzeRequest} methods.
|
34
|
+
# Analyze a +String+ or +byte[]+ request. To obtain the full URL, use
|
35
|
+
# one of the other overloaded {#analyzeRequest} methods.
|
26
36
|
# @param [String, Array<byte>] request The request to be analyzed
|
37
|
+
#
|
27
38
|
# @return [IRequestInfo] object (wrapped with Ruby goodness)
|
28
39
|
# that can be queried to obtain details about the request.
|
29
40
|
#
|
@@ -36,44 +47,57 @@ class Buby
|
|
36
47
|
# This method can be used to analyze an HTTP response, and obtain various
|
37
48
|
# key details about it.
|
38
49
|
#
|
39
|
-
# @
|
40
|
-
#
|
41
|
-
#
|
50
|
+
# @overload analyzeResponse(response)
|
51
|
+
# @param [String, Array<byte>] response The response to be analyzed.
|
52
|
+
# @return [IResponseInfo] object (wrapped with Ruby goodness) that
|
53
|
+
# can be queried to obtain details about the response.
|
54
|
+
# @overload analyzeResponse(response)
|
55
|
+
# @param [IHttpRequestResponse] response The response to be analyzed.
|
56
|
+
# @return [IResponseInfo, nil] Object (wrapped with Ruby goodness) that
|
57
|
+
# can be queried to obtain details about the response. Returns +nil+
|
58
|
+
# when +response+ is +nil+.
|
42
59
|
#
|
43
60
|
def analyzeResponse(response)
|
44
61
|
pp [:got_analyze_response, response] if $DEBUG
|
62
|
+
response = response.response if response.respond_to? :response
|
45
63
|
response = response.to_java_bytes if response.respond_to? :to_java_bytes
|
46
|
-
Buby::Implants::ResponseInfo.implant(__analyzeResponse(response))
|
64
|
+
Buby::Implants::ResponseInfo.implant(__analyzeResponse(response)) if response
|
47
65
|
end
|
48
66
|
|
49
67
|
# This method can be used to retrieve details of a specified parameter
|
50
|
-
# within an HTTP request.
|
51
|
-
#
|
68
|
+
# within an HTTP request. Use {#analyzeRequest} to obtain details of all
|
69
|
+
# parameters within the request.
|
52
70
|
#
|
53
|
-
# @param [String, Array<byte>] request The request
|
54
|
-
# specified parameter.
|
55
|
-
# @param [
|
56
|
-
# @return [IParameter] object that can be queried to obtain details
|
71
|
+
# @param [IHttpRequestResponse, String, Array<byte>] request The request
|
72
|
+
# to be inspected for the specified parameter.
|
73
|
+
# @param [#to_s] parameter_name The name of the parameter to retrieve.
|
74
|
+
# @return [IParameter, nil] object that can be queried to obtain details
|
57
75
|
# about the parameter, or +nil+ if the parameter was not found.
|
58
76
|
#
|
59
77
|
def getRequestParameter(request, parameter_name)
|
60
78
|
pp [:got_get_request_parameter, parameter_name, request] if $DEBUG
|
79
|
+
request = request.request if request.kind_of?(Java::Burp::IHttpRequestResponse)
|
61
80
|
request = request.to_java_bytes if request.respond_to? :to_java_bytes
|
62
|
-
Buby::Implants::Parameter.implant(__getRequestParameter(request, parameter_name))
|
81
|
+
Buby::Implants::Parameter.implant(__getRequestParameter(request, parameter_name.to_s))
|
63
82
|
end
|
64
83
|
|
65
84
|
# This method searches a piece of data for the first occurrence of a
|
66
85
|
# specified pattern. It works on byte-based data in a way that is similar
|
67
86
|
# to the way the native Java method +String.indexOf()+ works on
|
68
87
|
# String-based data.
|
69
|
-
#
|
88
|
+
#
|
89
|
+
# @note This method is only wrapped for testing purposes. There are better
|
90
|
+
# ways to do this in the JRuby runtime.
|
70
91
|
#
|
71
92
|
# @param [String, Array<byte>] data The data to be searched.
|
72
93
|
# @param [String, Array<byte>] pattern The pattern to be searched for.
|
73
|
-
# @param [Boolean] case_sensitive Flags whether or not the search is
|
74
|
-
#
|
94
|
+
# @param [Boolean] case_sensitive Flags whether or not the search is
|
95
|
+
# case-sensitive.
|
96
|
+
# @param [Fixnum] from The offset within +data+ where the search should
|
97
|
+
# begin.
|
75
98
|
# @param [Fixnum] to The offset within +data+ where the search should end.
|
76
|
-
# @return The offset of the first occurrence of the pattern
|
99
|
+
# @return [Fixnum, nil] The offset of the first occurrence of the pattern
|
100
|
+
# within the specified bounds, or +nil+ if no match is found.
|
77
101
|
#
|
78
102
|
def indexOf(data, pattern, case_sensitive, from, to)
|
79
103
|
pp [:got_index_of, case_sensitive, from, to, data, pattern] if $DEBUG
|
@@ -87,11 +111,13 @@ class Buby
|
|
87
111
|
# message body. If applicable, the Content-Length header will be added or
|
88
112
|
# updated, based on the length of the body.
|
89
113
|
#
|
90
|
-
# @param [Array<String>] headers A list of headers to include in the
|
91
|
-
#
|
114
|
+
# @param [Array<String>] headers A list of headers to include in the
|
115
|
+
# message.
|
116
|
+
# @param [String, Array<byte>] body The body of the message, or +nil+ if
|
117
|
+
# the message has an empty body.
|
92
118
|
# @return [String] The resulting full HTTP message.
|
93
119
|
#
|
94
|
-
def buildHttpMessage(headers, body)
|
120
|
+
def buildHttpMessage(headers, body = nil)
|
95
121
|
pp [:got_build_http_message, headers, body] if $DEBUG
|
96
122
|
body = body.to_java_bytes if body.respond_to?(:to_java_bytes)
|
97
123
|
String.from_java_bytes(__buildHttpMessage(headers, body))
|
@@ -101,7 +127,8 @@ class Buby
|
|
101
127
|
# in the request are determined by the Request headers settings as
|
102
128
|
# configured in Burp Spider's options.
|
103
129
|
#
|
104
|
-
# @param [URL, #to_s] url The URL to which the request
|
130
|
+
# @param [java.net.URL, URI, #to_s] url The URL to which the request
|
131
|
+
# should be built.
|
105
132
|
# @return [String] A request to the specified URL.
|
106
133
|
#
|
107
134
|
def buildHttpRequest(url)
|
@@ -185,7 +212,7 @@ class Buby
|
|
185
212
|
#
|
186
213
|
# @param [String, Array<byte>, IHttpRequestResponse] request The HTTP
|
187
214
|
# request whose method should be toggled.
|
188
|
-
# @return [String
|
215
|
+
# @return [String] A new HTTP request using the toggled method.
|
189
216
|
#
|
190
217
|
# @todo Switch IHttpRequestResponse to new Buby::Implants functionality (2.0)
|
191
218
|
def toggleRequestMethod(request)
|
@@ -199,18 +226,43 @@ class Buby
|
|
199
226
|
# details provided.
|
200
227
|
#
|
201
228
|
# @overload buildHttpService(host, port, protocol)
|
202
|
-
# @param [String] host The HTTP service host.
|
229
|
+
# @param [Java::JavaNet::URL, URI,String] host The HTTP service host.
|
203
230
|
# @param [Fixnum] port The HTTP service port.
|
204
231
|
# @param [String] protocol The HTTP service protocol.
|
205
232
|
# @overload buildHttpService(host, port, use_https)
|
206
|
-
# @param [String] host The HTTP service host.
|
233
|
+
# @param [Java::JavaNet::URL, URI,String] host The HTTP service host.
|
207
234
|
# @param [Fixnum] port The HTTP service port.
|
208
235
|
# @param [Boolean] use_https Flags whether the HTTP service protocol is HTTPS or HTTP.
|
236
|
+
# @overload buildHttpService(url)
|
237
|
+
# @param [Java::JavaNet::URL, URI, String] url URL specifying host, port
|
238
|
+
# and protocol. Will automatically set port to 80/443 if http(s) url
|
239
|
+
# is passed. Defaults to 80 for other URL schemes.
|
209
240
|
# @return [IHttpService] object based on the details provided.
|
210
241
|
#
|
211
|
-
def buildHttpService(host,
|
212
|
-
pp [:got_buildHttpService, host,
|
213
|
-
|
242
|
+
def buildHttpService(host, *args)
|
243
|
+
pp [:got_buildHttpService, host, *args] if $DEBUG
|
244
|
+
port, protocol = *args
|
245
|
+
case host
|
246
|
+
when URI, Java::JavaNet::URL
|
247
|
+
port ||= host.port
|
248
|
+
protocol ||= host.protocol
|
249
|
+
host = host.host
|
250
|
+
else
|
251
|
+
thost = host.kind_of?(String) ? Java::JavaNet::URL.new(host) : host
|
252
|
+
port ||= thost.port
|
253
|
+
protocol ||= thost.protocol
|
254
|
+
end
|
255
|
+
port ||= case protocol
|
256
|
+
when TrueClass, /^https$/i
|
257
|
+
443
|
258
|
+
else
|
259
|
+
80
|
260
|
+
end
|
261
|
+
|
262
|
+
port = https ? 443 : 80 if port < 0
|
263
|
+
host = host.host if host.respond_to? :host
|
264
|
+
|
265
|
+
__buildHttpService(host, port, protocol)
|
214
266
|
end
|
215
267
|
|
216
268
|
# This method constructs an +IParameter+ object based on the details
|
@@ -223,6 +275,7 @@ class Buby
|
|
223
275
|
# @return [IParameter] object based on the details provided.
|
224
276
|
def buildParameter(name, value, type)
|
225
277
|
pp [:got_buildParameter, name, value, type] if $DEBUG
|
278
|
+
ptype = TYPE_HASH[ptype.to_s] unless ptype.kind_of?(Fixnum)
|
226
279
|
Buby::Implants::Parameter.implant(__buildParameter(name, value, type))
|
227
280
|
end
|
228
281
|
|
@@ -231,8 +284,8 @@ class Buby
|
|
231
284
|
# point based on a fixed payload location within a base request.
|
232
285
|
#
|
233
286
|
# @param [String] insertion_point_name The name of the insertion point.
|
234
|
-
# @param [String, Array<byte>, IHttpRequestResponse] base_request The
|
235
|
-
#
|
287
|
+
# @param [String, Array<byte>, IHttpRequestResponse] base_request The
|
288
|
+
# request from which to build scan requests.
|
236
289
|
# @param [Fixnum] from The offset of the start of the payload location.
|
237
290
|
# @param [Fixnum] to The offset of the end of the payload location.
|
238
291
|
# @return [IScannerInsertionPoint] object based on the details provided.
|
@@ -240,7 +293,7 @@ class Buby
|
|
240
293
|
# @todo Switch IHttpRequestResponse to new Buby::Implants functionality (2.0)
|
241
294
|
def makeScannerInsertionPoint(insertion_point_name, base_request, from, to)
|
242
295
|
pp [:got_makeScannerInsertionPoint, insertion_point_name, base_request, from, to] if $DEBUG
|
243
|
-
base_request = base_request.request if base_request.
|
296
|
+
base_request = base_request.request if base_request.respond_to? :request
|
244
297
|
base_request = base_request.to_java_bytes if base_request.respond_to? :to_java_bytes
|
245
298
|
Buby::Implants::ScannerInsertionPoint.implant(__makeScannerInsertionPoint(insertion_point_name, base_request, from, to))
|
246
299
|
end
|
@@ -263,9 +316,8 @@ class Buby
|
|
263
316
|
removeParameter
|
264
317
|
updateParameter
|
265
318
|
toggleRequestMethod
|
266
|
-
buildHttpService
|
267
319
|
buildParameter
|
268
|
-
makeScannerInsertionPoint
|
320
|
+
makeScannerInsertionPoint
|
269
321
|
}
|
270
322
|
a_methods.each do |meth|
|
271
323
|
alias_method "__"+meth.to_s, meth
|
data/lib/buby/implants/jruby.rb
CHANGED
@@ -45,6 +45,16 @@ class Buby
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
48
|
+
|
49
|
+
module URL
|
50
|
+
def inspect
|
51
|
+
if $DEBUG
|
52
|
+
super.insert(-2, ": #{self.to_s} ")
|
53
|
+
else
|
54
|
+
self.to_s
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
48
58
|
end
|
49
59
|
end
|
50
60
|
|
@@ -57,6 +67,12 @@ module Enumerable
|
|
57
67
|
end
|
58
68
|
|
59
69
|
module Java
|
70
|
+
module JavaNet
|
71
|
+
class URL
|
72
|
+
include Buby::Implants::URL
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
60
76
|
class JavaClass
|
61
77
|
include Buby::Implants::JavaClass
|
62
78
|
end
|