/* * ssl_server.h * * Created on: 08.11.2017 * Author: balbekova */ #ifdef HARDWARE_BT6702 #ifndef MY_SSL_SERVER_H_ #define MY_SSL_SERVER_H_ #include "lwip/opt.h" #include "lwip/arch.h" #include "lwip/api.h" #include "mbedtls/ssl.h" #define SSL_TASK_PRIO ( configMAX_PRIORITIES - 3 ) #define FRAME_SIZE (1000) 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 { SET_PAGE_IDLE = 0, SET_PAGE_PAGE1, SET_PAGE_PAGE2, SET_PAGE_PAGE3, SET_PAGE_PAGE4, } SET_PAGE_t; typedef enum { SEND_REQUIRED_YES = 0, SEND_REQUIRED_NO, SEND_REQUIRED_FILE } REQ_TYPE_t; struct http_state { char *file; u32_t left; }; struct fs_file { char *data; int len; }; void HTTP_Init(); static err_t http_accept(void *arg, struct tcp_pcb *pcb, err_t err); static err_t http_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err); void http_server_netconn_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 */ void HTTP_SetInfo(char *buf, uint16_t lenBuf); /** * @brief */ int HTTP_SettingsPage(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief */ int HTTP_InfoPage(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); int HTTP_UpsHistoryPage(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); int HTTP_HistoryPage(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief Запуск/останов теста UPS */ void HTTP_UPSTest(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief Выклюение UPS */ void HTTP_UPSshutdown(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut); /** * @brief Проверка пароля для перехода в режим bootloader */ void HTTP_ConfirmBootPwd(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 */ 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 Cockie(void); void getAuthenticatedState(void); void ssl_server(void *pvParameters); int RandVal(void* arg); void HTTP_SendHistory(void); void HTTP_SendLog(void); 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); char* AuthenticatedFalseRoutine(uint16_t* sendLen); char* AuthenticatedTrueRoutine(uint16_t* sendLen); 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 /* SSL_SERVER_H_ */ #endif