mirror of
https://github.com/Ylianst/MeshAgent
synced 2026-02-19 02:43:33 +00:00
Added 'index' to networkInterfaces() on windows
Added missing #define Added IPAddress helper
This commit is contained in:
@@ -249,6 +249,15 @@ struct sockaddr_in6* Duktape_IPAddress6_FromString(char* address, unsigned short
|
||||
ILibInet_pton(AF_INET6, address, &(duktape_internalAddress.sin6_addr));
|
||||
return(&duktape_internalAddress);
|
||||
}
|
||||
void ILibDuktape_IPV4AddressToOptions(duk_context *ctx, int addr)
|
||||
{
|
||||
struct sockaddr_in6 in6;
|
||||
memset(&in6, 0, sizeof(struct sockaddr_in6));
|
||||
in6.sin6_family = AF_INET;
|
||||
|
||||
((struct sockaddr_in*)&in6)->sin_addr.s_addr = addr;
|
||||
ILibDuktape_SockAddrToOptions(ctx, &in6);
|
||||
}
|
||||
void ILibDuktape_SockAddrToOptions(duk_context *ctx, struct sockaddr_in6 *addr)
|
||||
{
|
||||
char *str = ILibInet_ntop2((struct sockaddr*)addr, ILibScratchPad, sizeof(ILibScratchPad));
|
||||
|
||||
@@ -65,6 +65,7 @@ int Duktape_GetBooleanProperty(duk_context *ctx, duk_idx_t i, char *propertyName
|
||||
struct sockaddr_in6* Duktape_IPAddress4_FromString(char* address, unsigned short port);
|
||||
struct sockaddr_in6* Duktape_IPAddress6_FromString(char* address, unsigned short port);
|
||||
void ILibDuktape_SockAddrToOptions(duk_context *ctx, struct sockaddr_in6 *addr);
|
||||
void ILibDuktape_IPV4AddressToOptions(duk_context *ctx, int addr);
|
||||
void *ILibDuktape_GetProcessObject(duk_context *ctx);
|
||||
|
||||
char* ILibDuktape_String_AsWide(duk_context *ctx, duk_idx_t idx, duk_size_t *len);
|
||||
|
||||
@@ -41,7 +41,7 @@ limitations under the License.
|
||||
#define ILibDuktape_DescriptorEvents_Table "\xFF_DescriptorEvents_Table"
|
||||
#define ILibDuktape_DescriptorEvents_FD "\xFF_DescriptorEvents_FD"
|
||||
#define ILibDuktape_DescriptorEvents_Options "\xFF_DescriptorEvents_Options"
|
||||
|
||||
#define CP_ISO8859_1 28591
|
||||
typedef enum ILibDuktape_Console_DestinationFlags
|
||||
{
|
||||
ILibDuktape_Console_DestinationFlags_DISABLED = 0,
|
||||
@@ -191,9 +191,9 @@ duk_ret_t ILibDuktape_Polyfills_Buffer_from(duk_context *ctx)
|
||||
int r = MultiByteToWideChar(CP_UTF8, 0, (LPCCH)str, (int)strlength, NULL, 0);
|
||||
buffer = duk_push_fixed_buffer(ctx, 2 + (2 * r));
|
||||
strlength = (duk_size_t)MultiByteToWideChar(CP_UTF8, 0, (LPCCH)str, (int)strlength, (LPWSTR)buffer, r + 1);
|
||||
r = (int)WideCharToMultiByte(CP_ISO8859_1, 0, (LPCWCH)buffer, strlength, NULL, 0, NULL, FALSE);
|
||||
r = (int)WideCharToMultiByte(CP_ISO8859_1, 0, (LPCWCH)buffer, (int)strlength, NULL, 0, NULL, FALSE);
|
||||
duk_push_fixed_buffer(ctx, r);
|
||||
WideCharToMultiByte(CP_ISO8859_1, 0, (LPCWCH)buffer, strlength, (LPSTR)Duktape_GetBuffer(ctx, -1, NULL), r, NULL, FALSE);
|
||||
WideCharToMultiByte(CP_ISO8859_1, 0, (LPCWCH)buffer, (int)strlength, (LPSTR)Duktape_GetBuffer(ctx, -1, NULL), r, NULL, FALSE);
|
||||
duk_push_buffer_object(ctx, -1, 0, r, DUK_BUFOBJ_NODEJS_BUFFER);
|
||||
#else
|
||||
duk_eval_string(ctx, "Buffer.fromBinary"); // [func]
|
||||
@@ -2336,6 +2336,14 @@ duk_ret_t ILibDuktape_Polyfills_filehash(duk_context *ctx)
|
||||
}
|
||||
}
|
||||
|
||||
duk_ret_t ILibDuktape_Polyfills_ipv4From(duk_context *ctx)
|
||||
{
|
||||
int v = duk_require_int(ctx, 0);
|
||||
ILibDuktape_IPV4AddressToOptions(ctx, v);
|
||||
duk_get_prop_string(ctx, -1, "host");
|
||||
return(1);
|
||||
}
|
||||
|
||||
void ILibDuktape_Polyfills_Init(duk_context *ctx)
|
||||
{
|
||||
ILibDuktape_ModSearch_AddHandler(ctx, "queue", ILibDuktape_Queue_Push);
|
||||
@@ -2371,6 +2379,7 @@ void ILibDuktape_Polyfills_Init(duk_context *ctx)
|
||||
ILibDuktape_CreateInstanceMethod(ctx, "_debugGC", ILibDuktape_Polyfills_debugGC, 0);
|
||||
ILibDuktape_CreateInstanceMethod(ctx, "_debug", ILibDuktape_Polyfills_debug, 0);
|
||||
ILibDuktape_CreateInstanceMethod(ctx, "getSHA384FileHash", ILibDuktape_Polyfills_filehash, 1);
|
||||
ILibDuktape_CreateInstanceMethod(ctx, "_ipv4From", ILibDuktape_Polyfills_ipv4From, 1);
|
||||
#ifndef MICROSTACK_NOTLS
|
||||
ILibDuktape_CreateInstanceMethod(ctx, "crc32c", ILibDuktape_Polyfills_crc32c, DUK_VARARGS);
|
||||
#endif
|
||||
|
||||
@@ -1515,6 +1515,8 @@ duk_ret_t ILibDuktape_ScriptContainer_OS_networkInterfaces(duk_context *ctx)
|
||||
duk_push_string(ctx, padapters->PhysicalAddressLength>0 ? util_tohex2(padapters->PhysicalAddress, padapters->PhysicalAddressLength, ILibScratchPad) : "00:00:00:00:00:00");
|
||||
duk_put_prop_string(ctx, -2, "mac");
|
||||
|
||||
duk_push_int(ctx, padapters->IfIndex); duk_put_prop_string(ctx, -2, "index");
|
||||
|
||||
duk_push_string(ctx, padapters->OperStatus == IfOperStatusUp ? "up" : "down");
|
||||
duk_put_prop_string(ctx, -2, "status");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user