예제 #1
0
 protected override void AddArguments()
 {
     _nameArg = CommandArgumentValue.AddArgument("un", "userName", new[] { "User name" }, true,
                                                 1);
     _passwordArg = CommandArgumentValue.AddArgument("p", "password", new[] { "New password of user" }, true,
                                                     1);
 }
예제 #2
0
 protected override void AddArguments()
 {
     _clientUri   = CommandArgumentValue.AddArgument("u", "clientUri", new[] { "URI of client" }, false, 1);
     _redirectUri = CommandArgumentValue.AddArgument("ru", "redirectUri", new[] { "Redirect URI for login procedure" }, false, 1);
     _clientId    = CommandArgumentValue.AddArgument("id", "clientId", new[] { "ServiceClient ID, must be unique" }, false, 1);
     _clientName  = CommandArgumentValue.AddArgument("n", "name", new[] { "Display name of client used for grants" }, false, 1);
 }
예제 #3
0
 protected override void AddArguments()
 {
     _tenantIdArg = CommandArgumentValue.AddArgument("tid", "tenantId", new[] { "Id of tenant" },
                                                     true, 1);
     _databaseArg = CommandArgumentValue.AddArgument("db", "database", new[] { "Name of database" }, true,
                                                     1);
 }
예제 #4
0
        public override Task Execute()
        {
            Logger.Info("Configuring the tool");

            if (CommandArgumentValue.IsArgumentUsed(_tenantIdArg))
            {
                var tenantIdArgData = CommandArgumentValue.GetArgumentValue(_tenantIdArg);
                Options.Value.TenantId = tenantIdArgData.GetValue <string>().ToLower();
            }

            if (CommandArgumentValue.IsArgumentUsed(_coreServicesUriArg))
            {
                var coreServicesUriData = CommandArgumentValue.GetArgumentValue(_coreServicesUriArg);
                Options.Value.CoreServiceUrl = coreServicesUriData.GetValue <string>().ToLower();
            }

            if (CommandArgumentValue.IsArgumentUsed(_jobServicesUriArg))
            {
                var jobServicesUriData = CommandArgumentValue.GetArgumentValue(_jobServicesUriArg);
                Options.Value.JobServiceUrl = jobServicesUriData.GetValue <string>().ToLower();
            }

            if (CommandArgumentValue.IsArgumentUsed(_identityServicesUriArg))
            {
                var identityServicesUriData = CommandArgumentValue.GetArgumentValue(_identityServicesUriArg);
                Options.Value.IdentityServiceUrl = identityServicesUriData.GetValue <string>().ToLower();
            }

            _configWriter.WriteSettings(Constants.OspToolUserFolderName);

            return(Task.CompletedTask);
        }
예제 #5
0
 protected override async Task WaitForJob(string id)
 {
     if (CommandArgumentValue.IsArgumentUsed(_waitForJobArg))
     {
         await base.WaitForJob(id);
     }
 }
        protected override void AddArguments()
        {
            base.AddArguments();

            _fileArg  = CommandArgumentValue.AddArgument("f", "file", new[] { "File to import" }, true, 1);
            _scopeArg = CommandArgumentValue.AddArgument("s", "scope", new[] { "Scope to import, available is 'Application', 'Layer2', 'Layer3' or 'Layer4'" }, true, 1);
        }
예제 #7
0
        protected override void AddArguments()
        {
            base.AddArguments();

            _waitForJobArg = CommandArgumentValue.AddArgument("w", "wait",
                                                              new[] { "Wait for a import job to complete" }, false, 0);
        }
        public override async Task Execute()
        {
            var alias = CommandArgumentValue.GetArgumentScalarValue <string>(_alias);
            var type  = CommandArgumentValue.GetArgumentScalarValue <IdentityProviderTypesDto>(_type);

            Logger.Info($"Creating identity provider '{@alias}' at '{ServiceClient.ServiceUri}'");

            if (type == IdentityProviderTypesDto.Google)
            {
                var identityProviderDto = new GoogleIdentityProviderDto
                {
                    IsEnabled    = CommandArgumentValue.GetArgumentScalarValue <bool>(_enabled),
                    ClientId     = CommandArgumentValue.GetArgumentScalarValue <string>(_clientId),
                    ClientSecret = CommandArgumentValue.GetArgumentScalarValueOrDefault <string>(_clientSecret),
                    Alias        = alias
                };
                await ServiceClient.CreateIdentityProvider(identityProviderDto);
            }
            else if (type == IdentityProviderTypesDto.Microsoft)
            {
                var identityProviderDto = new MicrosoftIdentityProviderDto
                {
                    IsEnabled    = CommandArgumentValue.GetArgumentScalarValue <bool>(_enabled),
                    ClientId     = CommandArgumentValue.GetArgumentScalarValue <string>(_clientId),
                    ClientSecret = CommandArgumentValue.GetArgumentScalarValueOrDefault <string>(_clientSecret),
                    Alias        = alias
                };
                await ServiceClient.CreateIdentityProvider(identityProviderDto);
            }



            Logger.Info($"ServiceClient '{alias}' at '{ServiceClient.ServiceUri}' created.");
        }
        protected override void AddArguments()
        {
            _isEnabledArg = CommandArgumentValue.AddArgument("e", "enabled", new[] { "Enabled state of service hook" },
                                                             true, 1);
            _nameArg = CommandArgumentValue.AddArgument("n", "name", new[] { "Display name of service hook" },
                                                        true, 1);
            _ckIdArg = CommandArgumentValue.AddArgument("ck", "ckId",
                                                        new[] { "The construction kit id key the service hook is applied to" },
                                                        true, 1);
            _filterArg = CommandArgumentValue.AddArgument("f", "filter", new[]
            {
                "Filter arguments in form \"'{AttributeName}' {Operator} '{Value}'\"",
                "Sample: \"'State' Equals '2'\"",
                "Attribute name must be a valid argument of the defined entity",
                $"Possible operators: {string.Join(", ", Enum.GetNames(typeof(FieldFilterOperatorDto)))} ",
                "Value must be a string, integer, double, boolean, DateTime"
            },
                                                          true, 1, true);
            _serviceHookBaseUriArg = CommandArgumentValue.AddArgument("u", "uri",
                                                                      new[] { "The base uri of the service hook" },
                                                                      false, 1);

            _serviceHookActionArg = CommandArgumentValue.AddArgument("a", "action",
                                                                     new[] { "The action uri of the service hook" },
                                                                     false, 1);
        }
예제 #10
0
 protected override void AddArguments()
 {
     _eMailArg = CommandArgumentValue.AddArgument("e", "email",
                                                  new[] { "E-Mail of admin" }, 1);
     _passwordArg = CommandArgumentValue.AddArgument("p", "password",
                                                     new[] { "Password of admin" }, 1);
 }
        public override async Task Execute()
        {
            var clientIdArgData = CommandArgumentValue.GetArgumentValue(_clientId);
            var clientId        = clientIdArgData.GetValue <string>();

            var clientNameArgData = CommandArgumentValue.GetArgumentValue(_clientName);
            var clientName        = clientNameArgData.GetValue <string>();

            var clientSecretArgData = CommandArgumentValue.GetArgumentValue(_clientSecret);
            var clientSecret        = clientSecretArgData.GetValue <string>();

            Logger.Info($"Creating client '{clientId}' at '{ServiceClient.ServiceUri}'");

            var clientDto = new ClientDto
            {
                IsEnabled              = true,
                ClientId               = clientId,
                ClientName             = clientName,
                ClientSecret           = clientSecret,
                AllowedGrantTypes      = new[] { OidcConstants.GrantTypes.ClientCredentials },
                AllowedScopes          = new[] { CommonConstants.SystemApiFullAccess },
                IsOfflineAccessEnabled = true
            };

            await ServiceClient.CreateClient(clientDto);

            Logger.Info($"ServiceClient '{clientId}' at '{ServiceClient.ServiceUri}' created.");
        }
예제 #12
0
        public override async Task Execute()
        {
            var nameArgData = CommandArgumentValue.GetArgumentValue(_nameArg);
            var name        = nameArgData.GetValue <string>().ToLower();

            string newUserName = null;

            if (CommandArgumentValue.IsArgumentUsed(_newNameArg))
            {
                var newUserNameArgData = CommandArgumentValue.GetArgumentValue(_newNameArg);
                newUserName = newUserNameArgData.GetValue <string>().ToLower();
            }

            string roleName = null;

            if (CommandArgumentValue.IsArgumentUsed(_roleArg))
            {
                var roleArgData = CommandArgumentValue.GetArgumentValue(_roleArg);
                roleName = roleArgData.GetValue <string>().ToLower();
            }

            string eMail = null;

            if (CommandArgumentValue.IsArgumentUsed(_eMailArg))
            {
                var eMailArgData = CommandArgumentValue.GetArgumentValue(_eMailArg);
                eMail = eMailArgData.GetValue <string>().ToLower();
            }

            Logger.Info($"Updating user '{name}' at '{ServiceClient.ServiceUri}'");

            var userDto = new UserDto
            {
                Email = eMail,
                Name  = newUserName,
                Roles = new List <RoleDto>()
            };

            if (!string.IsNullOrWhiteSpace(roleName))
            {
                RoleDto roleDto;
                try
                {
                    roleDto = await ServiceClient.GetRoleByName(roleName);
                }
                catch (ServiceClientResultException)
                {
                    Logger.Error($"Role '{roleName}' does not exist at '{ServiceClient.ServiceUri}'");
                    return;
                }

                userDto.Roles = new[] { roleDto };
            }

            await ServiceClient.UpdateUser(name, userDto);

            Logger.Info($"User '{name}' updated.");
        }
        public override async Task Execute()
        {
            var isEnabled          = CommandArgumentValue.GetArgumentScalarValue <bool>(_isEnabledArg);
            var name               = CommandArgumentValue.GetArgumentScalarValue <string>(_nameArg);
            var serviceHookBaseUri = CommandArgumentValue.GetArgumentScalarValue <string>(_serviceHookBaseUriArg);
            var serviceHookAction  = CommandArgumentValue.GetArgumentScalarValue <string>(_serviceHookActionArg);
            var ckId               = CommandArgumentValue.GetArgumentScalarValue <string>(_ckIdArg);

            var filterArgData = CommandArgumentValue.GetArgumentValue(_filterArg);

            Logger.Info(
                $"Creating service hook for entity '{ckId}' at '{ServiceClient.ServiceUri}'");

            List <FieldFilterDto> fieldFilters = new List <FieldFilterDto>();

            foreach (var filterArg in filterArgData.Values)
            {
                var terms = filterArg.Split(" ");
                if (terms.Length != 3)
                {
                    throw new InvalidOperationException($"Filter term '{filterArg}' is invalid. Three terms needed.");
                }

                var attribute = terms[0].Trim('\'');
                if (!Enum.TryParse(terms[1], true, out FieldFilterOperatorDto operatorDto))
                {
                    throw new InvalidOperationException($"Operator '{terms[1]}' of term '{filterArg}' is invalid.");
                }

                var comparisionValue = terms[2].Trim('\'');

                fieldFilters.Add(new FieldFilterDto
                {
                    AttributeName = attribute, Operator = operatorDto, ComparisonValue = comparisionValue
                });
            }

            var createServiceHookDto = new ServiceHookMutationDto
            {
                Enabled            = isEnabled,
                Name               = name,
                QueryCkId          = ckId,
                FieldFilter        = JsonConvert.SerializeObject(fieldFilters),
                ServiceHookBaseUri = serviceHookBaseUri,
                ServiceHookAction  = serviceHookAction
            };

            var query = new GraphQLRequest
            {
                Query     = GraphQl.CreateServiceHook,
                Variables = new { entities = new[] { createServiceHookDto } }
            };

            var result = await ServiceClient.SendMutationAsync <IEnumerable <RtServiceHookDto> >(query);

            Logger.Info($"Service hook '{name}' added (ID '{result.First().RtId}').");
        }
 protected override void AddArguments()
 {
     _clientId = CommandArgumentValue.AddArgument("id", "clientId", new[] { "ServiceClient ID, must be unique" }, true,
                                                  1);
     _clientName = CommandArgumentValue.AddArgument("n", "name", new[] { "Display name of client used for grants" }, true,
                                                    1);
     _clientSecret = CommandArgumentValue.AddArgument("s", "secret", new[] { "Secret that is used for client credential authentication" }, true,
                                                      1);
 }
 protected override void AddArguments()
 {
     _alias = CommandArgumentValue.AddArgument("a", "alias", new[] { "Alias of identity provider, must be unique" }, true,
                                               1);
     _enabled = CommandArgumentValue.AddArgument("e", "enabled", new[] { "True if identity provider should be enabled, otherwise false" }, true,
                                                 1);
     _clientId     = CommandArgumentValue.AddArgument("cid", "clientId", new[] { "ServiceClient ID, provided by provider" }, true, 1);
     _clientSecret = CommandArgumentValue.AddArgument("cs", "clientSecret", new[] { "ServiceClient secret, provided by provider" }, true, 1);
     _type         = CommandArgumentValue.AddArgument("t", "type", new[] { "Type of provider, available is 'google' or 'microsoft'" }, true, 1);
 }
예제 #16
0
        public override async Task Execute()
        {
            var nameArgData = CommandArgumentValue.GetArgumentValue(_nameArg);
            var name        = nameArgData.GetValue <string>().ToLower();

            Logger.Info($"Deleting user '{name}' at '{ServiceClient.ServiceUri}'");

            await ServiceClient.DeleteUser(name);

            Logger.Info($"User '{name}' deleted.");
        }
예제 #17
0
 protected override void AddArguments()
 {
     _eMailArg = CommandArgumentValue.AddArgument("e", "eMail", new[] { "E-Mail of user" },
                                                  false, 1);
     _nameArg = CommandArgumentValue.AddArgument("un", "userName", new[] { "User name" }, true,
                                                 1);
     _newNameArg = CommandArgumentValue.AddArgument("nun", "newUserName", new[] { "New user name, if the user name has to be changed" }, false,
                                                    1);
     _roleArg = CommandArgumentValue.AddArgument("r", "role", new[] { "Role of user" }, false,
                                                 1);
 }
 protected override void AddArguments()
 {
     _id = CommandArgumentValue.AddArgument("id", "identifier", new[] { "ID of identity provider, must be unique" }, true,
                                            1);
     _alias = CommandArgumentValue.AddArgument("a", "alias", new[] { "Alias of identity provider, must be unique" }, true,
                                               1);
     _enabled = CommandArgumentValue.AddArgument("e", "enabled", new[] { "True if identity provider should be enabled, otherwise false" }, true,
                                                 1);
     _clientId     = CommandArgumentValue.AddArgument("cid", "clientId", new[] { "ServiceClient ID, provided by provider" }, true, 1);
     _clientSecret = CommandArgumentValue.AddArgument("cs", "clientSecret", new[] { "ServiceClient secret, provided by provider" }, true, 1);
 }
예제 #19
0
 protected override void AddArguments()
 {
     _coreServicesUriArg = CommandArgumentValue.AddArgument("csu", "coreServicesUri",
                                                            new[] { "URI of core services (e. g. 'https://localhost:5001/')" }, 1);
     _jobServicesUriArg = CommandArgumentValue.AddArgument("jsu", "jobServicesUri",
                                                           new[] { "URI of job services (e. g. 'https://localhost:5009/')" }, 1);
     _identityServicesUriArg = CommandArgumentValue.AddArgument("isu", "identityServicesUri",
                                                                new[] { "URI of identity services (e. g. 'https://localhost:5003/')" }, 1);
     _tenantIdArg = CommandArgumentValue.AddArgument("tid", "tenantId",
                                                     new[] { "Id of tenant (e. g. 'myService')" }, 1);
 }
예제 #20
0
        public override async Task Execute()
        {
            var id = CommandArgumentValue.GetArgumentScalarValue <string>(_id);


            Logger.Info($"Deleting identity provider '{id}' from '{ServiceClient.ServiceUri}'");

            await ServiceClient.DeleteIdentityProvider(id);

            Logger.Info($"Identity provider '{id}' deleted.");
        }
예제 #21
0
        public override async Task Execute()
        {
            var tenantIdArgData = CommandArgumentValue.GetArgumentValue(_tenantIdArg);
            var tenantId        = tenantIdArgData.GetValue <string>().ToLower();

            Logger.Info($"Clearing cache tenant '{tenantId}' on at '{ServiceClient.ServiceUri}'");

            await ServiceClient.ClearTenantCache(tenantId);

            Logger.Info($"Tenant cache '{tenantId}' on at '{ServiceClient.ServiceUri}' cleared.");
        }
예제 #22
0
        public override async Task Execute()
        {
            var tenantIdArgData = CommandArgumentValue.GetArgumentValue(_tenantIdArg);
            var tenantId        = tenantIdArgData.GetValue <string>().ToLower();

            Logger.Info($"Detach tenant '{tenantId}' at '{ServiceClient.ServiceUri}'");

            await ServiceClient.DetachTenant(tenantId);

            Logger.Info($"Tenant '{tenantId}' at '{ServiceClient.ServiceUri}' detached.");
        }
예제 #23
0
        public override async Task Execute()
        {
            var clientIdArgData = CommandArgumentValue.GetArgumentValue(_clientId);
            var clientId        = clientIdArgData.GetValue <string>();


            Logger.Info($"Deleting client '{clientId}' from '{ServiceClient.ServiceUri}'");

            await ServiceClient.DeleteClient(clientId);

            Logger.Info($"ServiceClient '{clientId}' deleted.");
        }
예제 #24
0
        public override async Task Execute()
        {
            Logger.Info("Adding admin");

            var eMail    = CommandArgumentValue.GetArgumentScalarValue <string>(_eMailArg);
            var password = CommandArgumentValue.GetArgumentScalarValue <string>(_passwordArg);

            await _identityServicesSetupClient.AddAdminUser(new AdminUserDto
            {
                EMail    = eMail,
                Password = password
            });
        }
        public override async Task Execute()
        {
            var serviceHookId = CommandArgumentValue.GetArgumentScalarValue <string>(_serviceHookIdArg);

            Logger.Info($"Deleting service hook '{serviceHookId}' at '{_tenantClient.ServiceUri}'");

            var getQuery = new GraphQLRequest
            {
                Query     = GraphQl.GetServiceHookDetails,
                Variables = new
                {
                    rtId = serviceHookId
                }
            };

            var getResult = await _tenantClient.SendQueryAsync <RtServiceHookDto>(getQuery);

            if (!getResult.Items.Any())
            {
                throw new InvalidOperationException(
                          $"Service Hook with ID '{serviceHookId}' does not exist.");
            }

            var serviceHookDto = getResult.Items.First();

            var deleteMutation = new GraphQLRequest
            {
                Query     = GraphQl.DeleteServiceHook,
                Variables = new
                {
                    entities = new[]
                    {
                        new MutationDto
                        {
                            RtId = serviceHookDto.RtId
                        }
                    }
                }
            };

            var result = await _tenantClient.SendMutationAsync <bool>(deleteMutation);

            if (result)
            {
                Logger.Info($"Service hook '{serviceHookId}' deleted.");
            }
            else
            {
                Logger.Error($"Service hook '{serviceHookId}' delete failed.");
            }
        }
예제 #26
0
        public override async Task Execute()
        {
            var nameArgData = CommandArgumentValue.GetArgumentValue(_nameArg);
            var name        = nameArgData.GetValue <string>().ToLower();

            var passwordArgData = CommandArgumentValue.GetArgumentValue(_passwordArg);
            var password        = passwordArgData.GetValue <string>();

            Logger.Info($"Resetting password for user '{name}' at '{ServiceClient.ServiceUri}'");

            await ServiceClient.ResetPassword(name, password);

            Logger.Info($"Resetting password for user '{name}' done.");
        }
예제 #27
0
        public override async Task Execute()
        {
            var tenantIdArgData = CommandArgumentValue.GetArgumentValue(_tenantIdArg);
            var tenantId        = tenantIdArgData.GetValue <string>().ToLower();

            var databaseArgData = CommandArgumentValue.GetArgumentValue(_databaseArg);
            var databaseName    = databaseArgData.GetValue <string>().ToLower();

            Logger.Info($"Creating tenant '{tenantId}' (database '{databaseName}') at '{ServiceClient.ServiceUri}'");

            await ServiceClient.CreateTenant(tenantId, databaseName);

            Logger.Info($"Tenant '{tenantId}' (database '{databaseName}') at '{ServiceClient.ServiceUri}' created.");
        }
예제 #28
0
        public override async Task Execute()
        {
            bool isInteractive = CommandArgumentValue.IsArgumentUsed(_interactiveArg);

            Logger.Info($"Device log-in at '{Options.Value.IdentityServiceUrl}' in progress...");

            var response = await _authenticatorClient.RequestDeviceAuthorizationAsync(
                CommonConstants.ApiScopes.IdentityApiFullAccess | CommonConstants.ApiScopes.SystemApiFullAccess |
                CommonConstants.ApiScopes.JobApiFullAccess);

            Logger.Info($"Device Code: {response.DeviceCode}");
            Logger.Info($"Estimated code expiration at: {response.ExpiresAt}");
            Logger.Info("");
            Logger.Info("");
            Logger.Info($"Using a browser, visit:");
            Logger.Info($"{response.VerificationUri}");
            Logger.Info($"Enter the code:");
            Logger.Info($"{response.UserCode}");

            if (isInteractive)
            {
                Logger.Info($"Opening default browser...");
                Process.Start(new ProcessStartInfo(response.VerificationUriComplete)
                {
                    UseShellExecute = true
                });
            }


            while (true)
            {
                Logger.Info("Waiting for device authentication...");
                Thread.Sleep(response.PollingInterval * 1000);

                var authenticationData = await _authenticatorClient.RequestDeviceTokenAsync(response.DeviceCode);

                if (authenticationData.IsAuthenticationPending)
                {
                    Thread.Sleep(response.PollingInterval * 1000);
                    continue;
                }

                _authenticationService.SaveAuthenticationData(authenticationData);

                Logger.Info($"Device log-in successful. Token expires at '{authenticationData.ExpiresAt}'.");
                break;
            }
        }
예제 #29
0
        public override async Task Execute()
        {
            Logger.Info(
                $"Resetting notification messages at '{Options.Value.CoreServiceUrl}' for tenant '{Options.Value.TenantId}'");

            var type = CommandArgumentValue.GetArgumentScalarValue <NotificationTypesDto>(_type);

            var filterList = new List <FieldFilterDto>
            {
                new FieldFilterDto
                {
                    AttributeName   = nameof(NotificationMessageDto.SendStatus),
                    Operator        = FieldFilterOperatorDto.Equals,
                    ComparisonValue = SendStatusDto.Error
                },
                new FieldFilterDto
                {
                    AttributeName   = nameof(NotificationMessageDto.NotificationType),
                    Operator        = FieldFilterOperatorDto.Equals,
                    ComparisonValue = type
                }
            };

            var getQuery = new GraphQLRequest
            {
                Query     = GraphQl.GetNotifications,
                Variables = new { fieldFilters = filterList.ToArray() }
            };

            var getResult = await _tenantClient.SendQueryAsync <NotificationMessageDto>(getQuery);

            if (!getResult.Items.Any())
            {
                Logger.Info($"No notifications in error has been returned.");
                return;
            }
            Logger.Info($"{getResult.Items.Count()} notification messages in error has been returned.");

            foreach (var notificationMessageDto in getResult.Items)
            {
                notificationMessageDto.LastTryDateTime = DateTime.UtcNow.AddMinutes(-10);
                notificationMessageDto.SendStatus      = SendStatusDto.Pending;
            }

            await _notificationRepository.StoreNotificationMessages(Options.Value.TenantId, getResult.Items);

            Logger.Info($"Reset notficiation messages completed.");
        }
예제 #30
0
        public override async Task Execute()
        {
            var fileArgData     = CommandArgumentValue.GetArgumentValue(_fileArg);
            var rtModelFilePath = fileArgData.GetValue <string>().ToLower();

            var tenantId = Options.Value.TenantId;

            if (string.IsNullOrWhiteSpace(tenantId))
            {
                throw new ServiceConfigurationMissingException("Tenant is missing.");
            }

            Logger.Info("Importing runtime model '{0}'", rtModelFilePath);

            var id = await _coreServicesClient.ImportRtModel(tenantId, rtModelFilePath);

            Logger.Info($"Runtime model import id '{id}' has been started.");
            await WaitForJob(id);
        }