Merge pull request #10451 from gorootde/feature/basic-auth-support

Added support for basic auth
This commit is contained in:
Theo Arends 2021-01-08 10:07:27 +01:00 committed by GitHub
commit ff631ac322
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2607,17 +2607,22 @@ void HandleHttpCommand(void)
AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_COMMAND)); AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_COMMAND));
if (strlen(SettingsText(SET_WEBPWD))) { if (strlen(SettingsText(SET_WEBPWD))) {
//Prefer authorization via HTTP header (Basic auth), if it fails, use legacy method via GET parameters
if (!Webserver->authenticate(WEB_USERNAME, SettingsText(SET_WEBPWD))) {
char tmp1[33]; char tmp1[33];
WebGetArg("user", tmp1, sizeof(tmp1)); WebGetArg("user", tmp1, sizeof(tmp1));
char tmp2[strlen(SettingsText(SET_WEBPWD)) +1]; char tmp2[strlen(SettingsText(SET_WEBPWD)) + 1];
WebGetArg("password", tmp2, sizeof(tmp2)); WebGetArg("password", tmp2, sizeof(tmp2));
if (!(!strcmp(tmp1, WEB_USERNAME) && !strcmp(tmp2, SettingsText(SET_WEBPWD)))) {
if (!(!strcmp(tmp1, WEB_USERNAME) && !strcmp(tmp2, SettingsText(SET_WEBPWD))))
{
WSContentBegin(401, CT_JSON); WSContentBegin(401, CT_JSON);
WSContentSend_P(PSTR("{\"" D_RSLT_WARNING "\":\"" D_NEED_USER_AND_PASSWORD "\"}")); WSContentSend_P(PSTR("{\"" D_RSLT_WARNING "\":\"" D_NEED_USER_AND_PASSWORD "\"}"));
WSContentEnd(); WSContentEnd();
return; return;
} }
} }
}
WSContentBegin(200, CT_JSON); WSContentBegin(200, CT_JSON);
String svalue = Webserver->arg("cmnd"); String svalue = Webserver->arg("cmnd");