buby 1.5.2-java → 1.6.0-java
Sign up to get free protection for your applications and to get access to all the features.
- 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
|