/* * ssl_server.h * * Created on: 08.11.2017 * Author: balbekova */ #ifndef MY_SSL_SERVER_H_ #define MY_SSL_SERVER_H_ #include "common_config.h" #include "lwip/opt.h" #include "lwip/arch.h" #include "lwip/api.h" #include "mbedtls/ssl.h" #ifdef SSL_SERVER_ENABLE #define HTTP_AUTH_ENABLE #define SSL_TASK_PRIO ( configMAX_PRIORITIES - 3 ) #define FRAME_SIZE (1000) #define SEND_BUF_MAX_LEN 4000 #define RECIVE_BUF_MAX_LEN 2000 typedef enum { SSL_ACCEPT = 0, SSL_ERROR, SSL_CRITICAL_ERROR, SSL_HANDSHAKE, SSL_READ, SSL_PROCESSING, SSL_CLOSE, SSL_WRITE, SSL_WRITE_OK, SSL_WRITE_ERROR, } SSL_SERVER_STATE; typedef enum { ALL_ACCESS = 0, TIME_ACCESS } ACCESS_TYPE_t; typedef enum { COMMON_ANSWER = 0, PARAMETER_ANSWER, HISTORY_ANSWER, UPS_HISTORY_ANSWER } REQ_TYPE_SEND_t; typedef enum { SEND_REQUIRED_YES = 0, SEND_REQUIRED_NO, SEND_REQUIRED_FILE } REQ_TYPE_t; struct http_state { char *file; u32_t left; u32_t reqnum; void *locked; }; struct fs_file { char *data; int len; }; void HTTP_Init(); /** * @brief Выводим запросы в консоль */ void vTaskPrintHttp(void *pvParameters); /** * @brief Установка даты производства */ void HTTP_Prodate(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief Парсинг строки настроек */ void HTTP_SetSettings(char *buf, uint16_t lenBuf); /** * @brief * @retval None */ char *HTTP_GetSert(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief * @retval None */ char *HTTP_Upload_Sert(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief */ void HTTP_SetInfo(char *buf, uint16_t lenBuf); /** * @brief */ char* HTTP_SetSettingsPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief */ char* HTTP_SetInfoPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); #ifdef HTTP_AUTH_ENABLE /** * @brief */ char* HTTP_LoginPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief */ char* HTTP_LogoutPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief Смена пароля пользователя * @retval None */ char *HTTP_ChangeUserPwd(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); #endif /** * @brief */ char* HTTP_UpsHistoryPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief */ char* HTTP_HistoryPage(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief */ char* HTTP_Reset(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief */ char* HTTP_Reboot(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief */ char* HTTP_Confirm(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief Запуск/останов теста UPS */ char* HTTP_UPSTest(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief Выклюение UPS */ char* HTTP_UPSshutdown(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); char *HTTP_UPS_Serial(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief Проверка пароля для перехода в режим bootloader */ char* HTTP_ConfirmBootPwd(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief Проверка пароля для входа в Web */ int HTTP_ConfirmWebPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); void HTTP_LOGIN(char *bufOut, uint16_t *lenBufOut); /** * @brief */ char* HTTP_GetRequest(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief */ char* HTTP_NoFound(uint32_t reqNum, char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief */ uint8_t GetParamValue(char *inStr, char *paramName, char *paramValue, uint8_t *paramLen); uint8_t GetCookieValue(char *inStr, char *paramName, char *paramValue, uint8_t *paramLen); /** * @brief * @retval None */ uint8_t GetParamValueInEnd(char *inStr, char *paramName, char *paramValue, uint8_t *paramLen); void ClearParamString(char *inBuf); /** * @brief Замена символа в строке * @param *str - входная строка * @param sim1 - символ который надо заменить * @param sim2 - символ на который надо заменить */ void HTTP_ReplaceSimbol(char *str, char sim1, char sim2); // ----------------------------------------------------------------------------- // // // SSL тесты // // // ----------------------------------------------------------------------------- #ifdef __cplusplus extern "C" { #endif /* Exported types ------------------------------------------------------------*/ typedef struct { uint32_t State; }rng_state; void ssl_server(void *pvParameters); int RandVal(void* arg); void HTTP_SendHistory(void); void HTTP_SendLog(void); void HTTP_Init(); void HTTPS_Init(); int SSL_ReadRoutine(mbedtls_ssl_context *ssl, unsigned char* recvBuf); char* SSL_ProcessingRoutine(uint16_t* sendLen); SSL_SERVER_STATE SSL_WriteRoutine(mbedtls_ssl_context *ssl, char *data, int datalen); SSL_SERVER_STATE SSL_SendFrames(mbedtls_ssl_context *ssl, char *data, int datalen); SSL_SERVER_STATE SSL_Write(mbedtls_ssl_context *ssl, char *data, int datalen); #ifdef __cplusplus } #endif #endif #endif /* SSL_SERVER_H_ */