// Copyright Joyent, Inc. and other Node contributors.//// Permission is hereby granted, free of charge, to any person obtaining a// copy of this software and associated documentation files (the// "Software"), to deal in the Software without restriction, including// without limitation the rights to use, copy, modify, merge, publish,// distribute, sublicense, and/or sell copies of the Software, and to permit// persons to whom the Software is furnished to do so, subject to the// following conditions://// The above copyright notice and this permission notice shall be included// in all copies or substantial portions of the Software.//// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE// USE OR OTHER DEALINGS IN THE SOFTWARE.#include "env-inl.h"#include "node_constants.h"#include "node_internals.h"#include "util-inl.h"#include "zlib.h"#if !defined(_MSC_VER)#include <unistd.h>#endif#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>#if HAVE_OPENSSL#include <openssl/ec.h>#include <openssl/ssl.h>#ifndef OPENSSL_NO_ENGINE#include <openssl/engine.h>#endif // !OPENSSL_NO_ENGINE#endif // HAVE_OPENSSL#if defined(__POSIX__)#include <dlfcn.h>#endif#include <cerrno>#include <csignal>#include <limits>namespace node {using v8::Local;using v8::Object;namespace {void DefineErrnoConstants(Local<Object> target) {#ifdef E2BIGNODE_DEFINE_CONSTANT(target, E2BIG);#endif#ifdef EACCESNODE_DEFINE_CONSTANT(target, EACCES);#endif#ifdef EADDRINUSENODE_DEFINE_CONSTANT(target, EADDRINUSE);#endif#ifdef EADDRNOTAVAILNODE_DEFINE_CONSTANT(target, EADDRNOTAVAIL);#endif#ifdef EAFNOSUPPORTNODE_DEFINE_CONSTANT(target, EAFNOSUPPORT);#endif#ifdef EAGAINNODE_DEFINE_CONSTANT(target, EAGAIN);#endif#ifdef EALREADYNODE_DEFINE_CONSTANT(target, EALREADY);#endif#ifdef EBADFNODE_DEFINE_CONSTANT(target, EBADF);#endif#ifdef EBADMSGNODE_DEFINE_CONSTANT(target, EBADMSG);#endif#ifdef EBUSYNODE_DEFINE_CONSTANT(target, EBUSY);#endif#ifdef ECANCELEDNODE_DEFINE_CONSTANT(target, ECANCELED);#endif#ifdef ECHILDNODE_DEFINE_CONSTANT(target, ECHILD);#endif#ifdef ECONNABORTEDNODE_DEFINE_CONSTANT(target, ECONNABORTED);#endif#ifdef ECONNREFUSEDNODE_DEFINE_CONSTANT(target, ECONNREFUSED);#endif#ifdef ECONNRESETNODE_DEFINE_CONSTANT(target, ECONNRESET);#endif#ifdef EDEADLKNODE_DEFINE_CONSTANT(target, EDEADLK);#endif#ifdef EDESTADDRREQNODE_DEFINE_CONSTANT(target, EDESTADDRREQ);#endif#ifdef EDOMNODE_DEFINE_CONSTANT(target, EDOM);#endif#ifdef EDQUOTNODE_DEFINE_CONSTANT(target, EDQUOT);#endif#ifdef EEXISTNODE_DEFINE_CONSTANT(target, EEXIST);#endif#ifdef EFAULTNODE_DEFINE_CONSTANT(target, EFAULT);#endif#ifdef EFBIGNODE_DEFINE_CONSTANT(target, EFBIG);#endif#ifdef EHOSTUNREACHNODE_DEFINE_CONSTANT(target, EHOSTUNREACH);#endif#ifdef EIDRMNODE_DEFINE_CONSTANT(target, EIDRM);#endif#ifdef EILSEQNODE_DEFINE_CONSTANT(target, EILSEQ);#endif#ifdef EINPROGRESSNODE_DEFINE_CONSTANT(target, EINPROGRESS);#endif#ifdef EINTRNODE_DEFINE_CONSTANT(target, EINTR);#endif#ifdef EINVALNODE_DEFINE_CONSTANT(target, EINVAL);#endif#ifdef EIONODE_DEFINE_CONSTANT(target, EIO);#endif#ifdef EISCONNNODE_DEFINE_CONSTANT(target, EISCONN);#endif#ifdef EISDIRNODE_DEFINE_CONSTANT(target, EISDIR);#endif#ifdef ELOOPNODE_DEFINE_CONSTANT(target, ELOOP);#endif#ifdef EMFILENODE_DEFINE_CONSTANT(target, EMFILE);#endif#ifdef EMLINKNODE_DEFINE_CONSTANT(target, EMLINK);#endif#ifdef EMSGSIZENODE_DEFINE_CONSTANT(target, EMSGSIZE);#endif#ifdef EMULTIHOPNODE_DEFINE_CONSTANT(target, EMULTIHOP);#endif#ifdef ENAMETOOLONGNODE_DEFINE_CONSTANT(target, ENAMETOOLONG);#endif#ifdef ENETDOWNNODE_DEFINE_CONSTANT(target, ENETDOWN);#endif#ifdef ENETRESETNODE_DEFINE_CONSTANT(target, ENETRESET);#endif#ifdef ENETUNREACHNODE_DEFINE_CONSTANT(target, ENETUNREACH);#endif#ifdef ENFILENODE_DEFINE_CONSTANT(target, ENFILE);#endif#ifdef ENOBUFSNODE_DEFINE_CONSTANT(target, ENOBUFS);#endif#ifdef ENODATANODE_DEFINE_CONSTANT(target, ENODATA);#endif#ifdef ENODEVNODE_DEFINE_CONSTANT(target, ENODEV);#endif#ifdef ENOENTNODE_DEFINE_CONSTANT(target, ENOENT);#endif#ifdef ENOEXECNODE_DEFINE_CONSTANT(target, ENOEXEC);#endif#ifdef ENOLCKNODE_DEFINE_CONSTANT(target, ENOLCK);#endif#ifdef ENOLINKNODE_DEFINE_CONSTANT(target, ENOLINK);#endif#ifdef ENOMEMNODE_DEFINE_CONSTANT(target, ENOMEM);#endif#ifdef ENOMSGNODE_DEFINE_CONSTANT(target, ENOMSG);#endif#ifdef ENOPROTOOPTNODE_DEFINE_CONSTANT(target, ENOPROTOOPT);#endif#ifdef ENOSPCNODE_DEFINE_CONSTANT(target, ENOSPC);#endif#ifdef ENOSRNODE_DEFINE_CONSTANT(target, ENOSR);#endif#ifdef ENOSTRNODE_DEFINE_CONSTANT(target, ENOSTR);#endif#ifdef ENOSYSNODE_DEFINE_CONSTANT(target, ENOSYS);#endif#ifdef ENOTCONNNODE_DEFINE_CONSTANT(target, ENOTCONN);#endif#ifdef ENOTDIRNODE_DEFINE_CONSTANT(target, ENOTDIR);#endif#ifdef ENOTEMPTYNODE_DEFINE_CONSTANT(target, ENOTEMPTY);#endif#ifdef ENOTSOCKNODE_DEFINE_CONSTANT(target, ENOTSOCK);#endif#ifdef ENOTSUPNODE_DEFINE_CONSTANT(target, ENOTSUP);#endif#ifdef ENOTTYNODE_DEFINE_CONSTANT(target, ENOTTY);#endif#ifdef ENXIONODE_DEFINE_CONSTANT(target, ENXIO);#endif#ifdef EOPNOTSUPPNODE_DEFINE_CONSTANT(target, EOPNOTSUPP);#endif#ifdef EOVERFLOWNODE_DEFINE_CONSTANT(target, EOVERFLOW);#endif#ifdef EPERMNODE_DEFINE_CONSTANT(target, EPERM);#endif#ifdef EPIPENODE_DEFINE_CONSTANT(target, EPIPE);#endif#ifdef EPROTONODE_DEFINE_CONSTANT(target, EPROTO);#endif#ifdef EPROTONOSUPPORTNODE_DEFINE_CONSTANT(target, EPROTONOSUPPORT);#endif#ifdef EPROTOTYPENODE_DEFINE_CONSTANT(target, EPROTOTYPE);#endif#ifdef ERANGENODE_DEFINE_CONSTANT(target, ERANGE);#endif#ifdef EROFSNODE_DEFINE_CONSTANT(target, EROFS);#endif#ifdef ESPIPENODE_DEFINE_CONSTANT(target, ESPIPE);#endif#ifdef ESRCHNODE_DEFINE_CONSTANT(target, ESRCH);#endif#ifdef ESTALENODE_DEFINE_CONSTANT(target, ESTALE);#endif#ifdef ETIMENODE_DEFINE_CONSTANT(target, ETIME);#endif#ifdef ETIMEDOUTNODE_DEFINE_CONSTANT(target, ETIMEDOUT);#endif#ifdef ETXTBSYNODE_DEFINE_CONSTANT(target, ETXTBSY);#endif#ifdef EWOULDBLOCKNODE_DEFINE_CONSTANT(target, EWOULDBLOCK);#endif#ifdef EXDEVNODE_DEFINE_CONSTANT(target, EXDEV);#endif}void DefineWindowsErrorConstants(Local<Object> target) {#ifdef WSAEINTRNODE_DEFINE_CONSTANT(target, WSAEINTR);#endif#ifdef WSAEBADFNODE_DEFINE_CONSTANT(target, WSAEBADF);#endif#ifdef WSAEACCESNODE_DEFINE_CONSTANT(target, WSAEACCES);#endif#ifdef WSAEFAULTNODE_DEFINE_CONSTANT(target, WSAEFAULT);#endif#ifdef WSAEINVALNODE_DEFINE_CONSTANT(target, WSAEINVAL);#endif#ifdef WSAEMFILENODE_DEFINE_CONSTANT(target, WSAEMFILE);#endif#ifdef WSAEWOULDBLOCKNODE_DEFINE_CONSTANT(target, WSAEWOULDBLOCK);#endif#ifdef WSAEINPROGRESSNODE_DEFINE_CONSTANT(target, WSAEINPROGRESS);#endif#ifdef WSAEALREADYNODE_DEFINE_CONSTANT(target, WSAEALREADY);#endif#ifdef WSAENOTSOCKNODE_DEFINE_CONSTANT(target, WSAENOTSOCK);#endif#ifdef WSAEDESTADDRREQNODE_DEFINE_CONSTANT(target, WSAEDESTADDRREQ);#endif#ifdef WSAEMSGSIZENODE_DEFINE_CONSTANT(target, WSAEMSGSIZE);#endif#ifdef WSAEPROTOTYPENODE_DEFINE_CONSTANT(target, WSAEPROTOTYPE);#endif#ifdef WSAENOPROTOOPTNODE_DEFINE_CONSTANT(target, WSAENOPROTOOPT);#endif#ifdef WSAEPROTONOSUPPORTNODE_DEFINE_CONSTANT(target, WSAEPROTONOSUPPORT);#endif#ifdef WSAESOCKTNOSUPPORTNODE_DEFINE_CONSTANT(target, WSAESOCKTNOSUPPORT);#endif#ifdef WSAEOPNOTSUPPNODE_DEFINE_CONSTANT(target, WSAEOPNOTSUPP);#endif#ifdef WSAEPFNOSUPPORTNODE_DEFINE_CONSTANT(target, WSAEPFNOSUPPORT);#endif#ifdef WSAEAFNOSUPPORTNODE_DEFINE_CONSTANT(target, WSAEAFNOSUPPORT);#endif#ifdef WSAEADDRINUSENODE_DEFINE_CONSTANT(target, WSAEADDRINUSE);#endif#ifdef WSAEADDRNOTAVAILNODE_DEFINE_CONSTANT(target, WSAEADDRNOTAVAIL);#endif#ifdef WSAENETDOWNNODE_DEFINE_CONSTANT(target, WSAENETDOWN);#endif#ifdef WSAENETUNREACHNODE_DEFINE_CONSTANT(target, WSAENETUNREACH);#endif#ifdef WSAENETRESETNODE_DEFINE_CONSTANT(target, WSAENETRESET);#endif#ifdef WSAECONNABORTEDNODE_DEFINE_CONSTANT(target, WSAECONNABORTED);#endif#ifdef WSAECONNRESETNODE_DEFINE_CONSTANT(target, WSAECONNRESET);#endif#ifdef WSAENOBUFSNODE_DEFINE_CONSTANT(target, WSAENOBUFS);#endif#ifdef WSAEISCONNNODE_DEFINE_CONSTANT(target, WSAEISCONN);#endif#ifdef WSAENOTCONNNODE_DEFINE_CONSTANT(target, WSAENOTCONN);#endif#ifdef WSAESHUTDOWNNODE_DEFINE_CONSTANT(target, WSAESHUTDOWN);#endif#ifdef WSAETOOMANYREFSNODE_DEFINE_CONSTANT(target, WSAETOOMANYREFS);#endif#ifdef WSAETIMEDOUTNODE_DEFINE_CONSTANT(target, WSAETIMEDOUT);#endif#ifdef WSAECONNREFUSEDNODE_DEFINE_CONSTANT(target, WSAECONNREFUSED);#endif#ifdef WSAELOOPNODE_DEFINE_CONSTANT(target, WSAELOOP);#endif#ifdef WSAENAMETOOLONGNODE_DEFINE_CONSTANT(target, WSAENAMETOOLONG);#endif#ifdef WSAEHOSTDOWNNODE_DEFINE_CONSTANT(target, WSAEHOSTDOWN);#endif#ifdef WSAEHOSTUNREACHNODE_DEFINE_CONSTANT(target, WSAEHOSTUNREACH);#endif#ifdef WSAENOTEMPTYNODE_DEFINE_CONSTANT(target, WSAENOTEMPTY);#endif#ifdef WSAEPROCLIMNODE_DEFINE_CONSTANT(target, WSAEPROCLIM);#endif#ifdef WSAEUSERSNODE_DEFINE_CONSTANT(target, WSAEUSERS);#endif#ifdef WSAEDQUOTNODE_DEFINE_CONSTANT(target, WSAEDQUOT);#endif#ifdef WSAESTALENODE_DEFINE_CONSTANT(target, WSAESTALE);#endif#ifdef WSAEREMOTENODE_DEFINE_CONSTANT(target, WSAEREMOTE);#endif#ifdef WSASYSNOTREADYNODE_DEFINE_CONSTANT(target, WSASYSNOTREADY);#endif#ifdef WSAVERNOTSUPPORTEDNODE_DEFINE_CONSTANT(target, WSAVERNOTSUPPORTED);#endif#ifdef WSANOTINITIALISEDNODE_DEFINE_CONSTANT(target, WSANOTINITIALISED);#endif#ifdef WSAEDISCONNODE_DEFINE_CONSTANT(target, WSAEDISCON);#endif#ifdef WSAENOMORENODE_DEFINE_CONSTANT(target, WSAENOMORE);#endif#ifdef WSAECANCELLEDNODE_DEFINE_CONSTANT(target, WSAECANCELLED);#endif#ifdef WSAEINVALIDPROCTABLENODE_DEFINE_CONSTANT(target, WSAEINVALIDPROCTABLE);#endif#ifdef WSAEINVALIDPROVIDERNODE_DEFINE_CONSTANT(target, WSAEINVALIDPROVIDER);#endif#ifdef WSAEPROVIDERFAILEDINITNODE_DEFINE_CONSTANT(target, WSAEPROVIDERFAILEDINIT);#endif#ifdef WSASYSCALLFAILURENODE_DEFINE_CONSTANT(target, WSASYSCALLFAILURE);#endif#ifdef WSASERVICE_NOT_FOUNDNODE_DEFINE_CONSTANT(target, WSASERVICE_NOT_FOUND);#endif#ifdef WSATYPE_NOT_FOUNDNODE_DEFINE_CONSTANT(target, WSATYPE_NOT_FOUND);#endif#ifdef WSA_E_NO_MORENODE_DEFINE_CONSTANT(target, WSA_E_NO_MORE);#endif#ifdef WSA_E_CANCELLEDNODE_DEFINE_CONSTANT(target, WSA_E_CANCELLED);#endif#ifdef WSAEREFUSEDNODE_DEFINE_CONSTANT(target, WSAEREFUSED);#endif}void DefineSignalConstants(Local<Object> target) {#ifdef SIGHUPNODE_DEFINE_CONSTANT(target, SIGHUP);#endif#ifdef SIGINTNODE_DEFINE_CONSTANT(target, SIGINT);#endif#ifdef SIGQUITNODE_DEFINE_CONSTANT(target, SIGQUIT);#endif#ifdef SIGILLNODE_DEFINE_CONSTANT(target, SIGILL);#endif#ifdef SIGTRAPNODE_DEFINE_CONSTANT(target, SIGTRAP);#endif#ifdef SIGABRTNODE_DEFINE_CONSTANT(target, SIGABRT);#endif#ifdef SIGIOTNODE_DEFINE_CONSTANT(target, SIGIOT);#endif#ifdef SIGBUSNODE_DEFINE_CONSTANT(target, SIGBUS);#endif#ifdef SIGFPENODE_DEFINE_CONSTANT(target, SIGFPE);#endif#ifdef SIGKILLNODE_DEFINE_CONSTANT(target, SIGKILL);#endif#ifdef SIGUSR1NODE_DEFINE_CONSTANT(target, SIGUSR1);#endif#ifdef SIGSEGVNODE_DEFINE_CONSTANT(target, SIGSEGV);#endif#ifdef SIGUSR2NODE_DEFINE_CONSTANT(target, SIGUSR2);#endif#ifdef SIGPIPENODE_DEFINE_CONSTANT(target, SIGPIPE);#endif#ifdef SIGALRMNODE_DEFINE_CONSTANT(target, SIGALRM);#endifNODE_DEFINE_CONSTANT(target, SIGTERM);#ifdef SIGCHLDNODE_DEFINE_CONSTANT(target, SIGCHLD);#endif#ifdef SIGSTKFLTNODE_DEFINE_CONSTANT(target, SIGSTKFLT);#endif#ifdef SIGCONTNODE_DEFINE_CONSTANT(target, SIGCONT);#endif#ifdef SIGSTOPNODE_DEFINE_CONSTANT(target, SIGSTOP);#endif#ifdef SIGTSTPNODE_DEFINE_CONSTANT(target, SIGTSTP);#endif#ifdef SIGBREAKNODE_DEFINE_CONSTANT(target, SIGBREAK);#endif#ifdef SIGTTINNODE_DEFINE_CONSTANT(target, SIGTTIN);#endif#ifdef SIGTTOUNODE_DEFINE_CONSTANT(target, SIGTTOU);#endif#ifdef SIGURGNODE_DEFINE_CONSTANT(target, SIGURG);#endif#ifdef SIGXCPUNODE_DEFINE_CONSTANT(target, SIGXCPU);#endif#ifdef SIGXFSZNODE_DEFINE_CONSTANT(target, SIGXFSZ);#endif#ifdef SIGVTALRMNODE_DEFINE_CONSTANT(target, SIGVTALRM);#endif#ifdef SIGPROFNODE_DEFINE_CONSTANT(target, SIGPROF);#endif#ifdef SIGWINCHNODE_DEFINE_CONSTANT(target, SIGWINCH);#endif#ifdef SIGIONODE_DEFINE_CONSTANT(target, SIGIO);#endif#ifdef SIGPOLLNODE_DEFINE_CONSTANT(target, SIGPOLL);#endif#ifdef SIGLOSTNODE_DEFINE_CONSTANT(target, SIGLOST);#endif#ifdef SIGPWRNODE_DEFINE_CONSTANT(target, SIGPWR);#endif#ifdef SIGINFONODE_DEFINE_CONSTANT(target, SIGINFO);#endif#ifdef SIGSYSNODE_DEFINE_CONSTANT(target, SIGSYS);#endif#ifdef SIGUNUSEDNODE_DEFINE_CONSTANT(target, SIGUNUSED);#endif}void DefinePriorityConstants(Local<Object> target) {#ifdef UV_PRIORITY_LOW# define PRIORITY_LOW UV_PRIORITY_LOWNODE_DEFINE_CONSTANT(target, PRIORITY_LOW);# undef PRIORITY_LOW#endif#ifdef UV_PRIORITY_BELOW_NORMAL# define PRIORITY_BELOW_NORMAL UV_PRIORITY_BELOW_NORMALNODE_DEFINE_CONSTANT(target, PRIORITY_BELOW_NORMAL);# undef PRIORITY_BELOW_NORMAL#endif#ifdef UV_PRIORITY_NORMAL# define PRIORITY_NORMAL UV_PRIORITY_NORMALNODE_DEFINE_CONSTANT(target, PRIORITY_NORMAL);# undef PRIORITY_NORMAL#endif#ifdef UV_PRIORITY_ABOVE_NORMAL# define PRIORITY_ABOVE_NORMAL UV_PRIORITY_ABOVE_NORMALNODE_DEFINE_CONSTANT(target, PRIORITY_ABOVE_NORMAL);# undef PRIORITY_ABOVE_NORMAL#endif#ifdef UV_PRIORITY_HIGH# define PRIORITY_HIGH UV_PRIORITY_HIGHNODE_DEFINE_CONSTANT(target, PRIORITY_HIGH);# undef PRIORITY_HIGH#endif#ifdef UV_PRIORITY_HIGHEST# define PRIORITY_HIGHEST UV_PRIORITY_HIGHESTNODE_DEFINE_CONSTANT(target, PRIORITY_HIGHEST);# undef PRIORITY_HIGHEST#endif}void DefineCryptoConstants(Local<Object> target) {#ifdef OPENSSL_VERSION_NUMBERNODE_DEFINE_CONSTANT(target, OPENSSL_VERSION_NUMBER);#endif#ifdef SSL_OP_ALLNODE_DEFINE_CONSTANT(target, SSL_OP_ALL);#endif#ifdef SSL_OP_ALLOW_NO_DHE_KEXNODE_DEFINE_CONSTANT(target, SSL_OP_ALLOW_NO_DHE_KEX);#endif#ifdef SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATIONNODE_DEFINE_CONSTANT(target, SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION);#endif#ifdef SSL_OP_CIPHER_SERVER_PREFERENCENODE_DEFINE_CONSTANT(target, SSL_OP_CIPHER_SERVER_PREFERENCE);#endif#ifdef SSL_OP_CISCO_ANYCONNECTNODE_DEFINE_CONSTANT(target, SSL_OP_CISCO_ANYCONNECT);#endif#ifdef SSL_OP_COOKIE_EXCHANGENODE_DEFINE_CONSTANT(target, SSL_OP_COOKIE_EXCHANGE);#endif#ifdef SSL_OP_CRYPTOPRO_TLSEXT_BUGNODE_DEFINE_CONSTANT(target, SSL_OP_CRYPTOPRO_TLSEXT_BUG);#endif#ifdef SSL_OP_DONT_INSERT_EMPTY_FRAGMENTSNODE_DEFINE_CONSTANT(target, SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS);#endif#ifdef SSL_OP_EPHEMERAL_RSANODE_DEFINE_CONSTANT(target, SSL_OP_EPHEMERAL_RSA);#endif#ifdef SSL_OP_LEGACY_SERVER_CONNECTNODE_DEFINE_CONSTANT(target, SSL_OP_LEGACY_SERVER_CONNECT);#endif#ifdef SSL_OP_MICROSOFT_BIG_SSLV3_BUFFERNODE_DEFINE_CONSTANT(target, SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER);#endif#ifdef SSL_OP_MICROSOFT_SESS_ID_BUGNODE_DEFINE_CONSTANT(target, SSL_OP_MICROSOFT_SESS_ID_BUG);#endif#ifdef SSL_OP_MSIE_SSLV2_RSA_PADDINGNODE_DEFINE_CONSTANT(target, SSL_OP_MSIE_SSLV2_RSA_PADDING);#endif#ifdef SSL_OP_NETSCAPE_CA_DN_BUGNODE_DEFINE_CONSTANT(target, SSL_OP_NETSCAPE_CA_DN_BUG);#endif#ifdef SSL_OP_NETSCAPE_CHALLENGE_BUGNODE_DEFINE_CONSTANT(target, SSL_OP_NETSCAPE_CHALLENGE_BUG);#endif#ifdef SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUGNODE_DEFINE_CONSTANT(target, SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG);#endif#ifdef SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUGNODE_DEFINE_CONSTANT(target, SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG);#endif#ifdef SSL_OP_NO_COMPRESSIONNODE_DEFINE_CONSTANT(target, SSL_OP_NO_COMPRESSION);#endif#ifdef SSL_OP_NO_ENCRYPT_THEN_MACNODE_DEFINE_CONSTANT(target, SSL_OP_NO_ENCRYPT_THEN_MAC);#endif#ifdef SSL_OP_NO_QUERY_MTUNODE_DEFINE_CONSTANT(target, SSL_OP_NO_QUERY_MTU);#endif#ifdef SSL_OP_NO_RENEGOTIATIONNODE_DEFINE_CONSTANT(target, SSL_OP_NO_RENEGOTIATION);#endif#ifdef SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATIONNODE_DEFINE_CONSTANT(target, SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION);#endif#ifdef SSL_OP_NO_SSLv2NODE_DEFINE_CONSTANT(target, SSL_OP_NO_SSLv2);#endif#ifdef SSL_OP_NO_SSLv3NODE_DEFINE_CONSTANT(target, SSL_OP_NO_SSLv3);#endif#ifdef SSL_OP_NO_TICKETNODE_DEFINE_CONSTANT(target, SSL_OP_NO_TICKET);#endif#ifdef SSL_OP_NO_TLSv1NODE_DEFINE_CONSTANT(target, SSL_OP_NO_TLSv1);#endif#ifdef SSL_OP_NO_TLSv1_1NODE_DEFINE_CONSTANT(target, SSL_OP_NO_TLSv1_1);#endif#ifdef SSL_OP_NO_TLSv1_2NODE_DEFINE_CONSTANT(target, SSL_OP_NO_TLSv1_2);#endif#ifdef SSL_OP_NO_TLSv1_3NODE_DEFINE_CONSTANT(target, SSL_OP_NO_TLSv1_3);#endif#ifdef SSL_OP_PKCS1_CHECK_1NODE_DEFINE_CONSTANT(target, SSL_OP_PKCS1_CHECK_1);#endif#ifdef SSL_OP_PKCS1_CHECK_2NODE_DEFINE_CONSTANT(target, SSL_OP_PKCS1_CHECK_2);#endif#ifdef SSL_OP_PRIORITIZE_CHACHANODE_DEFINE_CONSTANT(target, SSL_OP_PRIORITIZE_CHACHA);#endif#ifdef SSL_OP_SINGLE_DH_USENODE_DEFINE_CONSTANT(target, SSL_OP_SINGLE_DH_USE);#endif#ifdef SSL_OP_SINGLE_ECDH_USENODE_DEFINE_CONSTANT(target, SSL_OP_SINGLE_ECDH_USE);#endif#ifdef SSL_OP_SSLEAY_080_CLIENT_DH_BUGNODE_DEFINE_CONSTANT(target, SSL_OP_SSLEAY_080_CLIENT_DH_BUG);#endif#ifdef SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUGNODE_DEFINE_CONSTANT(target, SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG);#endif#ifdef SSL_OP_TLS_BLOCK_PADDING_BUGNODE_DEFINE_CONSTANT(target, SSL_OP_TLS_BLOCK_PADDING_BUG);#endif#ifdef SSL_OP_TLS_D5_BUGNODE_DEFINE_CONSTANT(target, SSL_OP_TLS_D5_BUG);#endif#ifdef SSL_OP_TLS_ROLLBACK_BUGNODE_DEFINE_CONSTANT(target, SSL_OP_TLS_ROLLBACK_BUG);#endif# ifndef OPENSSL_NO_ENGINE# ifdef ENGINE_METHOD_RSANODE_DEFINE_CONSTANT(target, ENGINE_METHOD_RSA);# endif# ifdef ENGINE_METHOD_DSANODE_DEFINE_CONSTANT(target, ENGINE_METHOD_DSA);# endif# ifdef ENGINE_METHOD_DHNODE_DEFINE_CONSTANT(target, ENGINE_METHOD_DH);# endif# ifdef ENGINE_METHOD_RANDNODE_DEFINE_CONSTANT(target, ENGINE_METHOD_RAND);# endif# ifdef ENGINE_METHOD_ECNODE_DEFINE_CONSTANT(target, ENGINE_METHOD_EC);# endif# ifdef ENGINE_METHOD_CIPHERSNODE_DEFINE_CONSTANT(target, ENGINE_METHOD_CIPHERS);# endif# ifdef ENGINE_METHOD_DIGESTSNODE_DEFINE_CONSTANT(target, ENGINE_METHOD_DIGESTS);# endif# ifdef ENGINE_METHOD_PKEY_METHSNODE_DEFINE_CONSTANT(target, ENGINE_METHOD_PKEY_METHS);# endif# ifdef ENGINE_METHOD_PKEY_ASN1_METHSNODE_DEFINE_CONSTANT(target, ENGINE_METHOD_PKEY_ASN1_METHS);# endif# ifdef ENGINE_METHOD_ALLNODE_DEFINE_CONSTANT(target, ENGINE_METHOD_ALL);# endif# ifdef ENGINE_METHOD_NONENODE_DEFINE_CONSTANT(target, ENGINE_METHOD_NONE);# endif# endif // !OPENSSL_NO_ENGINE#ifdef DH_CHECK_P_NOT_SAFE_PRIMENODE_DEFINE_CONSTANT(target, DH_CHECK_P_NOT_SAFE_PRIME);#endif#ifdef DH_CHECK_P_NOT_PRIMENODE_DEFINE_CONSTANT(target, DH_CHECK_P_NOT_PRIME);#endif#ifdef DH_UNABLE_TO_CHECK_GENERATORNODE_DEFINE_CONSTANT(target, DH_UNABLE_TO_CHECK_GENERATOR);#endif#ifdef DH_NOT_SUITABLE_GENERATORNODE_DEFINE_CONSTANT(target, DH_NOT_SUITABLE_GENERATOR);#endif#ifdef TLSEXT_TYPE_application_layer_protocol_negotiation#define ALPN_ENABLED 1NODE_DEFINE_CONSTANT(target, ALPN_ENABLED);#endif#ifdef RSA_PKCS1_PADDINGNODE_DEFINE_CONSTANT(target, RSA_PKCS1_PADDING);#endif#ifdef RSA_SSLV23_PADDINGNODE_DEFINE_CONSTANT(target, RSA_SSLV23_PADDING);#endif#ifdef RSA_NO_PADDINGNODE_DEFINE_CONSTANT(target, RSA_NO_PADDING);#endif#ifdef RSA_PKCS1_OAEP_PADDINGNODE_DEFINE_CONSTANT(target, RSA_PKCS1_OAEP_PADDING);#endif#ifdef RSA_X931_PADDINGNODE_DEFINE_CONSTANT(target, RSA_X931_PADDING);#endif#ifdef RSA_PKCS1_PSS_PADDINGNODE_DEFINE_CONSTANT(target, RSA_PKCS1_PSS_PADDING);#endif#ifdef RSA_PSS_SALTLEN_DIGESTNODE_DEFINE_CONSTANT(target, RSA_PSS_SALTLEN_DIGEST);#endif#ifdef RSA_PSS_SALTLEN_MAX_SIGNNODE_DEFINE_CONSTANT(target, RSA_PSS_SALTLEN_MAX_SIGN);#endif#ifdef RSA_PSS_SALTLEN_AUTONODE_DEFINE_CONSTANT(target, RSA_PSS_SALTLEN_AUTO);#endif#ifdef DEFAULT_CIPHER_LIST_CORENODE_DEFINE_STRING_CONSTANT(target,"defaultCoreCipherList",DEFAULT_CIPHER_LIST_CORE);#endif#ifdef TLS1_VERSIONNODE_DEFINE_CONSTANT(target, TLS1_VERSION);#endif#ifdef TLS1_1_VERSIONNODE_DEFINE_CONSTANT(target, TLS1_1_VERSION);#endif#ifdef TLS1_2_VERSIONNODE_DEFINE_CONSTANT(target, TLS1_2_VERSION);#endif#ifdef TLS1_3_VERSIONNODE_DEFINE_CONSTANT(target, TLS1_3_VERSION);#endif#if HAVE_OPENSSL// NOTE: These are not definesNODE_DEFINE_CONSTANT(target, POINT_CONVERSION_COMPRESSED);NODE_DEFINE_CONSTANT(target, POINT_CONVERSION_UNCOMPRESSED);NODE_DEFINE_CONSTANT(target, POINT_CONVERSION_HYBRID);#endif}void DefineSystemConstants(Local<Object> target) {NODE_DEFINE_CONSTANT(target, UV_FS_SYMLINK_DIR);NODE_DEFINE_CONSTANT(target, UV_FS_SYMLINK_JUNCTION);// file access modesNODE_DEFINE_CONSTANT(target, O_RDONLY);NODE_DEFINE_CONSTANT(target, O_WRONLY);NODE_DEFINE_CONSTANT(target, O_RDWR);// file types from readdirNODE_DEFINE_CONSTANT(target, UV_DIRENT_UNKNOWN);NODE_DEFINE_CONSTANT(target, UV_DIRENT_FILE);NODE_DEFINE_CONSTANT(target, UV_DIRENT_DIR);NODE_DEFINE_CONSTANT(target, UV_DIRENT_LINK);NODE_DEFINE_CONSTANT(target, UV_DIRENT_FIFO);NODE_DEFINE_CONSTANT(target, UV_DIRENT_SOCKET);NODE_DEFINE_CONSTANT(target, UV_DIRENT_CHAR);NODE_DEFINE_CONSTANT(target, UV_DIRENT_BLOCK);NODE_DEFINE_CONSTANT(target, S_IFMT);NODE_DEFINE_CONSTANT(target, S_IFREG);NODE_DEFINE_CONSTANT(target, S_IFDIR);NODE_DEFINE_CONSTANT(target, S_IFCHR);#ifdef S_IFBLKNODE_DEFINE_CONSTANT(target, S_IFBLK);#endif#ifdef S_IFIFONODE_DEFINE_CONSTANT(target, S_IFIFO);#endif#ifdef S_IFLNKNODE_DEFINE_CONSTANT(target, S_IFLNK);#endif#ifdef S_IFSOCKNODE_DEFINE_CONSTANT(target, S_IFSOCK);#endif#ifdef O_CREATNODE_DEFINE_CONSTANT(target, O_CREAT);#endif#ifdef O_EXCLNODE_DEFINE_CONSTANT(target, O_EXCL);#endifNODE_DEFINE_CONSTANT(target, UV_FS_O_FILEMAP);#ifdef O_NOCTTYNODE_DEFINE_CONSTANT(target, O_NOCTTY);#endif#ifdef O_TRUNCNODE_DEFINE_CONSTANT(target, O_TRUNC);#endif#ifdef O_APPENDNODE_DEFINE_CONSTANT(target, O_APPEND);#endif#ifdef O_DIRECTORYNODE_DEFINE_CONSTANT(target, O_DIRECTORY);#endif#ifdef O_EXCLNODE_DEFINE_CONSTANT(target, O_EXCL);#endif#ifdef O_NOATIMENODE_DEFINE_CONSTANT(target, O_NOATIME);#endif#ifdef O_NOFOLLOWNODE_DEFINE_CONSTANT(target, O_NOFOLLOW);#endif#ifdef O_SYNCNODE_DEFINE_CONSTANT(target, O_SYNC);#endif#ifdef O_DSYNCNODE_DEFINE_CONSTANT(target, O_DSYNC);#endif#ifdef O_SYMLINKNODE_DEFINE_CONSTANT(target, O_SYMLINK);#endif#ifdef O_DIRECTNODE_DEFINE_CONSTANT(target, O_DIRECT);#endif#ifdef O_NONBLOCKNODE_DEFINE_CONSTANT(target, O_NONBLOCK);#endif#ifdef S_IRWXUNODE_DEFINE_CONSTANT(target, S_IRWXU);#endif#ifdef S_IRUSRNODE_DEFINE_CONSTANT(target, S_IRUSR);#endif#ifdef S_IWUSRNODE_DEFINE_CONSTANT(target, S_IWUSR);#endif#ifdef S_IXUSRNODE_DEFINE_CONSTANT(target, S_IXUSR);#endif#ifdef S_IRWXGNODE_DEFINE_CONSTANT(target, S_IRWXG);#endif#ifdef S_IRGRPNODE_DEFINE_CONSTANT(target, S_IRGRP);#endif#ifdef S_IWGRPNODE_DEFINE_CONSTANT(target, S_IWGRP);#endif#ifdef S_IXGRPNODE_DEFINE_CONSTANT(target, S_IXGRP);#endif#ifdef S_IRWXONODE_DEFINE_CONSTANT(target, S_IRWXO);#endif#ifdef S_IROTHNODE_DEFINE_CONSTANT(target, S_IROTH);#endif#ifdef S_IWOTHNODE_DEFINE_CONSTANT(target, S_IWOTH);#endif#ifdef S_IXOTHNODE_DEFINE_CONSTANT(target, S_IXOTH);#endif#ifdef F_OKNODE_DEFINE_CONSTANT(target, F_OK);#endif#ifdef R_OKNODE_DEFINE_CONSTANT(target, R_OK);#endif#ifdef W_OKNODE_DEFINE_CONSTANT(target, W_OK);#endif#ifdef X_OKNODE_DEFINE_CONSTANT(target, X_OK);#endif#ifdef UV_FS_COPYFILE_EXCL# define COPYFILE_EXCL UV_FS_COPYFILE_EXCLNODE_DEFINE_CONSTANT(target, UV_FS_COPYFILE_EXCL);NODE_DEFINE_CONSTANT(target, COPYFILE_EXCL);# undef COPYFILE_EXCL#endif#ifdef UV_FS_COPYFILE_FICLONE# define COPYFILE_FICLONE UV_FS_COPYFILE_FICLONENODE_DEFINE_CONSTANT(target, UV_FS_COPYFILE_FICLONE);NODE_DEFINE_CONSTANT(target, COPYFILE_FICLONE);# undef COPYFILE_FICLONE#endif#ifdef UV_FS_COPYFILE_FICLONE_FORCE# define COPYFILE_FICLONE_FORCE UV_FS_COPYFILE_FICLONE_FORCENODE_DEFINE_CONSTANT(target, UV_FS_COPYFILE_FICLONE_FORCE);NODE_DEFINE_CONSTANT(target, COPYFILE_FICLONE_FORCE);# undef COPYFILE_FICLONE_FORCE#endif}void DefineDLOpenConstants(Local<Object> target) {#ifdef RTLD_LAZYNODE_DEFINE_CONSTANT(target, RTLD_LAZY);#endif#ifdef RTLD_NOWNODE_DEFINE_CONSTANT(target, RTLD_NOW);#endif#ifdef RTLD_GLOBALNODE_DEFINE_CONSTANT(target, RTLD_GLOBAL);#endif#ifdef RTLD_LOCALNODE_DEFINE_CONSTANT(target, RTLD_LOCAL);#endif#ifdef RTLD_DEEPBINDNODE_DEFINE_CONSTANT(target, RTLD_DEEPBIND);#endif}void DefineTraceConstants(Local<Object> target) {NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_BEGIN);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_END);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_COMPLETE);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_INSTANT);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_ASYNC_BEGIN);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_ASYNC_STEP_INTO);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_ASYNC_STEP_PAST);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_ASYNC_END);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_NESTABLE_ASYNC_END);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_NESTABLE_ASYNC_INSTANT);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_FLOW_BEGIN);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_FLOW_STEP);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_FLOW_END);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_METADATA);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_COUNTER);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_SAMPLE);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_CREATE_OBJECT);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_SNAPSHOT_OBJECT);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_DELETE_OBJECT);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_MEMORY_DUMP);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_MARK);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_CLOCK_SYNC);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_ENTER_CONTEXT);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_LEAVE_CONTEXT);NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_LINK_IDS);}} // anonymous namespacevoid DefineConstants(v8::Isolate* isolate, Local<Object> target) {Environment* env = Environment::GetCurrent(isolate);Local<Object> os_constants = Object::New(isolate);CHECK(os_constants->SetPrototype(env->context(),Null(env->isolate())).FromJust());Local<Object> err_constants = Object::New(isolate);CHECK(err_constants->SetPrototype(env->context(),Null(env->isolate())).FromJust());Local<Object> sig_constants = Object::New(isolate);CHECK(sig_constants->SetPrototype(env->context(),Null(env->isolate())).FromJust());Local<Object> priority_constants = Object::New(isolate);CHECK(priority_constants->SetPrototype(env->context(),Null(env->isolate())).FromJust());Local<Object> fs_constants = Object::New(isolate);CHECK(fs_constants->SetPrototype(env->context(),Null(env->isolate())).FromJust());Local<Object> crypto_constants = Object::New(isolate);CHECK(crypto_constants->SetPrototype(env->context(),Null(env->isolate())).FromJust());Local<Object> zlib_constants = Object::New(isolate);CHECK(zlib_constants->SetPrototype(env->context(),Null(env->isolate())).FromJust());Local<Object> dlopen_constants = Object::New(isolate);CHECK(dlopen_constants->SetPrototype(env->context(),Null(env->isolate())).FromJust());Local<Object> trace_constants = Object::New(isolate);CHECK(trace_constants->SetPrototype(env->context(),Null(env->isolate())).FromJust());DefineErrnoConstants(err_constants);DefineWindowsErrorConstants(err_constants);DefineSignalConstants(sig_constants);DefinePriorityConstants(priority_constants);DefineSystemConstants(fs_constants);DefineCryptoConstants(crypto_constants);DefineZlibConstants(zlib_constants);DefineDLOpenConstants(dlopen_constants);DefineTraceConstants(trace_constants);// Define libuv constants.NODE_DEFINE_CONSTANT(os_constants, UV_UDP_REUSEADDR);os_constants->Set(env->context(),OneByteString(isolate, "dlopen"),dlopen_constants).Check();os_constants->Set(env->context(),OneByteString(isolate, "errno"),err_constants).Check();os_constants->Set(env->context(),OneByteString(isolate, "signals"),sig_constants).Check();os_constants->Set(env->context(),OneByteString(isolate, "priority"),priority_constants).Check();target->Set(env->context(),OneByteString(isolate, "os"),os_constants).Check();target->Set(env->context(),OneByteString(isolate, "fs"),fs_constants).Check();target->Set(env->context(),OneByteString(isolate, "crypto"),crypto_constants).Check();target->Set(env->context(),OneByteString(isolate, "zlib"),zlib_constants).Check();target->Set(env->context(),OneByteString(isolate, "trace"),trace_constants).Check();}} // namespace node
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。