status.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package ftp
  2. import "fmt"
  3. // FTP status codes, defined in RFC 959
  4. const (
  5. StatusInitiating = 100
  6. StatusRestartMarker = 110
  7. StatusReadyMinute = 120
  8. StatusAlreadyOpen = 125
  9. StatusAboutToSend = 150
  10. StatusCommandOK = 200
  11. StatusCommandNotImplemented = 202
  12. StatusSystem = 211
  13. StatusDirectory = 212
  14. StatusFile = 213
  15. StatusHelp = 214
  16. StatusName = 215
  17. StatusReady = 220
  18. StatusClosing = 221
  19. StatusDataConnectionOpen = 225
  20. StatusClosingDataConnection = 226
  21. StatusPassiveMode = 227
  22. StatusLongPassiveMode = 228
  23. StatusExtendedPassiveMode = 229
  24. StatusLoggedIn = 230
  25. StatusLoggedOut = 231
  26. StatusLogoutAck = 232
  27. StatusAuthOK = 234
  28. StatusRequestedFileActionOK = 250
  29. StatusPathCreated = 257
  30. StatusUserOK = 331
  31. StatusLoginNeedAccount = 332
  32. StatusRequestFilePending = 350
  33. StatusNotAvailable = 421
  34. StatusCanNotOpenDataConnection = 425
  35. StatusTransfertAborted = 426
  36. StatusInvalidCredentials = 430
  37. StatusHostUnavailable = 434
  38. StatusFileActionIgnored = 450
  39. StatusActionAborted = 451
  40. Status452 = 452
  41. StatusBadCommand = 500
  42. StatusBadArguments = 501
  43. StatusNotImplemented = 502
  44. StatusBadSequence = 503
  45. StatusNotImplementedParameter = 504
  46. StatusNotLoggedIn = 530
  47. StatusStorNeedAccount = 532
  48. StatusFileUnavailable = 550
  49. StatusPageTypeUnknown = 551
  50. StatusExceededStorage = 552
  51. StatusBadFileName = 553
  52. )
  53. var statusText = map[int]string{
  54. // 200
  55. StatusCommandOK: "Command okay.",
  56. StatusCommandNotImplemented: "Command not implemented, superfluous at this site.",
  57. StatusSystem: "System status, or system help reply.",
  58. StatusDirectory: "Directory status.",
  59. StatusFile: "File status.",
  60. StatusHelp: "Help message.",
  61. StatusName: "",
  62. StatusReady: "Service ready for new user.",
  63. StatusClosing: "Service closing control connection.",
  64. StatusDataConnectionOpen: "Data connection open; no transfer in progress.",
  65. StatusClosingDataConnection: "Closing data connection. Requested file action successful.",
  66. StatusPassiveMode: "Entering Passive Mode.",
  67. StatusLongPassiveMode: "Entering Long Passive Mode.",
  68. StatusExtendedPassiveMode: "Entering Extended Passive Mode.",
  69. StatusLoggedIn: "User logged in, proceed.",
  70. StatusLoggedOut: "User logged out; service terminated.",
  71. StatusLogoutAck: "Logout command noted, will complete when transfer done.",
  72. StatusAuthOK: "AUTH command OK",
  73. StatusRequestedFileActionOK: "Requested file action okay, completed.",
  74. StatusPathCreated: "Path created.",
  75. // 300
  76. StatusUserOK: "User name okay, need password.",
  77. StatusLoginNeedAccount: "Need account for login.",
  78. StatusRequestFilePending: "Requested file action pending further information.",
  79. // 400
  80. StatusNotAvailable: "Service not available, closing control connection.",
  81. StatusCanNotOpenDataConnection: "Can't open data connection.",
  82. StatusTransfertAborted: "Connection closed; transfer aborted.",
  83. StatusInvalidCredentials: "Invalid username or password.",
  84. StatusHostUnavailable: "Requested host unavailable.",
  85. StatusFileActionIgnored: "Requested file action not taken.",
  86. StatusActionAborted: "Requested action aborted. Local error in processing.",
  87. Status452: "Insufficient storage space in system.",
  88. // 500
  89. StatusBadCommand: "Command unrecognized.",
  90. StatusBadArguments: "Syntax error in parameters or arguments.",
  91. StatusNotImplemented: "Command not implemented.",
  92. StatusBadSequence: "Bad sequence of commands.",
  93. StatusNotImplementedParameter: "Command not implemented for that parameter.",
  94. StatusNotLoggedIn: "Not logged in.",
  95. StatusStorNeedAccount: "Need account for storing files.",
  96. StatusFileUnavailable: "File unavailable.",
  97. StatusPageTypeUnknown: "Page type unknown.",
  98. StatusExceededStorage: "Exceeded storage allocation.",
  99. StatusBadFileName: "File name not allowed.",
  100. }
  101. // StatusText returns a text for the FTP status code. It returns the empty string if the code is unknown.
  102. func StatusText(code int) string {
  103. str, ok := statusText[code]
  104. if !ok {
  105. str = fmt.Sprintf("Unknown status code: %d", code)
  106. }
  107. return str
  108. }