|
@@ -107,6 +107,9 @@ unsigned long log_ptr = 0;
|
|
|
unsigned long log_size = 0;
|
|
|
bool fLogTransInprog = false;
|
|
|
|
|
|
+
|
|
|
+static bool fl_raddius_net_err = false;
|
|
|
+
|
|
|
|
|
|
* @brief Общая структура настроек
|
|
|
*/
|
|
@@ -1698,6 +1701,8 @@ void HTTP_ConfirmBootPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
|
|
|
* @brief Проверка пароля для входа в Web
|
|
|
* @retval None
|
|
@@ -1725,83 +1730,114 @@ int HTTP_ConfirmWebPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *l
|
|
|
GetParamValue(tempStr, "login=", login, &valueLen);
|
|
|
GetParamValue(tempStr, "password=", password, &valueLen);
|
|
|
|
|
|
- if (RC_Login(login, password) == RC_LOGIN_ADMIN_OK)
|
|
|
- {
|
|
|
- for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) {
|
|
|
-
|
|
|
- GetUserLogin(user_id, WebLogin, &valueLen);
|
|
|
- GetUserPassword(user_id, WebPassword, &valueLen);
|
|
|
-
|
|
|
-
|
|
|
- if ((strncmp(WebLogin, "admin", MAX_WEB_LOGIN_LEN) == 0) &&
|
|
|
- (strncmp(WebPassword, "12345", MAX_WEB_PASSWD_LEN) == 0)) {
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- if (user_id >= 1) {
|
|
|
-
|
|
|
- }
|
|
|
+ if((sSettings.sRADIUS.RDSEnable == true) && (fl_raddius_net_err == false)){
|
|
|
+ switch(RC_Login(login, password)){
|
|
|
+ case RC_ERROR:
|
|
|
+ Authenticated = false;
|
|
|
+ break;
|
|
|
+ case RC_LOGIN_ADMIN_OK:
|
|
|
+ Authenticated = true;
|
|
|
+ user_id = 0;
|
|
|
+ break;
|
|
|
+ case RC_LOGIN_USER_OK:
|
|
|
+ Authenticated = true;
|
|
|
+ user_id = 1;
|
|
|
+ break;
|
|
|
+ case RC_NET_ERR:
|
|
|
+ Authenticated = false;
|
|
|
+ fl_raddius_net_err = true;
|
|
|
+ strcpy(bufOut, "HTTP/1.0 200 OK\r\nContent-Type: text/html;\r\n\r\n");
|
|
|
+ strcat(bufOut,"<!DOCTYPE html><html><head><meta charset=\"utf-8\"><meta http-equiv=\"refresh\" content=\"3; url=/login.html\" /></head><center><h2>Ошибка соединения с RADDIUS сервером</h2></center></html>");
|
|
|
+ *lenBufOut = strlen(bufOut);
|
|
|
+ return SEND_REQUIRED_NO;
|
|
|
+ break;
|
|
|
+ case RC_ACC_DENIED:
|
|
|
+ Authenticated = false;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) {
|
|
|
+
|
|
|
+ GetUserLogin(user_id, WebLogin, &valueLen);
|
|
|
+ GetUserPassword(user_id, WebPassword, &valueLen);
|
|
|
+
|
|
|
+
|
|
|
+ if ((strncmp(WebLogin, login, MAX_WEB_LOGIN_LEN) == 0) &&
|
|
|
+ (strncmp(WebPassword, password, MAX_WEB_PASSWD_LEN) == 0)) {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ Authenticated = true;
|
|
|
+ fl_raddius_net_err = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ Authenticated = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
- Authenticated = true;
|
|
|
+ if(Authenticated){
|
|
|
+
|
|
|
+ sprintf(tempStr, "%X", (unsigned int)GetRandomNumber());
|
|
|
+
|
|
|
+
|
|
|
+ HTTP_SetUserCookie(tempStr, user_id);
|
|
|
+
|
|
|
+ HTTP_UpdateUserLoginTime(user_id);
|
|
|
+
|
|
|
+
|
|
|
+ strcpy(bufOut, "HTTP/1.0 200 OK\r\nContent-Type:text/html\r\nSet-Cookie: uname=");
|
|
|
+ strcat(bufOut, login);
|
|
|
+ strcat(bufOut, "\r\nSet-Cookie: id=");
|
|
|
+ strcat(bufOut, tempStr);
|
|
|
+ sprintf(tempStr, "%d", user_id);
|
|
|
+ strcat(bufOut, "\r\nSet-Cookie: role=");
|
|
|
+ strcat(bufOut, tempStr);
|
|
|
+ if(sSettings.sRADIUS.Auth_enable)
|
|
|
+ strcat(bufOut, "\r\nSet-Cookie: auth=1");
|
|
|
+ else
|
|
|
+ strcat(bufOut, "\r\nSet-Cookie: auth=0");
|
|
|
+ strcat(bufOut, "\r\n\r\n");
|
|
|
+ strcat(bufOut,"<!DOCTYPE html><html lang=""><head><meta http-equiv=\"refresh\" content=\"0;url=/index.html\"/></head></html>\r\n\r\n");
|
|
|
|
|
|
-
|
|
|
- sprintf(tempStr, "%X", (unsigned int)GetRandomNumber());
|
|
|
-
|
|
|
-
|
|
|
- HTTP_SetUserCookie(tempStr, user_id);
|
|
|
-
|
|
|
- HTTP_UpdateUserLoginTime(user_id);
|
|
|
-
|
|
|
-
|
|
|
- strcpy(bufOut, "HTTP/1.0 200 OK\r\nContent-Type:text/html\r\nSet-Cookie: uname=");
|
|
|
- strcat(bufOut, WebLogin);
|
|
|
- strcat(bufOut, "\r\nSet-Cookie: id=");
|
|
|
- strcat(bufOut, tempStr);
|
|
|
- sprintf(tempStr, "%d", user_id);
|
|
|
- strcat(bufOut, "\r\nSet-Cookie: role=");
|
|
|
- strcat(bufOut, tempStr);
|
|
|
- if(sSettings.sRADIUS.Auth_enable)
|
|
|
- strcat(bufOut, "\r\nSet-Cookie: auth=1");
|
|
|
- else
|
|
|
- strcat(bufOut, "\r\nSet-Cookie: auth=0");
|
|
|
- strcat(bufOut, "\r\n\r\n");
|
|
|
- strcat(bufOut,"<!DOCTYPE html><html lang=""><head><meta http-equiv=\"refresh\" content=\"0;url=/index.html\"/></head></html>\r\n\r\n");
|
|
|
-
|
|
|
- *lenBufOut = strlen(bufOut);
|
|
|
-
|
|
|
- switch (user_id) {
|
|
|
- case 0:
|
|
|
- snprintf(buf, sizeof(buf), "Администратор");
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- snprintf(buf, sizeof(buf), "Пользователь");
|
|
|
- break;
|
|
|
- default:
|
|
|
- snprintf(buf, sizeof(buf), "", login);
|
|
|
- break;
|
|
|
- }
|
|
|
+ *lenBufOut = strlen(bufOut);
|
|
|
+ if((sSettings.sRADIUS.RDSEnable == true) && (fl_raddius_net_err == false)){
|
|
|
+ snprintf(buf, sizeof(buf), login);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ switch (user_id) {
|
|
|
+ case 0:
|
|
|
+ snprintf(buf, sizeof(buf), "Администратор");
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ snprintf(buf, sizeof(buf), "Пользователь");
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ snprintf(buf, sizeof(buf), "", login);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- log_event_data(LOG_LOGIN, buf);
|
|
|
-
|
|
|
-
|
|
|
- return SEND_REQUIRED_YES;
|
|
|
- }
|
|
|
-
|
|
|
- else {
|
|
|
- continue;
|
|
|
- }
|
|
|
- */
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
-
|
|
|
- Authenticated = false;
|
|
|
-
|
|
|
- return SEND_REQUIRED_NO;
|
|
|
+ log_event_data(LOG_LOGIN, buf);
|
|
|
+
|
|
|
+
|
|
|
+ return SEND_REQUIRED_YES;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ strcpy(bufOut, "HTTP/1.0 200 OK\r\nContent-Type: text/html;\r\n\r\n");
|
|
|
+ if((sSettings.sRADIUS.RDSEnable == true) && (fl_raddius_net_err == false))
|
|
|
+ strcat(bufOut,"<!DOCTYPE html><html><head><meta charset=\"utf-8\"><meta http-equiv=\"refresh\" content=\"3; url=/rslogin.html\" /></head><center><h2>Не правильный логин или пароль</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></html>");
|
|
|
+ *lenBufOut = strlen(bufOut);
|
|
|
+ return SEND_REQUIRED_NO;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void HTTP_LOGIN(char *bufOut, uint16_t *lenBufOut)
|
|
@@ -2565,8 +2601,12 @@ void ssl_server(void *pvParameters)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- fs_open("/login.html", &file);
|
|
|
- ssl_sendframes(&ssl, file.data, file.len);
|
|
|
+
|
|
|
+ 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;
|
|
|
log_post_reqn = 0;
|
|
@@ -2580,7 +2620,10 @@ void ssl_server(void *pvParameters)
|
|
|
if (log_post_reqn > 1)
|
|
|
{
|
|
|
|
|
|
- fs_open("/login.html", &file);
|
|
|
+ if((sSettings.sRADIUS.RDSEnable == true) && (fl_raddius_net_err == false))
|
|
|
+ fs_open("/rslogin.html", &file);
|
|
|
+ else
|
|
|
+ fs_open("/login.html", &file);
|
|
|
ssl_sendframes(&ssl, file.data, file.len);
|
|
|
|
|
|
post_data_count = 0;
|
|
@@ -2596,7 +2639,10 @@ void ssl_server(void *pvParameters)
|
|
|
log_post_reqn = 0;
|
|
|
|
|
|
|
|
|
- fs_open("/login.html", &file);
|
|
|
+ if((sSettings.sRADIUS.RDSEnable == true) && (fl_raddius_net_err == false))
|
|
|
+ fs_open("/rslogin.html", &file);
|
|
|
+ else
|
|
|
+ fs_open("/login.html", &file);
|
|
|
ssl_sendframes(&ssl, file.data, file.len);
|
|
|
}
|
|
|
}
|
|
@@ -2610,15 +2656,22 @@ void ssl_server(void *pvParameters)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- fs_open("/login.html", &file);
|
|
|
- ssl_sendframes(&ssl, file.data, file.len);
|
|
|
+
|
|
|
+ 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;
|
|
|
log_post_reqn = 0;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- fs_open("/login.html", &file);
|
|
|
+ if((sSettings.sRADIUS.RDSEnable == true) && (fl_raddius_net_err == false))
|
|
|
+ fs_open("/rslogin.html", &file);
|
|
|
+ else
|
|
|
+ fs_open("/login.html", &file);
|
|
|
ssl_sendframes(&ssl, file.data, file.len);
|
|
|
}
|
|
|
}
|