mirror of
https://github.com/open5gs/open5gs.git
synced 2025-11-03 05:23:38 +00:00
- Add `sslkeylogfile` configuration options to `*.yaml.in` in NFs. - Update `open5gs-common.dirs` to include `var/log/open5gs/tls` directory - Extend `ogs_sbi_context_s` structure in `context.h` to include `sslkeylog` - Modify `context.c` to parse and handle `sslkeylogfile` settings - Update `server.c` and `server.h` to manage the `sslkeylog` field in server structures - Update `ogs_sbi_client_add` and `ogs_sbi_client_remove` functions to handle `sslkeylog` field. - Adjust `meson.build` to create the TLS log directory during installation This commit introduces SSL key logging functionality to Open5GS, enabling the capture of SSL/TLS keys. This feature is essential for debugging encrypted traffic and allows integration with tools like Wireshark for decrypting TLS sessions.
175 lines
5.5 KiB
Meson
175 lines
5.5 KiB
Meson
# Copyright (C) 2019-2023 by Sukchan Lee <acetcom@gmail.com>
|
|
|
|
# This file is part of Open5GS.
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
project('open5gs', 'c', 'cpp',
|
|
version : '2.7.2',
|
|
license : 'AGPL-3.0-or-later',
|
|
meson_version : '>= 0.43.0',
|
|
default_options : [
|
|
'warning_level=1',
|
|
'c_std=gnu89',
|
|
],
|
|
)
|
|
|
|
libogslib_version = '2.7.2'
|
|
|
|
prefix = get_option('prefix')
|
|
bindir = join_paths(prefix, get_option('bindir'))
|
|
libdir = join_paths(prefix, get_option('libdir'))
|
|
sysconfdir = join_paths(prefix, get_option('sysconfdir'))
|
|
localstatedir = join_paths(prefix, get_option('localstatedir'))
|
|
|
|
open5gs_build_dir = meson.current_build_dir()
|
|
|
|
cc = meson.get_compiler('c')
|
|
host_system = host_machine.system()
|
|
|
|
git = find_program('git', required: false)
|
|
#python = import('python')
|
|
#python3 = python.find_installation('python3')
|
|
python3 = find_program('python3', 'python')
|
|
if meson.version().version_compare('>=0.55.0')
|
|
python3_exe = join_paths(python3.full_path())
|
|
else
|
|
python3_exe = join_paths(python3.path())
|
|
endif
|
|
mkdir_p = 'import os; os.makedirs("@0@", exist_ok=True) if not os.environ.get("DESTDIR") else False;'
|
|
symlink = 'import os; os.symlink("@0@", "@1@") if not os.environ.get("DESTDIR") and not os.path.islink("@1@") else False;'
|
|
install_conf = 'import os; import shutil; shutil.copy("@0@", "@1@") if not os.environ.get("DESTDIR") and not os.path.isfile(os.path.join("@1@", os.path.split("@0@")[1])) else False;'
|
|
cppcheck = find_program('cppcheck', required: false)
|
|
clangtidy = find_program('run-clang-tidy', required: false) # requires clang-tools package
|
|
if clangtidy.found() != true
|
|
clangtidy = find_program('clang-tidy', required: false)
|
|
endif
|
|
|
|
meson.add_install_script(python3_exe, '-c',
|
|
mkdir_p.format(join_paths(localstatedir, 'log', 'open5gs', 'tls')))
|
|
|
|
# Compiler flags
|
|
if cc.get_id() == 'gcc' or cc.get_id() == 'clang'
|
|
possible_cc_flags = [
|
|
'-Wextra',
|
|
'-Wlogical-op',
|
|
'-Werror=pointer-arith',
|
|
'-Werror=init-self',
|
|
'-Wfloat-equal',
|
|
'-Wsuggest-attribute=noreturn',
|
|
'-Werror=missing-prototypes',
|
|
'-Werror=missing-declarations',
|
|
'-Werror=implicit-function-declaration',
|
|
'-Werror=return-type',
|
|
'-Werror=incompatible-pointer-types',
|
|
'-Werror=format=2',
|
|
'-Wstrict-prototypes',
|
|
'-Wredundant-decls',
|
|
'-Wimplicit-fallthrough=5',
|
|
'-Wendif-labels',
|
|
'-Wstrict-aliasing=3',
|
|
'-Wwrite-strings',
|
|
'-Werror=overflow',
|
|
'-Werror=shift-count-overflow',
|
|
'-Werror=shift-overflow=2',
|
|
'-Wdate-time',
|
|
'-Wnested-externs',
|
|
'-Wunused',
|
|
'-Wduplicated-branches',
|
|
'-Wmisleading-indentation',
|
|
|
|
'-Wno-sign-compare',
|
|
'-Wno-unused-parameter',
|
|
|
|
'-ffast-math',
|
|
'-fdiagnostics-show-option',
|
|
## TODO : '-fvisibility=hidden',
|
|
'-fstack-protector',
|
|
'-fstack-protector-strong',
|
|
'--param=ssp-buffer-size=4',
|
|
]
|
|
|
|
if cc.get_id() == 'clang'
|
|
possible_cc_flags += [
|
|
'-Wno-typedef-redefinition',
|
|
'-Wno-gnu-variable-sized-type-not-at-end',
|
|
]
|
|
endif
|
|
|
|
if get_option('buildtype') != 'debug'
|
|
possible_cc_flags += [
|
|
'-ffunction-sections',
|
|
'-fdata-sections',
|
|
]
|
|
endif
|
|
else
|
|
possible_cc_flags = []
|
|
endif
|
|
|
|
add_project_arguments(
|
|
cc.get_supported_arguments(possible_cc_flags),
|
|
language : 'c')
|
|
|
|
subdir('configs')
|
|
subdir('lib')
|
|
subdir('src')
|
|
subdir('misc')
|
|
# Don't build the tests unless we can run them (either natively or in an exe wrapper)
|
|
build_tests = not meson.is_cross_build() or (meson.is_cross_build() and meson.has_exe_wrapper())
|
|
if build_tests
|
|
subdir('tests')
|
|
endif
|
|
|
|
# Check if the 'fuzzing' option is defined
|
|
if get_option('fuzzing')
|
|
subdir('tests/fuzzing')
|
|
endif
|
|
|
|
message('\n'.join([
|
|
'',
|
|
' prefix: ' + prefix,
|
|
' libdir: ' + libdir,
|
|
' bindir: ' + bindir,
|
|
' sysconfdir: ' + sysconfdir,
|
|
' localstatedir: ' + localstatedir,
|
|
' build location: ' + meson.current_build_dir(),
|
|
' source location: ' + meson.current_source_dir(),
|
|
' compiler: ' + cc.get_id(),
|
|
' debugging support: ' + get_option('buildtype'),
|
|
'',
|
|
]))
|
|
|
|
|
|
if cppcheck.found()
|
|
run_target('analyze-cppcheck',
|
|
command : [ 'misc/static-code-analyze.sh',
|
|
meson.version().version_compare('>=0.55.0') ?
|
|
cppcheck.full_path() : cppcheck.path(),
|
|
meson.current_build_dir(),
|
|
meson.current_source_dir()
|
|
]
|
|
)
|
|
endif
|
|
|
|
if clangtidy.found()
|
|
run_target('analyze-clang-tidy',
|
|
command : [ 'misc/static-code-analyze.sh',
|
|
meson.version().version_compare('>=0.55.0') ?
|
|
clangtidy.full_path() : clangtidy.path(),
|
|
meson.current_build_dir(),
|
|
meson.current_source_dir()
|
|
]
|
|
)
|
|
endif
|