# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# Ftp server status properties
550=Requested action not taken.

502.not.implemented=Command {request.cmd} not implemented.
530.permission=Access denied.
530.ip.restricted=No server access from the IP {client.ip}.
530.connection.limit=Maximum server connection has been reached.
220=Service ready for new user.

226.ABOR=ABOR command successful.

202.ACCT=Command ACCT not implemented, superfluous at this site.

501.APPE=Syntax error in parameters or arguments.
550.APPE.invalid={output.msg}\: Not a plain file.
550.APPE.permission={output.msg}\: Permission denied.
150.APPE=File status okay; about to open data connection.
425.APPE=Can't open data connection.
426.APPE=Data connection error.
551.APPE={output.msg}: Error on output file.
226.APPE=Transfer complete.

501.AUTH=Syntax error in parameters or arguments.
234.AUTH.SSL=Command AUTH okay; starting SSL connection.
234.AUTH.TLS=Command AUTH okay; starting TLS connection.
502.AUTH=Command not implemented.
431.AUTH=Service is unavailable.
534.AUTH=Session already secured

250.CDUP=Directory changed to {output.msg}.
550.CDUP=No such directory.

250.CWD=Directory changed to {output.msg}
550.CWD=No such directory.

501.DELE=Syntax error in parameters or arguments.
550.DELE.invalid=Not a valid file \"{output.msg}\".
450.DELE.permission=No permission to delete {output.msg}.
250.DELE=Requested file action okay, deleted {output.msg}.
450.DELE=Can't delete file {output.msg}.

501.EPRT=Syntax error in parameters or arguments.
501.EPRT.disabled=EPRT is disabled.
501.EPRT.mismatch=EPRT IP is not same as {client.ip}.
501.EPRT.host=Host unknown.
501.EPRT.invalid=Not a valid port number.
200.EPRT=Command EPRT okay.

425.EPSV=Can't open passive connection.
229.EPSV=Entering Passive Mode ({output.msg})

211.FEAT=Extensions supported\n SIZE\n MDTM\n REST STREAM\n LANG en;zh-tw;ja;is\n MLST Size;Modify;Type;Perm\n AUTH SSL\n AUTH TLS\n MODE Z\n UTF8\n TVFS\n MD5\n MMD5\n MFMT\nEnd

214=The following commands are implemented.\nABOR  APPE  CDUP  CWD   DELE  HELP  LIST  MDTM\nMKD   MODE  NLST  NOOP  PASS  PASV  PORT  PWD\nQUIT  REST  RETR  RMD   RNFR  RNTO  SITE  SIZE\nSTAT  STOR  STOU  STRU  SYST  TYPE  USER\nEnd of help.
214.ABOR=Syntax\: ABOR
214.APPE=Syntax\: APPE <sp> <pathname>
214.CDUP=Syntax\: CDUP
214.CWD=Syntax\: CWD <sp> <pathname>
214.DELE=Syntax\: DELE <sp> <pathname>
214.EPRT=Syntax\: EPRT<space><d><net-prt><d><net-addr><d><tcp-port><d>
214.HELP=Syntax\: HELP [<sp> <string>]
214.LIST=Syntax\: LIST [<sp> <pathname>]
214.MDTM=Syntax\: MDTM <sp> <pathname>
214.MKD=Syntax\: MKD <sp> <pathname>
214.MODE=Syntax\: MODE <sp> <mode-code>
214.NLST=Syntax\: NLST [<sp> <pathname>]
214.NOOP=Syntax\: NOOP
214.PASS=Syntax\: PASS <sp> <password>
214.PASV=Syntax\: PASV
214.PORT=Syntax\: PORT <sp> <host-port>
214.PWD=Syntax\: PWD
214.QUIT=Syntax\: QUIT
214.REST=Syntax\: RETR <sp> <marker>
214.RETR=Syntax\: RETR <sp> <pathname>
214.RMD=Syntax\: RMD <sp> <pathname>
214.RNFR=Syntax\: RNFR <sp> <pathname>
214.RNTO=Syntax\: RNTO <sp> <pathname>
214.SITE=Syntax\: SITE <sp> <string>
214.STOR=Syntax\: STOR <sp> <pathname>
214.STOU=Syntax\: STOU
214.SYST=Syntax\: SYST
214.TYPE=Syntax\: TYPE <sp> <type-code>
214.USER=Syntax\: USER <sp> <username>

504.LANG=Command LANG not implemented for this parameter.
200.LANG=Command LANG okay.

150.LIST=File status okay; about to open data connection.
425.LIST=Can't open data connection.
426.LIST=Data connection error.
551.LIST=File listing failed.
501.LIST=Syntax error in parameters or arguments.
226.LIST=Closing data connection.
450.LIST=Non-existing file

501.MDTM=Syntax error in parameters or arguments.
213.MDTM={output.msg}
550.MDTM=File {output.msg} unavailable.

501.MLST=Not a valid pathname.
250.MLST=\n{output.msg}\nRequested file action okay, completed.

501.MKD=Syntax error in parameters or arguments.
550.MKD.invalid={output.msg}\: not a valid file.
550.MKD.exists={output.msg}\: already exists.
550.MKD.permission=No permission to create {output.msg}.
257.MKD=\"{output.msg}\" created.
550.MKD=Can't create directory {output.msg}.

150.MLSD=File status okay; about to open data connection.
425.MLSD=Can't open data connection.
426.MLSD=Data connection error.
551.MLSD=File listing failed.
501.MLSD=Syntax error in parameters or arguments.
226.MLSD=Closing data connection.

501.MODE=Syntax error in parameters or arguments.
200.MODE=Command MODE okay.
504.MODE=Command MODE not implemented for the parameter {request.arg}.

150.NLST=File status okay; about to open data connection.
425.NLST=Can't open data connection.
426.NLST=Data connection error.
551.NLST=File listing failed.
501.NLST=Syntax error in parameters or arguments.
226.NLST=Closing data connection.

200.NOOP=Command NOOP okay.

501.OPTS=Syntax error in parameters or arguments.
502.OPTS=Command OPTS not implemented for {output.msg}.
500.OPTS=Execution failed.
200.OPTS.UTF8=Command OPTS okay.
503.OPTS.MLST=Bad sequence of commands.
501.OPTS.MLST=Syntax error in parameters or arguments.
200.OPTS.MLST=Command OPTS okay.

501.PASS=Syntax error in parameters or arguments.
503.PASS=Login with USER first.
202.PASS=Already logged-in.
421.PASS.anonymous=Maximum anonymous login limit has been reached.
421.PASS.login=Maximum login limit has been reached.
530.PASS=Authentication failed.
230.PASS=User logged in, proceed.

425.PASV=Can't open passive connection.
227.PASV=Entering Passive Mode ({output.msg})

200.PBSZ=Command PBSZ okay.

501.PORT=Syntax error in parameters or arguments.
501.PORT.disabled=PORT is disabled.
501.PORT.mismatch=PORT IP is not same as {client.ip}.
501.PORT.host=Host unknown.
501.PORT.invalid=Not a valid port number.
200.PORT=Command PORT okay.

501.PROT=Syntax error in parameters or arguments.
200.PROT=Command PROT okay.
504.PROT=Server does not understand the specified protection level.
431.PROT=Security is disabled.

257.PWD=\"{output.msg}\" is current directory.

221.QUIT=Goodbye.

220.REIN=Service ready for new user.

501.REST=Syntax error in parameters or arguments.
501.REST.invalid=Not a valid marker.
501.REST.negetive=Marker can't be negetive.
350.REST=Restarting at {request.arg}. Send STORE or RETRIEVE to initiate transfer.

501.RETR=Syntax error in parameters or arguments.
550.RETR.missing={output.msg}\: No such file or directory.
550.RETR.invalid={output.msg}\: Not a plain file.
550.RETR.permission={output.msg}: Permission denied.
150.RETR=File status okay; about to open data connection.
425.RETR=Can't open data connection.
426.RETR=Data connection error.
551.RETR={output.msg}\: Error on input file.
226.RETR=Transfer complete.

501.RMD=Syntax error in parameters or arguments.
550.RMD.permission=No permission to remove {output.msg}.
550.RMD.invalid=Not a valid directory \"{output.msg}\".
250.RMD=\"{output.msg}\" removed.
450.RMD=Can't remove directory {output.msg}.
450.RMD.busy=Can't remove directory {output.msg}: resource busy.
550.RMD=Can't remove directory {output.msg}.

501.RNFR=Syntax error in parameters or arguments.
550.RNFR={output.msg}\: File unavailable.
350.RNFR=Requested file action pending further information.

501.RNTO=Syntax error in parameters or arguments.
503.RNTO=Can't find the file which has to be renamed.
553.RNTO.permission=No permission to rename.
553.RNTO.invalid=Not a valid file name.
553.RNTO.missing={output.msg}\: No such file or directory.
250.RNTO=Requested file action okay, file renamed.
553.RNTO=Can't rename file.

200.SITE=Command SITE okay. Use SITE HELP to get more information.
502.SITE=Command SITE not implemented for {output.msg}.
500.SITE=Execution failed.
530.SITE=Access denied.
200.SITE.HELP=SITE Commands\nDESCUSER \: display user information.\nHELP     \: display this message.\nSTAT     \: show statistics.\nWHO      \: display all connected users.\nZONE     \: display timezone.\nEnd.
503.SITE.DESCUSER=Can't find the user name.
501.SITE.DESCUSER={output.msg} \: User not found.

501.SIZE=Syntax error in parameters or arguments.
550.SIZE.missing={output.msg}\: No such file or directory.
550.SIZE.invalid={output.msg}\: Not a plain file.
213.SIZE={output.msg}

211.STAT=Apache FtpServer\nConnected to {server.ip}\nConnected from {client.ip}\nLogged in as {client.login.name}\nEnd of status.
212.STAT=\n{output.msg}End of status.
213.STAT=\n{output.msg}End of status.
450.STAT=Non-existing file

501.STOR=Syntax error in parameters or arguments.
550.STOR.invalid={output.msg}\: Invalid path.
550.STOR.permission={output.msg}\: Permission denied.
150.STOR=File status okay; about to open data connection.
425.STOR=Can't open data connection.
426.STOR=Data connection error.
551.STOR={output.msg}\: Error on output file.
226.STOR=Transfer complete.

550.STOU=Unique file name error.
550.STOU.permission=Permission denied.
150.STOU=File status okay; about to open data connection.
425.STOU=Can't open data connection.
250.STOU={output.msg}\: Transfer started.
426.STOU=Data connection error.
551.STOU=Error on output file.
226.STOU={output.msg}\: Transfer complete.

501.STRU=Syntax error in parameters or arguments.
200.STRU=Command STRU okay.
504.STRU=Command STRU not implemented for the parameter {request.arg}.

215.SYST=UNIX Type\: Apache FtpServer

501.TYPE=Syntax error in parameters or arguments.
200.TYPE=Command TYPE okay.
504.TYPE=Command TYPE not implemented for the parameter {request.arg}.

501.USER=Syntax error in parameters or arguments.
230.USER=Already logged-in.
530.USER.invalid=Invalid user name.
530.USER.anonymous=Anonymous connection is not allowed.
421.USER.anonymous=Maximum anonymous login limit has been reached.
421.USER.login=Maximum login limit has been reached.
331.USER.anonymous=Guest login okay, send your complete e-mail address as password.
331.USER=User name okay, need password for {output.msg}.

251.MD5={output.msg}
252.MMD5={output.msg}
504.MD5.invalid=Command Not Implemented for the Specified Argument
502.MD5.notimplemened=Command Not Implemented


213.MFMT={output.msg}
450.MFMT=Could not perform action on file {output.msg}.
501.MFMT.invalid=Command Not Implemented for the Specified Arguments
550.MFMT.filemissing=File missing {output.msg}