ftpd.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. #ifndef _FTPD_H_
  2. #define _FTPD_H_
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. /*
  7. * Wiznet.
  8. * (c) Copyright 2002, Wiznet.
  9. *
  10. * Filename : ftpd.h
  11. * Version : 1.0
  12. * Programmer(s) :
  13. * Created : 2003/01/28
  14. * Description : Header file of FTP daemon. (AVR-GCC Compiler)
  15. */
  16. #include <stdint.h>
  17. //#define F_FILESYSTEM // If your target support a file system, you have to activate this feature and implement.
  18. #if defined(F_FILESYSTEM)
  19. #include "ff.h"
  20. #endif
  21. #define F_APP_FTP
  22. #define _FTP_DEBUG_
  23. #define LINELEN 100
  24. //#define DATA_BUF_SIZE 100
  25. #if !defined(F_FILESYSTEM)
  26. #define _MAX_SS 512
  27. #endif
  28. #define CTRL_SOCK 2
  29. #define DATA_SOCK 3
  30. #define IPPORT_FTPD 20 /* FTP Data port */
  31. #define IPPORT_FTP 21 /* FTP Control port */
  32. #define HOSTNAME "iinChip"
  33. #define VERSION "1.0"
  34. #define FILENAME "a.txt"
  35. /* FTP commands */
  36. enum ftp_cmd {
  37. USER_CMD,
  38. ACCT_CMD,
  39. PASS_CMD,
  40. TYPE_CMD,
  41. LIST_CMD,
  42. CWD_CMD,
  43. DELE_CMD,
  44. NAME_CMD,
  45. QUIT_CMD,
  46. RETR_CMD,
  47. STOR_CMD,
  48. PORT_CMD,
  49. NLST_CMD,
  50. PWD_CMD,
  51. XPWD_CMD,
  52. MKD_CMD,
  53. XMKD_CMD,
  54. XRMD_CMD,
  55. RMD_CMD,
  56. STRU_CMD,
  57. MODE_CMD,
  58. SYST_CMD,
  59. XMD5_CMD,
  60. XCWD_CMD,
  61. FEAT_CMD,
  62. PASV_CMD,
  63. SIZE_CMD,
  64. MLSD_CMD,
  65. APPE_CMD,
  66. NO_CMD,
  67. };
  68. enum ftp_type {
  69. ASCII_TYPE,
  70. IMAGE_TYPE,
  71. LOGICAL_TYPE
  72. };
  73. enum ftp_state {
  74. FTPS_NOT_LOGIN,
  75. FTPS_LOGIN
  76. };
  77. enum datasock_state{
  78. DATASOCK_IDLE,
  79. DATASOCK_READY,
  80. DATASOCK_START
  81. };
  82. enum datasock_mode{
  83. PASSIVE_MODE,
  84. ACTIVE_MODE
  85. };
  86. struct ftpd {
  87. uint8_t control; /* Control stream */
  88. uint8_t data; /* Data stream */
  89. enum ftp_type type; /* Transfer type */
  90. enum ftp_state state;
  91. enum ftp_cmd current_cmd;
  92. enum datasock_state dsock_state;
  93. enum datasock_mode dsock_mode;
  94. char username[LINELEN]; /* Arg to USER command */
  95. char workingdir[LINELEN];
  96. char filename[LINELEN];
  97. #if defined(F_FILESYSTEM)
  98. FIL fil; // FatFs File objects
  99. FRESULT fr; // FatFs function common result code
  100. #endif
  101. };
  102. #ifndef un_I2cval
  103. typedef union _un_l2cval {
  104. uint32_t lVal;
  105. uint8_t cVal[4];
  106. }un_l2cval;
  107. #endif
  108. void ftpd_init(uint8_t * src_ip);
  109. uint8_t ftpd_run(uint8_t * dbuf);
  110. char proc_ftpd(char * buf);
  111. char ftplogin(char * pass);
  112. int pport(char * arg);
  113. int sendit(char * command);
  114. int recvit(char * command);
  115. long sendfile(uint8_t s, char * command);
  116. long recvfile(uint8_t s);
  117. #if defined(F_FILESYSTEM)
  118. void print_filedsc(FIL *fil);
  119. #endif
  120. #ifdef __cplusplus
  121. }
  122. #endif
  123. #endif // _FTPD_H_