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

1739 lines
57 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::MCP::Security::InputValidator
&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::MCP::Security::InputValidator";
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 (I)</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="../../MCP.html" title="Msf::MCP (module)">MCP</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Security.html" title="Msf::MCP::Security (module)">Security</a></span></span>
&raquo;
<span class="title">InputValidator</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::MCP::Security::InputValidator
</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::MCP::Security::InputValidator</li>
</ul>
<a href="#" class="inheritanceTree">show all</a>
</dd>
</dl>
<dl>
<dt>Defined in:</dt>
<dd>lib/msf/core/mcp/security/input_validator.rb</dd>
</dl>
</div>
<h2>
Constant Summary
<small><a href="#" class="constants_summary_toggle">collapse</a></small>
</h2>
<dl class="constants">
<dt id="LIMIT_DEFAULT-constant" class="">LIMIT_DEFAULT =
</dt>
<dd><pre class="code"><span class='int'>100</span></pre></dd>
<dt id="LIMIT_MIN-constant" class="">LIMIT_MIN =
</dt>
<dd><pre class="code"><span class='int'>1</span></pre></dd>
<dt id="LIMIT_MAX-constant" class="">LIMIT_MAX =
</dt>
<dd><pre class="code"><span class='int'>1000</span></pre></dd>
</dl>
<h2>
Class Method Summary
<small><a href="#" class="summary_toggle">collapse</a></small>
</h2>
<ul class="summary">
<li class="public ">
<span class="summary_signature">
<a href="#validate_ip_address!-class_method" title="validate_ip_address! (class method)">.<strong>validate_ip_address!</strong>(addr) &#x21d2; true </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Validate IP address or CIDR range.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#validate_limit!-class_method" title="validate_limit! (class method)">.<strong>validate_limit!</strong>(limit) &#x21d2; true </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Validate limit parameter for pagination.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#validate_module_name!-class_method" title="validate_module_name! (class method)">.<strong>validate_module_name!</strong>(module_name) &#x21d2; true </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Validate module name.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#validate_module_type!-class_method" title="validate_module_type! (class method)">.<strong>validate_module_type!</strong>(module_type) &#x21d2; true </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Validate module type.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#validate_offset!-class_method" title="validate_offset! (class method)">.<strong>validate_offset!</strong>(offset) &#x21d2; true </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Validate offset parameter for pagination.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#validate_only_up!-class_method" title="validate_only_up! (class method)">.<strong>validate_only_up!</strong>(only_up) &#x21d2; true </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Validate only_up boolean parameter.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#validate_pagination!-class_method" title="validate_pagination! (class method)">.<strong>validate_pagination!</strong>(limit, offset) &#x21d2; true </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Validate pagination parameters.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#validate_parameter!-class_method" title="validate_parameter! (class method)">.<strong>validate_parameter!</strong>(name, value, constraint, allow_nil: false, max_size: nil) &#x21d2; true </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Generic parameter validation against a constraint.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#validate_port_range!-class_method" title="validate_port_range! (class method)">.<strong>validate_port_range!</strong>(range) &#x21d2; true </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Validate port or port range.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#validate_protocol!-class_method" title="validate_protocol! (class method)">.<strong>validate_protocol!</strong>(protocol) &#x21d2; true </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Validate protocol parameter.</p>
</div></span>
</li>
<li class="public ">
<span class="summary_signature">
<a href="#validate_search_query!-class_method" title="validate_search_query! (class method)">.<strong>validate_search_query!</strong>(query) &#x21d2; true </a>
</span>
<span class="summary_desc"><div class='inline'>
<p>Validate query string for module search.</p>
</div></span>
</li>
</ul>
<div id="class_method_details" class="method_details_list">
<h2>Class Method Details</h2>
<div class="method_details first">
<h3 class="signature first" id="validate_ip_address!-class_method">
.<strong>validate_ip_address!</strong>(addr) &#x21d2; <tt>true</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Validate IP address or CIDR range</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>addr</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>IP address or CIDR (e.g., “192.168.1.1” or “192.168.1.0/24”)</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>true</tt>)</span>
&mdash;
<div class='inline'>
<p>If valid</p>
</div>
</li>
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
<li>
<span class='type'>(<tt><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></tt>)</span>
&mdash;
<div class='inline'>
<p>If invalid</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
85
86
87
88
89
90
91
92
93
94</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/mcp/security/input_validator.rb', line 85</span>
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_ip_address!'>validate_ip_address!</span><span class='lparen'>(</span><span class='id identifier rubyid_addr'>addr</span><span class='rparen'>)</span>
<span class='kw'>return</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='id identifier rubyid_addr'>addr</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_addr'>addr</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
<span class='kw'>begin</span>
<span class='const'>IPAddr</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_addr'>addr</span><span class='rparen'>)</span>
<span class='kw'>true</span>
<span class='kw'>rescue</span> <span class='const'>IPAddr</span><span class='op'>::</span><span class='const'>InvalidAddressError</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Invalid IP address or CIDR: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_addr'>addr</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="validate_limit!-class_method">
.<strong>validate_limit!</strong>(limit) &#x21d2; <tt>true</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Validate limit parameter for pagination</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>limit</span>
<span class='type'>(<tt>Integer</tt>)</span>
&mdash;
<div class='inline'>
<p>Limit value</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>true</tt>)</span>
&mdash;
<div class='inline'>
<p>If valid</p>
</div>
</li>
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
<li>
<span class='type'>(<tt><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></tt>)</span>
&mdash;
<div class='inline'>
<p>If invalid</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
135
136
137</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/mcp/security/input_validator.rb', line 135</span>
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_limit!'>validate_limit!</span><span class='lparen'>(</span><span class='id identifier rubyid_limit'>limit</span><span class='rparen'>)</span>
<span class='id identifier rubyid_validate_parameter!'>validate_parameter!</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Limit</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_limit'>limit</span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="#LIMIT_MIN-constant" title="Msf::MCP::Security::InputValidator::LIMIT_MIN (constant)">LIMIT_MIN</a></span></span><span class='op'>..</span><span class='const'>LIMIT_MAX</span><span class='comma'>,</span> <span class='label'>allow_nil:</span> <span class='kw'>true</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="validate_module_name!-class_method">
.<strong>validate_module_name!</strong>(module_name) &#x21d2; <tt>true</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Validate module name</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>module_name</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>Module name/path</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>true</tt>)</span>
&mdash;
<div class='inline'>
<p>If valid</p>
</div>
</li>
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
<li>
<span class='type'>(<tt><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></tt>)</span>
&mdash;
<div class='inline'>
<p>If invalid</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
173
174
175
176</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/mcp/security/input_validator.rb', line 173</span>
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_module_name!'>validate_module_name!</span><span class='lparen'>(</span><span class='id identifier rubyid_module_name'>module_name</span><span class='rparen'>)</span>
<span class='comment'># Basic path validation (alphanumeric, slashes, underscores, hyphens)
</span> <span class='id identifier rubyid_validate_parameter!'>validate_parameter!</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Module name</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_module_name'>module_name</span><span class='comma'>,</span> <span class='tstring'><span class='regexp_beg'>%r{</span><span class='tstring_content'>\A[\w/\-]+\z</span><span class='regexp_end'>}</span></span><span class='comma'>,</span> <span class='label'>max_size:</span> <span class='int'>500</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="validate_module_type!-class_method">
.<strong>validate_module_type!</strong>(module_type) &#x21d2; <tt>true</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Validate module type</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>module_type</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>Module type</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>true</tt>)</span>
&mdash;
<div class='inline'>
<p>If valid</p>
</div>
</li>
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
<li>
<span class='type'>(<tt><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></tt>)</span>
&mdash;
<div class='inline'>
<p>If invalid</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
164
165
166</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/mcp/security/input_validator.rb', line 164</span>
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_module_type!'>validate_module_type!</span><span class='lparen'>(</span><span class='id identifier rubyid_module_type'>module_type</span><span class='rparen'>)</span>
<span class='id identifier rubyid_validate_parameter!'>validate_parameter!</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Module type</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_module_type'>module_type</span><span class='comma'>,</span> <span class='qwords_beg'>%w[</span><span class='tstring_content'>exploit</span><span class='words_sep'> </span><span class='tstring_content'>auxiliary</span><span class='words_sep'> </span><span class='tstring_content'>post</span><span class='words_sep'> </span><span class='tstring_content'>payload</span><span class='words_sep'> </span><span class='tstring_content'>encoder</span><span class='words_sep'> </span><span class='tstring_content'>evasion</span><span class='words_sep'> </span><span class='tstring_content'>nop</span><span class='tstring_end'>]</span></span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="validate_offset!-class_method">
.<strong>validate_offset!</strong>(offset) &#x21d2; <tt>true</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Validate offset parameter for pagination</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>offset</span>
<span class='type'>(<tt>Integer</tt>)</span>
&mdash;
<div class='inline'>
<p>Offset value</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>true</tt>)</span>
&mdash;
<div class='inline'>
<p>If valid</p>
</div>
</li>
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
<li>
<span class='type'>(<tt><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></tt>)</span>
&mdash;
<div class='inline'>
<p>If invalid</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
144
145
146</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/mcp/security/input_validator.rb', line 144</span>
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_offset!'>validate_offset!</span><span class='lparen'>(</span><span class='id identifier rubyid_offset'>offset</span><span class='rparen'>)</span>
<span class='id identifier rubyid_validate_parameter!'>validate_parameter!</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Offset</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_offset'>offset</span><span class='comma'>,</span> <span class='int'>0</span><span class='op'>..</span><span class='const'><span class='object_link'><a href="#LIMIT_MAX-constant" title="Msf::MCP::Security::InputValidator::LIMIT_MAX (constant)">LIMIT_MAX</a></span></span><span class='comma'>,</span> <span class='label'>allow_nil:</span> <span class='kw'>true</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="validate_only_up!-class_method">
.<strong>validate_only_up!</strong>(only_up) &#x21d2; <tt>true</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Validate only_up boolean parameter</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>only_up</span>
<span class='type'>(<tt>Boolean</tt>)</span>
&mdash;
<div class='inline'>
<p>Only up parameter</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>true</tt>)</span>
&mdash;
<div class='inline'>
<p>If valid</p>
</div>
</li>
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
<li>
<span class='type'>(<tt><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></tt>)</span>
&mdash;
<div class='inline'>
<p>If invalid</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
183
184
185</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/mcp/security/input_validator.rb', line 183</span>
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_only_up!'>validate_only_up!</span><span class='lparen'>(</span><span class='id identifier rubyid_only_up'>only_up</span><span class='rparen'>)</span>
<span class='id identifier rubyid_validate_parameter!'>validate_parameter!</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>only_up</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_only_up'>only_up</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rbracket'>]</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="validate_pagination!-class_method">
.<strong>validate_pagination!</strong>(limit, offset) &#x21d2; <tt>true</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Validate pagination parameters</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>limit</span>
<span class='type'>(<tt>Integer</tt>)</span>
&mdash;
<div class='inline'>
<p>Limit value</p>
</div>
</li>
<li>
<span class='name'>offset</span>
<span class='type'>(<tt>Integer</tt>)</span>
&mdash;
<div class='inline'>
<p>Offset value</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>true</tt>)</span>
&mdash;
<div class='inline'>
<p>If valid</p>
</div>
</li>
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
<li>
<span class='type'>(<tt><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></tt>)</span>
&mdash;
<div class='inline'>
<p>If invalid</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
154
155
156
157</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/mcp/security/input_validator.rb', line 154</span>
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_pagination!'>validate_pagination!</span><span class='lparen'>(</span><span class='id identifier rubyid_limit'>limit</span><span class='comma'>,</span> <span class='id identifier rubyid_offset'>offset</span><span class='rparen'>)</span>
<span class='id identifier rubyid_validate_limit!'>validate_limit!</span><span class='lparen'>(</span><span class='id identifier rubyid_limit'>limit</span><span class='rparen'>)</span>
<span class='id identifier rubyid_validate_offset!'>validate_offset!</span><span class='lparen'>(</span><span class='id identifier rubyid_offset'>offset</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="validate_parameter!-class_method">
.<strong>validate_parameter!</strong>(name, value, constraint, allow_nil: false, max_size: nil) &#x21d2; <tt>true</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Generic parameter validation against a constraint</p>
<p>Dispatches based on the constraint type:</p>
<ul><li>
<p>Array → value must be included in the list (enum)</p>
</li><li>
<p>Range → value must be an integer within the range, or a Range whose</p>
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_bounds'>bounds</span> <span class='id identifier rubyid_are'>are</span> <span class='id identifier rubyid_within'>within</span> <span class='id identifier rubyid_the'>the</span> <span class='id identifier rubyid_constraint'>constraint</span> <span class='lparen'>(</span><span class='id identifier rubyid_range'>range</span> <span class='id identifier rubyid_must'>must</span> <span class='id identifier rubyid_be'>be</span> <span class='id identifier rubyid_integer'>integer</span><span class='op'>-</span><span class='id identifier rubyid_bounded'>bounded</span><span class='rparen'>)</span>
</code></pre>
</li><li>
<p>Regexp → value (via .to_s) must match the pattern</p>
</li></ul>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>name</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>Parameter name (used in error messages)</p>
</div>
</li>
<li>
<span class='name'>value</span>
<span class='type'>(<tt>Object</tt>)</span>
&mdash;
<div class='inline'>
<p>Value to validate</p>
</div>
</li>
<li>
<span class='name'>constraint</span>
<span class='type'>(<tt>Array</tt>, <tt>Range</tt>, <tt>Regexp</tt>)</span>
&mdash;
<div class='inline'>
<p>Allowed values, range, or pattern</p>
</div>
</li>
<li>
<span class='name'>allow_nil</span>
<span class='type'>(<tt>Boolean</tt>)</span>
<em class="default">(defaults to: <tt>false</tt>)</em>
&mdash;
<div class='inline'>
<p>Whether nil/empty values are allowed (default: false)</p>
</div>
</li>
<li>
<span class='name'>max_size</span>
<span class='type'>(<tt>Integer</tt>)</span>
<em class="default">(defaults to: <tt>nil</tt>)</em>
&mdash;
<div class='inline'>
<p>(optional) Maximum length for string values (only applies to Regexp constraints)</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>true</tt>)</span>
&mdash;
<div class='inline'>
<p>If valid</p>
</div>
</li>
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
<li>
<span class='type'>(<tt><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></tt>)</span>
&mdash;
<div class='inline'>
<p>If invalid</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/mcp/security/input_validator.rb', line 27</span>
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_parameter!'>validate_parameter!</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_constraint'>constraint</span><span class='comma'>,</span> <span class='label'>allow_nil:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='label'>max_size:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
<span class='kw'>if</span> <span class='id identifier rubyid_allow_nil'>allow_nil</span>
<span class='kw'>return</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
<span class='kw'>return</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:empty?</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'> cannot be nil</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'> cannot be empty</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:empty?</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
<span class='kw'>end</span>
<span class='kw'>case</span> <span class='id identifier rubyid_constraint'>constraint</span>
<span class='kw'>when</span> <span class='const'>Array</span>
<span class='kw'>unless</span> <span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Invalid </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'>. Must be one of: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>, </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span>
<span class='kw'>when</span> <span class='const'>Range</span>
<span class='kw'>unless</span> <span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Integer</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Integer</span><span class='rparen'>)</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Range constraint must be a range of integers, got </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'>..</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span>
<span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Range</span><span class='rparen'>)</span>
<span class='kw'>begin</span>
<span class='id identifier rubyid_int_first'>int_first</span> <span class='op'>=</span> <span class='const'>Integer</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='rparen'>)</span>
<span class='id identifier rubyid_int_last'>int_last</span> <span class='op'>=</span> <span class='const'>Integer</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='rparen'>)</span>
<span class='kw'>rescue</span> <span class='const'>TypeError</span><span class='comma'>,</span> <span class='const'>ArgumentError</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'> must have integer bounds: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span>
<span class='kw'>unless</span> <span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_cover?'>cover?</span><span class='lparen'>(</span><span class='id identifier rubyid_int_first'>int_first</span><span class='op'>..</span><span class='id identifier rubyid_int_last'>int_last</span><span class='rparen'>)</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'> must be between </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_min'>min</span><span class='embexpr_end'>}</span><span class='tstring_content'> and </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_int_first'>int_first</span><span class='embexpr_end'>}</span><span class='tstring_content'>..</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_int_last'>int_last</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span>
<span class='kw'>else</span>
<span class='kw'>begin</span>
<span class='id identifier rubyid_int_value'>int_value</span> <span class='op'>=</span> <span class='const'>Integer</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
<span class='kw'>rescue</span> <span class='const'>TypeError</span><span class='comma'>,</span> <span class='const'>ArgumentError</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'> must be an integer: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span>
<span class='kw'>unless</span> <span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_cover?'>cover?</span><span class='lparen'>(</span><span class='id identifier rubyid_int_value'>int_value</span><span class='rparen'>)</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'> must be between </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_min'>min</span><span class='embexpr_end'>}</span><span class='tstring_content'> and </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_value'>value</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span>
<span class='kw'>end</span>
<span class='kw'>when</span> <span class='const'>Regexp</span>
<span class='id identifier rubyid_string_value'>string_value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
<span class='kw'>if</span> <span class='id identifier rubyid_max_size'>max_size</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_string_value'>string_value</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>&gt;</span> <span class='id identifier rubyid_max_size'>max_size</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'> too long (max </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_max_size'>max_size</span><span class='embexpr_end'>}</span><span class='tstring_content'> characters)</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span>
<span class='kw'>unless</span> <span class='id identifier rubyid_string_value'>string_value</span><span class='period'>.</span><span class='id identifier rubyid_match?'>match?</span><span class='lparen'>(</span><span class='id identifier rubyid_constraint'>constraint</span><span class='rparen'>)</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Invalid </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'> format: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_value'>value</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Unsupported constraint type: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span>
<span class='kw'>true</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="validate_port_range!-class_method">
.<strong>validate_port_range!</strong>(range) &#x21d2; <tt>true</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Validate port or port range</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>range</span>
<span class='type'>(<tt>String</tt>, <tt>Integer</tt>)</span>
&mdash;
<div class='inline'>
<p>Port number or range (e.g., “80” or “80-443”)</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>true</tt>)</span>
&mdash;
<div class='inline'>
<p>If valid</p>
</div>
</li>
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
<li>
<span class='type'>(<tt><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></tt>)</span>
&mdash;
<div class='inline'>
<p>If invalid</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/mcp/security/input_validator.rb', line 101</span>
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_port_range!'>validate_port_range!</span><span class='lparen'>(</span><span class='id identifier rubyid_range'>range</span><span class='rparen'>)</span>
<span class='kw'>return</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='id identifier rubyid_range'>range</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_range'>range</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
<span class='id identifier rubyid_range_str'>range_str</span> <span class='op'>=</span> <span class='id identifier rubyid_range'>range</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
<span class='comment'># Match a port range like &quot;80-443&quot; — requires digits on both sides of the dash
</span> <span class='kw'>if</span> <span class='id identifier rubyid_range_str'>range_str</span><span class='period'>.</span><span class='id identifier rubyid_match?'>match?</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\A\s*[[:alnum:]]+-[[:alnum:]]+\s*\z</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span>
<span class='kw'>begin</span>
<span class='id identifier rubyid_start_port'>start_port</span><span class='comma'>,</span> <span class='id identifier rubyid_end_port'>end_port</span> <span class='op'>=</span> <span class='id identifier rubyid_range_str'>range_str</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>-</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='int'>2</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_p'>p</span><span class='op'>|</span> <span class='const'>Integer</span><span class='lparen'>(</span><span class='id identifier rubyid_p'>p</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
<span class='kw'>rescue</span> <span class='const'>TypeError</span><span class='comma'>,</span> <span class='const'>ArgumentError</span>
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Port range must have integer bounds: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_range_str'>range_str</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
<span class='kw'>end</span>
<span class='id identifier rubyid_validate_parameter!'>validate_parameter!</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Port range</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_start_port'>start_port</span><span class='op'>..</span><span class='id identifier rubyid_end_port'>end_port</span><span class='comma'>,</span> <span class='int'>1</span><span class='op'>..</span><span class='int'>65535</span><span class='rparen'>)</span>
<span class='kw'>else</span>
<span class='id identifier rubyid_validate_parameter!'>validate_parameter!</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Port</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_range_str'>range_str</span><span class='comma'>,</span> <span class='int'>1</span><span class='op'>..</span><span class='int'>65535</span><span class='rparen'>)</span>
<span class='kw'>end</span>
<span class='kw'>true</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="validate_protocol!-class_method">
.<strong>validate_protocol!</strong>(protocol) &#x21d2; <tt>true</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Validate protocol parameter</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>protocol</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>Protocol (tcp or udp)</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>true</tt>)</span>
&mdash;
<div class='inline'>
<p>If valid</p>
</div>
</li>
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
<li>
<span class='type'>(<tt><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></tt>)</span>
&mdash;
<div class='inline'>
<p>If invalid</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
192
193
194</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/mcp/security/input_validator.rb', line 192</span>
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_protocol!'>validate_protocol!</span><span class='lparen'>(</span><span class='id identifier rubyid_protocol'>protocol</span><span class='rparen'>)</span>
<span class='id identifier rubyid_validate_parameter!'>validate_parameter!</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Protocol</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_protocol'>protocol</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_downcase'>downcase</span><span class='comma'>,</span> <span class='qwords_beg'>%w[</span><span class='tstring_content'>tcp</span><span class='words_sep'> </span><span class='tstring_content'>udp</span><span class='tstring_end'>]</span></span><span class='comma'>,</span> <span class='label'>allow_nil:</span> <span class='kw'>true</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
</td>
</tr>
</table>
</div>
<div class="method_details ">
<h3 class="signature " id="validate_search_query!-class_method">
.<strong>validate_search_query!</strong>(query) &#x21d2; <tt>true</tt>
</h3><div class="docstring">
<div class="discussion">
<p>Validate query string for module search</p>
</div>
</div>
<div class="tags">
<p class="tag_title">Parameters:</p>
<ul class="param">
<li>
<span class='name'>query</span>
<span class='type'>(<tt>String</tt>)</span>
&mdash;
<div class='inline'>
<p>Search query</p>
</div>
</li>
</ul>
<p class="tag_title">Returns:</p>
<ul class="return">
<li>
<span class='type'>(<tt>true</tt>)</span>
&mdash;
<div class='inline'>
<p>If valid</p>
</div>
</li>
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
<li>
<span class='type'>(<tt><span class='object_link'><a href="ValidationError.html" title="Msf::MCP::Security::ValidationError (class)">ValidationError</a></span></tt>)</span>
&mdash;
<div class='inline'>
<p>If invalid</p>
</div>
</li>
</ul>
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
126
127
128</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/msf/core/mcp/security/input_validator.rb', line 126</span>
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_validate_search_query!'>validate_search_query!</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
<span class='id identifier rubyid_validate_parameter!'>validate_parameter!</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Search query</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\A[[:print:]]+\z</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='label'>allow_nil:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='label'>max_size:</span> <span class='int'>500</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:37 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>