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:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user