Compare commits
10 Commits
b8a4c8e673
...
master
Author | SHA1 | Date | |
---|---|---|---|
9b5411bc43 | |||
9cfd157fd2 | |||
a559009ee5 | |||
381e31f663 | |||
be3b6d225c | |||
c8f7948246 | |||
1ae76e7674 | |||
f2cfefda0f | |||
1b7eccf810 | |||
402e0168ee |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
*.op
|
@@ -1,6 +1,7 @@
|
|||||||
class LayerConfig {
|
class LayerConfig {
|
||||||
string Name;
|
string Name;
|
||||||
string Path;
|
string Path;
|
||||||
|
string Hash;
|
||||||
|
|
||||||
CGameUILayer::EUILayerType LayerType = CGameUILayer::EUILayerType::Normal;
|
CGameUILayer::EUILayerType LayerType = CGameUILayer::EUILayerType::Normal;
|
||||||
string AttachId = '';
|
string AttachId = '';
|
||||||
@@ -9,6 +10,7 @@ class LayerConfig {
|
|||||||
|
|
||||||
LayerConfig(const string &in _ParentPath, const Json::Value &in _Data) {
|
LayerConfig(const string &in _ParentPath, const Json::Value &in _Data) {
|
||||||
Path = Path::Join(_ParentPath, _Data['Path']);
|
Path = Path::Join(_ParentPath, _Data['Path']);
|
||||||
|
Hash = _Data['Hash'];
|
||||||
|
|
||||||
const string Manialink = GetManialink();
|
const string Manialink = GetManialink();
|
||||||
Name = PacksManager::GetLayerName(Manialink);
|
Name = PacksManager::GetLayerName(Manialink);
|
||||||
@@ -33,6 +35,22 @@ class LayerConfig {
|
|||||||
|
|
||||||
IO::File File(Path, IO::FileMode::Read);
|
IO::File File(Path, IO::FileMode::Read);
|
||||||
const string Manialink = File.ReadToEnd();
|
const string Manialink = File.ReadToEnd();
|
||||||
|
|
||||||
|
const string FileHash = Crypto::Sha256(Manialink);
|
||||||
|
|
||||||
|
if (Hash != FileHash) {
|
||||||
|
print('Cannot load layer "'+ Path +'": Invalid hash');
|
||||||
|
trace('info.json Layer hash: '+ Hash);
|
||||||
|
trace('file hash: '+ FileHash);
|
||||||
|
if (S_DisplayHashWarning) {
|
||||||
|
RenderManager::NotifyWarning('Cannot load layer "'+ Path +'": Invalid hash');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Meta::IsDeveloperMode()) {
|
||||||
|
throw('Cannot load layer "'+ Path +'": Invalid hash');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return Manialink;
|
return Manialink;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
4
Hashes.as
Normal file
4
Hashes.as
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
const array<string> C_InterfacesPacksHashes = {
|
||||||
|
"c48796635bd234a22214336def4397bebb22a0f483ed6b30a4f412a1953be60e", // Anonymised TMWC 2024 - 1.0
|
||||||
|
"2a542ea483db750bb7a6240ea885e23eb34add0f88fbdfa38b5daa816d094cef" // Beacon Duo League - 1.0
|
||||||
|
};
|
@@ -41,6 +41,21 @@ namespace PacksManager {
|
|||||||
|
|
||||||
const string FileContent = File.ReadToEnd();
|
const string FileContent = File.ReadToEnd();
|
||||||
|
|
||||||
|
const string InfoFileHash = Crypto::Sha256(FileContent);
|
||||||
|
|
||||||
|
if (C_InterfacesPacksHashes.Find(InfoFileHash) < 0) {
|
||||||
|
print('Invalid Pack Config "'+ Id +'": Invalid hash');
|
||||||
|
trace('info.json hash: '+ InfoFileHash);
|
||||||
|
if (S_DisplayHashWarning) {
|
||||||
|
RenderManager::NotifyWarning('Invalid Pack Config "'+ Id +'": Invalid hash');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Meta::IsDeveloperMode()) {
|
||||||
|
trace('Invalid Pack Config "'+ Id +'": Invalid hash');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const PackConfig Config(Path, FileContent);
|
const PackConfig Config(Path, FileContent);
|
||||||
G_Configs[Id] = Config;
|
G_Configs[Id] = Config;
|
||||||
|
@@ -4,7 +4,8 @@ namespace RenderManager {
|
|||||||
|
|
||||||
void RenderInterface() {
|
void RenderInterface() {
|
||||||
if (G_RenderInterface) {
|
if (G_RenderInterface) {
|
||||||
UI::Begin(Icons::Television + " Custom Interface Loader", G_RenderInterface);
|
UI::SetNextWindowSize(550., 250.);
|
||||||
|
UI::Begin(Icons::Television + " Custom Interface Loader###CustomInterfaceLoader", G_RenderInterface, UI::WindowFlags::NoSavedSettings);
|
||||||
|
|
||||||
if (UI::Button(Icons::FolderOpen + ' Open File Explorer')) {
|
if (UI::Button(Icons::FolderOpen + ' Open File Explorer')) {
|
||||||
OpenExplorerPath(IO::FromStorageFolder(''));
|
OpenExplorerPath(IO::FromStorageFolder(''));
|
||||||
@@ -27,7 +28,7 @@ namespace RenderManager {
|
|||||||
vec2 RightAlignedButtonsCursorPos = UI::GetCursorPos();
|
vec2 RightAlignedButtonsCursorPos = UI::GetCursorPos();
|
||||||
|
|
||||||
if (UI::Button(Icons::Info + ' Info')) {
|
if (UI::Button(Icons::Info + ' Info')) {
|
||||||
OpenBrowserURL('https://openplanet.dev/plugin/' + Meta::ExecutingPlugin().get_SiteID());
|
OpenBrowserURL('https://openplanet.dev/plugin/' + Meta::ExecutingPlugin().SiteID);
|
||||||
}
|
}
|
||||||
UI::SameLine();
|
UI::SameLine();
|
||||||
|
|
||||||
@@ -42,12 +43,12 @@ namespace RenderManager {
|
|||||||
|
|
||||||
UI::Dummy(vec2());
|
UI::Dummy(vec2());
|
||||||
|
|
||||||
if (UI::BeginTable('configs', 5, UI::TableFlags(UI::TableFlags::Resizable | UI::TableFlags::Sortable | UI::TableFlags::NoSavedSettings | UI::TableFlags::SizingStretchProp |UI::TableFlags::ScrollY ))) {
|
if (UI::BeginTable('ConfigTable', 5, UI::TableFlags(UI::TableFlags::NoSavedSettings | UI::TableFlags::Resizable | UI::TableFlags::Sortable | UI::TableFlags::SizingStretchProp |UI::TableFlags::ScrollY ))) {
|
||||||
UI::TableSetupColumn("Name", UI::TableColumnFlags::DefaultSort);
|
UI::TableSetupColumn("Name", UI::TableColumnFlags::DefaultSort, 200.);
|
||||||
UI::TableSetupColumn("Author", UI::TableColumnFlags::None);
|
UI::TableSetupColumn("Author", UI::TableColumnFlags::None, 150.);
|
||||||
UI::TableSetupColumn("Version", UI::TableColumnFlags::None);
|
UI::TableSetupColumn("Version", UI::TableColumnFlags::None, 100.);
|
||||||
UI::TableSetupColumn("Modes", UI::TableColumnFlags::None);
|
UI::TableSetupColumn("Modes", UI::TableColumnFlags::None, 300.);
|
||||||
UI::TableSetupColumn("Enable", UI::TableColumnFlags::NoSort, 60.);
|
UI::TableSetupColumn("Enable", UI::TableColumnFlags::NoSort, 70.);
|
||||||
UI::TableHeadersRow();
|
UI::TableHeadersRow();
|
||||||
|
|
||||||
const array<string> ConfigIds = PacksManager::G_Configs.GetKeys();
|
const array<string> ConfigIds = PacksManager::G_Configs.GetKeys();
|
||||||
|
@@ -1,3 +1,6 @@
|
|||||||
|
|
||||||
|
[Setting name="Display hash mismatch warning"]
|
||||||
|
bool S_DisplayHashWarning = true;
|
||||||
|
|
||||||
[Setting hidden]
|
[Setting hidden]
|
||||||
string S_EnabledConfigs = '';
|
string S_EnabledConfigs = '';
|
@@ -3,4 +3,4 @@ name = "Custom Interfaces Loader"
|
|||||||
siteid = 671
|
siteid = 671
|
||||||
author = "Beu"
|
author = "Beu"
|
||||||
category = "Interfaces"
|
category = "Interfaces"
|
||||||
version = "0.1"
|
version = "0.3"
|
Reference in New Issue
Block a user