blob: 40bee7f689de528ddc35d151c8d8782f6aa4ed9a [file] [log] [blame] [edit]
# Gather the Configuration data
conf_data = configuration_data()
feature_options = [
'basic-auth',
'cookie-auth',
'experimental-http2',
'experimental-redfish-dbus-log-subscription',
'experimental-redfish-multi-computer-system',
'google-api',
'host-serial-socket',
'hypervisor-computer-system',
'ibm-management-console',
'insecure-disable-auth',
'insecure-disable-csrf',
'insecure-disable-ssl',
'insecure-enable-redfish-query',
'insecure-ignore-content-type',
'insecure-push-style-notification',
'kvm',
'meta-tls-common-name-parsing',
'mutual-tls-auth',
'redfish',
'redfish-aggregation',
'redfish-allow-deprecated-power-thermal',
'redfish-allow-simple-update',
'redfish-bmc-journal',
'redfish-cpu-log',
'redfish-dbus-log',
'redfish-dump-log',
'redfish-host-logger',
'redfish-new-powersubsystem-thermalsubsystem',
'redfish-oem-manager-fan-data',
'redfish-provisioning-feature',
'redfish-updateservice-use-dbus',
'redfish-use-3-digit-messageid',
'rest',
'session-auth',
'static-hosting',
'tests',
'vm-websocket',
'xtoken-auth',
]
string_options = [
'dns-resolver',
'mutual-tls-common-name-parsing-default',
'redfish-manager-uri-name',
'redfish-system-uri-name',
]
int_options = ['http-body-limit', 'watchdog-timeout-seconds']
feature_options_string = '\n// Feature options\n'
string_options_string = '\n// String options\n'
int_options_string = '\n// Integer options\n'
foreach feature_type, feature_list : {
'Feature': feature_options,
'Numeric': int_options,
'String': string_options,
}
summary_dict = {}
foreach option_key : feature_list
option_key_config = 'BMCWEB_' + option_key.to_upper()
option_key_config = option_key_config.replace('-', '_')
opt = get_option(option_key)
if feature_type == 'Feature'
opt = opt.allowed()
feature_options_string += 'constexpr const bool @0@=@1@;\n'.format(
option_key_config,
opt.to_string(),
)
endif
if feature_type == 'Numeric'
int_options_string += 'constexpr const int @0@=@1@;\n'.format(
option_key_config,
opt.to_string(),
)
endif
if feature_type == 'String'
string_options_string += 'constexpr std::string_view @0@="@1@";\n'.format(
option_key_config,
opt,
)
endif
summary_dict += {option_key: opt}
endforeach
summary(summary_dict, section: feature_type + ' Options', bool_yn: true)
endforeach
# Logging level
loglvlopt = get_option('bmcweb-logging')
if get_option('buildtype').startswith('debug') and loglvlopt == 'disabled'
# Override logging level as 'debug' if 'bmcweb-logging' is set as 'disabled'
loglvlopt = 'debug'
endif
loglvlopt = loglvlopt.to_upper()
string_options_string += 'constexpr std::string_view BMCWEB_LOGGING_LEVEL' + ' = "' + loglvlopt + '";\n'
# NBD proxy is disabled due to lack of maintenance. See meson_options.txt
feature_options_string += 'constexpr const bool BMCWEB_VM_NBDPROXY = false;\n'
conf_data.set(
'BMCWEB_OPTIONS',
string_options_string + int_options_string + feature_options_string,
)
conf_h_dep = declare_dependency(
include_directories: include_directories('.'),
sources: configure_file(
input: 'bmcweb_config.h.in',
output: 'bmcweb_config.h',
configuration: conf_data,
),
)
# Configure and install systemd unit files
https_port = get_option('https_port')
if https_port > 0
configure_file(
input: 'bmcweb.socket.in',
output: 'bmcweb.socket',
install_dir: systemd_system_unit_dir,
install: true,
configuration: configuration_data(
{
'BMCWEB_PORT': https_port,
'HTTP_LEVEL_ALLOWED': 'https',
'HTTP_AUTH_LEVEL': 'auth',
'HTTP_BIND': '',
},
),
)
endif
ports = get_option('additional-ports')
binds = get_option('additional-bind-to-device')
auths = get_option('additional-auth')
foreach index : range(ports.length())
port_number = ports[index]
bind_to_device = '0.0.0.0'
auth = 'auth'
if index < binds.length()
bind_to_device = binds[index]
endif
if index < auths.length()
auth = auths[index]
endif
filename = 'bmcweb_' + port_number
configure_file(
input: 'bmcweb.socket.in',
output: filename,
install_dir: systemd_system_unit_dir,
install: true,
configuration: configuration_data(
{
'BMCWEB_HTTPS_PORT': port_number,
'HTTP_LEVEL_ALLOWED': 'https',
'HTTP_BIND': bind_to_device,
'HTTP_AUTH_LEVEL': auth,
},
),
)
endforeach
configure_file(
input: 'bmcweb.service.in',
output: 'bmcweb.service',
install_dir: systemd_system_unit_dir,
install: true,
configuration: configuration_data(
{
'MESON_INSTALL_PREFIX': get_option('prefix'),
'BMCWEB_WATCHDOG_TIMEOUT_SECONDS': get_option(
'watchdog-timeout-seconds',
),
},
),
)
# Copy pam-webserver to etc/pam.d
install_data('pam-webserver', install_dir: '/etc/pam.d/', rename: 'webserver')