| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- // Copyright 2019 Yunion
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- package options
- import (
- "yunion.io/x/onecloud/pkg/cloudcommon/options"
- )
- type SKeystoneOptions struct {
- options.BaseOptions
- options.DBOptions
- AdminPort int `default:"35357" help:"listening port for admin API(deprecated)"`
- TokenExpirationSeconds int `default:"86400" help:"token expiration seconds" token:"expiration"`
- FernetKeyRepository string `help:"fernet key repo directory" token:"key_repository" default:"/etc/yunion/keystone/fernet-keys"`
- SetupCredentialKeys bool `help:"setup standalone fernet keys for credentials" token:"setup_credential_key" default:"false" json:",allowfalse"`
- BootstrapAdminUserPassword string `help:"bootstreap sysadmin user password" default:"sysadmin"`
- ResetAdminUserPassword bool `help:"reset sysadmin password if exists and this option is true" json:",allowfalse"`
- AutoSyncIntervalSeconds int `help:"frequency to check auto sync tasks" default:"30"`
- DefaultSyncIntervalSeconds int `help:"frequency to do auto sync tasks" default:"900"`
- FetchScopeResourceCountIntervalSeconds int `help:"frequency tp fetch project resource counts" default:"900"`
- PasswordExpirationSeconds int `help:"password expires after the duration in seconds"`
- PasswordMinimalLength int `help:"password minimal length" default:"6"`
- PasswordUniqueHistoryCheck int `help:"password must be unique in last N passwords, default is 0 means no check" default:"0"`
- PasswordCharComplexity int `help:"password complexity policy" default:"0"`
- PasswordErrorLockCount int `help:"lock user account if given number of failed auth"`
- DefaultUserQuota int `default:"500" help:"default quota for user per domain, default is 500"`
- DefaultGroupQuota int `default:"500" help:"default quota for group per domain, default is 500"`
- DefaultProjectQuota int `default:"500" help:"default quota for project per domain, default is 500"`
- DefaultRoleQuota int `default:"500" help:"default quota for role per domain, default is 500"`
- DefaultPolicyQuota int `default:"500" help:"default quota for policy per domain, default is 500"`
- SessionEndpointType string `help:"Client session end point type"`
- // AllowJoinProjectsAcrossDomains bool `help:"allow users/groups to join projects across domains" default:"false"`
- DefaultUserLanguage string `help:"default user language, default to zh-CN" default:"zh-CN"`
- DomainAdminRoleToNotify string `help:"domain admin role to notify" default:"domainadmin"`
- AdminRoleToNotify string `help:"admin role to notify" default:"admin"`
- EnableDefaultDashboardPolicy bool `default:"true" help:"enable default dashboard policy"`
- SystemDashboardPolicy string `help:"dashboard policy name for system view" default:""`
- DomainDashboardPolicy string `help:"dashboard policy name for domain view" default:""`
- ProjectDashboardPolicy string `help:"dashboard policy name for project view" default:""`
- NoPolicyViolationCheck bool `help:"do not check policy violation when modify or assign policy" default:"false"`
- ThreeAdminRoleSystem bool `help:"do not check policy violation when modify or assign policy" default:"false"`
- SystemThreeAdminRoleNames []string `help:"Name of system three-admin roles" default:"sys_secadmin,sys_opsadmin,sys_adtadmin"`
- DomainThreeAdminRoleNames []string `help:"Name of system three-admin roles" default:"domain_secadmin,domain_opsadmin,domain_adtadmin"`
- LdapSearchPageSize uint32 `help:"pagination size for LDAP search" default:"100"`
- LdapSyncDisabledUsers bool `help:"auto sync ldap disabled users"`
- ProjectAdminRole string `help:"name of role to be saved as admin user of project" default:"project_owner"`
- PwdExpiredNotifyDays []int `help:"The notify for password will expire " default:"1,7"`
- MaxUserRolesInProject int `help:"maximal allowed roles of a user in a project" default:"5"`
- MaxGroupRolesInProject int `help:"maximal allowed roles of a group in a project" default:"3"`
- ForceEnableMfa string `help:"force enable mfa" default:"disable" choices:"all|after|disable"`
- }
- var (
- Options SKeystoneOptions
- )
- func (o SKeystoneOptions) PasswordHistoryCount() int {
- if o.PasswordUniqueHistoryCheck > 0 {
- return o.PasswordUniqueHistoryCheck
- }
- return 10
- }
- func OnOptionsChange(oldOptions, newOptions interface{}) bool {
- oldOpts := oldOptions.(*SKeystoneOptions)
- newOpts := newOptions.(*SKeystoneOptions)
- changed := false
- if options.OnBaseOptionsChange(&oldOpts.BaseOptions, &newOpts.BaseOptions) {
- changed = true
- }
- if options.OnDBOptionsChange(&oldOpts.DBOptions, &newOpts.DBOptions) {
- changed = true
- }
- if oldOpts.DefaultUserLanguage != newOpts.DefaultUserLanguage {
- changed = true
- }
- if oldOpts.ForceEnableMfa != newOpts.ForceEnableMfa {
- changed = true
- }
- return changed
- }
|