mirror of
https://github.com/R2Northstar/NorthstarLauncher
synced 2026-08-23 20:26:04 -04:00
Validate package pattern before checking for plugins (#525)
Adds missing validation check to ensure that the package folder the plugin is included in matches the `AUTHOR-MOD-VERSION` pattern.
(cherry picked from commit 0af8c500ae)
This commit is contained in:
parent
6beb2b1a0a
commit
86c145c56c
2 changed files with 16 additions and 6 deletions
|
|
@ -16,6 +16,7 @@
|
|||
#include <string>
|
||||
#include <sstream>
|
||||
#include <vector>
|
||||
#include <regex>
|
||||
|
||||
ModManager* g_pModManager;
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
#include "core/convar/convar.h"
|
||||
#include "server/serverpresence.h"
|
||||
#include <optional>
|
||||
#include <regex>
|
||||
|
||||
#include "util/version.h"
|
||||
#include "pluginbackend.h"
|
||||
|
|
@ -215,7 +216,7 @@ bool PluginManager::LoadPlugins()
|
|||
|
||||
std::vector<fs::path> paths;
|
||||
|
||||
pluginPath = GetNorthstarPrefix() + "/plugins";
|
||||
pluginPath = GetNorthstarPrefix() + "\\plugins";
|
||||
|
||||
PluginNorthstarData data {};
|
||||
std::string ns_version {version};
|
||||
|
|
@ -232,12 +233,20 @@ bool PluginManager::LoadPlugins()
|
|||
|
||||
FindPlugins(pluginPath, paths);
|
||||
|
||||
// Special case for Thunderstore plugin dirs
|
||||
|
||||
for (fs::directory_entry dir : fs::directory_iterator(GetThunderstoreModFolderPath()))
|
||||
// Special case for Thunderstore mods dir
|
||||
std::filesystem::directory_iterator thunderstoreModsDir = fs::directory_iterator(GetThunderstoreModFolderPath());
|
||||
// Set up regex for `AUTHOR-MOD-VERSION` pattern
|
||||
std::regex pattern(R"(.*\\([a-zA-Z0-9_]+)-([a-zA-Z0-9_]+)-(\d+\.\d+\.\d+))");
|
||||
for (fs::directory_entry dir : thunderstoreModsDir)
|
||||
{
|
||||
fs::path pluginDir = dir.path() / "plugins";
|
||||
FindPlugins(pluginDir, paths);
|
||||
fs::path pluginsDir = dir.path() / "plugins";
|
||||
// Use regex to match `AUTHOR-MOD-VERSION` pattern
|
||||
if (!std::regex_match(dir.path().string(), pattern))
|
||||
{
|
||||
spdlog::warn("The following directory did not match 'AUTHOR-MOD-VERSION': {}", dir.path().string());
|
||||
continue; // skip loading package that doesn't match
|
||||
}
|
||||
FindPlugins(pluginsDir, paths);
|
||||
}
|
||||
|
||||
if (paths.empty())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue