mirror of
https://github.com/Ylianst/MeshAgent
synced 2025-12-15 15:53:55 +00:00
Fixed windows installer for 32 bit
This commit is contained in:
@@ -251,7 +251,7 @@ char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
printf("Agent ARCHID: %d\n", MESH_AGENTID);
|
printf("Agent ARCHID: %d\n", MESH_AGENTID);
|
||||||
char script[] = "var _tmp = 'Detected OS: ' + require('os').Name; try{_tmp += (' - ' + require('os').arch());}catch(x){}console.log(_tmp);process.exit();";
|
char script[] = "var _tmp = 'Detected OS: ' + require('os').Name; try{_tmp += (' - ' + require('os').arch());}catch(x){}console.log(_tmp);if(process.platform=='win32'){ _tmp=require('win-authenticode-opus')(process.execPath); if(_tmp!=null && _tmp.url!=null){ _tmp=require('win-authenticode-opus').locked(_tmp.url); if(_tmp!=null) { console.log('LOCKED to: ' + _tmp.dns); console.log(' => ' + _tmp.id); } } } process.exit();";
|
||||||
integratedJavaScript = ILibString_Copy(script, sizeof(script) - 1);
|
integratedJavaScript = ILibString_Copy(script, sizeof(script) - 1);
|
||||||
integratedJavaScriptLen = (int)sizeof(script) - 1;
|
integratedJavaScriptLen = (int)sizeof(script) - 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,21 +94,21 @@ extern DWORD WINAPI kvm_server_mainloop(LPVOID Param);
|
|||||||
|
|
||||||
HMODULE _gdip = NULL;
|
HMODULE _gdip = NULL;
|
||||||
HMODULE _shm = NULL;
|
HMODULE _shm = NULL;
|
||||||
typedef int(*_GdipCreateBitmapFromStream)(void *stream, void **bitmap);
|
typedef int(__stdcall *_GdipCreateBitmapFromStream)(void *stream, void **bitmap);
|
||||||
typedef int(*_GdiplusStartup)(void **token, void *input, void *obj);
|
typedef int(__stdcall *_GdiplusStartup)(void **token, void *input, void *obj);
|
||||||
typedef int(*_GdiplusShutdown)(void *token);
|
typedef int(__stdcall *_GdiplusShutdown)(void *token);
|
||||||
typedef IStream*(*_SHCreateMemStream)(void *buffer, uint32_t bufferLen);
|
typedef IStream*(__stdcall *_SHCreateMemStream)(void *buffer, uint32_t bufferLen);
|
||||||
typedef int(*_GdipCreateHBITMAPFromBitmap)(void *bitmap, HBITMAP *hbReturn, int background);
|
typedef int(__stdcall *_GdipCreateHBITMAPFromBitmap)(void *bitmap, HBITMAP *hbReturn, int background);
|
||||||
typedef int(*_GdipGetImagePixelFormat)(void *image, int *format);
|
typedef int(__stdcall *_GdipGetImagePixelFormat)(void *image, int *format);
|
||||||
typedef int(*_GdipCreateBitmapFromScan0)(int width, int height, int stride, int format, BYTE* scan0, void** bitmap);
|
typedef int(__stdcall *_GdipCreateBitmapFromScan0)(int width, int height, int stride, int format, BYTE* scan0, void** bitmap);
|
||||||
typedef int(*_GdipGetImageHorizontalResolution)(void *image, float *resolution);
|
typedef int(__stdcall *_GdipGetImageHorizontalResolution)(void *image, float *resolution);
|
||||||
typedef int(*_GdipGetImageVerticalResolution)(void *image, float *resolution);
|
typedef int(__stdcall *_GdipGetImageVerticalResolution)(void *image, float *resolution);
|
||||||
typedef int(*_GdipBitmapSetResolution)(void* bitmap, float xdpi, float ydpi);
|
typedef int(__stdcall *_GdipBitmapSetResolution)(void* bitmap, float xdpi, float ydpi);
|
||||||
typedef int(*_GdipGetImageGraphicsContext)(void *image, void **graphics);
|
typedef int(__stdcall *_GdipGetImageGraphicsContext)(void *image, void **graphics);
|
||||||
typedef int(*_GdipSetSmoothingMode)(void *graphics, int smoothingMode);
|
typedef int(__stdcall *_GdipSetSmoothingMode)(void *graphics, int smoothingMode);
|
||||||
typedef int(*_GdipSetInterpolationMode)(void *graphics, int interpolationMode);
|
typedef int(__stdcall *_GdipSetInterpolationMode)(void *graphics, int interpolationMode);
|
||||||
typedef int(*_GdipDrawImageRectI)(void *graphics, void *image, int x, int y, int width, int height);
|
typedef int(__stdcall *_GdipDrawImageRectI)(void *graphics, void *image, int x, int y, int width, int height);
|
||||||
typedef int(*_GdipDisposeImage)(void *image);
|
typedef int(__stdcall *_GdipDisposeImage)(void *image);
|
||||||
typedef HRESULT(__stdcall *DpiAwarenessFunc)(PROCESS_DPI_AWARENESS);
|
typedef HRESULT(__stdcall *DpiAwarenessFunc)(PROCESS_DPI_AWARENESS);
|
||||||
|
|
||||||
_GdipCreateBitmapFromStream GdipCreateBitmapFromStream;
|
_GdipCreateBitmapFromStream GdipCreateBitmapFromStream;
|
||||||
@@ -531,7 +531,7 @@ int wmain(int argc, char* wargv[])
|
|||||||
printf("Using %s\n", SSLeay_version(SSLEAY_VERSION));
|
printf("Using %s\n", SSLeay_version(SSLEAY_VERSION));
|
||||||
#endif
|
#endif
|
||||||
printf("Agent ARCHID: %d\n", MESH_AGENTID);
|
printf("Agent ARCHID: %d\n", MESH_AGENTID);
|
||||||
char script[] = "console.log('Detected OS: ' + require('os').Name + ' - ' + require('os').arch());process.exit();";
|
char script[] = "var _tmp = 'Detected OS: ' + require('os').Name; try{_tmp += (' - ' + require('os').arch());}catch(x){}console.log(_tmp);if(process.platform=='win32'){ _tmp=require('win-authenticode-opus')(process.execPath); if(_tmp!=null && _tmp.url!=null){ _tmp=require('win-authenticode-opus').locked(_tmp.url); if(_tmp!=null) { console.log('LOCKED to: ' + _tmp.dns); console.log(' => ' + _tmp.id); } } } process.exit();";
|
||||||
integratedJavaScript = ILibString_Copy(script, sizeof(script) - 1);
|
integratedJavaScript = ILibString_Copy(script, sizeof(script) - 1);
|
||||||
integragedJavaScriptLen = (int)sizeof(script) - 1;
|
integragedJavaScriptLen = (int)sizeof(script) - 1;
|
||||||
}
|
}
|
||||||
@@ -938,74 +938,80 @@ int wmain(int argc, char* wargv[])
|
|||||||
void *dialogchain = ILibCreateChain();
|
void *dialogchain = ILibCreateChain();
|
||||||
ILibChain_PartialStart(dialogchain);
|
ILibChain_PartialStart(dialogchain);
|
||||||
duk_context *ctx = ILibDuktape_ScriptContainer_InitializeJavaScriptEngineEx(0, 0, dialogchain, NULL, NULL, selfexe, NULL, NULL, dialogchain);
|
duk_context *ctx = ILibDuktape_ScriptContainer_InitializeJavaScriptEngineEx(0, 0, dialogchain, NULL, NULL, selfexe, NULL, NULL, dialogchain);
|
||||||
if (duk_peval_string(ctx, "require('util-language').current.toLowerCase().split('_').join('-');") == 0) { lang = (char*)duk_safe_to_string(ctx, -1); }
|
if (duk_peval_string(ctx, "require('win-authenticode-opus').checkMSH();") == 0)
|
||||||
if (duk_peval_string(ctx, "(function foo(){return(JSON.parse(_MSH().translation));})()") != 0 || !duk_has_prop_string(ctx, -1, "en"))
|
|
||||||
{
|
{
|
||||||
duk_push_object(ctx); // [translation][en]
|
if (duk_peval_string(ctx, "require('util-language').current.toLowerCase().split('_').join('-');") == 0) { lang = (char*)duk_safe_to_string(ctx, -1); }
|
||||||
duk_push_string(ctx, "Install"); duk_put_prop_string(ctx, -2, "install");
|
if (duk_peval_string(ctx, "(function foo(){return(JSON.parse(_MSH().translation));})()") != 0 || !duk_has_prop_string(ctx, -1, "en"))
|
||||||
duk_push_string(ctx, "Uninstall"); duk_put_prop_string(ctx, -2, "uninstall");
|
|
||||||
duk_push_string(ctx, "Connect"); duk_put_prop_string(ctx, -2, "connect");
|
|
||||||
duk_push_string(ctx, "Disconnect"); duk_put_prop_string(ctx, -2, "disconnect");
|
|
||||||
duk_push_string(ctx, "Update"); duk_put_prop_string(ctx, -2, "update");
|
|
||||||
duk_push_array(ctx);
|
|
||||||
duk_push_string(ctx, "NOT INSTALLED"); duk_array_push(ctx, -2);
|
|
||||||
duk_push_string(ctx, "RUNNING"); duk_array_push(ctx, -2);
|
|
||||||
duk_push_string(ctx, "NOT RUNNING"); duk_array_push(ctx, -2);
|
|
||||||
duk_put_prop_string(ctx, -2, "status");
|
|
||||||
duk_put_prop_string(ctx, -2, "en"); // [translation]
|
|
||||||
}
|
|
||||||
if (DIALOG_LANG != NULL) { lang = DIALOG_LANG; }
|
|
||||||
if (!duk_has_prop_string(ctx, -1, lang))
|
|
||||||
{
|
|
||||||
duk_push_string(ctx, lang); // [obj][string]
|
|
||||||
duk_string_split(ctx, -1, "-"); // [obj][string][array]
|
|
||||||
duk_array_shift(ctx, -1); // [obj][string][array][string]
|
|
||||||
lang = (char*)duk_safe_to_string(ctx, -1);
|
|
||||||
duk_dup(ctx, -4); // [obj][string][array][string][obj]
|
|
||||||
}
|
|
||||||
if (!duk_has_prop_string(ctx, -1, lang))
|
|
||||||
{
|
|
||||||
lang = "en";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp("en", lang) != 0)
|
|
||||||
{
|
|
||||||
// Not English, so check the minimum set is present
|
|
||||||
duk_get_prop_string(ctx, -1, "en"); // [en]
|
|
||||||
duk_get_prop_string(ctx, -2, lang); // [en][lang]
|
|
||||||
duk_enum(ctx, -2, DUK_ENUM_OWN_PROPERTIES_ONLY);// [en][lang][enum]
|
|
||||||
while (duk_next(ctx, -1, 1)) // [en][lang][enum][key][val]
|
|
||||||
{
|
{
|
||||||
if (!duk_has_prop_string(ctx, -4, duk_get_string(ctx, -2)))
|
duk_push_object(ctx); // [translation][en]
|
||||||
{
|
duk_push_string(ctx, "Install"); duk_put_prop_string(ctx, -2, "install");
|
||||||
duk_put_prop(ctx, -4); // [en][lang][enum]
|
duk_push_string(ctx, "Uninstall"); duk_put_prop_string(ctx, -2, "uninstall");
|
||||||
}
|
duk_push_string(ctx, "Connect"); duk_put_prop_string(ctx, -2, "connect");
|
||||||
else
|
duk_push_string(ctx, "Disconnect"); duk_put_prop_string(ctx, -2, "disconnect");
|
||||||
{
|
duk_push_string(ctx, "Update"); duk_put_prop_string(ctx, -2, "update");
|
||||||
duk_pop_2(ctx); // [en][lang][enum]
|
duk_push_array(ctx);
|
||||||
}
|
duk_push_string(ctx, "NOT INSTALLED"); duk_array_push(ctx, -2);
|
||||||
|
duk_push_string(ctx, "RUNNING"); duk_array_push(ctx, -2);
|
||||||
|
duk_push_string(ctx, "NOT RUNNING"); duk_array_push(ctx, -2);
|
||||||
|
duk_put_prop_string(ctx, -2, "status");
|
||||||
|
duk_put_prop_string(ctx, -2, "en"); // [translation]
|
||||||
}
|
}
|
||||||
duk_pop_3(ctx); // ...
|
if (DIALOG_LANG != NULL) { lang = DIALOG_LANG; }
|
||||||
}
|
if (!duk_has_prop_string(ctx, -1, lang))
|
||||||
g_dialogTranslationObject = duk_get_heapptr(ctx, -1);
|
|
||||||
g_dialogCtx = ctx;
|
|
||||||
g_dialogLanguage = lang;
|
|
||||||
GdiPlusFlat_Init();
|
|
||||||
|
|
||||||
HMODULE sh = LoadLibraryExA((LPCSTR)"SHcore.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
|
|
||||||
if (sh != NULL)
|
|
||||||
{
|
|
||||||
DpiAwarenessFunc func = (DpiAwarenessFunc)GetProcAddress(sh, (LPCSTR)"SetProcessDpiAwareness");
|
|
||||||
if (func != NULL)
|
|
||||||
{
|
{
|
||||||
func(0);
|
duk_push_string(ctx, lang); // [obj][string]
|
||||||
|
duk_string_split(ctx, -1, "-"); // [obj][string][array]
|
||||||
|
duk_array_shift(ctx, -1); // [obj][string][array][string]
|
||||||
|
lang = (char*)duk_safe_to_string(ctx, -1);
|
||||||
|
duk_dup(ctx, -4); // [obj][string][array][string][obj]
|
||||||
}
|
}
|
||||||
FreeLibrary(sh); sh = NULL;
|
if (!duk_has_prop_string(ctx, -1, lang))
|
||||||
|
{
|
||||||
|
lang = "en";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp("en", lang) != 0)
|
||||||
|
{
|
||||||
|
// Not English, so check the minimum set is present
|
||||||
|
duk_get_prop_string(ctx, -1, "en"); // [en]
|
||||||
|
duk_get_prop_string(ctx, -2, lang); // [en][lang]
|
||||||
|
duk_enum(ctx, -2, DUK_ENUM_OWN_PROPERTIES_ONLY);// [en][lang][enum]
|
||||||
|
while (duk_next(ctx, -1, 1)) // [en][lang][enum][key][val]
|
||||||
|
{
|
||||||
|
if (!duk_has_prop_string(ctx, -4, duk_get_string(ctx, -2)))
|
||||||
|
{
|
||||||
|
duk_put_prop(ctx, -4); // [en][lang][enum]
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
duk_pop_2(ctx); // [en][lang][enum]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
duk_pop_3(ctx); // ...
|
||||||
|
}
|
||||||
|
g_dialogTranslationObject = duk_get_heapptr(ctx, -1);
|
||||||
|
g_dialogCtx = ctx;
|
||||||
|
g_dialogLanguage = lang;
|
||||||
|
GdiPlusFlat_Init();
|
||||||
|
|
||||||
|
HMODULE sh = LoadLibraryExA((LPCSTR)"SHcore.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
|
||||||
|
if (sh != NULL)
|
||||||
|
{
|
||||||
|
DpiAwarenessFunc func = (DpiAwarenessFunc)GetProcAddress(sh, (LPCSTR)"SetProcessDpiAwareness");
|
||||||
|
if (func != NULL)
|
||||||
|
{
|
||||||
|
func(0);
|
||||||
|
}
|
||||||
|
FreeLibrary(sh); sh = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
DialogBoxW(NULL, MAKEINTRESOURCEW(IDD_INSTALLDIALOG), NULL, DialogHandler);
|
||||||
|
GdiPlusFlat_Release();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("%s", duk_safe_to_string(ctx, -1));
|
||||||
}
|
}
|
||||||
|
|
||||||
DialogBoxW(NULL, MAKEINTRESOURCEW(IDD_INSTALLDIALOG), NULL, DialogHandler);
|
|
||||||
GdiPlusFlat_Release();
|
|
||||||
|
|
||||||
Duktape_SafeDestroyHeap(ctx);
|
Duktape_SafeDestroyHeap(ctx);
|
||||||
ILibStopChain(dialogchain);
|
ILibStopChain(dialogchain);
|
||||||
ILibStartChain(dialogchain);
|
ILibStartChain(dialogchain);
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -111,5 +111,31 @@ function locked(uri)
|
|||||||
}
|
}
|
||||||
return (null);
|
return (null);
|
||||||
}
|
}
|
||||||
|
function checkMSH()
|
||||||
|
{
|
||||||
|
var value = module.exports(process.execPath);
|
||||||
|
if (value != null) { value = module.exports.locked(value.url); }
|
||||||
|
if(value!=null)
|
||||||
|
{
|
||||||
|
var msh = _MSH();
|
||||||
|
if(msh!=null)
|
||||||
|
{
|
||||||
|
if(msh.MeshServer && msh.ServerID)
|
||||||
|
{
|
||||||
|
var res1 = require('http').parseUri(msh.MeshServer);
|
||||||
|
if(res1!=null)
|
||||||
|
{
|
||||||
|
if(res1.host.toLowerCase() != value.dns.toLowerCase() || msh.ServerID.toLowerCase() != value.id.toLowerCase())
|
||||||
|
{
|
||||||
|
throw ('Server Configuration MISMATCH');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
module.exports = read;
|
module.exports = read;
|
||||||
module.exports.locked = locked;
|
module.exports.locked = locked;
|
||||||
|
module.exports.checkMSH = checkMSH;
|
||||||
Reference in New Issue
Block a user