my_ssl_server.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. /*
  2. * ssl_server.h
  3. *
  4. * Created on: 08.11.2017
  5. * Author: balbekova
  6. */
  7. #ifdef HARDWARE_BT6703
  8. #ifndef MY_SSL_SERVER_H_
  9. #define MY_SSL_SERVER_H_
  10. #include "lwip/opt.h"
  11. #include "lwip/arch.h"
  12. #include "lwip/api.h"
  13. #include "mbedtls/ssl.h"
  14. #define HTTP_AUTH_ENABLE
  15. #define SSL_TASK_PRIO ( configMAX_PRIORITIES - 3 )
  16. #define FRAME_SIZE (1000)
  17. #define SEND_BUF_MAX_LEN 4000
  18. #define RECIVE_BUF_MAX_LEN 2000
  19. typedef enum
  20. {
  21. SSL_ACCEPT = 0,
  22. SSL_ERROR,
  23. SSL_CRITICAL_ERROR,
  24. SSL_HANDSHAKE,
  25. SSL_READ,
  26. SSL_PROCESSING,
  27. SSL_CLOSE,
  28. SSL_WRITE,
  29. SSL_WRITE_OK,
  30. SSL_WRITE_ERROR,
  31. } SSL_SERVER_STATE;
  32. typedef enum
  33. {
  34. ALL_ACCESS = 0,
  35. TIME_ACCESS
  36. } ACCESS_TYPE_t;
  37. typedef enum
  38. {
  39. COMMON_ANSWER = 0,
  40. PARAMETER_ANSWER,
  41. HISTORY_ANSWER,
  42. UPS_HISTORY_ANSWER
  43. } REQ_TYPE_SEND_t;
  44. typedef enum
  45. {
  46. SEND_REQUIRED_YES = 0,
  47. SEND_REQUIRED_NO,
  48. SEND_REQUIRED_FILE
  49. } REQ_TYPE_t;
  50. struct http_state
  51. {
  52. char *file;
  53. u32_t left;
  54. u32_t reqnum;
  55. void *locked;
  56. };
  57. struct fs_file {
  58. char *data;
  59. int len;
  60. };
  61. void HTTP_Init();
  62. /**
  63. * @brief Выводим запросы в консоль
  64. */
  65. void vTaskPrintHttp(void *pvParameters);
  66. /**
  67. * @brief Установка даты производства
  68. */
  69. void HTTP_Prodate(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  70. /**
  71. * @brief Парсинг строки настроек
  72. */
  73. void HTTP_SetSettings(char *buf, uint16_t lenBuf);
  74. /**
  75. * @brief
  76. * @retval None
  77. */
  78. char *HTTP_GetSert(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  79. /**
  80. * @brief
  81. * @retval None
  82. */
  83. char *HTTP_Upload_Sert(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  84. /**
  85. * @brief
  86. */
  87. void HTTP_SetInfo(char *buf, uint16_t lenBuf);
  88. /**
  89. * @brief
  90. */
  91. char* HTTP_SetSettingsPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  92. /**
  93. * @brief
  94. */
  95. char* HTTP_SetInfoPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  96. #ifdef HTTP_AUTH_ENABLE
  97. /**
  98. * @brief
  99. */
  100. char* HTTP_LoginPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  101. /**
  102. * @brief
  103. */
  104. char* HTTP_LogoutPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  105. /**
  106. * @brief Смена пароля пользователя
  107. * @retval None
  108. */
  109. char *HTTP_ChangeUserPwd(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  110. #endif
  111. /**
  112. * @brief
  113. */
  114. char* HTTP_UpsHistoryPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  115. /**
  116. * @brief
  117. */
  118. char* HTTP_HistoryPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  119. /**
  120. * @brief
  121. */
  122. char* HTTP_Reset(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  123. /**
  124. * @brief
  125. */
  126. char* HTTP_Reboot(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  127. /**
  128. * @brief
  129. */
  130. char* HTTP_Confirm(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  131. /**
  132. * @brief Запуск/останов теста UPS
  133. */
  134. char* HTTP_UPSTest(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  135. /**
  136. * @brief Выклюение UPS
  137. */
  138. char* HTTP_UPSshutdown(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  139. /**
  140. * @brief Проверка пароля для перехода в режим bootloader
  141. */
  142. char* HTTP_ConfirmBootPwd(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  143. /**
  144. * @brief Проверка пароля для входа в Web
  145. */
  146. int HTTP_ConfirmWebPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  147. void HTTP_LOGIN(char *bufOut, uint16_t *lenBufOut);
  148. /**
  149. * @brief
  150. */
  151. char* HTTP_GetRequest(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  152. /**
  153. * @brief
  154. */
  155. char* HTTP_NoFound(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut);
  156. /**
  157. * @brief
  158. */
  159. uint8_t GetParamValue(char *inStr, char *paramName, char *paramValue, uint8_t *paramLen);
  160. uint8_t GetCookieValue(char *inStr, char *paramName, char *paramValue, uint8_t *paramLen);
  161. /**
  162. * @brief
  163. * @retval None
  164. */
  165. uint8_t GetParamValueInEnd(char *inStr, char *paramName, char *paramValue, uint8_t *paramLen);
  166. void ClearParamString(char *inBuf);
  167. /**
  168. * @brief Замена символа в строке
  169. * @param *str - входная строка
  170. * @param sim1 - символ который надо заменить
  171. * @param sim2 - символ на который надо заменить
  172. */
  173. void HTTP_ReplaceSimbol(char *str, char sim1, char sim2);
  174. // -----------------------------------------------------------------------------
  175. //
  176. //
  177. // SSL тесты
  178. //
  179. //
  180. // -----------------------------------------------------------------------------
  181. #ifdef __cplusplus
  182. extern "C" {
  183. #endif
  184. /* Exported types ------------------------------------------------------------*/
  185. typedef struct
  186. {
  187. uint32_t State;
  188. }rng_state;
  189. void ssl_server(void *pvParameters);
  190. int RandVal(void* arg);
  191. void HTTP_SendHistory(void);
  192. void HTTP_SendLog(void);
  193. void HTTPS_Init();
  194. int SSL_ReadRoutine(mbedtls_ssl_context *ssl, unsigned char* recvBuf);
  195. char* SSL_ProcessingRoutine(uint16_t* sendLen);
  196. SSL_SERVER_STATE SSL_WriteRoutine(mbedtls_ssl_context *ssl, char *data, int datalen);
  197. SSL_SERVER_STATE SSL_SendFrames(mbedtls_ssl_context *ssl, char *data, int datalen);
  198. SSL_SERVER_STATE SSL_Write(mbedtls_ssl_context *ssl, char *data, int datalen);
  199. #ifdef __cplusplus
  200. }
  201. #endif
  202. #endif /* SSL_SERVER_H_ */
  203. #endif