|  | @@ -2810,10 +2810,9 @@ void HTTPS_Init()
 | 
	
		
			
				|  |  |  #include <stdlib.h>
 | 
	
		
			
				|  |  |  #include <string.h>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -#define HTTP_RESPONSE \
 | 
	
		
			
				|  |  | -    "HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n" \
 | 
	
		
			
				|  |  | -    "<h2>mbed TLS Test Server</h2>\r\n" \
 | 
	
		
			
				|  |  | -    "<p>Successful connection using: %s</p>\r\n"
 | 
	
		
			
				|  |  | +char HTTP_RESPONSE[] = "HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n \
 | 
	
		
			
				|  |  | +                       <h2>mbed TLS Test Server</h2>\r\n \
 | 
	
		
			
				|  |  | +                       <p>Successful connection using: %s</p>\r\n";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static mbedtls_net_context listen_fd, client_fd;
 | 
	
		
			
				|  |  |  static const uint8_t *pers = (uint8_t *)("ssl_server");
 | 
	
	
		
			
				|  | @@ -2830,6 +2829,7 @@ char name[MAX_WEB_COOKIE_LEN];
 | 
	
		
			
				|  |  |  char id[MAX_WEB_COOKIE_LEN];
 | 
	
		
			
				|  |  |  uint8_t nameLen = 0, idLen = 0;
 | 
	
		
			
				|  |  |  uint8_t user_id; // Id of currently logged-in user     
 | 
	
		
			
				|  |  | +struct fs_file file = {0, 0};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #define HEAP_SIZE       (1u << 14)  // 16k
 | 
	
		
			
				|  |  |  unsigned char malloc_buf[HEAP_SIZE];
 | 
	
	
		
			
				|  | @@ -2842,16 +2842,16 @@ void Cockie(void)
 | 
	
		
			
				|  |  |    // Get cookie "uname" value 
 | 
	
		
			
				|  |  |    CookiePtr = strstr(receiveBuf, "uname=");
 | 
	
		
			
				|  |  |    strncpy(CookieBuf, CookiePtr, 50);
 | 
	
		
			
				|  |  | -  printf("********CookieBuf1= %s\r\n", CookieBuf);
 | 
	
		
			
				|  |  | +  //printf("********CookieBuf1= %s\r\n", CookieBuf);
 | 
	
		
			
				|  |  |    memset(name, 0, MAX_WEB_COOKIE_LEN);
 | 
	
		
			
				|  |  |    GetCookieValue(CookieBuf, "uname=", name, &nameLen);
 | 
	
		
			
				|  |  | -  printf("********CookieBuf2= %s\r\n", CookieBuf);
 | 
	
		
			
				|  |  | -  printf("********uname= %s\r\n", name);
 | 
	
		
			
				|  |  | +  //printf("********CookieBuf2= %s\r\n", CookieBuf);
 | 
	
		
			
				|  |  | +  //printf("********uname= %s\r\n", name);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // Get cookie "id" value 
 | 
	
		
			
				|  |  |    CookiePtr = strstr(receiveBuf, "id=");
 | 
	
		
			
				|  |  |    strncpy(CookieBuf, CookiePtr, 50);
 | 
	
		
			
				|  |  | -  printf("********CookieBuf1= %s\r\n", CookieBuf);
 | 
	
		
			
				|  |  | +  //printf("********CookieBuf1= %s\r\n", CookieBuf);
 | 
	
		
			
				|  |  |    memset(id, 0, MAX_WEB_COOKIE_LEN);
 | 
	
		
			
				|  |  |    GetCookieValue(CookieBuf, "id=", id, &idLen);
 | 
	
		
			
				|  |  |  }
 | 
	
	
		
			
				|  | @@ -3007,13 +3007,13 @@ void ssl_server(void *pvParameters)
 | 
	
		
			
				|  |  |        
 | 
	
		
			
				|  |  |      case SSL_PROCESSING :
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      SSL_ProcessingRoutine(&sendPtr, &sendBufSize);
 | 
	
		
			
				|  |  | +      sendPtr = SSL_ProcessingRoutine(&sendBufLoadLen);
 | 
	
		
			
				|  |  |        ssl_state = SSL_WRITE;
 | 
	
		
			
				|  |  |        
 | 
	
		
			
				|  |  |      break;
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      case SSL_WRITE :
 | 
	
		
			
				|  |  | -      ssl_state = SSL_WriteRoutine(&ssl, sendPtr, sendBufSize);
 | 
	
		
			
				|  |  | +      ssl_state = SSL_WriteRoutine(&ssl, sendPtr, sendBufLoadLen);
 | 
	
		
			
				|  |  |      break;
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      case SSL_CRITICAL_ERROR:
 | 
	
	
		
			
				|  | @@ -3032,135 +3032,6 @@ void ssl_server(void *pvParameters)
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    
 | 
	
		
			
				|  |  |    
 | 
	
		
			
				|  |  | -#if 0  
 | 
	
		
			
				|  |  | -reset:
 | 
	
		
			
				|  |  | -  mbedtls_net_free( &client_fd );
 | 
	
		
			
				|  |  | -  mbedtls_ssl_session_reset( &ssl );
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  // 5. Wait until a client connects
 | 
	
		
			
				|  |  | -  mbedtls_printf( "  . Waiting for a remote connection ...\r\n" );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  if((ret = mbedtls_net_accept(&listen_fd, &client_fd, NULL, 0, NULL)) != 0)
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -    mbedtls_printf( " failed\r\n  ! mbedtls_net_accept returned %d\r\n", ret );
 | 
	
		
			
				|  |  | -    goto exit;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  mbedtls_ssl_set_bio( &ssl, &client_fd, mbedtls_net_send, mbedtls_net_recv, NULL );
 | 
	
		
			
				|  |  | -  mbedtls_printf( " ok\r\n" );
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  // 6. Handshake
 | 
	
		
			
				|  |  | -  mbedtls_printf( "  . Performing the SSL/TLS handshake..." );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  while( ( ret = mbedtls_ssl_handshake( &ssl ) ) != 0 )
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -    if( ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE )
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -      mbedtls_printf( " failed\r\n  ! mbedtls_ssl_handshake returned %d\r\n", ret );
 | 
	
		
			
				|  |  | -      goto reset;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  mbedtls_printf( " ok\r\n" );
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  // 7. Read the HTTP Request
 | 
	
		
			
				|  |  | -  mbedtls_printf( "  < Read from client:" );
 | 
	
		
			
				|  |  | -  do
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -    len = sizeof( receiveBuf ) - 1;
 | 
	
		
			
				|  |  | -    memset( receiveBuf, 0, sizeof( receiveBuf ) );
 | 
	
		
			
				|  |  | -    ret = mbedtls_ssl_read( &ssl, (unsigned char*)receiveBuf, len );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    if( ret == MBEDTLS_ERR_SSL_WANT_READ || ret == MBEDTLS_ERR_SSL_WANT_WRITE )
 | 
	
		
			
				|  |  | -	{
 | 
	
		
			
				|  |  | -      continue;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    if( ret <= 0 )
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -      switch( ret )
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | -        case MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY:
 | 
	
		
			
				|  |  | -          mbedtls_printf( " connection was closed gracefully\r\n" );
 | 
	
		
			
				|  |  | -          break;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        case MBEDTLS_ERR_NET_CONN_RESET:
 | 
	
		
			
				|  |  | -          mbedtls_printf( " connection was reset by peer\r\n" );
 | 
	
		
			
				|  |  | -          break;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        default:
 | 
	
		
			
				|  |  | -          mbedtls_printf( " mbedtls_ssl_read returned -0x%x\r\n", -ret );
 | 
	
		
			
				|  |  | -          break;
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      break;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    len = ret;
 | 
	
		
			
				|  |  | -    //mbedtls_printf( " %d bytes read\r\n%s", len, (char *) receiveBuf );
 | 
	
		
			
				|  |  | -    mbedtls_printf( " %d bytes read\r\n", len);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    if( ret > 0 )
 | 
	
		
			
				|  |  | -      break;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  } while(1);  
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  Cockie();
 | 
	
		
			
				|  |  | -  getAuthenticatedState();
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  // 8. Write the 200 Response
 | 
	
		
			
				|  |  | -  mbedtls_printf( "  > Write to client:" );
 | 
	
		
			
				|  |  | -  //len = sprintf( (char *) receiveBuf, HTTP_RESPONSE, mbedtls_ssl_get_ciphersuite( &ssl ) );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  fs_open("/index.html", &file);
 | 
	
		
			
				|  |  | -  SSL_Send(&ssl, file.data, file.len);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -/*  
 | 
	
		
			
				|  |  | -  //while( ( ret = mbedtls_ssl_write( &ssl, (unsigned char*)receiveBuf, len ) ) <= 0 )
 | 
	
		
			
				|  |  | -  while( ( ret = mbedtls_ssl_write( &ssl, (unsigned char*)file.data, file.len ) ) <= 0 )
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -    if( ret == MBEDTLS_ERR_NET_CONN_RESET )
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -      mbedtls_printf( " failed\r\n  ! peer closed the connection\r\n" );
 | 
	
		
			
				|  |  | -      goto reset;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    if( ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE )
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -      mbedtls_printf( " failed\r\n  ! mbedtls_ssl_write returned %d\r\n", ret );
 | 
	
		
			
				|  |  | -      goto exit;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -*/
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  len = ret;
 | 
	
		
			
				|  |  | -  //mbedtls_printf( " %d bytes written\n\n%s\n", len, (char *) receiveBuf );
 | 
	
		
			
				|  |  | -  mbedtls_printf( " %d bytes written\r\n", len);
 | 
	
		
			
				|  |  | -  mbedtls_printf( "  . Closing the connection..." );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  while( ( ret = mbedtls_ssl_close_notify( &ssl ) ) < 0 )
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -    if( ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE )
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -      mbedtls_printf( " failed\r\n  ! mbedtls_ssl_close_notify returned %d\r\n", ret );
 | 
	
		
			
				|  |  | -      goto reset;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  mbedtls_printf( " ok\r\n" );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  ret = 0;
 | 
	
		
			
				|  |  | -  goto reset;  
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | -exit:
 | 
	
		
			
				|  |  | -  mbedtls_x509_crt_free( &srvcert );
 | 
	
		
			
				|  |  | -  mbedtls_pk_free( &pkey );
 | 
	
		
			
				|  |  | -  mbedtls_ssl_free( &ssl );
 | 
	
		
			
				|  |  | -  mbedtls_ssl_config_free( &conf );
 | 
	
		
			
				|  |  | -  mbedtls_ctr_drbg_free( &ctr_drbg );
 | 
	
		
			
				|  |  | -  mbedtls_entropy_free( &entropy );
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  vTaskDelete(NULL);
 | 
	
		
			
				|  |  | -#endif
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -3230,55 +3101,167 @@ void SSL_ReadRoutine(mbedtls_ssl_context *ssl, unsigned char* recvBuf)
 | 
	
		
			
				|  |  |  //
 | 
	
		
			
				|  |  |  SSL_SERVER_STATE SSL_WriteRoutine(mbedtls_ssl_context *ssl, char *data, int datalen)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -  int ret;
 | 
	
		
			
				|  |  | +    return SSL_SendFrames(ssl, data, datalen);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//
 | 
	
		
			
				|  |  | +char* SSL_ProcessingRoutine(uint16_t* sendLen)
 | 
	
		
			
				|  |  | +{  
 | 
	
		
			
				|  |  | +  char* ptr;
 | 
	
		
			
				|  |  | +  Cockie();
 | 
	
		
			
				|  |  | +  getAuthenticatedState();
 | 
	
		
			
				|  |  |    
 | 
	
		
			
				|  |  | -  mbedtls_printf( "  > Write to client:" );
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -  while( ( ret = mbedtls_ssl_write(ssl, data, datalen) ) <= 0 )
 | 
	
		
			
				|  |  | +  //HTTP_LOGIN(send, sendLen);
 | 
	
		
			
				|  |  | +  //fs_open("/index.html", &file); // +
 | 
	
		
			
				|  |  | +  //fs_open("/settings.html", &file);
 | 
	
		
			
				|  |  | +  //*sendLen = file.len;
 | 
	
		
			
				|  |  | +  //return  file.data; 
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  fs_open("/main.css", &file);
 | 
	
		
			
				|  |  | +                *sendLen = file.len;
 | 
	
		
			
				|  |  | +                return file.data;
 | 
	
		
			
				|  |  | +                
 | 
	
		
			
				|  |  | +#if 0
 | 
	
		
			
				|  |  | +  if ( Authenticated == false && sSettings.sRADIUS.Auth_enable == false)
 | 
	
		
			
				|  |  | +  { 	
 | 
	
		
			
				|  |  | +    HTTP_LOGIN(sendBuf, sendLen);  
 | 
	
		
			
				|  |  | +    return sendBuf;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  else if ( Authenticated == false )//&& sSettings.sRADIUS.Auth_enable == true
 | 
	
		
			
				|  |  |    {
 | 
	
		
			
				|  |  | -    if( ret == MBEDTLS_ERR_NET_CONN_RESET )
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -      mbedtls_printf( " failed\r\n  ! peer closed the connection\r\n" );
 | 
	
		
			
				|  |  | -      return SSL_ACCEPT;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +            if (strncmp(receiveBuf, "GET /main.css", 13) == 0) // +
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                fs_open("/main.css", &file);
 | 
	
		
			
				|  |  | +                *sendLen = file.len;
 | 
	
		
			
				|  |  | +                return file.data;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            else if (strncmp(receiveBuf, "GET /rotek.png", 14) == 0) // +
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                fs_open("/rotek.png", &file);
 | 
	
		
			
				|  |  | +                send = file.data; *sendLen = file.len;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            else if (strncmp(receiveBuf, "GET /favicon.ico", 16) == 0) // ?
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                fs_open("/favicon.ico", &file);
 | 
	
		
			
				|  |  | +                send = file.data; *sendLen = file.len;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            else if (strncmp(receiveBuf, "GET /role.js", 12) == 0)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                fs_open("/role.js", &file);
 | 
	
		
			
				|  |  | +                send = file.data; *sendLen = file.len;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            else if (strncmp(receiveBuf, "POST /login.cgi", 15) == 0)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                uint32_t req_data_received = 0;
 | 
	
		
			
				|  |  | +                char *offset;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    if( ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE )
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -      mbedtls_printf( " failed\r\n  ! mbedtls_ssl_write returned %d\r\n", ret );
 | 
	
		
			
				|  |  | -      return SSL_CRITICAL_ERROR;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  mbedtls_printf( " %d bytes written\r\n", ret);
 | 
	
		
			
				|  |  | -  mbedtls_printf( "  . Closing the connection..." );
 | 
	
		
			
				|  |  | +                offset = 0;
 | 
	
		
			
				|  |  | +                
 | 
	
		
			
				|  |  | +                post_data_count = Parse_Content_Length(receiveBuf, receivedBufLen);
 | 
	
		
			
				|  |  | +			  
 | 
	
		
			
				|  |  | +                if (post_data_count < MAX_POST_REQ_LEN) 
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    memset(post_req_data, 0, MAX_POST_REQ_LEN);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  while( ( ret = mbedtls_ssl_close_notify( ssl ) ) < 0 )
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -    if( ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE )
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -      mbedtls_printf( " failed\r\n  ! mbedtls_ssl_close_notify returned %d\r\n", ret );
 | 
	
		
			
				|  |  | -      return SSL_ACCEPT;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +                    offset = (strstr(receiveBuf, "\r\n\r\n")) + 4;
 | 
	
		
			
				|  |  | +                    req_data_received = receivedBufLen - (offset - &receiveBuf[0]);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  mbedtls_printf( " ok\r\n" );
 | 
	
		
			
				|  |  | +					if (offset != 0) 
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        if (req_data_received < post_data_count) 
 | 
	
		
			
				|  |  | +                        {
 | 
	
		
			
				|  |  | +                            snprintf(post_req_data, req_data_received, "%s", receiveBuf);
 | 
	
		
			
				|  |  | +                            post_data_count -= req_data_received;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  ret = 0;
 | 
	
		
			
				|  |  | -  return SSL_ACCEPT;
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | +                            //ssl_server_read();
 | 
	
		
			
				|  |  | +                            SSL_ReadRoutine(&ssl, (unsigned char*)receiveBuf);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            offset = receiveBuf;
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        if(strlen(receiveBuf) != 0)
 | 
	
		
			
				|  |  | +                        {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            strncat(post_req_data, offset, post_data_count);
 | 
	
		
			
				|  |  | +                            if (HTTP_ConfirmWebPwd(post_req_data, send, strlen(post_req_data), sendLen) == SEND_REQUIRED_YES) 
 | 
	
		
			
				|  |  | +                            {
 | 
	
		
			
				|  |  | +                                //ssl_sendframes(&ssl, sendBuf, sendBufLoadLen);
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                            else 
 | 
	
		
			
				|  |  | +                            {
 | 
	
		
			
				|  |  | +                                /*if(sSettings.sRADIUS.RDSEnable == true)
 | 
	
		
			
				|  |  | +                            		fs_open("/rslogin.html", &file);
 | 
	
		
			
				|  |  | +                            	else
 | 
	
		
			
				|  |  | +                            		fs_open("/login.html", &file);
 | 
	
		
			
				|  |  | +                                ssl_sendframes(&ssl, file.data, file.len);*/
 | 
	
		
			
				|  |  | +                            	//ssl_sendframes(&ssl, sendBuf, sendBufLoadLen);
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                            post_data_count = 0;
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        else{
 | 
	
		
			
				|  |  | +    						// Redirect to login page
 | 
	
		
			
				|  |  | +    						if((sSettings.sRADIUS.RDSEnable == true) && (fl_raddius_net_err == false))
 | 
	
		
			
				|  |  | +    							fs_open("/rslogin.html", &file);
 | 
	
		
			
				|  |  | +    						else
 | 
	
		
			
				|  |  | +    							fs_open("/login.html", &file);
 | 
	
		
			
				|  |  | +    						send = file.data; *sendLen = file.len;
 | 
	
		
			
				|  |  | +    						// End reqest 
 | 
	
		
			
				|  |  | +    						post_data_count = 0;
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +					/* request was fragmented before "\r\n\r\n" */
 | 
	
		
			
				|  |  | +					else 
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +						/* Redirect to login page */
 | 
	
		
			
				|  |  | +						if((sSettings.sRADIUS.RDSEnable == true) && (fl_raddius_net_err == false))
 | 
	
		
			
				|  |  | +							fs_open("/rslogin.html", &file);
 | 
	
		
			
				|  |  | +						else
 | 
	
		
			
				|  |  | +							fs_open("/login.html", &file);
 | 
	
		
			
				|  |  | +						send = file.data; *sendLen = file.len;
 | 
	
		
			
				|  |  | +						/* End reqest */
 | 
	
		
			
				|  |  | +						post_data_count = 0;
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                else 
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    //printf("Too long POST request!\r\n");
 | 
	
		
			
				|  |  | +                    // Ignore request 
 | 
	
		
			
				|  |  | +                    post_data_count = 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    // Redirect to login page 
 | 
	
		
			
				|  |  | +                    if((sSettings.sRADIUS.RDSEnable == true) && (fl_raddius_net_err == false))
 | 
	
		
			
				|  |  | +						fs_open("/rslogin.html", &file);
 | 
	
		
			
				|  |  | +					else
 | 
	
		
			
				|  |  | +						fs_open("/login.html", &file);
 | 
	
		
			
				|  |  | +                    send = file.data; *sendLen = file.len;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +			else if (post_data_count > 0)
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  | +                strncat(post_req_data, receiveBuf, post_data_count);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (HTTP_ConfirmWebPwd(post_req_data, send, strlen(post_req_data), sendLen) == SEND_REQUIRED_YES) 
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    //ssl_sendframes(&ssl, sendBuf, sendBufLoadLen);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +				else 
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +					//ssl_sendframes(&ssl, sendBuf, sendBufLoadLen);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +                post_data_count = 0;
 | 
	
		
			
				|  |  | +				log_post_reqn = 0;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +            else
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +            	if((sSettings.sRADIUS.RDSEnable == true) && (fl_raddius_net_err == false))
 | 
	
		
			
				|  |  | +					fs_open("/rslogin.html", &file);
 | 
	
		
			
				|  |  | +				else
 | 
	
		
			
				|  |  | +					fs_open("/login.html", &file);
 | 
	
		
			
				|  |  | +                send = file.data; *sendLen = file.len;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +#endif  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -//
 | 
	
		
			
				|  |  | -void SSL_ProcessingRoutine(char** send, uint32_t* sendLen)
 | 
	
		
			
				|  |  | -{
 | 
	
		
			
				|  |  | -  struct fs_file file = {0, 0};
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  Cockie();
 | 
	
		
			
				|  |  | -  getAuthenticatedState();
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  fs_open("/index.html", &file);
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  *send = file.data;
 | 
	
		
			
				|  |  | -  *sendLen = file.len;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  //
 | 
	
	
		
			
				|  | @@ -3325,3 +3308,85 @@ void SSL_Send( mbedtls_ssl_context *ssl, char *data, int datalen )
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +#define FRAME_SIZE   (1000)
 | 
	
		
			
				|  |  | +SSL_SERVER_STATE SSL_SendFrames(mbedtls_ssl_context *ssl, char *data, int datalen)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  SSL_SERVER_STATE ret;
 | 
	
		
			
				|  |  | +  int retClose;
 | 
	
		
			
				|  |  | +  int index = 0;
 | 
	
		
			
				|  |  | +  int k = 0;
 | 
	
		
			
				|  |  | +  int lastframe, nbrframes;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  nbrframes = datalen / FRAME_SIZE; 
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +  while(nbrframes > 0)
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    index = k * FRAME_SIZE;
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    if (SSL_Write(ssl, (data + index), FRAME_SIZE ) == SSL_CRITICAL_ERROR)
 | 
	
		
			
				|  |  | +      return SSL_CRITICAL_ERROR;
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +    nbrframes--;
 | 
	
		
			
				|  |  | +    k++;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  index = k * FRAME_SIZE;
 | 
	
		
			
				|  |  | +  lastframe = datalen % FRAME_SIZE ;
 | 
	
		
			
				|  |  | +  if (SSL_Write(ssl, (data + index), lastframe ) == SSL_CRITICAL_ERROR)
 | 
	
		
			
				|  |  | +      return SSL_CRITICAL_ERROR;    
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +  mbedtls_printf( "  . Closing the connection..." );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  while( ( retClose = mbedtls_ssl_close_notify( ssl ) ) < 0 )
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    if( retClose != MBEDTLS_ERR_SSL_WANT_READ && retClose != MBEDTLS_ERR_SSL_WANT_WRITE )
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      mbedtls_printf( " failed\r\n  ! mbedtls_ssl_close_notify returned %d\r\n", ret );
 | 
	
		
			
				|  |  | +      
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  mbedtls_printf( " ok\r\n" );
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +  return SSL_ACCEPT;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +SSL_SERVER_STATE SSL_Write(mbedtls_ssl_context *ssl, char *data, int datalen)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  int ret;
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +  mbedtls_printf( "  > Write to client:" );
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +  while( ( ret = mbedtls_ssl_write(ssl, data, datalen) ) <= 0 )
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    if( ret == MBEDTLS_ERR_NET_CONN_RESET )
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      mbedtls_printf( " failed\r\n  ! peer closed the connection\r\n" );
 | 
	
		
			
				|  |  | +      return SSL_ACCEPT;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if( ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE )
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      mbedtls_printf( " failed\r\n  ! mbedtls_ssl_write returned %d\r\n", ret );
 | 
	
		
			
				|  |  | +      return SSL_CRITICAL_ERROR;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +  mbedtls_printf( " %d bytes written\r\n", ret);
 | 
	
		
			
				|  |  | +/*  
 | 
	
		
			
				|  |  | +  mbedtls_printf( "  . Closing the connection..." );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  while( ( ret = mbedtls_ssl_close_notify( ssl ) ) < 0 )
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    if( ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE )
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      mbedtls_printf( " failed\r\n  ! mbedtls_ssl_close_notify returned %d\r\n", ret );
 | 
	
		
			
				|  |  | +      return SSL_ACCEPT;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  mbedtls_printf( " ok\r\n" );
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  | +  ret = 0;
 | 
	
		
			
				|  |  | +  return SSL_ACCEPT;
 | 
	
		
			
				|  |  | +}
 |