631dcdc2e8
# Conflicts: # common/ASC.Data.Backup.Core/Core/FileBackupProvider.cs # common/ASC.Data.Backup.Core/Storage/BackupRepository.cs # common/ASC.Data.Backup.Core/Storage/DocumentsBackupStorage.cs # common/ASC.Data.Backup.Core/Tasks/BackupPortalTask.cs # common/ASC.Data.Backup.Core/Tasks/DeletePortalTask.cs # common/ASC.Data.Storage/CrossModuleTransferUtility.cs # common/ASC.Data.Storage/DiscStorage/DiscDataStore.cs # common/ASC.Data.Storage/Extensions.cs # common/ASC.Data.Storage/GoogleCloud/GoogleCloudStorage.cs # common/ASC.Data.Storage/RackspaceCloud/RackspaceCloudStorage.cs # common/ASC.Data.Storage/S3/S3Storage.cs # common/ASC.Data.Storage/StorageHandler.cs # common/services/ASC.ApiSystem/Controllers/PortalController.cs # products/ASC.CRM/Server/Api/VoipController.cs # products/ASC.CRM/Server/Core/Dao/RelationshipEventDao.cs # products/ASC.CRM/Server/Utils/PdfCreator.cs # products/ASC.Files/Core/Core/Dao/TeamlabDao/FileDao.cs # products/ASC.Files/Core/Core/Dao/TeamlabDao/FolderDao.cs # products/ASC.Files/Core/Core/Dao/TeamlabDao/TagDao.cs # products/ASC.Files/Core/Core/FileStorageService.cs # products/ASC.Files/Core/Core/Security/FileSecurity.cs # products/ASC.Files/Core/Core/Thirdparty/Box/BoxFileDao.cs # products/ASC.Files/Core/Core/Thirdparty/Box/BoxFolderDao.cs # products/ASC.Files/Core/Core/Thirdparty/CrossDao.cs # products/ASC.Files/Core/Core/Thirdparty/Dropbox/DropboxFileDao.cs # products/ASC.Files/Core/Core/Thirdparty/Dropbox/DropboxFolderDao.cs # products/ASC.Files/Core/Core/Thirdparty/GoogleDrive/GoogleDriveFileDao.cs # products/ASC.Files/Core/Core/Thirdparty/GoogleDrive/GoogleDriveFolderDao.cs # products/ASC.Files/Core/Core/Thirdparty/GoogleDrive/GoogleDriveStorage.cs # products/ASC.Files/Core/Core/Thirdparty/IThirdPartyProviderDao.cs # products/ASC.Files/Core/Core/Thirdparty/OneDrive/OneDriveFileDao.cs # products/ASC.Files/Core/Core/Thirdparty/OneDrive/OneDriveFolderDao.cs # products/ASC.Files/Core/Core/Thirdparty/OneDrive/OneDriveStorage.cs # products/ASC.Files/Core/Core/Thirdparty/ProviderAccountDao.cs # products/ASC.Files/Core/Core/Thirdparty/ProviderDao/ProviderDaoBase.cs # products/ASC.Files/Core/Core/Thirdparty/ProviderDao/ProviderFileDao.cs # products/ASC.Files/Core/Core/Thirdparty/ProviderDao/ProviderFolderDao.cs # products/ASC.Files/Core/Core/Thirdparty/ProviderDao/ProviderSecutiryDao.cs # products/ASC.Files/Core/Core/Thirdparty/SharePoint/SharePointFileDao.cs # products/ASC.Files/Core/Core/Thirdparty/SharePoint/SharePointProviderInfo.cs # products/ASC.Files/Core/Core/Thirdparty/Sharpbox/SharpBoxFileDao.cs # products/ASC.Files/Core/Core/Thirdparty/Sharpbox/SharpBoxFolderDao.cs # products/ASC.Files/Core/HttpHandlers/FileHandler.ashx.cs # products/ASC.Files/Core/HttpHandlers/SearchHandler.cs # products/ASC.Files/Core/Services/DocumentService/Configuration.cs # products/ASC.Files/Core/Services/DocumentService/DocumentServiceConnector.cs # products/ASC.Files/Core/Services/DocumentService/DocumentServiceTracker.cs # products/ASC.Files/Core/Services/WCFService/FileOperations/FileDownloadOperation.cs # products/ASC.Files/Core/Services/WCFService/FileOperations/FileMarkAsReadOperation.cs # products/ASC.Files/Core/Services/WCFService/FileOperations/FileMoveCopyOperation.cs # products/ASC.Files/Core/ThirdPartyApp/BoxApp.cs # products/ASC.Files/Core/ThirdPartyApp/GoogleDriveApp.cs # products/ASC.Files/Core/Utils/EntryManager.cs # products/ASC.Files/Core/Utils/FileConverter.cs # products/ASC.Files/Core/Utils/FileMarker.cs # products/ASC.Files/Core/Utils/MailMergeTask.cs # products/ASC.Files/Server/Helpers/FilesControllerHelper.cs # web/ASC.Web.Core/Files/DocumentService.cs # web/ASC.Web.Core/Files/DocumentServiceLicense.cs # web/ASC.Web.Core/Helpers/ApiSystemHelper.cs # web/ASC.Web.Core/Recaptcha.cs # web/ASC.Web.Core/Utility/UrlShortener.cs
75 lines
2.2 KiB
C#
75 lines
2.2 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Net.Http;
|
|
using System.Security.Authentication;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
using ASC.Common;
|
|
using ASC.Web.Studio.Core;
|
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
namespace ASC.Web.Core
|
|
{
|
|
public class RecaptchaException : InvalidCredentialException
|
|
{
|
|
public RecaptchaException()
|
|
{
|
|
}
|
|
|
|
public RecaptchaException(string message)
|
|
: base(message)
|
|
{
|
|
}
|
|
}
|
|
|
|
[Scope]
|
|
public class Recaptcha
|
|
{
|
|
private SetupInfo SetupInfo { get; }
|
|
private IHttpClientFactory ClientFactory { get; }
|
|
|
|
public Recaptcha(SetupInfo setupInfo, IHttpClientFactory clientFactory)
|
|
{
|
|
SetupInfo = setupInfo;
|
|
ClientFactory = clientFactory;
|
|
}
|
|
|
|
public async Task<bool> ValidateRecaptchaAsync(string response, string ip)
|
|
{
|
|
try
|
|
{
|
|
var data = $"secret={SetupInfo.RecaptchaPrivateKey}&remoteip={ip}&response={response}";
|
|
|
|
var request = new HttpRequestMessage();
|
|
request.RequestUri = new Uri(SetupInfo.RecaptchaVerifyUrl);
|
|
request.Method = HttpMethod.Post;
|
|
request.Content = new StringContent(data, Encoding.UTF8, "application/x-www-form-urlencoded");
|
|
|
|
var httpClient = ClientFactory.CreateClient();
|
|
using var httpClientResponse = await httpClient.SendAsync(request);
|
|
using (var reader = new StreamReader(await httpClientResponse.Content.ReadAsStreamAsync()))
|
|
{
|
|
var resp = await reader.ReadToEndAsync();
|
|
var resObj = JObject.Parse(resp);
|
|
|
|
if (resObj["success"] != null && resObj.Value<bool>("success"))
|
|
{
|
|
return true;
|
|
}
|
|
if (resObj["error-codes"] != null && resObj["error-codes"].HasValues)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|
|
}
|