http_server.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. #include "lwip/opt.h"
  2. #include "lwip/arch.h"
  3. #include "lwip/api.h"
  4. #include "mbedtls/ssl.h"
  5. #define SSL_TASK_PRIO ( configMAX_PRIORITIES - 3 )
  6. #define FRAME_SIZE (1000)
  7. typedef enum
  8. {
  9. SSL_ACCEPT = 0,
  10. SSL_ERROR,
  11. SSL_CRITICAL_ERROR,
  12. SSL_HANDSHAKE,
  13. SSL_READ,
  14. SSL_PROCESSING,
  15. SSL_WRITE,
  16. } SSL_SERVER_STATE;
  17. typedef enum
  18. {
  19. SET_PAGE_IDLE = 0,
  20. SET_PAGE_PAGE1,
  21. SET_PAGE_PAGE2,
  22. SET_PAGE_PAGE3,
  23. SET_PAGE_PAGE4,
  24. } SET_PAGE_t;
  25. typedef enum
  26. {
  27. SEND_REQUIRED_YES = 0,
  28. SEND_REQUIRED_NO,
  29. SEND_REQUIRED_FILE
  30. } REQ_TYPE_t;
  31. struct http_state
  32. {
  33. char *file;
  34. u32_t left;
  35. };
  36. struct fs_file {
  37. char *data;
  38. int len;
  39. };
  40. void HTTP_Init();
  41. static err_t http_accept(void *arg, struct tcp_pcb *pcb, err_t err);
  42. static err_t http_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err);
  43. void http_server_netconn_init();
  44. /**
  45. * @brief Выводим запросы в консоль
  46. */
  47. void vTaskPrintHttp(void *pvParameters);
  48. /**
  49. * @brief Установка даты производства
  50. */
  51. void HTTP_Prodate(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  52. /**
  53. * @brief Парсинг строки настроек
  54. */
  55. void HTTP_SetSettings(char *buf, uint16_t lenBuf);
  56. /**
  57. * @brief
  58. */
  59. void HTTP_SetInfo(char *buf, uint16_t lenBuf);
  60. /**
  61. * @brief
  62. */
  63. int HTTP_SettingsPage(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  64. /**
  65. * @brief
  66. */
  67. int HTTP_InfoPage(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  68. int HTTP_UpsHistoryPage(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  69. int HTTP_HistoryPage(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  70. /**
  71. * @brief Запуск/останов теста UPS
  72. */
  73. void HTTP_UPSTest(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  74. /**
  75. * @brief Выклюение UPS
  76. */
  77. void HTTP_UPSshutdown(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  78. /**
  79. * @brief Проверка пароля для перехода в режим bootloader
  80. */
  81. void HTTP_ConfirmBootPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  82. /**
  83. * @brief Проверка пароля для входа в Web
  84. */
  85. int HTTP_ConfirmWebPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  86. void HTTP_LOGIN(char *bufOut, uint16_t *lenBufOut);
  87. /**
  88. * @brief
  89. */
  90. uint8_t GetParamValue(char *inStr, char *paramName, char *paramValue, uint8_t *paramLen);
  91. uint8_t GetCookieValue(char *inStr, char *paramName, char *paramValue, uint8_t *paramLen);
  92. /**
  93. * @brief
  94. * @retval None
  95. */
  96. uint8_t GetParamValueInEnd(char *inStr, char *paramName, char *paramValue, uint8_t *paramLen);
  97. void ClearParamString(char *inBuf);
  98. /**
  99. * @brief Замена символа в строке
  100. * @param *str - входная строка
  101. * @param sim1 - символ который надо заменить
  102. * @param sim2 - символ на который надо заменить
  103. */
  104. void HTTP_ReplaceSimbol(char *str, char sim1, char sim2);
  105. // -----------------------------------------------------------------------------
  106. //
  107. //
  108. // SSL тесты
  109. //
  110. //
  111. // -----------------------------------------------------------------------------
  112. #ifdef __cplusplus
  113. extern "C" {
  114. #endif
  115. /* Exported types ------------------------------------------------------------*/
  116. typedef struct
  117. {
  118. uint32_t State;
  119. }rng_state;
  120. void Cockie(void);
  121. void getAuthenticatedState(void);
  122. void ssl_server(void *pvParameters);
  123. int RandVal(void* arg);
  124. void HTTP_SendHistory(void);
  125. void HTTP_SendLog(void);
  126. void HTTPS_Init();
  127. void SSL_ReadRoutine(mbedtls_ssl_context *ssl, unsigned char* recvBuf);
  128. char* SSL_ProcessingRoutine(uint16_t* sendLen);
  129. SSL_SERVER_STATE SSL_WriteRoutine(mbedtls_ssl_context *ssl, char *data, int datalen);
  130. char* AuthenticatedFalseRoutine(uint16_t* sendLen);
  131. char* AuthenticatedTrueRoutine(uint16_t* sendLen);
  132. SSL_SERVER_STATE SSL_SendFrames(mbedtls_ssl_context *ssl, char *data, int datalen);
  133. SSL_SERVER_STATE SSL_Write(mbedtls_ssl_context *ssl, char *data, int datalen);
  134. #ifdef __cplusplus
  135. }
  136. #endif