From 7b92e4acf6dea29348efeb4c0cc89e3071aee56e Mon Sep 17 00:00:00 2001 From: sappho Date: Fri, 14 Jul 2023 07:19:14 -0400 Subject: ci fixes and repo cleanup + small tweaks and first release (#2) * Update docker_build.yml * Update docker_build.yml * Update docker_build.yml * attempt to lint * use tags * Update docker_build.yml * reorganize repo * correct typo with build dir * hacky chmod/chown for docker builds * more hacks for chmod * try to hack docker to work again * fix invalid syntax * remove extension in repo, remove spaces, fixup gitignore * twiddle around with making releases with commits * more ci testing to use non deprecated actions * Update docker_build.yml * more ci twiddling (ugh) * more lint and run the actual job now * lint more and use deb slim * autogen rel notes (?) * fixup bad quotes * sigh. fix quotes again * save beta autotagging for a later date * gitignore * fix so users don't use removed hash funcs * add max dbg info to ext * update versionings --- extension/opensslthread.cpp | 100 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 extension/opensslthread.cpp (limited to 'extension/opensslthread.cpp') diff --git a/extension/opensslthread.cpp b/extension/opensslthread.cpp new file mode 100644 index 0000000..84e2286 --- /dev/null +++ b/extension/opensslthread.cpp @@ -0,0 +1,100 @@ +#include "opensslthread.h" + + +OpensslThread::OpensslThread(void *_data, OpensslThread_Type _type): +type(_type),data(_data) +{ + assert((type > OpensslThread_Type_NOTHING && type < OpensslThread_Type_LAST)); + assert((data != NULL)); +} + + +OpensslThread::~OpensslThread() +{ + +} + +static void openssl_hash_FramAction(void *data) +{ + if(data == NULL) + return; + + Openssl_Hash_pack *handle = (Openssl_Hash_pack *)data; + + IPluginFunction *pFunc = handle->hash_callback; + assert((pFunc != NULL)); + if(pFunc != NULL) + { + pFunc->PushCell(handle->success); + if(handle->output == NULL) + pFunc->PushString(""); + else + pFunc->PushString(handle->output); + pFunc->PushCell(handle->UserData); + pFunc->Execute(NULL); + } + + if(handle->output != NULL) + delete handle->output; + if(handle->path != NULL) + delete handle->path; + delete handle; +} + +void OpensslThread::RunFileHash() +{ + Openssl_Hash_pack *handle = (Openssl_Hash_pack *)data; + handle->success = false; + + assert((handle->path != NULL)); + + char realpath[PLATFORM_MAX_PATH]; + g_pSM->BuildPath(Path_Game, realpath, sizeof(realpath), "%s", handle->path); + FILE *pFile = fopen(realpath, "rb"); + if(!pFile) + return; + + unsigned char *output = NULL; + int outlength; + + if(!g_OpensslManager.HashFile(handle->algorithm, pFile, &output, &outlength)) + goto clean; + + assert((output != NULL)); + if(output != NULL) + { + handle->output = new char[outlength*2+1]; + int pos = 0; + for(int i=0; ioutput[pos],"%02x",(unsigned char)output[i]); + pos+=2; + } + handle->success = true; + } + +clean: + if(output != NULL) + delete output; + + fclose(pFile); +} + +void OpensslThread::RunThread(IThreadHandle *pHandle) +{ + if(type == OpensslThread_Type_HASH_FILE) + { + RunFileHash(); + } +} + +void OpensslThread::OnTerminate(IThreadHandle *pHandle, bool cancel) +{ + if(type == OpensslThread_Type_HASH_FILE) + { + smutils->AddFrameAction(openssl_hash_FramAction, data); + } + + delete this; +} + -- cgit v1.2.3