ladybird/Meta/CMake/hsts_preload.cmake
Luke Wilde d4d9fc12f7 Meta: Generate HSTS preload data from Chromium's static list
Download transport_security_state_static.json on configure and
emit a sorted flat array of (name, include_subdomains) pairs.
The generator keeps only force-https entries, drops IP literals,
and validates names against [a-z0-9.-] so the emitted C++ string
literals need no escaping.

Matches Firefox's HSTS preload source:
https://searchfox.org/firefox-main/rev/ca47ec6bb1f3e46a384cd1ebb11c5996cceef90f/taskcluster/docker/periodic-updates/scripts/getHSTSPreloadList.js
2026-05-29 22:23:33 +02:00

24 lines
1 KiB
CMake

include(${CMAKE_CURRENT_LIST_DIR}/utils.cmake)
set(HSTS_PRELOAD_PATH "${LADYBIRD_CACHE_DIR}/HSTSPreload" CACHE PATH "Download location for HSTS preload files")
set(HSTS_PRELOAD_DATA_URL "https://raw.githubusercontent.com/chromium/chromium/main/net/http/transport_security_state_static.json")
set(HSTS_PRELOAD_DATA_PATH "${HSTS_PRELOAD_PATH}/transport_security_state_static.json")
set(HSTS_PRELOAD_DATA_HEADER HSTSPreloadData.h)
set(HSTS_PRELOAD_DATA_IMPLEMENTATION HSTSPreloadData.cpp)
if (ENABLE_NETWORK_DOWNLOADS)
download_file("${HSTS_PRELOAD_DATA_URL}" "${HSTS_PRELOAD_DATA_PATH}")
else()
message(STATUS "Skipping download of ${HSTS_PRELOAD_DATA_URL}, expecting it to be in ${HSTS_PRELOAD_DATA_PATH}")
endif()
invoke_py_generator(
"HSTSPreloadData"
"generate_hsts_preload_data.py"
"${HSTS_PRELOAD_PATH}/"
"${HSTS_PRELOAD_DATA_HEADER}"
"${HSTS_PRELOAD_DATA_IMPLEMENTATION}"
arguments -p "${HSTS_PRELOAD_DATA_PATH}"
)
set(HSTS_PRELOAD_SOURCES
${HSTS_PRELOAD_DATA_HEADER}
${HSTS_PRELOAD_DATA_IMPLEMENTATION}
)