Files
metasploit-gs/api/Msf/RPC/Client.html
T
jenkins-metasploit c3f5bd3de2 Reboot gh-pages
2026-05-08 17:08:43 +00:00

993 lines
26 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
Class: Msf::RPC::Client
&mdash; Documentation by YARD 0.9.37
</title>
<link rel="stylesheet" href="../../css/style.css" type="text/css" />
<link rel="stylesheet" href="../../css/common.css" type="text/css" />
<script type="text/javascript">
pathId = "Msf::RPC::Client";
relpath = '../../';
</script>
<script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
</head>
<body>
<div class="nav_wrap">
<iframe id="nav" src="../../class_list.html?1"></iframe>
<div id="resizer"></div>
</div>
<div id="main" tabindex="-1">
<div id="header">
<div id="menu">
<a href="../../_index.html">Index (C)</a> &raquo;
<span class='title'><span class='object_link'><a href="../../Msf.html" title="Msf (module)">Msf</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../RPC.html" title="Msf::RPC (module)">RPC</a></span></span>
&raquo;
<span class="title">Client</span>
</div>
<div id="search">
<a class="full_list_link" id="class_list_link"
href="../../class_list.html">
<svg width="24" height="24">
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
</svg>
</a>
</div>
<div class="clear"></div>
</div>
<div id="content"><h1>Class: Msf::RPC::Client
</h1>
<div class="box_info">
<dl>
<dt>Inherits:</dt>
<dd>
<span class="inheritName">Object</span>
<ul class="fullTree">
<li>Object</li>
<li class="next">Msf::RPC::Client</li>
</ul>
<a href="#" class="inheritanceTree">show all</a>
</dd>
</dl>
<dl>
<dt>Defined in:</dt>
<dd>lib/msf/core/rpc/v10/client.rb</dd>
</dl>
</div>
<h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
<ul class="summary">
<li class="public ">
<span class="summary_signature">
<a href="#info-instance_method" title="#info (instance method)">#<strong>info</strong> &#x21d2; Hash </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Login information.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#token-instance_method" title="#token (instance method)">#<strong>token</strong> &#x21d2; String </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>A login token.</p>
</div></span>
</li>
</ul>
<h2>
Instance Method Summary
<small><a href="#" class="summary_toggle">collapse</a></small>
</h2>
<ul class="summary">
<li class="public ">
<span class="summary_signature">
<a href="#call-instance_method" title="#call (instance method)">#<strong>call</strong>(meth, *args) &#x21d2; Hash </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Calls an API.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#close-instance_method" title="#close (instance method)">#<strong>close</strong> &#x21d2; void </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Closes the client.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(info = {}) &#x21d2; void </a>
</span>
<span class="note title constructor">constructor</span>
<span class="summary_desc"><div class='inline'>
<p>Initializes the RPC client to connect to: <a href="https://127.0.0.1:3790">127.0.0.1:3790</a> (TLS1) The connection information is overridden through the optional info hash.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#login-instance_method" title="#login (instance method)">#<strong>login</strong>(user, pass) &#x21d2; TrueClass </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Logs in by calling the auth.login API.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#re_login-instance_method" title="#re_login (instance method)">#<strong>re_login</strong> &#x21d2; TrueClass </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Attempts to login again with the last known user name and password.</p>
</div></span>
</li>
</ul>
<div id="constructor_details" class="method_details_list">
<h2>Constructor Details</h2>
<div class="method_details first">
<h3 class="signature first" id="initialize-instance_method">
#<strong>initialize</strong>(info = {}) &#x21d2; <tt>void</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Initializes the RPC client to connect to: <a href="https://127.0.0.1:3790">127.0.0.1:3790</a> (TLS1) The connection information is overridden through the optional info hash.</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>info</span>
<span class='type'>(<tt>Hash</tt>)</span>
<em class="default">(defaults to: <tt>{}</tt>)</em>
&mdash;
<div class='inline'>
<p>Information needed for the initialization.</p>
</div>
</li>
</ul>
<p class="tag_title">Options Hash (<tt>info</tt>):</p>
<ul class="option">
<li>
<span class="name">:token</span>
<span class="type">(<tt>String</tt>)</span>
<span class="default">
</span>
&mdash; <div class='inline'>
<p>A token used by the client.</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/rpc/v10/client.rb', line 29</span>
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='op'>=</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
<span class='ivar'>@user</span> <span class='op'>=</span> <span class='kw'>nil</span>
<span class='ivar'>@pass</span> <span class='op'>=</span> <span class='kw'>nil</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span> <span class='op'>=</span> <span class='lbrace'>{</span>
<span class='symbol'>:host</span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
<span class='symbol'>:port</span> <span class='op'>=&gt;</span> <span class='int'>3790</span><span class='comma'>,</span>
<span class='symbol'>:uri</span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>/api/</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
<span class='symbol'>:ssl</span> <span class='op'>=&gt;</span> <span class='kw'>true</span><span class='comma'>,</span>
<span class='symbol'>:ssl_version</span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>TLS1.2</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
<span class='symbol'>:context</span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
<span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='id identifier rubyid_info'>info</span><span class='rparen'>)</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_token'>token</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span><span class='lbracket'>[</span><span class='symbol'>:token</span><span class='rbracket'>]</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
</div>
<div id="instance_attr_details" class="attr_details">
<h2>Instance Attribute Details</h2>
<span id="info=-instance_method"></span>
<div class="method_details first">
<h3 class="signature first" id="info-instance_method">
#<strong>info</strong> &#x21d2; <tt>Hash</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns Login information.</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>Hash</tt>)</span>
&mdash;
<div class='inline'>
<p>Login information.</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
20
21
22</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/rpc/v10/client.rb', line 20</span>
<span class='kw'>def</span> <span class='id identifier rubyid_info'>info</span>
<span class='ivar'>@info</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<span id="token=-instance_method"></span>
<div class="method_details ">
<h3 class="signature " id="token-instance_method">
#<strong>token</strong> &#x21d2; <tt>String</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Returns A login token.</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>A login token.</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
16
17
18</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/rpc/v10/client.rb', line 16</span>
<span class='kw'>def</span> <span class='id identifier rubyid_token'>token</span>
<span class='ivar'>@token</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
</div>
<div id="instance_method_details" class="method_details_list">
<h2>Instance Method Details</h2>
<div class="method_details first">
<h3 class="signature first" id="call-instance_method">
#<strong>call</strong>(meth, *args) &#x21d2; <tt>Hash</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Calls an API.</p>
</div>
</div>
<div class="tags">
<div class="examples">
<h4 class="tag_title">Examples:</h4>
<pre class="example code"><code><span class='comment'># This will return something like this:
</span><span class='comment'># {&quot;version&quot;=&gt;&quot;4.11.0-dev&quot;, &quot;ruby&quot;=&gt;&quot;2.1.5 x86_64-darwin14.0 2014-11-13&quot;, &quot;api&quot;=&gt;&quot;1.0&quot;}
</span><span class='id identifier rubyid_rpc'>rpc</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>core.version</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span></code></pre>
</div>
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>meth</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>The RPC API to call.</p>
</div>
</li>
<li>
<span class='name'>args</span>
<span class='type'>(<tt>Array&lt;string&gt;</tt>)</span>
&mdash;
<div class='inline'>
<p>The arguments to pass.</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>Hash</tt>)</span>
&mdash;
<div class='inline'>
<p>The API response. It contains the following keys:</p>
<ul><li>
<p>'version' [String] Framework version.</p>
</li><li>
<p>'ruby' [String] Ruby version.</p>
</li><li>
<p>'api' [String] API version.</p>
</li></ul>
</div>
</li>
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
<li>
<span class='type'>(<tt>RuntimeError</tt>)</span>
&mdash;
<div class='inline'>
<p>Something is wrong while calling the remote API, including:</p>
<ul><li>
<p>A missing token (your client needs to authenticate).</p>
</li><li>
<p>A unexpected response from the server, such as a timeout or unexpected HTTP code.</p>
</li></ul>
</div>
</li>
<li>
<span class='type'>(<tt><span class='object_link'><a href="ServerException.html" title="Msf::RPC::ServerException (class)">Msf::RPC::ServerException</a></span></tt>)</span>
&mdash;
<div class='inline'>
<p>The RPC service returns an error.</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/rpc/v10/client.rb', line 89</span>
<span class='kw'>def</span> <span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_meth'>meth</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_meth'>meth</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>auth.logout</span><span class='tstring_end'>&#39;</span></span>
<span class='id identifier rubyid_do_logout_cleanup'>do_logout_cleanup</span>
<span class='kw'>end</span>
<span class='kw'>if</span> <span class='id identifier rubyid_meth'>meth</span> <span class='op'>!=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>auth.login</span><span class='tstring_end'>&#39;</span></span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_meth'>meth</span> <span class='op'>!=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>health.check</span><span class='tstring_end'>&#39;</span></span>
<span class='kw'>unless</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_token'>token</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>RuntimeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>client not authenticated</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span>
<span class='id identifier rubyid_args'>args</span><span class='period'>.</span><span class='id identifier rubyid_unshift'>unshift</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_token'>token</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='id identifier rubyid_args'>args</span><span class='period'>.</span><span class='id identifier rubyid_unshift'>unshift</span><span class='lparen'>(</span><span class='id identifier rubyid_meth'>meth</span><span class='rparen'>)</span>
<span class='kw'>begin</span>
<span class='id identifier rubyid_send_rpc_request'>send_rpc_request</span><span class='lparen'>(</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
<span class='kw'>rescue</span> <span class='const'><span class='object_link'><a href="../../Msf.html" title="Msf (module)">Msf</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../RPC.html" title="Msf::RPC (module)">RPC</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="ServerException.html" title="Msf::RPC::ServerException (class)">ServerException</a></span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
<span class='kw'>if</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>Invalid Authentication Token</span><span class='regexp_end'>/i</span></span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_meth'>meth</span> <span class='op'>!=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>auth.login</span><span class='tstring_end'>&#39;</span></span> <span class='op'>&amp;&amp;</span> <span class='ivar'>@user</span> <span class='op'>&amp;&amp;</span> <span class='ivar'>@pass</span>
<span class='id identifier rubyid_re_login'>re_login</span>
<span class='id identifier rubyid_args'>args</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_token'>token</span>
<span class='kw'>retry</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='id identifier rubyid_e'>e</span>
<span class='kw'>end</span>
<span class='kw'>ensure</span>
<span class='ivar'>@cli</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span> <span class='kw'>if</span> <span class='ivar'>@cli</span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="close-instance_method">
#<strong>close</strong> &#x21d2; <tt>void</tt>
</h3><div class="docstring">
<div class="discussion">
<p class="note returns_void">This method returns an undefined value.</p>
<p>Closes the client.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
123
124
125
126
127
128</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/rpc/v10/client.rb', line 123</span>
<span class='kw'>def</span> <span class='id identifier rubyid_close'>close</span>
<span class='kw'>if</span> <span class='ivar'>@cli</span> <span class='op'>&amp;&amp;</span> <span class='ivar'>@cli</span><span class='period'>.</span><span class='id identifier rubyid_conn?'>conn?</span>
<span class='ivar'>@cli</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span>
<span class='kw'>end</span>
<span class='ivar'>@cli</span> <span class='op'>=</span> <span class='kw'>nil</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="login-instance_method">
#<strong>login</strong>(user, pass) &#x21d2; <tt>TrueClass</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Logs in by calling the auth.login API. The authentication token will expire after 5 minutes, but will automatically be rewnewed when you make a new RPC request.</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>user</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>Username.</p>
</div>
</li>
<li>
<span class='name'>pass</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>Password.</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>TrueClass</tt>)</span>
&mdash;
<div class='inline'>
<p>Indicating a successful login.</p>
</div>
</li>
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
<li>
<span class='type'></span>
<div class='inline'>
<p>RuntimeError Indicating a failed authentication.</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
53
54
55
56
57
58
59
60
61
62</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/rpc/v10/client.rb', line 53</span>
<span class='kw'>def</span> <span class='id identifier rubyid_login'>login</span><span class='lparen'>(</span><span class='id identifier rubyid_user'>user</span><span class='comma'>,</span><span class='id identifier rubyid_pass'>pass</span><span class='rparen'>)</span>
<span class='ivar'>@user</span> <span class='op'>=</span> <span class='id identifier rubyid_user'>user</span>
<span class='ivar'>@pass</span> <span class='op'>=</span> <span class='id identifier rubyid_pass'>pass</span>
<span class='id identifier rubyid_res'>res</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>auth.login</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_user'>user</span><span class='comma'>,</span> <span class='id identifier rubyid_pass'>pass</span><span class='rparen'>)</span>
<span class='kw'>unless</span> <span class='lparen'>(</span><span class='id identifier rubyid_res'>res</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_res'>res</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>result</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>success</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>RuntimeError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>authentication failed</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span>
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_token'>token</span> <span class='op'>=</span> <span class='id identifier rubyid_res'>res</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>token</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
<span class='kw'>true</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="re_login-instance_method">
#<strong>re_login</strong> &#x21d2; <tt>TrueClass</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Attempts to login again with the last known user name and password.</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>TrueClass</tt>)</span>
&mdash;
<div class='inline'>
<p>Indicating a successful login.</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
68
69
70</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/rpc/v10/client.rb', line 68</span>
<span class='kw'>def</span> <span class='id identifier rubyid_re_login'>re_login</span>
<span class='id identifier rubyid_login'>login</span><span class='lparen'>(</span><span class='ivar'>@user</span><span class='comma'>,</span> <span class='ivar'>@pass</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
</div>
</div>
<div id="footer">
Generated on Fri May 8 17:03:23 2026 by
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
0.9.37 (ruby-3.1.5).
</div>
</div>
</body>
</html>