only hash png ogg and mp3 files

This commit is contained in:
altalk23 2022-10-20 21:47:29 +03:00
parent ea0a81a790
commit 2a7c9d1be6
3 changed files with 26 additions and 22 deletions

View file

@ -72,7 +72,6 @@ add_subdirectory(fmt)
target_link_libraries(${PROJECT_NAME} INTERFACE filesystem fmt)
if (NOT EXISTS ${GEODE_BIN_PATH})
make_directory(${GEODE_BIN_PATH})
endif()

View file

@ -163,22 +163,29 @@ function(package_geode_resources_now proname src dest header_dest)
file(GLOB RESOURCE_FILES "${dest}/*.*")
set(HEADER_FILE
#[["#include <unordered_map>\n\n"]]
#[["static const std::unordered_map<std::string, std::string> "]]
#[["LOADER_RESOURCE_HASHES {\n"]]
"#include <vector>\n\n"
"static const std::vector<std::string> "
"LOADER_RESOURCE_FILES {\n"
"#include <unordered_map>\n\n"
"static const std::unordered_map<std::string, std::string> "
"LOADER_RESOURCE_HASHES {\n"
# "#include <vector>\n\n"
# "static const std::vector<std::string> "
# "LOADER_RESOURCE_FILES {\n"
)
list(APPEND HASHED_EXTENSIONS ".png")
list(APPEND HASHED_EXTENSIONS ".mp3")
list(APPEND HASHED_EXTENSIONS ".ogg")
foreach(file ${RESOURCE_FILES})
cmake_path(GET file FILENAME FILE_NAME)
if (NOT FILE_NAME STREQUAL ".geode_cache")
# file(SHA256 ${file} COMPUTED_HASH)
# list(APPEND HEADER_FILE "\t{ \"${FILE_NAME}\", \"${COMPUTED_HASH}\" },\n")
get_filename_component(FILE_EXTENSION ${file} EXT)
list(FIND HASHED_EXTENSIONS "${FILE_EXTENSION}" FILE_SHOULD_HASH)
list(APPEND HEADER_FILE "\t\"${FILE_NAME}\",\n")
if (NOT FILE_NAME STREQUAL ".geode_cache" AND NOT FILE_SHOULD_HASH EQUAL -1)
file(SHA256 ${file} COMPUTED_HASH)
list(APPEND HEADER_FILE "\t{ \"${FILE_NAME}\", \"${COMPUTED_HASH}\" },\n")
# list(APPEND HEADER_FILE "\t\"${FILE_NAME}\",\n")
endif()

View file

@ -180,23 +180,21 @@ bool InternalLoader::verifyLoaderResources(IndexUpdateCallback callback) {
for (auto& file : ghc::filesystem::directory_iterator(resourcesDir)) {
auto name = file.path().filename().string();
// skip unknown files
if (/*!LOADER_RESOURCE_HASHES.count(name)*/
std::find(LOADER_RESOURCE_FILES.begin(), LOADER_RESOURCE_FILES.end(), name)
== LOADER_RESOURCE_FILES.end()) {
if (!LOADER_RESOURCE_HASHES.count(name)) {
continue;
}
// verify hash
// auto hash = calculateSHA256(file.path());
// if (hash != LOADER_RESOURCE_HASHES.at(name)) {
// log::debug("compare {} {} {}", file.path().string(), hash, LOADER_RESOURCE_HASHES.at(name));
// this->downloadLoaderResources(callback);
// return false;
// }
auto hash = calculateSHA256(file.path());
if (hash != LOADER_RESOURCE_HASHES.at(name)) {
log::debug("compare {} {} {}", file.path().string(), hash, LOADER_RESOURCE_HASHES.at(name));
this->downloadLoaderResources(callback);
return false;
}
coverage += 1;
}
// make sure every file was found
if (coverage != /*LOADER_RESOURCE_HASHES*/ LOADER_RESOURCE_FILES.size()) {
if (coverage != LOADER_RESOURCE_HASHES.size()) {
this->downloadLoaderResources(callback);
return false;
}