소스 검색

[whitelist]remove checking input ip from http, telnet, snmp

balbekova 5 년 전
부모
커밋
194ec6464a
3개의 변경된 파일32개의 추가작업 그리고 109개의 파일을 삭제
  1. 1 49
      modules/HTTP_Server/http_server.c
  2. 31 53
      modules/Telnet_Server/telnet_server.c
  3. 0 7
      thirdparty/lwip/src/apps/snmp/snmp_msg.c

+ 1 - 49
modules/HTTP_Server/http_server.c

@@ -139,8 +139,6 @@ uint8_t nameLen = 0, idLen = 0;
 uint8_t user_id; // Id of currently logged-in user
 struct fs_file file = {0, 0};
 
-static bool flagWhiteList = false;
-
 /**
   * @brief  closes tcp connection
   * @param  pcb: pointer to a tcp_pcb struct
@@ -155,35 +153,7 @@ static void close_conn(struct tcp_pcb *pcb, struct http_state *hs)
   mem_free(hs);
   tcp_close(pcb);
 }
-#ifdef HARDWARE_BT6708
-bool white_list_check(uint32_t check_remote_addr)
-{
-	bool flag = true;
-	uint32_t mask_white_list;
-	uint32_t ip_white_list;
-	char str[20];
-	uint8_t len = 0;
-
-	for(uint8_t i = 0; i < MAX_WHITE_LIST; i ++){
-		memset(str, 0, 20);
-		GetWhiteListSTR(str, &len, i);
-		GetWhiteListMask(&mask_white_list, i);
-		GetWhiteListIP(&ip_white_list, i);
-		if(strlen(str) != 0){
-
-			if((check_remote_addr & mask_white_list) == (ip_white_list & mask_white_list)){
-				flag = true;
-				break;
-			}
-			else{
-				flag = false;
-			}
-		}
-	}
 
-	return flag;
-}
-#endif
 /**
   * @brief callback function for handling TCP HTTP traffic
   * @param arg: pointer to an argument structure to be passed to callback function
@@ -206,9 +176,6 @@ static err_t http_recv(void *arg, struct tcp_pcb *pcb,  struct pbuf *p, err_t er
 
 		if (hs->file == NULL)
 	    {
-#ifdef HARDWARE_BT6708
-		  flagWhiteList = white_list_check(pcb->remote_ip.addr);
-#endif
 	      data = p->payload;
 		  receivedBufLen = p->tot_len;
 		  memcpy(receiveBuf, p->payload , receivedBufLen);
@@ -1182,22 +1149,7 @@ int HTTP_ConfirmWebPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *l
 
 	  /* Get first 50 bytes of string */
 	  strncpy(tempStr, bufIn, 49);
-#ifdef HARDWARE_BT6708
-	  if(!flagWhiteList){
-		  if(cnt_err_psw <= 4)
-			  cnt_err_psw ++;
-		  DBG printf("cnt_err_psw %d", cnt_err_psw);
-		  if(cnt_err_psw == 4)
-			  xTimerStart(RepeatLoginTimer, 0);
-		  strcpy(bufOut, HTTP_403_NOT_WHITE_LIST);
-		  if(cnt_err_psw < 4)
-			  strcat(bufOut,"<!DOCTYPE html><html><head><meta charset=\"utf-8\"><meta http-equiv=\"refresh\" content=\"3; url=/login.html\" /></head><center><h2>Доступ запрешен! Ваш IP-адрес находится вне диапазона доверительных хостов</h2></center></html>");
-		  else
-			  strcat(bufOut,"<!DOCTYPE html><html><head><meta charset=\"utf-8\"><meta http-equiv=\"refresh\" content=\"3; url=/login.html\" /></head><center><h2>Вход заблокирован!</h2></center></head><center><h2>Повторите попытку через 1 минуту</h2></center></html>");
-		  *lenBufOut = strlen(bufOut);
-		  return SEND_REQUIRED_YES;
-	  }
-#endif
+
 	  /* Add " " to the string in order GetParamValue() can be able to parse the param */
 	  strcat(tempStr, " ");
 	  GetParamValue(tempStr, "login=", login, &valueLen);

+ 31 - 53
modules/Telnet_Server/telnet_server.c

@@ -167,7 +167,6 @@ typedef struct{
 	uint8_t login_err;
 	uint8_t num_connect;
 	bool active_conn;
-	bool flagWhiteListTelnet;
 	bool flag_telnet_ip_option;
 }telnetd_state_t;
 
@@ -190,10 +189,6 @@ static struct fd_set master_set, read_set, write_set;
 static int max_sd;
 static struct sockaddr_in sa;
 
-#ifdef HARDWARE_BT6708
-extern bool white_list_check(uint32_t check_remote_addr);
-#endif
-
 const int8_t * const pcWarningMessage = ( const int8_t * ) "Количество соединенений превышено. Данное соединение будет закрыто\r\n";
 #ifdef HARDWARE_BT6708
 const int8_t * const pcWelcomeMessage = ( const int8_t * ) "BT6708 command server - connection accepted.\r\nlogin:";
@@ -740,11 +735,7 @@ void vBasicSocketsCommandInterpreterTask( void *pvParameters )
 									auth_tlnt_srvr_param[k].num_connect = new_sd;
 									auth_tlnt_srvr_param[k].telnetState = TELNET_AUTH;
 									auth_tlnt_srvr_param[k].state = STATE_NORMAL;
-#ifdef HARDWARE_BT6708
-									auth_tlnt_srvr_param[k].flagWhiteListTelnet = white_list_check(sa_temp.sin_addr.s_addr);
-#elif HARDWARE_BT6706
-									auth_tlnt_srvr_param[k].flagWhiteListTelnet = true;
-#endif
+
 									while(recv( new_sd, &auth_tlnt_srvr_param[k].buf[auth_tlnt_srvr_param[k].bufptr], 1,  MSG_DONTWAIT ) > 0){
 										newdata(&auth_tlnt_srvr_param[k]);
 										vTaskDelay(10);
@@ -946,45 +937,37 @@ static portBASE_TYPE FreeRTOS_CLIAuthProcess( int8_t * pcWriteBuffer, telnetd_st
 		memset(password, 0, MAX_WEB_PASSWD_LEN);
 		len = strlen(s->buf);
 		strncpy(password, s->buf, len);
-#ifdef HARDWARE_BT6708
-		if(!s->flagWhiteListTelnet){
-			xReturn = pdFALSE;
-		}
-		else
-#endif
-		{
-			for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) {
-
-				GetUserLogin(user_id, WebLogin, &valueLen);
-				GetUserPassword(user_id, WebPassword, &valueLen);
-
-				/* Check login and password */
-				if ((strncmp(WebLogin, s->login, MAX_WEB_LOGIN_LEN) == 0) &&
-					(strncmp(WebPassword, password, MAX_WEB_PASSWD_LEN) == 0)) {
-
-					/* Login and pass are valid */
-					s->telnet_code_auth = user_id;
-					s->login_err = 0;
-					strcpy( ( char * ) pcWriteBuffer, "\r\nАвторизация успешно пройдена\r\n>" );
-					s->telnetState = TELNET_CMD;
-					switch (user_id) {
-					  case 0:
-						  snprintf(name_login_telnet, sizeof(name_login_telnet), "Администратор");
-						  break;
-					  case 1:
-						  snprintf(name_login_telnet, sizeof(name_login_telnet), "Пользователь");
-						  break;
-					  default:
-						  break;
-					}
+		for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) {
 
-					log_event_data(LOG_LOGIN_TELNET, name_login_telnet);
-					xReturn = pdTRUE;
-					break;
-				}
-				else{
-					xReturn = pdFALSE;
+			GetUserLogin(user_id, WebLogin, &valueLen);
+			GetUserPassword(user_id, WebPassword, &valueLen);
+
+			/* Check login and password */
+			if ((strncmp(WebLogin, s->login, MAX_WEB_LOGIN_LEN) == 0) &&
+				(strncmp(WebPassword, password, MAX_WEB_PASSWD_LEN) == 0)) {
+
+				/* Login and pass are valid */
+				s->telnet_code_auth = user_id;
+				s->login_err = 0;
+				strcpy( ( char * ) pcWriteBuffer, "\r\nАвторизация успешно пройдена\r\n>" );
+				s->telnetState = TELNET_CMD;
+				switch (user_id) {
+				  case 0:
+					  snprintf(name_login_telnet, sizeof(name_login_telnet), "Администратор");
+					  break;
+				  case 1:
+					  snprintf(name_login_telnet, sizeof(name_login_telnet), "Пользователь");
+					  break;
+				  default:
+					  break;
 				}
+
+				log_event_data(LOG_LOGIN_TELNET, name_login_telnet);
+				xReturn = pdTRUE;
+				break;
+			}
+			else{
+				xReturn = pdFALSE;
 			}
 		}
 		break;
@@ -999,12 +982,7 @@ static portBASE_TYPE FreeRTOS_CLIAuthProcess( int8_t * pcWriteBuffer, telnetd_st
 		s->telnetState = TELNET_AUTH;
 		if(s->login_err < 4){
 			s->login_err ++;
-#ifdef HARDWARE_BT6708
-			if(!s->flagWhiteListTelnet)
-				strcpy( ( char * ) pcWriteBuffer, "\r\nДоступ запрешен! Ваш IP-адрес находится вне диапазона доверительных хостов\r\n" );
-			else
-#endif
-				strcpy( ( char * ) pcWriteBuffer, "\r\nОшибка авторизации\r\n" );
+			strcpy( ( char * ) pcWriteBuffer, "\r\nОшибка авторизации\r\n" );
 			strncat( ( char * ) pcWriteBuffer, ( const char * ) pcLoginHeader, strlen( ( char * ) pcLoginHeader ) );
 			xReturn = pdTRUE;
 		}

+ 0 - 7
thirdparty/lwip/src/apps/snmp/snmp_msg.c

@@ -169,9 +169,6 @@ static err_t snmp_parse_inbound_frame(struct snmp_request *request);
 static err_t snmp_prepare_outbound_frame(struct snmp_request *request);
 static err_t snmp_complete_outbound_frame(struct snmp_request *request);
 static void snmp_execute_write_callbacks(struct snmp_request *request);
-#ifdef HARDWARE_BT6708
-extern bool white_list_check(uint32_t check_remote_addr);
-#endif
 /* ----------------------------------------------------------------------- */
 /* implementation */
 /* ----------------------------------------------------------------------- */
@@ -191,10 +188,6 @@ snmp_receive(void *handle, struct pbuf *p, const ip_addr_t *source_ip, u16_t por
   snmp_stats.inpkts++;
 
   err = snmp_parse_inbound_frame(&request);
-#ifdef HARDWARE_BT6708
-  if(!white_list_check(request.source_ip->addr))
-	  err = ERR_TIMEOUT;
-#endif
   if (err == ERR_OK) {
     err = snmp_prepare_outbound_frame(&request);
     if (err == ERR_OK) {