|
@@ -2,102 +2,109 @@ package ftp
|
|
|
|
|
|
|
|
const (
|
|
const (
|
|
|
// Positive Preliminary reply
|
|
// Positive Preliminary reply
|
|
|
- StatusInitiating = 100
|
|
|
|
|
|
|
+ StatusInitiating = 100
|
|
|
StatusRestartMarker = 110
|
|
StatusRestartMarker = 110
|
|
|
- StatusReadyMinute = 120
|
|
|
|
|
- StatusAlreadyOpen = 125
|
|
|
|
|
- StatusAboutToSend = 150
|
|
|
|
|
|
|
+ StatusReadyMinute = 120
|
|
|
|
|
+ StatusAlreadyOpen = 125
|
|
|
|
|
+ StatusAboutToSend = 150
|
|
|
|
|
+
|
|
|
// Positive Completion reply
|
|
// Positive Completion reply
|
|
|
- StatusCommandOK = 200
|
|
|
|
|
|
|
+ StatusCommandOK = 200
|
|
|
StatusCommandNotImplemented = 202
|
|
StatusCommandNotImplemented = 202
|
|
|
- StatusSystem = 211
|
|
|
|
|
- StatusDirectory = 212
|
|
|
|
|
- StatusFile = 213
|
|
|
|
|
- StatusHelp = 214
|
|
|
|
|
- StatusName = 215
|
|
|
|
|
- StatusReady = 220
|
|
|
|
|
- StatusClosing = 221
|
|
|
|
|
- StatusDataConnectionOpen = 225
|
|
|
|
|
|
|
+ StatusSystem = 211
|
|
|
|
|
+ StatusDirectory = 212
|
|
|
|
|
+ StatusFile = 213
|
|
|
|
|
+ StatusHelp = 214
|
|
|
|
|
+ StatusName = 215
|
|
|
|
|
+ StatusReady = 220
|
|
|
|
|
+ StatusClosing = 221
|
|
|
|
|
+ StatusDataConnectionOpen = 225
|
|
|
StatusClosingDataConnection = 226
|
|
StatusClosingDataConnection = 226
|
|
|
- StatusPassiveMode = 227
|
|
|
|
|
- StatusLongPassiveMode = 228
|
|
|
|
|
- StatusExtendedPassiveMode = 229
|
|
|
|
|
- StatusLoggedIn = 230
|
|
|
|
|
- StatusLoggedOut = 231
|
|
|
|
|
- StatusLogoutAck = 232
|
|
|
|
|
|
|
+ StatusPassiveMode = 227
|
|
|
|
|
+ StatusLongPassiveMode = 228
|
|
|
|
|
+ StatusExtendedPassiveMode = 229
|
|
|
|
|
+ StatusLoggedIn = 230
|
|
|
|
|
+ StatusLoggedOut = 231
|
|
|
|
|
+ StatusLogoutAck = 232
|
|
|
StatusRequestedFileActionOK = 250
|
|
StatusRequestedFileActionOK = 250
|
|
|
- StatusPathCreated = 257
|
|
|
|
|
|
|
+ StatusPathCreated = 257
|
|
|
|
|
+
|
|
|
// Positive Intermediate reply
|
|
// Positive Intermediate reply
|
|
|
- StatusUserOK = 331
|
|
|
|
|
- StatusLoginNeedAccount = 332
|
|
|
|
|
|
|
+ StatusUserOK = 331
|
|
|
|
|
+ StatusLoginNeedAccount = 332
|
|
|
StatusRequestFilePending = 350
|
|
StatusRequestFilePending = 350
|
|
|
|
|
+
|
|
|
// Transient Negative Completion reply
|
|
// Transient Negative Completion reply
|
|
|
- StatusNotAvailable = 421
|
|
|
|
|
|
|
+ StatusNotAvailable = 421
|
|
|
StatusCanNotOpenDataConnection = 425
|
|
StatusCanNotOpenDataConnection = 425
|
|
|
- StatusTransfertAborted = 426
|
|
|
|
|
- StatusInvalidCredentials = 430
|
|
|
|
|
- StatusHostUnavailable = 434
|
|
|
|
|
- StatusFileActionIgnored = 450
|
|
|
|
|
- StatusActionAborted = 451
|
|
|
|
|
- Status452 = 452
|
|
|
|
|
|
|
+ StatusTransfertAborted = 426
|
|
|
|
|
+ StatusInvalidCredentials = 430
|
|
|
|
|
+ StatusHostUnavailable = 434
|
|
|
|
|
+ StatusFileActionIgnored = 450
|
|
|
|
|
+ StatusActionAborted = 451
|
|
|
|
|
+ Status452 = 452
|
|
|
|
|
+
|
|
|
// Permanent Negative Completion reply
|
|
// Permanent Negative Completion reply
|
|
|
- StatusBadCommand = 500
|
|
|
|
|
- StatusBadArguments = 501
|
|
|
|
|
- StatusNotImplemented = 502
|
|
|
|
|
- StatusBadSequence = 503
|
|
|
|
|
|
|
+ StatusBadCommand = 500
|
|
|
|
|
+ StatusBadArguments = 501
|
|
|
|
|
+ StatusNotImplemented = 502
|
|
|
|
|
+ StatusBadSequence = 503
|
|
|
StatusNotImplementedParameter = 504
|
|
StatusNotImplementedParameter = 504
|
|
|
- StatusNotLoggedIn = 530
|
|
|
|
|
- StatusStorNeedAccount = 532
|
|
|
|
|
- StatusFileUnavailable = 550
|
|
|
|
|
- StatusPageTypeUnknown = 551
|
|
|
|
|
- StatusExceededStorage = 552
|
|
|
|
|
- StatusBadFileName = 553
|
|
|
|
|
|
|
+ StatusNotLoggedIn = 530
|
|
|
|
|
+ StatusStorNeedAccount = 532
|
|
|
|
|
+ StatusFileUnavailable = 550
|
|
|
|
|
+ StatusPageTypeUnknown = 551
|
|
|
|
|
+ StatusExceededStorage = 552
|
|
|
|
|
+ StatusBadFileName = 553
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
var statusText = map[int]string{
|
|
var statusText = map[int]string{
|
|
|
// 200
|
|
// 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.",
|
|
|
|
|
- StatusRequestedFileActionOK: "Requested file action okay, completed.",
|
|
|
|
|
- StatusPathCreated: "Path created.",
|
|
|
|
|
|
|
+ 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.",
|
|
|
|
|
+ StatusRequestedFileActionOK: "Requested file action okay, completed.",
|
|
|
|
|
+ StatusPathCreated: "Path created.",
|
|
|
|
|
+
|
|
|
// 300
|
|
// 300
|
|
|
- StatusUserOK: "User name okay, need password.",
|
|
|
|
|
- StatusLoginNeedAccount: "Need account for login.",
|
|
|
|
|
- StatusRequestFilePending: "Requested file action pending further information.",
|
|
|
|
|
|
|
+ StatusUserOK: "User name okay, need password.",
|
|
|
|
|
+ StatusLoginNeedAccount: "Need account for login.",
|
|
|
|
|
+ StatusRequestFilePending: "Requested file action pending further information.",
|
|
|
|
|
+
|
|
|
// 400
|
|
// 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.",
|
|
|
|
|
|
|
+ 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
|
|
// 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.",
|
|
|
|
|
|
|
+ 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.",
|
|
|
}
|
|
}
|