This is an automated email from the ASF dual-hosted git repository.
git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/mina-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new b6e1cfd05 Updated site from master
(3188356ed8cc00d2cd29a1d66e98034011bbf54d)
b6e1cfd05 is described below
commit b6e1cfd05979c1476d4d1237769e3741df200eb4
Author: jenkins <[email protected]>
AuthorDate: Mon Jul 3 13:53:59 2023 +0000
Updated site from master (3188356ed8cc00d2cd29a1d66e98034011bbf54d)
---
.../documentation/ch6-internals/ch6-internals.html | 288 ++++++++++++++++++++-
content/ftpserver-project/index.xml | 4 +-
content/index.xml | 6 +-
content/mina-project/index.html | 2 +-
content/mina-project/index.xml | 2 +-
content/sitemap.xml | 8 +-
6 files changed, 296 insertions(+), 14 deletions(-)
diff --git
a/content/ftpserver-project/documentation/ch6-internals/ch6-internals.html
b/content/ftpserver-project/documentation/ch6-internals/ch6-internals.html
index 1ff43442b..e93f3235e 100644
--- a/content/ftpserver-project/documentation/ch6-internals/ch6-internals.html
+++ b/content/ftpserver-project/documentation/ch6-internals/ch6-internals.html
@@ -122,7 +122,7 @@
<span style="color:#666">.</span><span style="color:#666">.</span><span
style="color:#666">.</span>
</code></pre></div><p>Let’s see what happens when we create the factory
and when the server is created</p>
<h2 id="ftpserverfactory-creation">FtpServerFactory creation</h2>
-<p>The <strong>FtpServerFactory</strong> is associated with a
<strong>FtpServerContext</strong> instance, which define a set of elements:</p>
+<p>The <strong>FtpServerFactory</strong> is associated with a
<strong>FtpServerContext</strong> instance, which defines a set of elements:</p>
<ul>
<li>a <strong>CommandFactory</strong> instance</li>
<li>a <strong>ConnectionConfig</strong> instance</li>
@@ -130,7 +130,7 @@
<li>a <strong>FtpletContainer</strong> instance</li>
<li>a <strong>FtpStatistics</strong> instance</li>
<li>a set of <strong>Listener</strong> instances</li>
-<li>a <strong>MessageResource</strong> instance</li>
+<li>a <strong>MessageResource</strong> instance. It manages the messages
(code and sub-ids) associated with the various supported languages.</li>
<li>a <strong>UserManager</strong> instance</li>
</ul>
<p>The class hierarchy is the following:</p>
@@ -147,7 +147,289 @@
'--| DefaultFtpServerContext |
'-------------------------'
-</code></pre>
+</code></pre><h3
id="messageresourcefactory-and-messageresource">MessageResourceFactory and
MessageResource</h3>
+<p>The <strong>MessageResourceFactory</strong> is used to create the
<strong>MessageResource</strong> instance which will be an instance of the
<strong>DefaultMessageResource</strong> class).</p>
+<p>The <strong>MessageResource</strong> instance contains the messages for all
the supported languages. Those messages are those sent to the client when a
command is executed. For instance, the response for a <strong>STOR</strong>
command may be:</p>
+<pre><code>Can't open data connection.
+</code></pre><p>This is defined in the <em>FtpStatus.properties</em> file,
among other response messages:</p>
+<pre><code>...
+425.STOR=Can't open data connection.
+...
+</code></pre><p>Those messages are read from various places (the <lang>
tag is the name of the language to use, like <strong>en</strong>,
<strong>fr</strong>, etc):</p>
+<ul>
+<li>Default messages
+<ul>
+<li><em>org/apache/ftpserver/message/FtpStatus.properties</em></li>
+<li><em>org/apache/ftpserver/message/FtpStatus</em><lang>.properties_</li>
+</ul>
+</li>
+<li>Custom messages
+<ul>
+<li><em>org/apache/ftpserver/message/FtpStatus.gen</em></li>
+<li><em>org/apache/ftpserver/message/FtpStatus</em><lang>.gen_</li>
+</ul>
+</li>
+</ul>
+<h2 id="commandfactory">Commandfactory</h2>
+<p>This factory creates a <strong>Map</strong> which contains the
<em>Command</em> instances associated with the command name. The current
version support those commands:</p>
+<table>
+<thead>
+<tr>
+<th>Command</th>
+<th>RFC reference</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>ABOR</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>ACCT</td>
+<td>rfc959, 4.1.1</td>
+</tr>
+<tr>
+<td>APPE</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>AUTH</td>
+<td>rfc2228, 3</td>
+</tr>
+<tr>
+<td>CDUP</td>
+<td>rfc959, 4.1.1</td>
+</tr>
+<tr>
+<td>CWD</td>
+<td>rfc959, 4.1.1</td>
+</tr>
+<tr>
+<td>DELE</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>EPRT</td>
+<td>rfc2428, 2</td>
+</tr>
+<tr>
+<td>EPSV</td>
+<td>rfc2428, 3</td>
+</tr>
+<tr>
+<td>FEAT</td>
+<td>rfc2389, 3</td>
+</tr>
+<tr>
+<td>HELP</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>LANG</td>
+<td>rfc2640, 4.1</td>
+</tr>
+<tr>
+<td>LIST</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>MD5</td>
+<td>draft-twine-ftpmd5-00.txt , 3.1</td>
+</tr>
+<tr>
+<td>MMD5</td>
+<td>draft-twine-ftpmd5-00.txt , 3.2</td>
+</tr>
+<tr>
+<td>MDTM</td>
+<td>rfc3659, 3</td>
+</tr>
+<tr>
+<td>MFMT</td>
+<td>draft-somers-ftp-mfxx, 3</td>
+</tr>
+<tr>
+<td>MKD</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>MLSD</td>
+<td>rfc3659, 7</td>
+</tr>
+<tr>
+<td>MLST</td>
+<td>rfc3659, 7</td>
+</tr>
+<tr>
+<td>MODE</td>
+<td>rfc959, 4.1.2</td>
+</tr>
+<tr>
+<td>NLST</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>NOOP</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>OPTS</td>
+<td>rfc2389, 4</td>
+</tr>
+<tr>
+<td>PASS</td>
+<td>rfc959, 4.1.1</td>
+</tr>
+<tr>
+<td>PASV</td>
+<td>rfc959, 4.1.2</td>
+</tr>
+<tr>
+<td>PBSZ</td>
+<td>rfc2228, 3</td>
+</tr>
+<tr>
+<td>PORT</td>
+<td>rfc959, 4.1.2</td>
+</tr>
+<tr>
+<td>PROT</td>
+<td>rfc2228, 3</td>
+</tr>
+<tr>
+<td>PWD</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>QUIT</td>
+<td>rfc959, 4.1.1</td>
+</tr>
+<tr>
+<td>REIN</td>
+<td>rfc959, 4.1.1</td>
+</tr>
+<tr>
+<td>REST</td>
+<td>rfc959, 4.1.3, rfc3659, 5</td>
+</tr>
+<tr>
+<td>RETR</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>RMD</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>RNFR</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>RNTO</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>SITE</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>SITE_DESCUSER</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>SITE_HELP</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>SITE_STAT</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>SITE_WHO</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>SITE_ZONE</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>SIZE</td>
+<td>rfc3659, 4</td>
+</tr>
+<tr>
+<td>STAT</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>STOR</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>STOU</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>STRU</td>
+<td>rfc959, 4.1.2</td>
+</tr>
+<tr>
+<td>SYST</td>
+<td>rfc959, 4.1.3</td>
+</tr>
+<tr>
+<td>TYPE</td>
+<td>rfc959, 4.1.2</td>
+</tr>
+<tr>
+<td>USER</td>
+<td>rfc959, 4.1.1</td>
+</tr>
+</tbody>
+</table>
+<p>The class hierarchy is the following:</p>
+<pre><code class="language-goat" data-lang="goat">
+ .--------------.
+| CommandFactory |
+ '--------------'
+ ^
+ | .----------------------.
+ '--| DefaultCommandFactory |
+ '----------------------'
+
+</code></pre><p>And instance of a <em>CommandFactory</em> can be obtained by
calling the <em>CommandFactoryFactory.createCommandFactory</em>:</p>
+<div class="highlight"><pre
style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code
class="language-java" data-lang="java"> CommandFactoryFactory
commandFactoryFactory <span style="color:#666">=</span> <span
style="color:#a2f;font-weight:bold">new</span> CommandFactoryFactory<span
style="color:#666">(</span><span style="color:#666">)</span><span
style="color:#666">;</span>
+
+ CommandFactory commandFactory <span style="color:#666">=</span>
commandFactoryFactory<span style="color:#666">.</span><span
style="color:#b44">createCommandFactory</span><span
style="color:#666">(</span><span style="color:#666">)</span><span
style="color:#666">;</span>
+</code></pre></div><p>The <em>CommandFactory</em> instance will contain all
the previously listed commands.</p>
+<p>You can add some commands in the default list:</p>
+<div class="highlight"><pre
style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code
class="language-java" data-lang="java"> CommandFactoryFactory
commandFactoryFactory <span style="color:#666">=</span> <span
style="color:#a2f;font-weight:bold">new</span> CommandFactoryFactory<span
style="color:#666">(</span><span style="color:#666">)</span><span
style="color:#666">;</span>
+
+ commandFactoryFactory<span style="color:#666">.</span><span
style="color:#b44">addCommand</span><span style="color:#666">(</span><span
style="color:#b44">"PASV"</span><span style="color:#666">,</span> <span
style="color:#a2f;font-weight:bold">new</span> PASVTest<span
style="color:#666">(</span><span style="color:#666">)</span><span
style="color:#666">)</span><span style="color:#666">;</span>
+
+ CommandFactory commandFactory <span style="color:#666">=</span>
commandFactoryFactory<span style="color:#666">.</span><span
style="color:#b44">createCommandFactory</span><span
style="color:#666">(</span><span style="color:#666">)</span><span
style="color:#666">;</span>
+</code></pre></div><p>The <em>CommandFactory</em> instance will contain all
the previously listed commands plus the added <strong>PASV</strong> command.</p>
+<p>You can also create non standard commands by setting the
<em>CommandFactoryFactory.useDefaultCommands</em> to false. here is an
example:</p>
+<div class="highlight"><pre
style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code
class="language-java" data-lang="java"> CommandFactoryFactory
commandFactoryFactory <span style="color:#666">=</span> <span
style="color:#a2f;font-weight:bold">new</span> CommandFactoryFactory<span
style="color:#666">(</span><span style="color:#666">)</span><span
style="color:#666">;</span>
+
+ <span style="color:#080;font-style:italic">// Add a non standard
command
+</span><span style="color:#080;font-style:italic"></span>
commandFactoryFactory<span style="color:#666">.</span><span
style="color:#b44">addCommand</span><span style="color:#666">(</span><span
style="color:#b44">"foo"</span><span style="color:#666">,</span> <span
style="color:#a2f;font-weight:bold">new</span> NOOP<span
style="color:#666">(</span><span style="color:#666">)</span><span
style="color:#666">)</span><span style="color:#666">;</span>
+
+ <span style="color:#080;font-style:italic">// tell the factory it will
contain non-standard commands
+</span><span style="color:#080;font-style:italic"></span>
commandFactoryFactory<span style="color:#666">.</span><span
style="color:#b44">setUseDefaultCommands</span><span
style="color:#666">(</span><span
style="color:#a2f;font-weight:bold">false</span><span
style="color:#666">)</span><span style="color:#666">;</span>
+
+ <span style="color:#080;font-style:italic">// Get the commandfactory
having only the created non standard command
+</span><span style="color:#080;font-style:italic"></span>
CommandFactory commandFactory <span style="color:#666">=</span>
commandFactoryFactory<span style="color:#666">.</span><span
style="color:#b44">createCommandFactory</span><span
style="color:#666">(</span><span style="color:#666">)</span><span
style="color:#666">;</span>
+
+
+</code></pre></div><p>Here, the <em>Commandfactory</em> instance will onkly
contain non-standard commands, and none of the default commands.</p>
+<h2 id="usermanagerfactory">UserManagerFactory</h2>
+<p>This factory creates an <em>UserManager</em> instance, which may be file
based or Database based.</p>
+<p>There are two implementations of this factory:</p>
+<ul>
+<li><em>DbUserManagerFactory</em> which takes the information relative to the
user from a <strong>SQL</strong> Database</li>
+<li><em>PropertiesUserManagerFactory</em> which takes the information relative
to the user from properties file</li>
+</ul>
+
<div class="nav">
diff --git a/content/ftpserver-project/index.xml
b/content/ftpserver-project/index.xml
index e5a8243d7..20c3f4b85 100644
--- a/content/ftpserver-project/index.xml
+++ b/content/ftpserver-project/index.xml
@@ -48,8 +48,8 @@ Getting the Binary Distributions Description Download Link
SHA256 hashes SHA5
<guid>https://mina.apache.org/ftpserver-project/documentation/ch6-internals/ch6-internals.html</guid>
<description>Chapter 6 - Internals Creating a FtpServer instance is done
using a FtpServerFactory. The is done with such code:
FtpServerFactory serverFactory = new FtpServerFactory(); FtpServer server =
serverFactory.createServer(); server.start(); ... Let&rsquo;s see what
happens when we create the factory and when the server is created
-FtpServerFactory creation The FtpServerFactory is associated with a
FtpServerContext instance, which define a set of elements:
- a CommandFactory instance a ConnectionConfig instance a FileSystemFactory
instance a FtpletContainer instance a FtpStatistics instance a set of Listener
instances a MessageResource instance a UserManager instance The class
hierarchy is the following:</description>
+FtpServerFactory creation The FtpServerFactory is associated with a
FtpServerContext instance, which defines a set of elements:
+ a CommandFactory instance a ConnectionConfig instance a FileSystemFactory
instance a FtpletContainer instance a FtpStatistics instance a set of Listener
instances a MessageResource instance.</description>
</item>
<item>
diff --git a/content/index.xml b/content/index.xml
index 9bf5a12d0..ae23c9f8c 100644
--- a/content/index.xml
+++ b/content/index.xml
@@ -1102,8 +1102,8 @@ It&rsquo;s an interface, which is implemented as an
IoAcceptor for the serve
<guid>https://mina.apache.org/ftpserver-project/documentation/ch6-internals/ch6-internals.html</guid>
<description>Chapter 6 - Internals Creating a FtpServer instance is done
using a FtpServerFactory. The is done with such code:
FtpServerFactory serverFactory = new FtpServerFactory(); FtpServer server =
serverFactory.createServer(); server.start(); ... Let&rsquo;s see what
happens when we create the factory and when the server is created
-FtpServerFactory creation The FtpServerFactory is associated with a
FtpServerContext instance, which define a set of elements:
- a CommandFactory instance a ConnectionConfig instance a FileSystemFactory
instance a FtpletContainer instance a FtpStatistics instance a set of Listener
instances a MessageResource instance a UserManager instance The class
hierarchy is the following:</description>
+FtpServerFactory creation The FtpServerFactory is associated with a
FtpServerContext instance, which defines a set of elements:
+ a CommandFactory instance a ConnectionConfig instance a FileSystemFactory
instance a FtpletContainer instance a FtpStatistics instance a set of Listener
instances a MessageResource instance.</description>
</item>
<item>
@@ -1729,7 +1729,7 @@ The Codecs listed here may not be part of Apache MINA
project. The information i
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://mina.apache.org/mina-project/</guid>
- <description>Welcome to Apache MINA Overview Apache MINA is a network
application framework which helps users develop high performance and high
scalability network applications easily. It provides an abstract &middot;
event-driven · asynchronous API over various transports such as TCP/IP and
UDP/IP via Java NIO.
+ <description>Welcome to Apache MINA Overview Apache MINA is a network
application framework which helps users develop high performance and high
scalability network applications easily. It provides an abstract &middot;
event-driven &middot; asynchronous API over various transports such as
TCP/IP and UDP/IP via Java NIO.
Apache MINA is often called:
NIO framework &middot; library, client &middot; server framework
&middot; library, or a networking &middot; socket library. However,
it&rsquo;s much more than that.</description>
</item>
diff --git a/content/mina-project/index.html b/content/mina-project/index.html
index 254d525bc..3b7a916f1 100644
--- a/content/mina-project/index.html
+++ b/content/mina-project/index.html
@@ -120,7 +120,7 @@
<h1 id="welcome-to-apache-mina">Welcome to Apache MINA</h1>
<h2 id="overview">Overview</h2>
-<p>Apache <abbr title="Multipurpose Infrastructure for Network
Applications">MINA</abbr> is a network application framework which helps users
develop high performance and high scalability network applications easily. It
provides an abstract · event-driven · asynchronous API over various
transports such as TCP/IP and UDP/IP via Java NIO.</p>
+<p>Apache <abbr title="Multipurpose Infrastructure for Network
Applications">MINA</abbr> is a network application framework which helps users
develop high performance and high scalability network applications easily. It
provides an abstract · event-driven · asynchronous API over
various transports such as TCP/IP and UDP/IP via Java NIO.</p>
<p>Apache MINA is often called:</p>
<ul>
<li>NIO framework · library,</li>
diff --git a/content/mina-project/index.xml b/content/mina-project/index.xml
index 4907d72b5..86f12c7b4 100644
--- a/content/mina-project/index.xml
+++ b/content/mina-project/index.xml
@@ -729,7 +729,7 @@ The Codecs listed here may not be part of Apache MINA
project. The information i
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://mina.apache.org/mina-project/</guid>
- <description>Welcome to Apache MINA Overview Apache MINA is a network
application framework which helps users develop high performance and high
scalability network applications easily. It provides an abstract &middot;
event-driven · asynchronous API over various transports such as TCP/IP and
UDP/IP via Java NIO.
+ <description>Welcome to Apache MINA Overview Apache MINA is a network
application framework which helps users develop high performance and high
scalability network applications easily. It provides an abstract &middot;
event-driven &middot; asynchronous API over various transports such as
TCP/IP and UDP/IP via Java NIO.
Apache MINA is often called:
NIO framework &middot; library, client &middot; server framework
&middot; library, or a networking &middot; socket library. However,
it&rsquo;s much more than that.</description>
</item>
diff --git a/content/sitemap.xml b/content/sitemap.xml
index f66a23be5..cb97ae3ce 100644
--- a/content/sitemap.xml
+++ b/content/sitemap.xml
@@ -549,7 +549,7 @@
<url>
<loc>https://mina.apache.org/ftpserver-project/documentation/ch6-internals/ch6-internals.html</loc>
- <lastmod>2023-06-29T15:38:13+02:00</lastmod>
+ <lastmod>2023-07-03T15:48:21+02:00</lastmod>
</url>
<url>
@@ -799,7 +799,7 @@
<url>
<loc>https://mina.apache.org/ftpserver-project.html</loc>
- <lastmod>2023-06-29T15:38:13+02:00</lastmod>
+ <lastmod>2023-07-03T15:48:21+02:00</lastmod>
</url>
<url>
@@ -864,7 +864,7 @@
<url>
<loc>https://mina.apache.org/mina-project/</loc>
- <lastmod>2020-02-27T13:50:48+01:00</lastmod>
+ <lastmod>2023-07-03T15:48:21+02:00</lastmod>
</url>
<url>
@@ -879,7 +879,7 @@
<url>
<loc>https://mina.apache.org/mina-project.html</loc>
- <lastmod>2023-06-27T18:14:01+02:00</lastmod>
+ <lastmod>2023-07-03T15:48:21+02:00</lastmod>
</url>
<url>