diff --git a/meshcore/agentcore.c b/meshcore/agentcore.c index f8e83d2..22ba03e 100644 --- a/meshcore/agentcore.c +++ b/meshcore/agentcore.c @@ -103,6 +103,7 @@ char exeMeshPolicyGuid[] = { 0xB9, 0x96, 0x01, 0x58, 0x80, 0x54, 0x4A, 0x19, 0xB #define REMOTE_DESKTOP_VIRTUAL_SESSION_USERNAME "\xFF_RemoteDesktopUSERNAME" #define MESHAGENT_DATAPING_ARRAY "\xFF_MeshAgent_DataPingArray" #define MESHAGENT_DATAPAING_PROMISE_TIMEOUT "\xFF_MeshAgent_DataPing_Timeout" +char autoproxy_setup[255] = { 0 }; #define KVM_IPC_SOCKET "\xFF_KVM_IPC_SOCKET" int ILibDuktape_HECI_Debug = 0; @@ -3735,6 +3736,40 @@ void MeshServer_ConnectEx_Lockout_Retry(void *j) { MeshServer_ConnectEx((MeshAgentHostContainer*)j); } + +duk_ret_t MeshServer_ConnectEx_AutoProxy(duk_context *ctx) +{ + MeshAgentHostContainer *agent; + + duk_push_heap_stash(ctx); // [stash] + duk_get_prop_string(ctx, -1, "MeshAgentPtr"); // [stash][agentPtr] + agent = (MeshAgentHostContainer*)duk_get_pointer(ctx, -1); + agent->autoproxy_status = 1; + + if (duk_is_null_or_undefined(ctx, 0)) + { + duk_eval_string_noresult(ctx, "process.stdout.write(' [DIRECT]\\n');"); + } + else + { + char *result = (char*)duk_require_string(ctx, 0); + int len = sprintf_s(autoproxy_setup, sizeof(autoproxy_setup), "http://%s", result); + if (len > 0) + { + duk_push_sprintf(ctx, "process.stdout.write(' [%s]\\n');", result); + duk_peval_noresult(ctx); + ILibSimpleDataStore_Cached(agent->masterDb, "WebProxy", 8, autoproxy_setup, len + 1); + } + else + { + duk_eval_string_noresult(ctx, "process.stdout.write(' [ERROR]\\n');"); + } + } + + MeshServer_ConnectEx(agent); + return(0); +} + void MeshServer_ConnectEx(MeshAgentHostContainer *agent) { size_t len, serverUrlLen; @@ -3765,6 +3800,30 @@ void MeshServer_ConnectEx(MeshAgentHostContainer *agent) len = ILibSimpleDataStore_Get(agent->masterDb, "MeshServer", ILibScratchPad2, sizeof(ILibScratchPad2)); if (len == 0) { printf("No MeshCentral settings found, place .msh file with this executable and restart.\r\n"); ILibRemoteLogging_printf(ILibChainGetLogger(agent->chain), ILibRemoteLogging_Modules_Microstack_Generic, ILibRemoteLogging_Flags_VerbosityLevel_1, "agentcore: MeshServer URI not found"); return; } + if (ILibSimpleDataStore_Get(agent->masterDb, "autoproxy", ILibScratchPad, sizeof(ILibScratchPad)) != 0) + { + if (agent->autoproxy_status == 0) + { + duk_push_sprintf(agent->meshCoreCtx, "require('proxy-helper').autoHelper(require('http').parseUri('%s').host);", ILibScratchPad2); + if (duk_peval(agent->meshCoreCtx) == 0) // [promise] + { + duk_eval_string_noresult(agent->meshCoreCtx, "process.stdout.write('Checking Autoproxy...');"); + duk_prepare_method_call(agent->meshCoreCtx, -1, "then"); // [promise][then][this] + duk_push_c_function(agent->meshCoreCtx, MeshServer_ConnectEx_AutoProxy, DUK_VARARGS); // [promise][then][this][func] + duk_pcall_method(agent->meshCoreCtx, 1); // [ret] + duk_pop(agent->meshCoreCtx); // ... + return; + } + else + { + char *foo = duk_safe_to_string(agent->meshCoreCtx, -1); + printf("%s\n", foo); + } + duk_pop(agent->meshCoreCtx); // ... + } + } + + rs = ILibParseString(ILibScratchPad2, 0, len, ",", 1); if (agent->serverIndex == 0) { diff --git a/meshcore/agentcore.h b/meshcore/agentcore.h index a9b1b42..3943147 100644 --- a/meshcore/agentcore.h +++ b/meshcore/agentcore.h @@ -255,6 +255,7 @@ typedef struct MeshAgentHostContainer long consoleText_timeStamp; int consoleText_counter; int consoleText_maxRate; + int autoproxy_status; #if defined(_WINSERVICE) int runningAsConsole; #endif diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index 0e48ccd..97f97a3 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2473,7 +2473,7 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) free(_notifybardesktop); // proxy-helper, refer to modules/proxy-helper.js - duk_peval_string_noresult(ctx, "addCompressedModule('proxy-helper', Buffer.from('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', 'base64'));"); + duk_peval_string_noresult(ctx, "addCompressedModule('proxy-helper', Buffer.from('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', 'base64'), '2022-06-13T16:23:39.000-07:00');"); // daemon helper, refer to modules/daemon.js duk_peval_string_noresult(ctx, "addCompressedModule('daemon', Buffer.from('eJyVVU1v2zgQvQvQf5jNoZYKVU6zaA8OcnBTdyu0dRa2u0VPC0Ya2wRkUktScYLA/70z+rbjXWB1oTScr/fmkRq/9r1bXTwZudk6uLq8uoREOczhVptCG+GkVr7ne19lispiBqXK0IDbIkwLkdLS7ETwFxpL3nAVX0LADhfN1kV47XtPuoSdeAKlHZQWKYO0sJY5Aj6mWDiQClK9K3IpVIqwl25bVWlyxL73s8mg750gZ0HuBX2th24gHHcL9GydKybj8X6/j0XVaazNZpzXfnb8NbmdzZezN9QtR3xXOVoLBv8ppSGY908gCmomFffUYi72oA2IjUHac5qb3RvppNpEYPXa7YVB38ukdUbel+6Ip7Y1wjt0IKaEgovpEpLlBXyYLpNl5Hs/ktXnu+8r+DFdLKbzVTJbwt0Cbu/mH5NVcjenr08wnf+EL8n8YwRILFEVfCwMd08tSmYQM6JriXhUfq3rdmyBqVzLlECpTSk2CBv9gEYRFijQ7KTlKVpqLvO9XO6kq0RgXyKiIq/HTJ7vrUuVshdYl+nSfabgHE2Qhr73XI9DrlkU0sYFUaVcu+iiSh7XcSE8Q2F0SmAaS8w0IyW6hoPvHQaV8FH2dXSG/16qrZEaYbcLtE4YB69eAUfBbzdwzpezh3W6Jis/D4II2BVwA1WSE0BuG8EJRLFDR8ciOleDT0WbeLidbmWeUQkqVL//l1/zAUcomoBDvWBu8QWSYSKkGQejTCschX3o4WSujLfGOMTVYjkivzHCzQ2oMs95qp0Jng/XbWcD34rwMwGNHS67IJ6BQbZ1TpP2hXtz2wmc9jkZvMOhwdic9WCED8SCHYXxjF9mxAb5xanI84AK0exMiWFPHekIhcPK+YQ2co8t3aS1LKnFnr/OGgxFzugC1vbZBLHFfE1ZyHrdM9bGFrlwdKh3LOHRXqrfr0bD1FoFo2Xyx2q2+DaKThKHHZtsbwXXEVIZ/m4SES/4iOknuqrPzJ/jT/Tcpey12QPoN5vzzW1mwgnq8ejueJmNttGY/xHAnkwweQ4ui4FfaRTwiNl0LHe6Fmm4vapZdMJsWL8tv/T50KTindjy3wKDtxG8bUs0h6abNaZ/VgSyf0SjGl5Ik0pmdacTeP/u/Ts4hDVYVljUS+m8gDoMO52VOdIG/b5ddeCgKVAtUY1tUi8kvF/A95P8', 'base64'));"); diff --git a/microscript/ILibDuktape_ScriptContainer.c b/microscript/ILibDuktape_ScriptContainer.c index b2d41f1..2b849a8 100644 --- a/microscript/ILibDuktape_ScriptContainer.c +++ b/microscript/ILibDuktape_ScriptContainer.c @@ -2784,7 +2784,8 @@ duk_ret_t ILibDuktape_PAC_Create(duk_context *ctx) duk_pop(ex); char *pac = NULL; - pac[ILibBase64Decode((unsigned char*)"LyoNCkNvcHlyaWdodCAyMDIxIEludGVsIENvcnBvcmF0aW9uDQpAYXV0aG9yIEJyeWFuIFJvZQ0KDQpMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KDQogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQoNClVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQpXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NClNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKi8NCg0KDQoNCi8vIEV2YWx1YXRlcyBob3N0bmFtZXMgYW5kIHJldHVybnMgdHJ1ZSBpZiBob3N0bmFtZXMgbWF0Y2gNCmZ1bmN0aW9uIGRuc0RvbWFpbklzKHRhcmdldCwgaG9zdCkNCnsNCiAgICBpZighaG9zdC5zdGFydHNXaXRoKCcuJykpDQogICAgew0KICAgICAgICBob3N0ID0gJy4nICsgaG9zdDsNCiAgICB9DQogICAgcmV0dXJuICh0YXJnZXQudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChob3N0LnRvTG93ZXJDYXNlKCkpKTsNCn0NCg0KLy8gbWF0Y2ggaG9zdG5hbWUgb3IgVVJMIHRvIGEgc3BlY2lmaWVkIHNoZWxsIGV4cHJlc3Npb24sICByZXR1cm5zIHRydWUgaWYgbWF0Y2hlZA0KZnVuY3Rpb24gc2hFeHBNYXRjaChob3N0LCBleHApDQp7DQogICAgZXhwID0gZXhwLnNwbGl0KCcuJykuam9pbignXFwuJyk7DQogICAgZXhwID0gZXhwLnNwbGl0KCc/Jykuam9pbignLicpOw0KICAgIGV4cCA9IGV4cC5zcGxpdCgnKicpLmpvaW4oJy4qJyk7DQogICAgZXhwID0gJ14nICsgZXhwICsgJyQnOw0KICAgIHJldHVybiAoaG9zdC5zZWFyY2goZXhwKSA+PSAwKTsNCn0NCg0KLy8gZXZhbHVhdGVzIHRoZSBJUCBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGFuZCBpZiB3aXRoaW4gYSBzcGVjaWZpZWQgc3VibmV0IHJldHVybnMgdHJ1ZQ0KZnVuY3Rpb24gaXNJbk5ldCh0YXJnZXQsIGFkZHJlc3MsIG1hc2spDQp7DQogICAgdHJ5DQogICAgew0KICAgICAgICB2YXIgZGVzdEFkZHIgPSByZXNvbHZlKHRhcmdldCkuX2ludGVnZXJzWzBdOw0KICAgICAgICB2YXIgbWFza0FkZHIgPSByZXNvbHZlKG1hc2spLl9pbnRlZ2Vyc1swXTsNCiAgICAgICAgcmV0dXJuIChfaXB2NEZyb20oZGVzdEFkZHIgJiBtYXNrQWRkcikgPT0gYWRkcmVzcyk7DQogICAgfQ0KICAgIGNhdGNoKGUpDQogICAgew0KICAgICAgICByZXR1cm4gKGZhbHNlKTsNCiAgICB9DQp9DQoNCi8vIHJlc29sdmUgaG9zdCBuYW1lIHRvIGFkZHJlc3MNCmZ1bmN0aW9uIGRuc1Jlc29sdmUoaG9zdCkNCnsNCiAgICB2YXIgcmVzdWx0ID0gcmVzb2x2ZShob3N0KTsNCiAgICBpZihyZXN1bHQubGVuZ3RoID09IDApDQogICAgew0KICAgICAgICByZXR1cm4gKCcnKTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIChyZXN1bHRbMF0pOw0KICAgIH0NCn0NCg0KLy8gcmV0dXJuIHRydWUgaWYgdGhlIGhvc3RuYW1lIGNvbnRhaW5zIG5vIGRvdHMNCmZ1bmN0aW9uIGlzUGxhaW5Ib3N0TmFtZShob3N0KQ0Kew0KICAgIHJldHVybiAoaG9zdC5pbmRleE9mKCcuJykgPCAwKTsNCn0NCg0KLy8gZXZhbHVhdGUgaG9zdG5hbWUgYW5kIHJldHVybiB0cnVlIElGRiBleGFjdCBtYXRjaA0KZnVuY3Rpb24gbG9jYWxIb3N0T3JEb21haW5Jcyh0YXJnZXQsIGhvc3QpDQp7DQogICAgcmV0dXJuIChkbnNSZXNvbHZlKHRhcmdldCkgPT0gaG9zdCk7DQp9DQoNCi8vIHJldHVybiB0cnVlIGlmIHJlc29sdmUgaXMgc3VjY2Vzc2Z1bA0KZnVuY3Rpb24gaXNSZXNvbHZhYmxlKGhvc3QpDQp7DQogICAgcmV0dXJuIChyZXNvbHZlKGhvc3QpLmxlbmd0aCA+IDApOw0KfQ0KDQovLyByZXR1cm5zIHRoZSBudW1iZXIgb2YgRE5TIGRvbWFpbiBsZXZlbHMgKG51bWJlciBvZiBkb3RzKSBpbiB0aGUgaG9zdG5hbWUNCmZ1bmN0aW9uIGRuc0RvbWFpbkxldmVscyhob3N0KQ0Kew0KICAgIHJldHVybiAoaG9zdC5zcGxpdCgnLicpLmxlbmd0aCAtIDEpOw0KfQ0KDQoNCmZ1bmN0aW9uIHdlZWtkYXlSYW5nZShzdGFydCwgZW5kKQ0Kew0KDQp9DQpmdW5jdGlvbiBkYXRlUmFuZ2Uoc3RhcnQsIGVuZCkNCnsNCg0KfQ0KZnVuY3Rpb24gdGltZVJhbmdlKHN0YXJ0LCBlbmQpDQp7DQoNCn0NCg0KZnVuY3Rpb24gYWxlcnQobXNnKQ0Kew0KDQp9DQo=", 3276, (unsigned char **)&pac)] = 0; + int pacLen = ILibBase64Decode((unsigned char*)"LyoNCkNvcHlyaWdodCAyMDIxIEludGVsIENvcnBvcmF0aW9uDQpAYXV0aG9yIEJyeWFuIFJvZQ0KDQpMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KDQogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQoNClVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQpXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NClNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKi8NCg0KDQoNCi8vIEV2YWx1YXRlcyBob3N0bmFtZXMgYW5kIHJldHVybnMgdHJ1ZSBpZiBob3N0bmFtZXMgbWF0Y2gNCmZ1bmN0aW9uIGRuc0RvbWFpbklzKHRhcmdldCwgaG9zdCkNCnsNCiAgICBpZighaG9zdC5zdGFydHNXaXRoKCcuJykpDQogICAgew0KICAgICAgICBob3N0ID0gJy4nICsgaG9zdDsNCiAgICB9DQogICAgcmV0dXJuICh0YXJnZXQudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChob3N0LnRvTG93ZXJDYXNlKCkpKTsNCn0NCg0KLy8gbWF0Y2ggaG9zdG5hbWUgb3IgVVJMIHRvIGEgc3BlY2lmaWVkIHNoZWxsIGV4cHJlc3Npb24sICByZXR1cm5zIHRydWUgaWYgbWF0Y2hlZA0KZnVuY3Rpb24gc2hFeHBNYXRjaChob3N0LCBleHApDQp7DQogICAgZXhwID0gZXhwLnNwbGl0KCcuJykuam9pbignXFwuJyk7DQogICAgZXhwID0gZXhwLnNwbGl0KCc/Jykuam9pbignLicpOw0KICAgIGV4cCA9IGV4cC5zcGxpdCgnKicpLmpvaW4oJy4qJyk7DQogICAgZXhwID0gJ14nICsgZXhwICsgJyQnOw0KICAgIHJldHVybiAoaG9zdC5zZWFyY2goZXhwKSA+PSAwKTsNCn0NCg0KLy8gZXZhbHVhdGVzIHRoZSBJUCBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGFuZCBpZiB3aXRoaW4gYSBzcGVjaWZpZWQgc3VibmV0IHJldHVybnMgdHJ1ZQ0KZnVuY3Rpb24gaXNJbk5ldCh0YXJnZXQsIGFkZHJlc3MsIG1hc2spDQp7DQogICAgdHJ5DQogICAgew0KICAgICAgICB2YXIgZGVzdEFkZHIgPSByZXNvbHZlKHRhcmdldCkuX2ludGVnZXJzWzBdOw0KICAgICAgICB2YXIgbWFza0FkZHIgPSByZXNvbHZlKG1hc2spLl9pbnRlZ2Vyc1swXTsNCiAgICAgICAgcmV0dXJuIChfaXB2NEZyb20oZGVzdEFkZHIgJiBtYXNrQWRkcikgPT0gYWRkcmVzcyk7DQogICAgfQ0KICAgIGNhdGNoKGUpDQogICAgew0KICAgICAgICByZXR1cm4gKGZhbHNlKTsNCiAgICB9DQp9DQoNCi8vIHJlc29sdmUgaG9zdCBuYW1lIHRvIGFkZHJlc3MNCmZ1bmN0aW9uIGRuc1Jlc29sdmUoaG9zdCkNCnsNCiAgICB2YXIgcmVzdWx0ID0gcmVzb2x2ZShob3N0KTsNCiAgICBpZihyZXN1bHQubGVuZ3RoID09IDApDQogICAgew0KICAgICAgICByZXR1cm4gKCcnKTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIChyZXN1bHRbMF0pOw0KICAgIH0NCn0NCg0KLy8gcmV0dXJuIHRydWUgaWYgdGhlIGhvc3RuYW1lIGNvbnRhaW5zIG5vIGRvdHMNCmZ1bmN0aW9uIGlzUGxhaW5Ib3N0TmFtZShob3N0KQ0Kew0KICAgIHJldHVybiAoaG9zdC5pbmRleE9mKCcuJykgPCAwKTsNCn0NCg0KLy8gZXZhbHVhdGUgaG9zdG5hbWUgYW5kIHJldHVybiB0cnVlIElGRiBleGFjdCBtYXRjaA0KZnVuY3Rpb24gbG9jYWxIb3N0T3JEb21haW5Jcyh0YXJnZXQsIGhvc3QpDQp7DQogICAgcmV0dXJuIChkbnNSZXNvbHZlKHRhcmdldCkgPT0gaG9zdCk7DQp9DQoNCi8vIHJldHVybiB0cnVlIGlmIHJlc29sdmUgaXMgc3VjY2Vzc2Z1bA0KZnVuY3Rpb24gaXNSZXNvbHZhYmxlKGhvc3QpDQp7DQogICAgcmV0dXJuIChyZXNvbHZlKGhvc3QpLmxlbmd0aCA+IDApOw0KfQ0KDQovLyByZXR1cm5zIHRoZSBudW1iZXIgb2YgRE5TIGRvbWFpbiBsZXZlbHMgKG51bWJlciBvZiBkb3RzKSBpbiB0aGUgaG9zdG5hbWUNCmZ1bmN0aW9uIGRuc0RvbWFpbkxldmVscyhob3N0KQ0Kew0KICAgIHJldHVybiAoaG9zdC5zcGxpdCgnLicpLmxlbmd0aCAtIDEpOw0KfQ0KDQoNCmZ1bmN0aW9uIHdlZWtkYXlSYW5nZShzdGFydCwgZW5kKQ0Kew0KDQp9DQpmdW5jdGlvbiBkYXRlUmFuZ2Uoc3RhcnQsIGVuZCkNCnsNCg0KfQ0KZnVuY3Rpb24gdGltZVJhbmdlKHN0YXJ0LCBlbmQpDQp7DQoNCn0NCg0KZnVuY3Rpb24gYWxlcnQobXNnKQ0Kew0KDQp9DQo=", 3276, (unsigned char **)&pac); + pac[pacLen] = 0; duk_peval_string_noresult(ex, pac); free(pac); @@ -2816,7 +2817,7 @@ duk_ret_t ILibDuktape_PAC_Create(duk_context *ctx) duk_ret_t ILibDuktape_PAC_Find(duk_context *ctx) { duk_eval_string(ctx, "resolve('wpad');"); - return(0); + return(1); } void ILibDuktape_PAC_PUSH(duk_context *ctx, void *chain) { diff --git a/modules/proxy-helper.js b/modules/proxy-helper.js index 905d05f..3f1d8eb 100644 --- a/modules/proxy-helper.js +++ b/modules/proxy-helper.js @@ -533,6 +533,43 @@ function windows_getProxy() throw ('No proxies'); } } + +function auto_proxy_helper(target) +{ + var promise = require('promise'); + + var ret = new promise(promise.defaultInit); + var wpadip = resolve('wpad'); + ret.target = target; + ret.r = require('http').get('http://' + wpadip + '/wpad.dat'); + ret.r.p = ret; + ret.r.on('response', function (img) + { + if (img.statusCode == 200 && img.headers['Content-Type'] == 'application/x-ns-proxy-autoconfig') + { + img.wpad = ''; + this.i = img; + this.i.p = this.p; + img.on('data', function (c) + { + this.wpad += c.toString(); + }); + img.on('end', function () + { + var z = require('PAC').Create(this.wpad); + this.p.resolve(z(this.p.target)); + }); + } + else + { + this.p.resolve(null); + } + }); + ret.r.on('error', function () { this.p.resolve(null); }); + return (ret); +} + + switch (process.platform) { case 'linux': @@ -546,3 +583,4 @@ switch (process.platform) module.exports = { getProxy: macos_getProxy }; break; } +module.exports.autoHelper = auto_proxy_helper;