diff --git a/src/main/resources/META-INF/xnat/spawner/site-admin-elements.yaml b/src/main/resources/META-INF/xnat/spawner/site-admin-elements.yaml index 38cb1033980162eb86605e8190b69e67c46482ea..abdf0f1e36efe6eb4b21ecc98b458121a8e8f4c8 100644 --- a/src/main/resources/META-INF/xnat/spawner/site-admin-elements.yaml +++ b/src/main/resources/META-INF/xnat/spawner/site-admin-elements.yaml @@ -83,7 +83,6 @@ adminEmail: id: adminEmail name: adminEmail label: Site Administrator Email Address - value: ?? XNAT.data.siteConfig.adminEmail fileSystemSettingsWarning: someInfo: @@ -94,7 +93,6 @@ fileSystemSettingsWarning: and are seldom, if ever, changed. style: fontWeight: bold - archivePath: kind: panel.input.text id: archivePath @@ -102,8 +100,6 @@ archivePath: label: Archive Path validation: required path description: "" - value: ?? XNAT.data.siteConfig.archivePath - cachePath: kind: panel.input.text id: cachePath @@ -111,8 +107,6 @@ cachePath: label: Cache Path validation: required path description: "" - value: ?? XNAT.data.siteConfig.cachePath - prearchivePath: kind: panel.input.text id: prearchivePath @@ -120,8 +114,6 @@ prearchivePath: label: Prearchive Path validation: required path description: "" - value: ?? XNAT.data.siteConfig.prearchivePath - ftpPath: kind: panel.input.text id: ftpPath @@ -129,7 +121,6 @@ ftpPath: label: FTP Path validation: required path description: "" - value: ??XNAT.data.siteConfig.cachePath buildPath: kind: panel.input.text id: buildPath @@ -137,7 +128,6 @@ buildPath: label: Build Path validation: required id onblur description: "" - value: ??XNAT.data.siteConfig.cachePath pipelinePath: kind: panel.input.text id: pipelinePath @@ -145,14 +135,6 @@ pipelinePath: label: Pipeline Path validation: required id onblur description: "" - value: ??XNAT.data.siteConfig.cachePath -dataFolders: - kind: panel.input.text - id: dataFolders - name: dataFolders - label: Data Folders - validation: required id onblur - description: "" zipExtensions: kind: panel.input.text id: zipExtensions @@ -165,8 +147,7 @@ siteInfo: label: Site Information method: POST action: /xapi/siteConfig/batch - load: - lookup: XNAT.data.siteConfig + load: ?? XNAT.data.siteConfig contentType: json contents: ${siteId} @@ -217,9 +198,8 @@ userLoginsSessionControls: label: User Logins / Session Controls method: POST action: /xapi/siteConfig/batch - load: - lookup: XNAT.data.siteConfig - refresh: /xapi/siteConfig + load: ?? XNAT.data.siteConfig + refresh: /xapi/siteConfig contentType: json contents: sessionTimeout: @@ -227,14 +207,12 @@ userLoginsSessionControls: id: sessionTimeout name: sessionTimeout label: Session Timeout - value: ?? XNAT.data.siteConfig.sessionTimeout || 15 description: "Interval for timing out alias tokens" aliasTokenTimeout: kind: panel.input.text id: aliasTokenTimeout name: aliasTokenTimeout label: Alias Token Timeout - value: ?? XNAT.data.siteConfig.aliasTokenTimeout || 2 days description: > Interval for timing out alias tokens. Uses <a target="_blank" href="http://www.postgresql.org/docs/9.0/static/functions-datetime.html">PostgreSQL interval notation</a> @@ -243,49 +221,42 @@ userLoginsSessionControls: id: sessionTimeoutMessage name: sessionTimeoutMessage label: Session Timeout Message - value: ?? XNAT.data.siteConfig.sessionTimeoutMessage || "Your session has timed out." description: Alert message provided to users after a session timeout and logout. allowResumeOnNextLogin: kind: panel.input.checkbox id: allow-resume-on-next-login name: allowResumeOnNextLogin label: Allow Resume On Next Login? - value: ?? XNAT.data.siteConfig.allowResumeOnNextLogin description: Allow user to resume where they left off, if logging back in after a session timeout? maximumConcurrentSessions: kind: panel.input.number id: maximumConcurrentSessions name: sessions.concurrent_max label: Maximum Concurrent Sessions - value: ?? XNAT.data.siteConfig.sessions.concurrent_max || 100 description: The maximum number of permitted sessions a user can have open simultaneously loginFailureMessage: kind: panel.textarea id: loginFailureMessage name: UI.login_failure_message label: Login Failure Message - value: Login failed description: Text to show when a user fails to login maximumFailedLogins: kind: panel.input.number id: maximumFailedLogins name: maxFailedLogins label: Maximum Failed Logins - value: -1 description: Number of failed login attempts before accounts are temporarily locked. (-1 disables feature) failedLoginLockoutDuration: kind: panel.input.number id: failedLoginLockoutDuration name: maxFailedLoginsLockoutDuration label: Failed Login Lockout Duration - value: 0 description: Number of milliseconds to lock user accounts that have exceeded the max_failed_logins count. Select (3600000 for 1 hour, 86400000 for 24 hours) userInactivityLockout: kind: panel.input.number id: userInactivityLockout name: inactivityBeforeLockout label: User Inactivity Lockout - value: 31556926 description: Number of seconds of inactivity before an account is disabled (31556926 for 1 year) inactivityBeforeLockoutSchedule: kind: panel.input.text @@ -299,29 +270,26 @@ passwords: label: Passwords method: POST action: /xapi/siteConfig/batch - load: - lookup: XNAT.data.siteConfig contentType: json + load: ?? XNAT.data.siteConfig + refresh: /xapi/siteConfig contents: passwordComplexity: kind: panel.input.text id: passwordComplexity name: passwordComplexity label: Password Complexity - value: "^.*$" description: Must be a valid regular expression. passwordComplexityMessage: - kind: panel.input.text + kind: panel.textarea id: passwordComplexityMessage name: passwordComplexityMessage label: Password Complexity Message - value: "Your password must contain..." passwordHistoryDuration: kind: panel.input.number id: passwordHistoryDuration name: passwordHistoryDuration label: Password History (Duration) - value: -1 description: "-1 to disable" passwordExpirationType: kind: panel.select.single @@ -341,7 +309,6 @@ passwords: id: passwordExpirationInterval name: passwordExpirationInterval label: Password Expiration (Interval) - value: -1 description: "-1 to disable" passwordExpirationDate: kind: panel.input.text @@ -359,7 +326,6 @@ passwords: id: requireSaltedPasswords name: requireSaltedPasswords label: Require Passwords To Be Salted - value: false csrf: kind: panel.form @@ -367,64 +333,32 @@ csrf: label: CSRF method: POST action: /xapi/siteConfig/batch - load: - lookup: XNAT.data.siteConfig contentType: json + load: ?? XNAT.data.siteConfig + refresh: /xapi/siteConfig contents: enableCsrfToken: kind: panel.input.checkbox id: enableCsrfToken name: enableCsrfToken label: Require CSRF Token? - value: true description: Should this site require the use of a token to prevent CSRF attacks on POST, PUT, and DELETEs? csrfEmailAlert: kind: panel.input.checkbox id: csrfEmailAlert name: enable_csrf_email_alert label: CSRF Email Alert - value: "Should this site send an email to the site admin whenever a CSRF attack is attempted?" - -auditTrail: - kind: panel.form - name: auditTrail - label: Audit Trail Configuration - method: POST - action: /xapi/siteConfig/batch - load: - lookup: XNAT.data.siteConfig - contentType: json - contents: - enableAuditTrail: - kind: panel.input.checkbox - id: enableAuditTrail - name: enableAuditTrail - label: Enable Audit Trail? - value: true - allowUserJustificationForChanges: - kind: panel.input.checkbox - id: allowUserJustificationForChanges - name: allowUserJustificationForChanges - label: Allow User Justification For Changes - value: true - description: "Allow users to enter change justifications when modifying data" - requireUserJustificationForChanges: - kind: panel.input.checkbox - id: requireUserJustificationForChanges - name: requireUserJustificationForChanges - label: Require User Justification For Changes - value: false - description: "Force users to enter change justifications when modifying data" + description: "Should this site send an email to the site admin whenever a CSRF attack is attempted?" securityServices: kind: panel.form name: securityServices label: Security Services - method: POST action: /xapi/siteConfig/batch - load: - lookup: XNAT.data.siteConfig + method: POST contentType: json + load: ?? XNAT.data.siteConfig + refresh: /xapi/siteConfig contents: securityServicesFeatureDefault: kind: panel.input.text @@ -450,12 +384,10 @@ securityServices: emailServerSettings: kind: panel.form method: POST - action: /xapi/siteConfig - load: # load data - url: /xapi/siteConfig - prop: smtpServer # which root property? gets the root object if not set -# lookup: XNAT.data.siteConfig.smtpServer + action: /xapi/siteConfig/smtpServer contentType: json + load: ?? XNAT.data.siteConfig.smtpServer + refresh: /xapi/siteConfig/smtpServer name: emailServerSettings label: Mail Server Settings contents: @@ -464,18 +396,15 @@ emailServerSettings: id: smtpEnabled name: smtp.enabled label: "Enable SMTP?" - #value: true - checked: true hostname: kind: panel.input.text name: host label: Host - value: localhost + placeholder: localhost port: kind: panel.input.number name: port label: Port - value: "" element: placeholder: 587 username: @@ -483,19 +412,17 @@ emailServerSettings: name: username label: Username url: /xapi/notifications/username - value: '' element: placeholder: name@host.org password: kind: panel.input.password name: password label: Password - value: '' protocol: kind: panel.input.text name: protocol label: Protocol - value: '' + placeholder: smtp #data: #get: GET|/xapi/siteConfig|smtpServer.protocol #set: POST|/xapi/notifications/protocol @@ -508,111 +435,101 @@ emailServerSettings: kind: panel.input.checkbox name: mail.smtp.auth label: SMTP Auth? - #value: true - checked: true smtpStartTls: kind: panel.input.checkbox name: mail.smtp.starttls.enable label: Smart TLS? - #value: true - checked: true smtpSSLTrust: kind: panel.input.text name: mail.smtp.ssl.trust label: SSL Trust - value: '' element: placeholder: localhost emailPrefix: kind: panel.input.text name: emailPrefix label: Email Prefix - element: - placeholder: XNAT + placeholder: XNAT notifications: kind: panel.form name: notifications label: Notifications + action: /xapi/siteConfig/batch method: POST - action: /xapi/notifications/batch - load: - lookup: XNAT.data.notifications contentType: json + load: ?? XNAT.data.siteConfig + refresh: /xapi/siteConfig contents: helpContactInfo: kind: panel.input.email id: helpContactInfo - name: helpContactInfo + name: notifications.helpContactInfo label: "Help Contact Info" emailMessageUserRegistration: kind: panel.textarea id: emailMessageUserRegistration - name: emailMessageUserRegistration + name: notifications.emailMessageUserRegistration label: "Email Message: User Registration" description: "Text of message emailed to users upon registration. Link for email validation is auto-populated." emailMessageForgotUsernameRequest: kind: panel.textarea id: emailMessageForgotUsernameRequest - name: emailMessageForgotUsernameRequest + name: notifications.emailMessageForgotUsernameRequest label: "Email Message: Forgot Username Request" description: "Text of message emailed to users upon lost username request." emailMessageForgotPasswordReset: kind: panel.textarea id: emailMessageForgotPasswordReset - name: emailMessageForgotPasswordReset + name: notifications.emailMessageForgotPasswordReset label: "Email Message: Password Reset" description: "Text of message emailed to users upon lost password reset. Link for password reset is auto-populated" notifyAdminUserRegistration: kind: panel.input.checkbox id: notifyAdminUserRegistration - name: notifyAdminUserRegistration + name: notifications.notifyAdminUserRegistration label: "Notify Admin on User Registration" - value: ?? XNAT.data.siteConfig.notifyAdminUserRegistration description: "Whether to cc admin user on new user emails. Requires valid admin email address." notifyAdminPipelineEmails: kind: panel.input.checkbox id: notifyAdminPipelineEmails - name: notifyAdminPipelineEmails + name: notifications.notifyAdminPipelineEmails label: "Notify Admin on Pipeline Emails" - value: false description: "Whether to cc admin user on pipeline processing submit. Requires valid admin email address." notifyAdminProjectAccessRequest: kind: panel.input.checkbox id: notifyAdminProjectAccessRequest - name: notifyAdminProjectAccessRequest + name: notifications.notifyAdminProjectAccessRequest label: "Notify Admin on Project Access Request" - value: false description: "Whether to cc admin user on user project access request. Requires valid admin email address." notifyAdminSessionTransfer: kind: panel.input.checkbox id: notifyAdminSessionTransfer - name: notifyAdminSessionTransfer + name: notifications.notifyAdminProjectOnSessionTransfer label: "Notify Admin on Session Transfer" - value: false description: "Whether to cc admin user on session transfer by user. Requires valid admin email address." emailRecipientErrorMessages: kind: panel.input.email id: emailRecipientErrorMessages - name: emailRecipientErrorMessages + name: notifications.emailRecipientErrorMessages label: "Email Recipient: Error Messages" description: "What email address should receive error emails" emailRecipientIssueReports: kind: panel.input.email id: emailRecipientIssueReports - name: emailRecipientIssueReports + name: notifications.emailRecipientIssueReports label: "Email Recipient: Issue Reports" description: "What email address should receive issue reports" emailRecipientNewUserAlert: kind: panel.input.email id: emailRecipientNewUserAlert - name: emailRecipientNewUserAlert + name: notifications.emailRecipientNewUserAlert label: "Email Recipient: New User Alert" description: "What email address should receive New User Registration emails" emailRecipientUpdate: kind: panel.input.email id: emailRecipientUpdate - name: emailRecipientUpdate + name: notifications.emailRecipientUpdate label: "Email Recipient: Updates" description: "What email address should receive update emails" emailAllowNonuserSubscribers: @@ -620,7 +537,6 @@ notifications: id: emailAllowNonuserSubscribers name: emailAllowNonuserSubscribers label: "Allow Nonuser Subscribers" - value: ?? XNAT.data.siteConfig.emailAllowNonuserSubscribers themeManagement: kind: panel.form @@ -673,32 +589,34 @@ authenticationMethods: label: User Authentication Methods method: POST action: /xapi/siteConfig/batch - load: - lookup: XNAT.data.siteConfig contentType: json + load: ?? XNAT.data.siteConfig + refresh: /xapi/siteConfig contents: xnatInternal: kind: panel.input.checkbox id: xnatInternal name: provider.providers.xnatInternal label: XNAT (Internal) - value: true ldapProvider: kind: panel.input.checkbox id: ldapProvider name: provider.providers.ldap label: LDAP - value: false # oauthProvider: # kind: panel.input.checkbox # id: oauthProvider # name: provider.providers.oauth # label: OAuth -# value: false genericAuthenticationProvider: kind: panel.form name: genericAuthenticationProvider label: Generic Authentication Provider + method: POST + action: /xapi/siteConfig/batch + contentType: json + load: ?? XNAT.data.siteConfig + refresh: /xapi/siteConfig contents: providerDbName: kind: panel.input.text @@ -719,6 +637,11 @@ ldapAuthentication: kind: panel.form name: ldapAuthenticationProvider label: LDAP Authentication Provider + method: POST + action: /xapi/siteConfig/batch + contentType: json + load: ?? XNAT.data.siteConfig + refresh: /xapi/siteConfig contents: ldapName: kind: panel.input.text @@ -780,8 +703,7 @@ registrationOptions: label: Registration Options method: POST action: /xapi/siteConfig/batch - load: - lookup: XNAT.data.siteConfig + load: ?? XNAT.data.siteConfig contentType: json contents: requireLogin: @@ -789,20 +711,17 @@ registrationOptions: id: requireLogin name: requireLogin label: "Require User?" - value: true disabled: true requireEmailVerificationToRegister: kind: panel.input.checkbox id: requireEmailVerificationToRegister name: emailVerification label: "Require Email Verification To Register?" - value: true emailVerificationMessage: kind: panel.textarea id: emailVerificationMessage name: emailVerificationMessage label: "Email Verification Message" - value: "" emailVerificationExpiration: kind: panel.input.number id: emailVerificationExpiration @@ -813,71 +732,53 @@ registrationOptions: id: autoEnableUserRegistration name: userRegistration label: "Auto-enable User Registration?" - value: false allowUserCommentsOnRegistration: kind: panel.input.checkbox id: allowUserCommentsOnRegistration name: allowUserCommentsOnRegistration label: "Allow User Comments on Registration?" - value: true restrictUserListAccessToAdmins: kind: panel.input.checkbox id: restrictUserListAccessToAdmins name: restrictUserListAccessToAdmins label: "Restrict User List Access To Admins?" - value: true - -#dataReporting: -# kind: panel.form -# name: dataReporting -# label: Data Reporting -# contents: -# enableAdvancedSearch: -# kind: panel.input.checkbox -# id: enableAdvancedSearch -# name: enableAdvancedSearch -# label: "Enable Advanced Search" -# value: true manageDataTypes: kind: panel.form name: manageDataTypes label: Manage Data Types method: POST - action: /xapi/siteConfig/batch - load: - lookup: XNAT.data.siteConfig contentType: json + action: /xapi/siteConfig/batch + load: ?? XNAT.data.siteConfig + refresh: /xapi/siteConfig contents: displayNameForGenericImageSessionSingular: kind: panel.input.text id: displayNameForGenericImageSessionSingular name: displayNameForGenericImageSession.singular label: "Singular Display Name For Generic Image Session Singular" - value: "Session" displayNameForGenericImageSessionPlural: kind: panel.input.text id: displayNameForGenericImageSessionPlural name: displayNameForGenericImageSession.plural label: "Plural Display Name For Generic Image Session Singular" - value: "Sessions" anonymization: kind: panel.form name: Anonymization label: "Anonymization Script (Site Wide)" method: POST - action: /xapi/siteConfig/batch - load: - lookup: XNAT.data.siteConfig contentType: json + action: /xapi/siteConfig/batch + load: ?? XNAT.data.siteConfig + refresh: /xapi/siteConfig contents: enableSitewideAnonymizationScript: kind: panel.input.checkbox id: enableSitewideAnonymizationScript name: enableSitewideAnonymizationScript label: "Enable Site-wide Anonymization Script" - value: true editAnonymzationScript: kind: panel.textarea id: editAnonymzationScript @@ -889,23 +790,21 @@ seriesImportFilter: name: seriesImportFilter label: "Series Import Filter" method: POST - action: /xapi/siteConfig/batch - load: - lookup: XNAT.data.siteConfig contentType: json + action: /xapi/siteConfig/batch + load: ?? XNAT.data.siteConfig + refresh: /xapi/siteConfig contents: enableSitewideSeriesImportFilter: kind: panel.input.checkbox id: enableSitewideSeriesImportFilter name: enableSitewideSeriesImportFilter label: "Enable Site-wide Series Import Filter" - value: false filterMode: kind: panel.input.checkbox id: filterMode name: filterMode label: Filter Mode - value: false seriesImportFilter: kind: panel.textarea id: seriesImportFilter @@ -917,10 +816,10 @@ sessionUploadMethod: name: sessionUploadMethod label: "Session Upload Method" method: POST - action: /xapi/siteConfig/batch - load: - lookup: XNAT.data.siteConfig contentType: json + action: /xapi/siteConfig/batch + load: ?? XNAT.data.siteConfig + refresh: /xapi/siteConfig contents: selectUploadMethod: kind: panel.select.single @@ -929,23 +828,21 @@ sessionUploadMethod: label: "Session Upload Method" # options: # don't know where to populate this from # http: -# label: http -# value: http +# label: +# value: # https: -# label: https -# value: https +# label: +# value: showApplet: kind: panel.input.checkbox id: showApplet name: showApplet label: Show Applet - value: false enableProjectAppletScript: kind: panel.input.checkbox id: enableProjectAppletScript name: enableProjectAppletScript label: Enable Project Applet Script - value: false appletScript: kind: panel.textarea id: appletScript @@ -962,24 +859,20 @@ sessionUploadMethod: name: sessionXmlRebuilderInterval label: Session Xml Rebuilder Interval - dicomScpReceivers: kind: panel.form name: dicomScpReceivers label: DICOM SCP Receivers method: POST action: /xapi/dicomscp - load: - url: /xapi/dicomscp -# prop: # Not set, so should get the root object contentType: json + load: $? /xapi/dicomscp contents: enableDicomReceiver: kind: panel.input.checkbox id: enableDicomReceiver name: enableDicomReceiver label: DICOM Receiver Enabled? - value: true description: "Should the DICOM receiver listen for connections?" someInfo: tag: div.message @@ -992,7 +885,6 @@ dicomScpReceivers: id: enableDicomReceiverPropertyChangedListener name: enableDicomReceiverPropertyChangedListener # Should this be "enableDicomReceiver.property.changed.listener" label: "Enable Dicom Receiver Property Changed Listener" - value: "org.nrg.dcm.DicomSCPSiteConfigurationListener" dicomHost: kind: panel.input.text id: dicomHost @@ -1022,7 +914,6 @@ dicomScpReceivers: id: receivedFileUser name: receivedFileUser label: "Default DICOM Receiver: User" - value: admin description: "User account for default DICOM receiver" fileSystem: @@ -1030,10 +921,9 @@ fileSystem: name: fileSystem label: File System method: POST - action: /xapi/siteConfig/batch - load: - lookup: XNAT.data.siteConfig contentType: json + action: /xapi/siteConfig/batch + load: ?? XNAT.data.siteConfig contents: ${archivePath} ${cachePath} @@ -1048,30 +938,49 @@ misc: name: misc label: Miscellaneous method: POST - action: /xapi/siteConfig/batch - load: - lookup: XNAT.data.siteConfig contentType: json + action: /xapi/siteConfig/batch + load: ?? XNAT.data.siteConfig + refresh: /xapi/siteConfig contents: checksums: kind: panel.input.checkbox id: checksums name: checksums label: Checksums? - value: true checksumsPropertyChangedListener: kind: panel.input.text id: checksumsPropertyChangedListener name: checksums.property.changed.listener label: Checksums Property Changed Listener? - value: org.nrg.xnat.utils.ChecksumsSiteConfigurationListener scanTypeMapping: kind: panel.input.checkbox id: scanTypeMapping name: scanTypeMapping label: Scan Type Mapping? - value: true - + development: + kind: panel.subhead + label: Development Utilities + spawner: + kind: panel.element + description: Manage spawner elements. + contents: + link: + tag: a.link + element: + href: ./page/admin/spawner/ + target: _blank + html: Manage The Spawner + swagger: + kind: panel.element + description: View the Swagger page. + contents: + link: + tag: a.link + element: + href: ./xapi/swagger-ui.html/ + target: _blank + html: Swagger development: kind: panel name: development @@ -1172,13 +1081,6 @@ adminPage: group: manageAccess contents: ${registrationOptions} -# dataReporting: -# kind: tab -# name: dataReporting -# label: Data Reporting -# group: manageData -# contents: -# ${dataReporting} manageDataTypes: kind: tab name: manageDataTypes @@ -1240,7 +1142,6 @@ sitePaths: # ${ftpPath} # ${buildPath} # ${pipelinePath} - ${dataFolders} initialSetup: kind: panel name: initialSetup