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
24 lines
1 KiB
CMake
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}
|
|
)
|