protected override ExternalUnit OnCheckStatus(ExternalUnit externalUnit)
        {
            if (string.IsNullOrWhiteSpace(options.ConnectionString))
            {
                return(externalUnit.SetStatus(UnitStatus.NotOk, $"Database connection string is required."));
            }

            if (connectionType == null)
            {
                return(externalUnit.SetStatus(UnitStatus.NotOk, $"Cannot load database connection type: {string.Join(", ", ConnectionTypeNames)}."));
            }

            using var connection = CreateConnection();
            connection.Open();

            using var command   = connection.CreateCommand();
            command.CommandText = VersionQuery;

            externalUnit.ServerPlatform = new ServerPlatform
            {
                Name    = PlatformName,
                Version = Convert.ToString(command.ExecuteScalar())
            };

            return(externalUnit.SetStatus(UnitStatus.Ok));
        }
        protected override ExternalUnit OnCheckStatus(ExternalUnit externalUnit)
        {
            if (string.IsNullOrWhiteSpace(options.StoragePath))
            {
                return(externalUnit.SetStatus(UnitStatus.NotOk, "File storage path is required."));
            }

            var directory = new DirectoryInfo(options.StoragePath);

            if (!directory.Exists)
            {
                return(externalUnit.SetStatus(UnitStatus.NotOk, "File storage path doesn't exist or is not accessible."));
            }

            var accessControl       = directory.GetAccessControl();
            var accessRules         = accessControl?.GetAccessRules(true, true, typeof(SecurityIdentifier));
            var applicationIdentity = WindowsIdentity.GetCurrent();

            if (options.RequireRead && !HasRights(accessRules, applicationIdentity, FileSystemRights.Read))
            {
                return(externalUnit.SetStatus(UnitStatus.NotOk, "File storage path doesn't have reading rights."));
            }

            if (options.RequireWrite && !HasRights(accessRules, applicationIdentity, FileSystemRights.Write))
            {
                return(externalUnit.SetStatus(UnitStatus.NotOk, "File storage path doesn't have writing rights."));
            }

            return(externalUnit.SetStatus(UnitStatus.Ok));
        }
Exemple #3
0
        public virtual async Task <ExternalUnit> CheckStatusAsync(CancellationToken cancellationToken)
        {
            var externalUnit = new ExternalUnit {
                Name = Name
            };

            try
            {
                externalUnit.Uri = string.IsNullOrWhiteSpace(options.DisplayUri) ? DisplayUri : options.DisplayUri;

                return(await OnCheckStatusAsync(externalUnit, cancellationToken));
            }
            catch (Exception exception)
            {
                return(externalUnit.SetStatus(UnitStatus.NotOk, exception.Message));
            }
        }
Exemple #4
0
        protected override async Task <ExternalUnit> OnCheckStatusAsync(ExternalUnit externalUnit, CancellationToken cancellationToken)
        {
            if (string.IsNullOrWhiteSpace(options.Uri))
            {
                return(externalUnit.SetStatus(UnitStatus.NotOk, "Web service uri is required."));
            }

            var request = (HttpWebRequest)WebRequest.Create(options.Uri);

            request.Method = "GET";
            request.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true;

            using var response = (HttpWebResponse) await request.GetResponseAsync();

            return(response.StatusCode == HttpStatusCode.OK
                ? externalUnit.SetStatus(UnitStatus.Ok)
                : externalUnit.SetStatus(UnitStatus.NotOk, "Status check failed (code: {0}; description: `{1}`)", response.StatusCode, response.StatusDescription));
        }
        protected override async Task <ExternalUnit> OnCheckStatusAsync(ExternalUnit externalUnit, CancellationToken cancellationToken)
        {
            externalUnit.ServerPlatform = new ServerPlatform {
                Name = "X-Road"
            };

            if (!IsValidProtocolVersion(options.ProtocolVersion))
            {
                return(externalUnit.SetStatus(UnitStatus.NotOk, "X-Road protocol version is required."));
            }

            if (string.IsNullOrWhiteSpace(options.Uri))
            {
                return(externalUnit.SetStatus(UnitStatus.NotOk, "X-Road security server uri is required."));
            }

            if (string.IsNullOrWhiteSpace(options.ProducerName))
            {
                return(externalUnit.SetStatus(UnitStatus.NotOk, "X-Road producer name is required."));
            }

            if (string.IsNullOrWhiteSpace(options.Consumer))
            {
                return(externalUnit.SetStatus(UnitStatus.NotOk, "X-Road consumer is required."));
            }

            if (string.IsNullOrWhiteSpace(options.UserId))
            {
                return(externalUnit.SetStatus(UnitStatus.NotOk, "X-Road user id is required."));
            }

            var statusCode = await GetStatusCodeAsync();

            return(statusCode == 1
                ? externalUnit.SetStatus(UnitStatus.Ok)
                : externalUnit.SetStatus(UnitStatus.NotOk, $"Status check returned {statusCode} as result."));
        }
Exemple #6
0
 protected virtual Task <ExternalUnit> OnCheckStatusAsync(ExternalUnit externalUnit, CancellationToken cancellationToken) =>
 Task.FromResult(OnCheckStatus(externalUnit));
Exemple #7
0
 protected virtual ExternalUnit OnCheckStatus(ExternalUnit externalUnit) =>
 externalUnit;