public override async Task <IsPublicAccessibleReply> IsPublicAccessible(IsPublicAccessibleRequest request, ServerCallContext context) { bool isInstalled = _configurationProvider.TryGet(InstallService.INSTALLED_KEY, out string installedValue); if (isInstalled) { AppUser user = await _userManager.GetUserAsync(context.GetHttpContext().User); bool isInRole = await _userManager.IsInRoleAsync(user, "admin"); if (!isInRole) { throw new Exception("Unauthorized access"); } } HttpClient client = _httpClientFactory.CreateClient(); Guid challenge = Guid.NewGuid(); ConnectivityCheckRequest connectivityCheckRequest = new ConnectivityCheckRequest { Hostname = request.Hostname, Challenge = challenge.ToString(), }; StringContent content = new StringContent(JsonSerializer.Serialize <ConnectivityCheckRequest>(connectivityCheckRequest)); content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); try { HttpResponseMessage responseMessage = await client.PostAsync("https://connectivity-check-services.gatekeeper.page", content, context.CancellationToken); string responseBody = await responseMessage.Content.ReadAsStringAsync(); ConnectivityCheckResponse response = JsonSerializer.Deserialize <ConnectivityCheckResponse>(responseBody); return(new IsPublicAccessibleReply { State = (response.Success ? IsPublicAccessibleReply.Types.AccessibleReplyEnum.Success : IsPublicAccessibleReply.Types.AccessibleReplyEnum.Failure), }); } catch { } return(new IsPublicAccessibleReply { State = IsPublicAccessibleReply.Types.AccessibleReplyEnum.Unknown }); }
public async Task <FormValidatorResponse> Check(string value, CancellationToken cancellationToken) { IsPublicAccessibleRequest request = new IsPublicAccessibleRequest { Hostname = value, }; try { IsPublicAccessibleReply reply = await _connectivityCheckServiceClient.IsPublicAccessibleAsync(request, null, null, cancellationToken); if (reply.State == IsPublicAccessibleReply.Types.AccessibleReplyEnum.Success) { return(new FormValidatorResponse(true, null)); } } catch { } return(new FormValidatorResponse(false, "Domain does not point to this server")); }