# Include{groups}
portals:
  open:
# Include{portalLink}
questions:
# Include{global}
# Include{workload}
# Include{workloadDeployment}

# Include{replicas1}
# Include{podSpec}
# Include{containerMain}
# Include{containerBasic}
# Include{containerAdvanced}
  - variable: guacamole
    label: Guacamole Configuration
    group: App Configuration
    schema:
      type: dict
      additional_attrs: true
      attrs:
        - variable: general
          label: General Configuration
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: EXTENSION_PRIORITY
                label: Extension Priority
                description: A comma-separated list of the namespaces of all extensions that should be loaded in a specific order
                schema:
                  type: string
                  default: ""
              - variable: api
                label: API Configuration
                schema:
                  additional_attrs: true
                  type: dict
                  attrs:
                    - variable: API_SESSION_TIMEOUT
                      label: API Session Timeout (in minutes)
                      schema:
                        type: int
                        default: 60
        - variable: totp
          label: TOTP Configuration
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: TOTP_ENABLED
                label: Enable TOTP
                schema:
                  type: boolean
                  default: false
                  show_subquestions_if: true
                  subquestions:
                    - variable: TOTP_ISSUER
                      label: TOTP Issuer
                      schema:
                        type: string
                        default: Apache Guacamole
                        required: true
                    - variable: TOTP_PERIOD
                      label: TOTP Period
                      schema:
                        type: int
                        default: 30
                        required: true
                    - variable: TOTP_DIGITS
                      label: TOTP Digits
                      schema:
                        type: int
                        min: 6
                        max: 8
                        default: 6
                        required: true
                    - variable: TOTP_MODE
                      label: TOTP Mode
                      schema:
                        type: string
                        default: sha1
                        required: true
                        enum:
                          - value: sha1
                            description: sha1
                          - value: sha256
                            description: sha256
                          - value: sha512
                            description: sha512
        - variable: header
          label: Header Configuration
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: HEADER_ENABLED
                label: Enable Header
                schema:
                  type: boolean
                  default: false
                  show_subquestions_if: true
                  subquestions:
                    - variable: HTTP_AUTH_HEADER
                      label: HTTP Auth Header
                      schema:
                        type: string
                        required: true
                        default: REMOTE_USER
        - variable: json
          label: JSON Configuration
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: json_enabled
                label: Enable JSON
                schema:
                  type: boolean
                  default: false
                  show_subquestions_if: true
                  subquestions:
                    - variable: JSON_SECRET_KEY
                      label: JSON Secret Key
                      schema:
                        type: string
                        required: true
                        default: ""
                    - variable: JSON_TRUSTED_NETWORKS
                      label: JSON Trusted Networks (Leave blank for unrestricted
                      description: "Comma separated list e.g.: 127.0.0.0/8, 10.0.0.0/8"
                      schema:
                        type: string
                        default: ""
        - variable: duo
          label: DUO Configuration
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: duo_enabled
                label: Enable DUO
                schema:
                  type: boolean
                  default: false
                  show_subquestions_if: true
                  subquestions:
                    - variable: DUO_API_HOSTNAME
                      label: DUO API Hostname (api-XXXXXXXX.duosecurity.com)
                      schema:
                        type: string
                        required: true
                        default: ""
                    - variable: DUO_INTEGRATION_KEY
                      label: DUO Integration Key (Exactly 20 chars)
                      schema:
                        min_length: 20
                        max_length: 20
                        type: string
                        required: true
                        default: ""
                    - variable: DUO_SECRET_KEY
                      label: DUO Secret Key (Exactly 40 chars)
                      schema:
                        min_length: 40
                        max_length: 40
                        type: string
                        required: true
                        default: ""
                    - variable: DUO_APPLICATION_KEY
                      label: DUO Application Key (At least 40 chars)
                      schema:
                        min_length: 40
                        type: string
                        required: true
                        default: ""
        - variable: cas
          label: CAS Configuration
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: cas_enabled
                label: Enable CAS
                schema:
                  type: boolean
                  default: false
                  show_subquestions_if: true
                  subquestions:
                    - variable: CAS_AUTHORIZATION_ENDPOINT
                      label: CAS Authorization Endpoint
                      schema:
                        type: string
                        required: true
                        default: ""
                    - variable: CAS_REDIRECT_URI
                      label: CAS Redirect URI
                      schema:
                        type: string
                        required: true
                        default: ""
                    - variable: CAS_CLEARPASS_KEY
                      label: CAS Clearpass Key
                      schema:
                        type: string
                        default: ""
                    - variable: CAS_GROUP_ATTRIBUTE
                      label: CAS Group Attribute
                      schema:
                        type: string
                        default: ""
                    - variable: CAS_GROUP_LDAP_BASE_DN
                      label: CAS Group LDAP Base DN
                      schema:
                        type: string
                        default: ""
                    - variable: CAS_GROUP_LDAP_ATTRIBUTE
                      label: CAS Group LDAP Attribute
                      schema:
                        type: string
                        default: ""
                    - variable: CAS_GROUP_FORMAT
                      label: CAS Group Format
                      schema:
                        type: string
                        default: plain
                        enum:
                          - value: plain
                            description: plain
                          - value: ldap
                            description: ldap
        - variable: openid
          label: OpenID Configuration
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: openid_enabled
                label: Enable OpenID
                schema:
                  type: boolean
                  default: false
                  show_subquestions_if: true
                  subquestions:
                    - variable: OPENID_AUTHORIZATION_ENDPOINT
                      label: OpenID Authorization Endpoint
                      schema:
                        type: string
                        required: true
                        default: ""
                    - variable: OPENID_JWKS_ENDPOINT
                      label: OpenID JWKS Endpoint
                      schema:
                        type: string
                        required: true
                        default: ""
                    - variable: OPENID_ISSUER
                      label: OpenID Issuer
                      schema:
                        type: string
                        required: true
                        default: ""
                    - variable: OPENID_CLIENT_ID
                      label: OpenID Client ID
                      schema:
                        type: string
                        required: true
                        default: ""
                    - variable: OPENID_REDIRECT_URI
                      label: OpenID Redirect URI
                      schema:
                        type: string
                        required: true
                        default: ""
                    - variable: OPENID_USERNAME_CLAIM_TYPE
                      label: OpenID Username Claim Type
                      schema:
                        type: string
                        required: true
                        default: email
                    - variable: OPENID_GROUPS_CLAIM_TYPE
                      label: OpenID Groups Claim Type
                      schema:
                        type: string
                        required: true
                        default: groups
                    - variable: OPENID_SCOPE
                      label: OpenID Scope
                      schema:
                        type: string
                        default: openid email profile
                    - variable: OPENID_ALLOWED_CLOCK_SKEW
                      label: OpenID Allowed Clock Skew (in seconds)
                      schema:
                        type: int
                        required: true
                        default: 30
                    - variable: OPENID_MAX_TOKEN_VALIDITY
                      label: OpenID Max Token Validity (in minutes)
                      schema:
                        type: int
                        required: true
                        default: 300
                    - variable: OPENID_MAX_NONCE_VALIDITY
                      label: OpenID Max Nonce Validity (in minutes)
                      schema:
                        type: int
                        required: true
                        default: 10
        - variable: radius
          label: Radius Configuration
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: radius_enabled
                label: Enable Radius
                schema:
                  type: boolean
                  default: false
                  show_subquestions_if: true
                  subquestions:
                    - variable: RADIUS_SHARED_SECRET
                      label: Radius Shared Secret
                      schema:
                        type: string
                        required: true
                        default: ""
                    - variable: RADIUS_AUTH_PROTOCOL
                      label: Radius Auth Protocol
                      schema:
                        type: string
                        required: true
                        default: eap-tls
                        enum:
                          - value: pap
                            description: pap
                          - value: chap
                            description: chap
                          - value: mschapv1
                            description: mschapv1
                          - value: mschapv2
                            description: mschapv2
                          - value: eap-md5
                            description: eap-md5
                          - value: eap-tls
                            description: eap-tls
                          - value: eap-ttls
                            description: eap-ttls
                    - variable: RADIUS_HOSTNAME
                      label: Radius Hostname
                      schema:
                        type: string
                        required: true
                        default: ""
                    - variable: RADIUS_AUTH_PORT
                      label: Radius Auth Port
                      schema:
                        type: int
                        default: 1812
                    - variable: RADIUS_KEY_FILE
                      label: Radius Key File
                      schema:
                        type: string
                        default: ""
                    - variable: RADIUS_KEY_TYPE
                      label: Radius Key Type
                      schema:
                        type: string
                        default: pkcs12
                        required: true
                        enum:
                          - value: pem
                            description: pem
                          - value: jceks
                            description: jceks
                          - value: jks
                            description: jks
                          - value: pkcs12
                            description: pkcs12
                    - variable: RADIUS_KEY_PASSWORD
                      label: Radius Key Password
                      schema:
                        type: string
                        default: ""
                    - variable: RADIUS_CA_FILE
                      label: Radius CA File
                      schema:
                        type: string
                        default: ""
                    - variable: RADIUS_CA_TYPE
                      label: Radius CA Type
                      schema:
                        type: string
                        required: true
                        default: pem
                        enum:
                          - value: pem
                            description: pem
                          - value: jceks
                            description: jceks
                          - value: jks
                            description: jks
                          - value: pkcs12
                            description: pkcs12
                    - variable: RADIUS_CA_PASSWORD
                      label: Radius CA Password
                      schema:
                        type: string
                        default: ""
                    - variable: RADIUS_TRUST_ALL
                      label: Radius Trust All
                      schema:
                        type: boolean
                        default: false
                    - variable: RADIUS_RETRIES
                      label: Radius Retries
                      schema:
                        type: int
                        required: true
                        default: 5
                    - variable: RADIUS_TIMEOUT
                      label: Radius Timeout
                      schema:
                        type: int
                        required: true
                        default: 60
                    - variable: RADIUS_EAP_TTLS_INNER_PROTOCOL
                      label: Radius eap-ttls Inner Protocol
                      description: Only has effect when RADIUS_AUTH_PROTOCOL is set to eap-ttls
                      schema:
                        type: string
                        default: eap-tls
                        required: true
                        enum:
                          - value: pap
                            description: pap
                          - value: chap
                            description: chap
                          - value: mschapv1
                            description: mschapv1
                          - value: mschapv2
                            description: mschapv2
                          - value: eap-md5
                            description: eap-md5
                          - value: eap-tls
                            description: eap-tls
                    - variable: RADIUS_NAS_IP
                      label: Radius Network Access Server IP
                      schema:
                        type: string
                        default: ""
        - variable: ldap
          group: "App Configuration"
          label: LDAP Configuration
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: ldap_enabled
                label: Enable LDAP
                schema:
                  type: boolean
                  default: false
                  show_subquestions_if: true
                  subquestions:
                    - variable: LDAP_HOSTNAME
                      label: LDAP Hostname
                      schema:
                        type: string
                        required: true
                        default: ""
                    - variable: LDAP_USER_BASE_DN
                      label: LDAP User Base DN
                      schema:
                        type: string
                        required: true
                        default: ""
                    - variable: LDAP_PORT
                      label: LDAP Port
                      schema:
                        type: int
                        default: 389
                    - variable: LDAP_ENCRYPTION_METHOD
                      label: LDAP Encryption Method
                      schema:
                        type: string
                        default: none
                        required: true
                        enum:
                          - value: none
                            description: none
                          - value: ssl
                            description: ssl
                          - value: starttls
                            description: starttls
                    - variable: LDAP_MAX_SEARCH_RESULTS
                      label: LDAP Max Search Results
                      schema:
                        type: int
                        default: 1000
                    - variable: LDAP_SEARCH_BIND_DN
                      label: LDAP Search Bind DN
                      schema:
                        type: string
                        default: ""
                    - variable: LDAP_USER_ATTRIBUTES
                      label: LDAP User Attributes
                      schema:
                        type: string
                        default: ""
                    - variable: LDAP_SEARCH_BIND_PASSWORD
                      label: LDAP Search Bind Password
                      schema:
                        type: string
                        default: ""
                    - variable: LDAP_USERNAME_ATTRIBUTE
                      label: LDAP Username Attribute
                      schema:
                        type: string
                        default: uid
                    - variable: LDAP_MEMBER_ATTRIBUTE
                      label: LDAP Member Attribute
                      schema:
                        type: string
                        default: member
                    - variable: LDAP_USER_SEARCH_FILTER
                      label: LDAP User Search Filter
                      schema:
                        type: string
                        default: "(objectClass=*)"
                    - variable: LDAP_CONFIG_BASE_DN
                      label: LDAP Config Base DN
                      schema:
                        type: string
                        default: ""
                    - variable: LDAP_GROUP_BASE_DN
                      label: LDAP Group Base DN
                      schema:
                        type: string
                        default: ""
                    - variable: LDAP_GROUP_SEARCH_FILTER
                      label: LDAP Group Search Filter
                      schema:
                        type: string
                        default: "(objectClass=*)"
                    - variable: LDAP_MEMBER_ATTRIBUTE_TYPE
                      label: LDAP Member Attribute Type
                      schema:
                        type: string
                        default: dn
                        required: true
                        enum:
                          - value: dn
                            description: dn
                          - value: uid
                            description: uid
                    - variable: LDAP_GROUP_NAME_ATTRIBUTE
                      label: LDAP Group Name Attribute
                      schema:
                        type: string
                        default: cn
                    - variable: LDAP_DEREFERENCE_ALIASES
                      label: LDAP Dereference Aliases
                      schema:
                        type: string
                        required: true
                        default: never
                        enum:
                          - value: never
                            description: never
                          - value: searching
                            description: searching
                          - value: finding
                            description: finding
                          - value: always
                            description: always
                    - variable: LDAP_FOLLOW_REFERRALS
                      label: LDAP Follow Referrals
                      schema:
                        type: boolean
                        default: false
                    - variable: LDAP_MAX_REFERRAL_HOPS
                      label: LDAP Max Referrals Hops
                      schema:
                        type: int
                        required: true
                        default: 5
                    - variable: LDAP_OPERATION_TIMEOUT
                      label: LDAP Operation Timeout
                      schema:
                        type: int
                        required: true
                        default: 30
        - variable: saml
          label: SAML Configuration
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: saml_enabled
                label: Enable SAML
                schema:
                  type: boolean
                  default: false
                  show_subquestions_if: true
                  subquestions:
                    - variable: SAML_IDP_METADATA_URL
                      label: SAML IDP Metadata URL
                      schema:
                        type: string
                        default: ""
                    - variable: SAML_IDP_URL
                      label: SAML IDP URL
                      schema:
                        type: string
                        default: ""
                    - variable: SAML_ENTITY_ID
                      label: SAML Entity ID
                      schema:
                        type: string
                        default: ""
                    - variable: SAML_CALLBACK_URL
                      label: SAML Callback URL
                      schema:
                        type: string
                        default: ""
                    - variable: SAML_STRICT
                      label: SAML Strict
                      schema:
                        type: boolean
                        default: true
                    - variable: SAML_DEBUG
                      label: SAML Debug
                      schema:
                        type: boolean
                        default: false
                    - variable: SAML_COMPRESS_REQUEST
                      label: SAML Compress Request
                      schema:
                        type: boolean
                        default: true
                    - variable: SAML_COMPRESS_RESPONSE
                      label: SAML Compress Response
                      schema:
                        type: boolean
                        default: true
                    - variable: SAML_GROUP_ATTRIBUTE
                      label: SAML Group Attribute
                      schema:
                        type: string
                        required: true
                        default: groups
        - variable: proxy
          label: Proxy Configuration
          schema:
            additional_attrs: true
            type: dict
            attrs:
              - variable: REMOTE_IP_VALVE_ENABLED
                label: Enable Proxy
                schema:
                  type: boolean
                  default: false
                  show_subquestions_if: true
                  subquestions:
                    - variable: PROXY_BY_HEADER
                      label: Proxy by Header
                      schema:
                        type: string
                        default: ""
                    - variable: PROXY_PROTOCOL_HEADER
                      label: Proxy Protocol Header
                      schema:
                        type: string
                        default: ""
                    - variable: PROXY_IP_HEADER
                      label: Proxy IP Header
                      schema:
                        type: string
                        default: ""
                    - variable: PROXY_ALLOWED_IPS_REGEX
                      label: Proxy Allowed IP Regex
                      schema:
                        type: string
                        default: ""
# Include{containerConfig}
# Include{podOptions}
# Include{serviceRoot}
        - variable: main
          label: Main Service
          description: The Primary service on which the healthcheck runs, often the webUI
          schema:
            additional_attrs: true
            type: dict
            attrs:
# Include{serviceSelectorLoadBalancer}
# Include{serviceSelectorExtras}
                    - variable: main
                      label: Main Service Port Configuration
                      schema:
                        additional_attrs: true
                        type: dict
                        attrs:
                          - variable: port
                            label: Port
                            description: This port exposes the container port on the service
                            schema:
                              type: int
                              default: 9998
                              required: true
# Include{serviceExpertRoot}
# Include{serviceExpert}
# Include{serviceList}
# Include{persistenceRoot}
        - variable: recordings
          label: App Recordings Storage
          description: Mounts this volume at [/var/lib/guacamole/recordings] in both guacd and client containers
          schema:
            additional_attrs: true
            type: dict
            attrs:
# Include{persistenceBasic}
        - variable: drive
          label: Virtual Drive Storage (guacd)
          description: Mounts this volume at [/var/lib/guacamole/drive] in the guacd container
          schema:
            additional_attrs: true
            type: dict
            attrs:
# Include{persistenceBasic}
# Include{persistenceList}
# Include{ingressRoot}
        - variable: main
          label: Main Ingress
          schema:
            additional_attrs: true
            type: dict
            attrs:
# Include{ingressDefault}
# Include{ingressTLS}
# Include{ingressTraefik}
# Include{ingressAdvanced}
# Include{ingressList}
# Include{securityContextRoot}
              - variable: runAsUser
                label: runAsUser
                description: The UserID of the user running the application
                schema:
                  type: int
                  default: 1001
              - variable: runAsGroup
                label: runAsGroup
                description: The groupID of the user running the application
                schema:
                  type: int
                  default: 1001
# Include{securityContextContainer}
# Include{securityContextAdvanced}
# Include{securityContextPod}
        - variable: fsGroup
          label: fsGroup
          description: The group that should own ALL storage
          schema:
            type: int
            default: 568
# Include{resources}
# Include{advanced}
# Include{addons}
# Include{codeserver}
# Include{netshoot}
# Include{vpn}
# Include{documentation}
