2017-05-16 19:01:02 +02:00
|
|
|
package ftp
|
|
|
|
|
|
|
|
// FTP status codes, defined in RFC 959
|
|
|
|
const (
|
|
|
|
StatusInitiating = 100
|
|
|
|
StatusRestartMarker = 110
|
|
|
|
StatusReadyMinute = 120
|
|
|
|
StatusAlreadyOpen = 125
|
|
|
|
StatusAboutToSend = 150
|
|
|
|
|
|
|
|
StatusCommandOK = 200
|
|
|
|
StatusCommandNotImplemented = 202
|
|
|
|
StatusSystem = 211
|
|
|
|
StatusDirectory = 212
|
|
|
|
StatusFile = 213
|
|
|
|
StatusHelp = 214
|
|
|
|
StatusName = 215
|
|
|
|
StatusReady = 220
|
|
|
|
StatusClosing = 221
|
|
|
|
StatusDataConnectionOpen = 225
|
|
|
|
StatusClosingDataConnection = 226
|
|
|
|
StatusPassiveMode = 227
|
|
|
|
StatusLongPassiveMode = 228
|
|
|
|
StatusExtendedPassiveMode = 229
|
|
|
|
StatusLoggedIn = 230
|
|
|
|
StatusLoggedOut = 231
|
|
|
|
StatusLogoutAck = 232
|
2020-05-30 15:59:23 +02:00
|
|
|
StatusAuthOK = 234
|
2017-05-16 19:01:02 +02:00
|
|
|
StatusRequestedFileActionOK = 250
|
|
|
|
StatusPathCreated = 257
|
|
|
|
|
|
|
|
StatusUserOK = 331
|
|
|
|
StatusLoginNeedAccount = 332
|
|
|
|
StatusRequestFilePending = 350
|
|
|
|
|
|
|
|
StatusNotAvailable = 421
|
|
|
|
StatusCanNotOpenDataConnection = 425
|
|
|
|
StatusTransfertAborted = 426
|
|
|
|
StatusInvalidCredentials = 430
|
|
|
|
StatusHostUnavailable = 434
|
|
|
|
StatusFileActionIgnored = 450
|
|
|
|
StatusActionAborted = 451
|
|
|
|
Status452 = 452
|
|
|
|
|
|
|
|
StatusBadCommand = 500
|
|
|
|
StatusBadArguments = 501
|
|
|
|
StatusNotImplemented = 502
|
|
|
|
StatusBadSequence = 503
|
|
|
|
StatusNotImplementedParameter = 504
|
|
|
|
StatusNotLoggedIn = 530
|
|
|
|
StatusStorNeedAccount = 532
|
|
|
|
StatusFileUnavailable = 550
|
|
|
|
StatusPageTypeUnknown = 551
|
|
|
|
StatusExceededStorage = 552
|
|
|
|
StatusBadFileName = 553
|
|
|
|
)
|
|
|
|
|
|
|
|
var statusText = map[int]string{
|
|
|
|
// 200
|
|
|
|
StatusCommandOK: "Command okay.",
|
|
|
|
StatusCommandNotImplemented: "Command not implemented, superfluous at this site.",
|
|
|
|
StatusSystem: "System status, or system help reply.",
|
|
|
|
StatusDirectory: "Directory status.",
|
|
|
|
StatusFile: "File status.",
|
|
|
|
StatusHelp: "Help message.",
|
|
|
|
StatusName: "",
|
|
|
|
StatusReady: "Service ready for new user.",
|
|
|
|
StatusClosing: "Service closing control connection.",
|
|
|
|
StatusDataConnectionOpen: "Data connection open; no transfer in progress.",
|
|
|
|
StatusClosingDataConnection: "Closing data connection. Requested file action successful.",
|
|
|
|
StatusPassiveMode: "Entering Passive Mode.",
|
|
|
|
StatusLongPassiveMode: "Entering Long Passive Mode.",
|
|
|
|
StatusExtendedPassiveMode: "Entering Extended Passive Mode.",
|
|
|
|
StatusLoggedIn: "User logged in, proceed.",
|
|
|
|
StatusLoggedOut: "User logged out; service terminated.",
|
|
|
|
StatusLogoutAck: "Logout command noted, will complete when transfer done.",
|
2020-05-30 15:59:23 +02:00
|
|
|
StatusAuthOK: "AUTH command OK",
|
2017-05-16 19:01:02 +02:00
|
|
|
StatusRequestedFileActionOK: "Requested file action okay, completed.",
|
|
|
|
StatusPathCreated: "Path created.",
|
|
|
|
|
|
|
|
// 300
|
|
|
|
StatusUserOK: "User name okay, need password.",
|
|
|
|
StatusLoginNeedAccount: "Need account for login.",
|
|
|
|
StatusRequestFilePending: "Requested file action pending further information.",
|
|
|
|
|
|
|
|
// 400
|
|
|
|
StatusNotAvailable: "Service not available, closing control connection.",
|
|
|
|
StatusCanNotOpenDataConnection: "Can't open data connection.",
|
|
|
|
StatusTransfertAborted: "Connection closed; transfer aborted.",
|
|
|
|
StatusInvalidCredentials: "Invalid username or password.",
|
|
|
|
StatusHostUnavailable: "Requested host unavailable.",
|
|
|
|
StatusFileActionIgnored: "Requested file action not taken.",
|
|
|
|
StatusActionAborted: "Requested action aborted. Local error in processing.",
|
|
|
|
Status452: "Insufficient storage space in system.",
|
|
|
|
|
|
|
|
// 500
|
|
|
|
StatusBadCommand: "Command unrecognized.",
|
|
|
|
StatusBadArguments: "Syntax error in parameters or arguments.",
|
|
|
|
StatusNotImplemented: "Command not implemented.",
|
|
|
|
StatusBadSequence: "Bad sequence of commands.",
|
|
|
|
StatusNotImplementedParameter: "Command not implemented for that parameter.",
|
|
|
|
StatusNotLoggedIn: "Not logged in.",
|
|
|
|
StatusStorNeedAccount: "Need account for storing files.",
|
|
|
|
StatusFileUnavailable: "File unavailable.",
|
|
|
|
StatusPageTypeUnknown: "Page type unknown.",
|
|
|
|
StatusExceededStorage: "Exceeded storage allocation.",
|
|
|
|
StatusBadFileName: "File name not allowed.",
|
|
|
|
}
|
2019-02-09 13:50:35 +01:00
|
|
|
|
|
|
|
// StatusText returns a text for the FTP status code. It returns the empty string if the code is unknown.
|
|
|
|
func StatusText(code int) string {
|
|
|
|
return statusText[code]
|
|
|
|
}
|