1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2025-12-06 00:13:33 +00:00

1. Added -import

2. Added ability to set uid on agent start
This commit is contained in:
Bryan Roe
2023-01-20 13:06:15 -08:00
parent c067e28ed6
commit 7ea36ae572
4 changed files with 25 additions and 1 deletions

View File

@@ -3263,6 +3263,25 @@ void MeshServer_ProcessCommand(ILibWebClient_StateObject WebStateObject, MeshAge
case MeshCommand_CoreOk: // Message from the server indicating our meshcore is ok. No update needed.
{
printf("Server verified meshcore...");
duk_eval_string(agent->meshCoreCtx, "_MSH().setuid;");
if (duk_is_null_or_undefined(agent->meshCoreCtx, -1) == 0)
{
int uid = atoi(duk_get_string(agent->meshCoreCtx, -1));
duk_push_global_object(agent->meshCoreCtx); // [g]
duk_get_prop_string(agent->meshCoreCtx, -1, "process"); // [g][process]
duk_push_array(agent->meshCoreCtx); // [g][process][arr]
duk_push_sprintf(agent->meshCoreCtx, "--setuid=%d", uid); // [g][process][arr][entry]
duk_array_push(agent->meshCoreCtx, -2); // [g][process][arr]
duk_put_prop_string(agent->meshCoreCtx, -2, ILibDuktape_ScriptContainer_Process_ArgArray); // [g][process]
duk_pop_2(agent->meshCoreCtx);
#ifdef _POSIX
ignore_result(setuid((uid_t)uid));
#endif
}
duk_pop(agent->meshCoreCtx);
if (agent->coreTimeout != NULL)
{
// Cancel the timeout

View File

@@ -597,6 +597,11 @@ int wmain(int argc, char* wargv[])
integratedJavaScript = ILibString_Copy("require('code-utils').expand({embedded: true});process.exit();", 0);
integragedJavaScriptLen = (int)strnlen_s(integratedJavaScript, sizeof(ILibScratchPad));
}
if (argc > 1 && strcmp(argv[1], "-import") == 0 && integragedJavaScriptLen == 0)
{
integratedJavaScript = ILibString_Copy("require('code-utils').shrink();process.exit();", 0);
integragedJavaScriptLen = (int)strnlen_s(integratedJavaScript, sizeof(ILibScratchPad));
}
if (argc > 2 && strcmp(argv[1], "-exec") == 0 && integragedJavaScriptLen == 0)
{

View File

@@ -107,7 +107,6 @@ char exeJavaScriptGuid[] = "B996015880544A19B7F7E9BE44914C18";
#define ILibDuktape_ScriptContainer_Settings_DB "\xFF_ScriptContainerSettings_DB"
#define ILibDuktape_ScriptContainer_Settings_ExitHandler "\xFF_ScriptContainerSettings_ExitHandler"
#define ILibDuktape_ScriptContainer_Settings_ExitUser "\xFF_ScriptContainerSettings_ExitUser"
#define ILibDuktape_ScriptContainer_Process_ArgArray "\xFF_argArray"
#define ILibDuktape_ScriptContainer_Process_CoreDumpPath "\xFF_coreDumpPath"
#define ILibDuktape_ScriptContainer_Process_Restart "\xFF_ScriptContainer_Process_Restart"
#define ILibDuktape_ScriptContainer_Process_stdin "\xFF_stdin"

View File

@@ -142,6 +142,7 @@ typedef struct SCRIPT_ENGINE_SETTINGS
char **argList;
}SCRIPT_ENGINE_SETTINGS;
#define ILibDuktape_ScriptContainer_Process_ArgArray "\xFF_argArray"
void ILibDuktape_ScriptContainer_CheckEmbedded(char **script, int *scriptLen);
void ILibDuktape_ScriptContainer_CheckEmbeddedEx(char *exePath, char **script, int *scriptLen);