mirror of
https://github.com/whoahq/whoa.git
synced 2026-02-03 01:02:44 +03:00
Compare commits
2 Commits
bdf0bd27a1
...
1589466076
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1589466076 | ||
|
|
8d1316b163 |
@ -987,51 +987,53 @@ void CGlueMgr::Resume() {
|
|||||||
|
|
||||||
DeleteInterfaceFiles();
|
DeleteInterfaceFiles();
|
||||||
|
|
||||||
MD5_CTX md5;
|
uint8_t digest1[16];
|
||||||
unsigned char digest1[16];
|
|
||||||
unsigned char digest2[16];
|
|
||||||
|
|
||||||
int32_t v8;
|
|
||||||
unsigned char* v9;
|
|
||||||
unsigned char* v10;
|
|
||||||
|
|
||||||
MD5Init(&md5);
|
|
||||||
|
|
||||||
switch (FrameXML_CheckSignature("Interface\\GlueXML\\GlueXML.toc", nullptr, InterfaceKey, digest1)) {
|
switch (FrameXML_CheckSignature("Interface\\GlueXML\\GlueXML.toc", nullptr, InterfaceKey, digest1)) {
|
||||||
case 0:
|
case 0: {
|
||||||
status.Add(STATUS_WARNING, "GlueXML missing signature");
|
status.Add(STATUS_WARNING, "GlueXML missing signature");
|
||||||
ClientPostClose(9);
|
ClientPostClose(9);
|
||||||
return;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
status.Add(STATUS_WARNING, "GlueXML has corrupt signature");
|
|
||||||
ClientPostClose(9);
|
|
||||||
return;
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
status.Add(STATUS_WARNING, "GlueXML is modified or corrupt");
|
|
||||||
ClientPostClose(9);
|
|
||||||
return;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
FrameXML_FreeHashNodes();
|
|
||||||
FrameXML_CreateFrames("Interface\\GlueXML\\GlueXML.toc", 0, &md5, &status);
|
|
||||||
|
|
||||||
MD5Final(digest2, &md5);
|
|
||||||
|
|
||||||
v8 = 16;
|
|
||||||
v9 = digest2;
|
|
||||||
v10 = digest1;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
ClientPostClose(9);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO
|
case 1: {
|
||||||
// - some kind of digest validation?
|
status.Add(STATUS_WARNING, "GlueXML has corrupt signature");
|
||||||
|
ClientPostClose(9);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
case 2: {
|
||||||
|
status.Add(STATUS_WARNING, "GlueXML is modified or corrupt");
|
||||||
|
ClientPostClose(9);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
case 3: {
|
||||||
|
// Success
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default: {
|
||||||
|
ClientPostClose(9);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MD5_CTX md5;
|
||||||
|
MD5Init(&md5);
|
||||||
|
|
||||||
|
FrameXML_FreeHashNodes();
|
||||||
|
|
||||||
|
FrameXML_CreateFrames("Interface\\GlueXML\\GlueXML.toc", nullptr, &md5, &status);
|
||||||
|
|
||||||
|
uint8_t digest2[16];
|
||||||
|
MD5Final(digest2, &md5);
|
||||||
|
|
||||||
|
// TODO digest validation
|
||||||
|
|
||||||
FrameScript_SignalEvent(22, nullptr);
|
FrameScript_SignalEvent(22, nullptr);
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,12 @@
|
|||||||
|
|
||||||
int32_t FrameScript_Object::s_objectTypes = 0;
|
int32_t FrameScript_Object::s_objectTypes = 0;
|
||||||
|
|
||||||
|
FrameScript_Object::ScriptIx::~ScriptIx() {
|
||||||
|
if (this->luaRef) {
|
||||||
|
luaL_unref(FrameScript_GetContext(), LUA_REGISTRYINDEX, this->luaRef);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int32_t FrameScript_Object::CreateScriptMetaTable(lua_State* L, void (*a2)(lua_State* L)) {
|
int32_t FrameScript_Object::CreateScriptMetaTable(lua_State* L, void (*a2)(lua_State* L)) {
|
||||||
lua_createtable(L, 0, 0);
|
lua_createtable(L, 0, 0);
|
||||||
lua_pushstring(L, "__index");
|
lua_pushstring(L, "__index");
|
||||||
@ -24,12 +30,6 @@ void FrameScript_Object::FillScriptMethodTable(lua_State *L, FrameScript_Method
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FrameScript_Object::~FrameScript_Object() {
|
|
||||||
if (this->m_onEvent.luaRef) {
|
|
||||||
luaL_unref(FrameScript_GetContext(), LUA_REGISTRYINDEX, this->m_onEvent.luaRef);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const char* FrameScript_Object::GetDisplayName() {
|
const char* FrameScript_Object::GetDisplayName() {
|
||||||
const char* name = this->GetName();
|
const char* name = this->GetName();
|
||||||
return name ? name : "<unnamed>";
|
return name ? name : "<unnamed>";
|
||||||
|
|||||||
@ -14,6 +14,7 @@ class FrameScript_Object {
|
|||||||
struct ScriptIx {
|
struct ScriptIx {
|
||||||
int32_t luaRef = 0;
|
int32_t luaRef = 0;
|
||||||
const char* unk = nullptr;
|
const char* unk = nullptr;
|
||||||
|
~ScriptIx();
|
||||||
};
|
};
|
||||||
|
|
||||||
class ScriptFunction {
|
class ScriptFunction {
|
||||||
@ -34,7 +35,7 @@ class FrameScript_Object {
|
|||||||
ScriptIx m_onEvent;
|
ScriptIx m_onEvent;
|
||||||
|
|
||||||
// Virtual member functions
|
// Virtual member functions
|
||||||
virtual ~FrameScript_Object();
|
virtual ~FrameScript_Object() = default;
|
||||||
virtual char* GetName() = 0;
|
virtual char* GetName() = 0;
|
||||||
virtual int32_t GetScriptMetaTable() = 0;
|
virtual int32_t GetScriptMetaTable() = 0;
|
||||||
virtual ScriptIx* GetScriptByName(const char* name, ScriptData& data);
|
virtual ScriptIx* GetScriptByName(const char* name, ScriptData& data);
|
||||||
|
|||||||
@ -24,32 +24,28 @@ void CGGameUI::Initialize() {
|
|||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
|
|
||||||
MD5_CTX md5;
|
|
||||||
uint8_t digest1[16];
|
uint8_t digest1[16];
|
||||||
uint8_t digest2[16];
|
|
||||||
|
|
||||||
MD5Init(&md5);
|
|
||||||
|
|
||||||
switch (FrameXML_CheckSignature("Interface\\FrameXML\\FrameXML.toc", "Interface\\FrameXML\\Bindings.xml", InterfaceKey, digest1)) {
|
switch (FrameXML_CheckSignature("Interface\\FrameXML\\FrameXML.toc", "Interface\\FrameXML\\Bindings.xml", InterfaceKey, digest1)) {
|
||||||
case 0: {
|
case 0: {
|
||||||
status.Add(STATUS_WARNING, "FrameXML missing signature");
|
status.Add(STATUS_WARNING, "FrameXML missing signature");
|
||||||
ClientPostClose(10);
|
ClientPostClose(10);
|
||||||
|
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 1: {
|
case 1: {
|
||||||
status.Add(STATUS_WARNING, "FrameXML has corrupt signature");
|
status.Add(STATUS_WARNING, "FrameXML has corrupt signature");
|
||||||
ClientPostClose(10);
|
ClientPostClose(10);
|
||||||
|
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 2: {
|
case 2: {
|
||||||
status.Add(STATUS_WARNING, "FrameXML is modified or corrupt");
|
status.Add(STATUS_WARNING, "FrameXML is modified or corrupt");
|
||||||
ClientPostClose(10);
|
ClientPostClose(10);
|
||||||
|
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 3: {
|
case 3: {
|
||||||
@ -60,10 +56,13 @@ void CGGameUI::Initialize() {
|
|||||||
default: {
|
default: {
|
||||||
ClientPostClose(10);
|
ClientPostClose(10);
|
||||||
|
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MD5_CTX md5;
|
||||||
|
MD5Init(&md5);
|
||||||
|
|
||||||
// TODO file count and progress bar logic
|
// TODO file count and progress bar logic
|
||||||
|
|
||||||
FrameXML_FreeHashNodes();
|
FrameXML_FreeHashNodes();
|
||||||
@ -72,6 +71,7 @@ void CGGameUI::Initialize() {
|
|||||||
|
|
||||||
// TODO CGUIBindings::s_bindings->Load("Interface\\FrameXML\\Bindings.xml", &md5, &status);
|
// TODO CGUIBindings::s_bindings->Load("Interface\\FrameXML\\Bindings.xml", &md5, &status);
|
||||||
|
|
||||||
|
uint8_t digest2[16];
|
||||||
MD5Final(digest2, &md5);
|
MD5Final(digest2, &md5);
|
||||||
|
|
||||||
// TODO digest validation
|
// TODO digest validation
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user