# BMCWEB_KVM
option(
    'kvm',
    type: 'feature',
    value: 'enabled',
    description: '''Enable the KVM host video WebSocket.  Path is /kvm/0.
                    Video is from the BMCs /dev/videodevice.''',
)

# BMCWEB_TESTS
option(
    'tests',
    type: 'feature',
    value: 'enabled',
    description: 'Enable Unit tests for bmcweb',
)

# BMCWEB_VM_WEBSOCKET
option(
    'vm-websocket',
    type: 'feature',
    value: 'enabled',
    description: '''Enable the Virtual Media WebSocket. Path is /vm/0/0 and /nbd/<id> to
                    open the websocket. See
                    https://github.com/openbmc/jsnbd/blob/master/README.''',
)

# BMCWEB_NBDPROXY
# if you use this option and are seeing this comment, please comment here:
# https://github.com/openbmc/bmcweb/issues/188 and put forward your intentions
# for this code.  At this point, no daemon has been upstreamed that implements
# this interface, so for the moment this appears to be dead code;  In leiu of
# removing it, it has been disabled to try to give those that use it the
# opportunity to upstream their backend implementation
#option(
#    'vm-nbdproxy',
#    type: 'feature',
#    value: 'disabled',
#    description: 'Enable the Virtual Media WebSocket.'
#)

# BMCWEB_REST
option(
    'rest',
    type: 'feature',
    value: 'disabled',
    description: '''Enable Phosphor REST (D-Bus) APIs. Paths directly map
                    Phosphor D-Bus object paths, for example,
                    /xyz/openbmc_project/logging/entry/enumerate. See
                    https://github.com/openbmc/docs/blob/master/rest-api.md.''',
)

# BMCWEB_REDFISH
option(
    'redfish',
    type: 'feature',
    value: 'enabled',
    description: '''Enable Redfish APIs.  Paths are under /redfish/v1/. See
                    https://github.com/openbmc/bmcweb/blob/master/DEVELOPING.md#redfish.''',
)

# BMCWEB_HOST_SERIAL_SOCKET
option(
    'host-serial-socket',
    type: 'feature',
    value: 'enabled',
    description: '''Enable host serial console WebSocket. Path is /console0.
                    See https://github.com/openbmc/docs/blob/master/console.md.''',
)

# BMCWEB_STATIC_HOSTING
option(
    'static-hosting',
    type: 'feature',
    value: 'enabled',
    description: '''Enable serving files from the /usr/share/www directory
                    as paths under /.''',
)

# BMCWEB_REDFISH_BMC_JOURNAL
option(
    'redfish-bmc-journal',
    type: 'feature',
    value: 'enabled',
    description: '''Enable BMC journal access through Redfish. Paths are under
                    /redfish/v1/Managers/bmc/LogServices/Journal.''',
)

# BMCWEB_REDFISH_CPU_LOG
option(
    'redfish-cpu-log',
    type: 'feature',
    value: 'disabled',
    description: '''Enable CPU log service transactions through Redfish. Paths
                    are under /redfish/v1/Systems/system/LogServices/Crashdump'.''',
)

# BMCWEB_REDFISH_DUMP_LOG
option(
    'redfish-dump-log',
    type: 'feature',
    value: 'disabled',
    description: '''Enable Dump log service transactions through Redfish. Paths
                   are under /redfish/v1/Systems/system/LogServices/Dump
                   and /redfish/v1/Managers/bmc/LogServices/Dump''',
)

# BMCWEB_REDFISH_DBUS_LOG
option(
    'redfish-dbus-log',
    type: 'feature',
    value: 'disabled',
    description: '''Enable DBUS log service transactions through Redfish. Paths
                    are under
                    /redfish/v1/Systems/system/LogServices/EventLog/Entries''',
)

# BMCWEB_REDFISH_HOST_LOGGER
option(
    'redfish-host-logger',
    type: 'feature',
    value: 'enabled',
    description: '''Enable host log service transactions based on
                    phosphor-hostlogger through Redfish.  Paths are under
                    /redfish/v1/Systems/system/LogServices/HostLogger''',
)

# BMCWEB_REDFISH_PROVISIONING_FEATURE
option(
    'redfish-provisioning-feature',
    type: 'feature',
    value: 'disabled',
    description: '''Enable provisioning feature support in redfish. Paths are
                    under /redfish/v1/Systems/system/''',
)

# BMCWEB_REDFISH_MANAGER_URI_NAME
option(
    'redfish-manager-uri-name',
    type: 'string',
    value: 'bmc',
    description: '''The static Redfish Manager ID representing the BMC
                    instance. This option will appear in the Redfish tree at
                    /redfish/v1/Managers/<redfish-manager-uri-name>.
                    Defaults to \'bmc\' which resolves to
                    /redfish/v1/Managers/bmc''',
)

# BMCWEB_REDFISH_SYSTEM_URI_NAME
option(
    'redfish-system-uri-name',
    type: 'string',
    value: 'system',
    description: '''The static Redfish System ID representing the host
                    instance. This option will appear in the Redfish tree at
                    /redfish/v1/Systems/<redfish-system-uri-name>.
                    Defaults to \'system\' which resolves to
                    /redfish/v1/Systems/system''',
)

# BMCWEB_LOGGING_LEVEL
option(
    'bmcweb-logging',
    type: 'combo',
    choices: [
        'disabled',
        'enabled',
        'debug',
        'info',
        'warning',
        'error',
        'critical',
    ],
    value: 'error',
    description: '''Enable output the extended logging level.
                    - disabled: disable bmcweb log traces.
                    - enabled: treated as 'debug'
                    - For the other logging level option, see DEVELOPING.md.''',
)

# BMCWEB_BASIC_AUTH
option(
    'basic-auth',
    type: 'feature',
    value: 'enabled',
    description: 'Enable basic authentication',
)

# BMCWEB_SESSION_AUTH
option(
    'session-auth',
    type: 'feature',
    value: 'enabled',
    description: 'Enable session authentication',
)

# BMCWEB_XTOKEN_AUTH
option(
    'xtoken-auth',
    type: 'feature',
    value: 'enabled',
    description: 'Enable xtoken authentication',
)

# BMCWEB_COOKIE_AUTH
option(
    'cookie-auth',
    type: 'feature',
    value: 'enabled',
    description: 'Enable cookie authentication',
)

# BMCWEB_MUTUAL_TLS_AUTH
option(
    'mutual-tls-auth',
    type: 'feature',
    value: 'enabled',
    description: '''Enables authenticating users through TLS client
                    certificates. The insecure-disable-ssl must be disabled for
                    this option to take effect.''',
)

# BMCWEB_MUTUAL_TLS_COMMON_NAME_PARSING_DEFAULT
option(
    'mutual-tls-common-name-parsing-default',
    type: 'combo',
    choices: ['CommonName', 'Whole', 'UserPrincipalName', 'Meta'],
    description: '''
        Parses the Subject CN in the format used by
                                Meta Inc (see mutual_tls_meta.cpp for details)
                    ''',
)

# BMCWEB_META_TLS_COMMON_NAME_PARSING
option(
    'meta-tls-common-name-parsing',
    type: 'feature',
    description: '''
        Allows parsing the Subject CN TLS certificate in the format used by
                                Meta Inc (see mutual_tls_meta.cpp for details)
    ''',
)

# BMCWEB_IBM_MANAGEMENT_CONSOLE
option(
    'ibm-management-console',
    type: 'feature',
    value: 'disabled',
    description: '''Enable the IBM management console specific functionality.
                    Paths are under /ibm/v1/''',
)

# BMCWEB_GOOGLE_API
option(
    'google-api',
    type: 'feature',
    value: 'disabled',
    description: '''Enable the Google specific functionality. Paths are under
                    /google/v1/''',
)

# BMCWEB_HTTP_BODY_LIMIT
option(
    'http-body-limit',
    type: 'integer',
    min: 0,
    max: 512,
    value: 30,
    description: 'Specifies the http request body length limit',
)

# BMCWEB_REDFISH_NEW_POWERSUBSYSTEM_THERMALSUBSYSTEM
option(
    'redfish-new-powersubsystem-thermalsubsystem',
    type: 'feature',
    value: 'enabled',
    description: '''Enable/disable the new PowerSubsystem, ThermalSubsystem,
                    and all children schemas. This includes displaying all
                    sensors in the SensorCollection.''',
)

# BMCWEB_REDFISH_ALLOW_DEPRECATED_POWER_THERMAL
option(
    'redfish-allow-deprecated-power-thermal',
    type: 'feature',
    value: 'enabled',
    description: '''Enable/disable the old Power / Thermal. The default
                    condition is allowing the old Power / Thermal. This
                    will be disabled by default June 2024. ''',
)

# BMCWEB_REDFISH_OEM_MANAGER_FAN_DATA
option(
    'redfish-oem-manager-fan-data',
    type: 'feature',
    value: 'enabled',
    description: '''Enables Redfish OEM fan data on the manager resource.
                    This includes PID and Stepwise controller data. See
                    OpenBMCManager schema for more detail.''',
)

# BMCWEB_REDFISH_UPDATESERVICE_USE_DBUS
option(
    'redfish-updateservice-use-dbus',
    type: 'feature',
    value: 'disabled',
    description: '''Enables xyz.openbmc_project.Software.Update D-Bus interface
                    to propagate UpdateService requests to the corresponding
                    updater daemons instead of moving files to /tmp/images dir.
                    This option is temporary, should not be enabled on any
                    production systems. The code will be moved to the normal
                    code update flow and the option will be removed at the end
                    of Q3 2024.
                ''',
)

# BMCWEB_HTTPS_PORT
option(
    'https_port',
    type: 'integer',
    min: 1,
    max: 65535,
    value: 443,
    description: 'HTTPS Port number.',
)

# BMCWEB_DNS_RESOLVER
option(
    'dns-resolver',
    type: 'combo',
    choices: ['systemd-dbus', 'asio'],
    value: 'systemd-dbus',
    description: '''Sets which DNS resolver backend should be used.
    systemd-dbus uses the Systemd ResolveHostname on dbus, but requires dbus
    support.  asio relies on boost::asio::tcp::resolver, but cannot resolve
    names when boost threading is disabled.''',
)

# BMCWEB_REDFISH_AGGREGATION
option(
    'redfish-aggregation',
    type: 'feature',
    value: 'disabled',
    description: 'Allows this BMC to aggregate resources from satellite BMCs',
)

# BMCWEB_HYPERVISOR_COMPUTER_SYSTEM
option(
    'hypervisor-computer-system',
    type: 'feature',
    value: 'disabled',
    description: '''This puts a hypervisor computer system resource at
    /redfish/v1/Systems/hypervisor. This system resource has children
    resources such as EthernetInterfaces and ComputerSystem.Reset.''',
)

# BMCWEB_EXPERIMENTAL_REDFISH_MULTI_COMPUTER_SYSTEM
option(
    'experimental-redfish-multi-computer-system',
    type: 'feature',
    value: 'disabled',
    description: '''This is a temporary option flag for staging the
    ComputerSystemCollection transition to multi-host.  It, as well as the code
    still beneath it will be removed on 3/1/2025.  Do not enable in a
    production environment, or where API stability is required.''',
)

# BMCWEB_EXPERIMENTAL_HTTP2
option(
    'experimental-http2',
    type: 'feature',
    value: 'disabled',
    description: '''Enable HTTP/2 protocol support using nghttp2.  Do not rely
                    on this option for any production systems.  It may have
                    behavior changes or be removed at any time.''',
)

# Insecure options. Every option that starts with a `insecure` flag should
# not be enabled by default for any platform, unless the author fully comprehends
# the implications of doing so.In general, enabling these options will cause security
# problems of varying degrees

# BMCWEB_INSECURE_DISABLE_CSRF
option(
    'insecure-disable-csrf',
    type: 'feature',
    value: 'disabled',
    description: '''Disable CSRF prevention checks.Should be set to false for
                    production systems.''',
)

# BMCWEB_INSECURE_DISABLE_SSL
option(
    'insecure-disable-ssl',
    type: 'feature',
    value: 'disabled',
    description: '''Disable SSL ports. Should be set to false for production
                    systems.''',
)

# BMCWEB_INSECURE_DISABLE_AUTH
option(
    'insecure-disable-auth',
    type: 'feature',
    value: 'disabled',
    description: '''Disable authentication and authoriztion on all ports.
                    Should be set to false for production systems.''',
)

# BMCWEB_INSECURE_IGNORE_CONTENT_TYPE
option(
    'insecure-ignore-content-type',
    type: 'feature',
    value: 'disabled',
    description: '''Allows parsing PUT/POST/PATCH content as JSON regardless
                    of the presence of the content-type header.  Enabling this
                    conflicts with the input parsing guidelines, but may be
                    required to support old clients that may not set the
                    Content-Type header on payloads.''',
)

# BMCWEB_INSECURE_PUSH_STYLE_NOTIFICATION
option(
    'insecure-push-style-notification',
    type: 'feature',
    value: 'disabled',
    description: 'Enable HTTP push style eventing feature',
)

# BMCWEB_INSECURE_ENABLE_REDFISH_QUERY
option(
    'insecure-enable-redfish-query',
    type: 'feature',
    value: 'disabled',
    description: '''Enables Redfish expand query parameter.  This feature is
                    experimental, and has not been tested against the full
                    limits of user-facing behavior.  It is not recommended to
                    enable on production systems at this time.  Other query
                    parameters such as only are not controlled by this option.''',
)
