You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1251 lines
25 KiB

#include "node_constants.h"
#include "env.h"
#include "env-inl.h"
#include "uv.h"
#include "zlib.h"
#include <errno.h>
#if !defined(_MSC_VER)
#include <unistd.h>
#endif
#include <fcntl.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <limits>
#if HAVE_OPENSSL
# include <openssl/ec.h>
# include <openssl/ssl.h>
# ifndef OPENSSL_NO_ENGINE
# include <openssl/engine.h>
# endif // !OPENSSL_NO_ENGINE
#endif
namespace node {
using v8::Local;
using v8::Object;
#if HAVE_OPENSSL
const char* default_cipher_list = DEFAULT_CIPHER_LIST_CORE;
#endif
void DefineErrnoConstants(Local<Object> target) {
#ifdef E2BIG
NODE_DEFINE_CONSTANT(target, E2BIG);
#endif
#ifdef EACCES
NODE_DEFINE_CONSTANT(target, EACCES);
#endif
#ifdef EADDRINUSE
NODE_DEFINE_CONSTANT(target, EADDRINUSE);
#endif
#ifdef EADDRNOTAVAIL
NODE_DEFINE_CONSTANT(target, EADDRNOTAVAIL);
#endif
#ifdef EAFNOSUPPORT
NODE_DEFINE_CONSTANT(target, EAFNOSUPPORT);
#endif
#ifdef EAGAIN
NODE_DEFINE_CONSTANT(target, EAGAIN);
#endif
#ifdef EALREADY
NODE_DEFINE_CONSTANT(target, EALREADY);
#endif
#ifdef EBADF
NODE_DEFINE_CONSTANT(target, EBADF);
#endif
#ifdef EBADMSG
NODE_DEFINE_CONSTANT(target, EBADMSG);
#endif
#ifdef EBUSY
NODE_DEFINE_CONSTANT(target, EBUSY);
#endif
#ifdef ECANCELED
NODE_DEFINE_CONSTANT(target, ECANCELED);
#endif
#ifdef ECHILD
NODE_DEFINE_CONSTANT(target, ECHILD);
#endif
#ifdef ECONNABORTED
NODE_DEFINE_CONSTANT(target, ECONNABORTED);
#endif
#ifdef ECONNREFUSED
NODE_DEFINE_CONSTANT(target, ECONNREFUSED);
#endif
#ifdef ECONNRESET
NODE_DEFINE_CONSTANT(target, ECONNRESET);
#endif
#ifdef EDEADLK
NODE_DEFINE_CONSTANT(target, EDEADLK);
#endif
#ifdef EDESTADDRREQ
NODE_DEFINE_CONSTANT(target, EDESTADDRREQ);
#endif
#ifdef EDOM
NODE_DEFINE_CONSTANT(target, EDOM);
#endif
#ifdef EDQUOT
NODE_DEFINE_CONSTANT(target, EDQUOT);
#endif
#ifdef EEXIST
NODE_DEFINE_CONSTANT(target, EEXIST);
#endif
#ifdef EFAULT
NODE_DEFINE_CONSTANT(target, EFAULT);
#endif
#ifdef EFBIG
NODE_DEFINE_CONSTANT(target, EFBIG);
#endif
#ifdef EHOSTUNREACH
NODE_DEFINE_CONSTANT(target, EHOSTUNREACH);
#endif
#ifdef EIDRM
NODE_DEFINE_CONSTANT(target, EIDRM);
#endif
#ifdef EILSEQ
NODE_DEFINE_CONSTANT(target, EILSEQ);
#endif
#ifdef EINPROGRESS
NODE_DEFINE_CONSTANT(target, EINPROGRESS);
#endif
#ifdef EINTR
NODE_DEFINE_CONSTANT(target, EINTR);
#endif
#ifdef EINVAL
NODE_DEFINE_CONSTANT(target, EINVAL);
#endif
#ifdef EIO
NODE_DEFINE_CONSTANT(target, EIO);
#endif
#ifdef EISCONN
NODE_DEFINE_CONSTANT(target, EISCONN);
#endif
#ifdef EISDIR
NODE_DEFINE_CONSTANT(target, EISDIR);
#endif
#ifdef ELOOP
NODE_DEFINE_CONSTANT(target, ELOOP);
#endif
#ifdef EMFILE
NODE_DEFINE_CONSTANT(target, EMFILE);
#endif
#ifdef EMLINK
NODE_DEFINE_CONSTANT(target, EMLINK);
#endif
#ifdef EMSGSIZE
NODE_DEFINE_CONSTANT(target, EMSGSIZE);
#endif
#ifdef EMULTIHOP
NODE_DEFINE_CONSTANT(target, EMULTIHOP);
#endif
#ifdef ENAMETOOLONG
NODE_DEFINE_CONSTANT(target, ENAMETOOLONG);
#endif
#ifdef ENETDOWN
NODE_DEFINE_CONSTANT(target, ENETDOWN);
#endif
#ifdef ENETRESET
NODE_DEFINE_CONSTANT(target, ENETRESET);
#endif
#ifdef ENETUNREACH
NODE_DEFINE_CONSTANT(target, ENETUNREACH);
#endif
#ifdef ENFILE
NODE_DEFINE_CONSTANT(target, ENFILE);
#endif
#ifdef ENOBUFS
NODE_DEFINE_CONSTANT(target, ENOBUFS);
#endif
#ifdef ENODATA
NODE_DEFINE_CONSTANT(target, ENODATA);
#endif
#ifdef ENODEV
NODE_DEFINE_CONSTANT(target, ENODEV);
#endif
#ifdef ENOENT
NODE_DEFINE_CONSTANT(target, ENOENT);
#endif
#ifdef ENOEXEC
NODE_DEFINE_CONSTANT(target, ENOEXEC);
#endif
#ifdef ENOLCK
NODE_DEFINE_CONSTANT(target, ENOLCK);
#endif
#ifdef ENOLINK
NODE_DEFINE_CONSTANT(target, ENOLINK);
#endif
#ifdef ENOMEM
NODE_DEFINE_CONSTANT(target, ENOMEM);
#endif
#ifdef ENOMSG
NODE_DEFINE_CONSTANT(target, ENOMSG);
#endif
#ifdef ENOPROTOOPT
NODE_DEFINE_CONSTANT(target, ENOPROTOOPT);
#endif
#ifdef ENOSPC
NODE_DEFINE_CONSTANT(target, ENOSPC);
#endif
#ifdef ENOSR
NODE_DEFINE_CONSTANT(target, ENOSR);
#endif
#ifdef ENOSTR
NODE_DEFINE_CONSTANT(target, ENOSTR);
#endif
#ifdef ENOSYS
NODE_DEFINE_CONSTANT(target, ENOSYS);
#endif
#ifdef ENOTCONN
NODE_DEFINE_CONSTANT(target, ENOTCONN);
#endif
#ifdef ENOTDIR
NODE_DEFINE_CONSTANT(target, ENOTDIR);
#endif
#ifdef ENOTEMPTY
NODE_DEFINE_CONSTANT(target, ENOTEMPTY);
#endif
#ifdef ENOTSOCK
NODE_DEFINE_CONSTANT(target, ENOTSOCK);
#endif
#ifdef ENOTSUP
NODE_DEFINE_CONSTANT(target, ENOTSUP);
#endif
#ifdef ENOTTY
NODE_DEFINE_CONSTANT(target, ENOTTY);
#endif
#ifdef ENXIO
NODE_DEFINE_CONSTANT(target, ENXIO);
#endif
#ifdef EOPNOTSUPP
NODE_DEFINE_CONSTANT(target, EOPNOTSUPP);
#endif
#ifdef EOVERFLOW
NODE_DEFINE_CONSTANT(target, EOVERFLOW);
#endif
#ifdef EPERM
NODE_DEFINE_CONSTANT(target, EPERM);
#endif
#ifdef EPIPE
NODE_DEFINE_CONSTANT(target, EPIPE);
#endif
#ifdef EPROTO
NODE_DEFINE_CONSTANT(target, EPROTO);
#endif
#ifdef EPROTONOSUPPORT
NODE_DEFINE_CONSTANT(target, EPROTONOSUPPORT);
#endif
#ifdef EPROTOTYPE
NODE_DEFINE_CONSTANT(target, EPROTOTYPE);
#endif
#ifdef ERANGE
NODE_DEFINE_CONSTANT(target, ERANGE);
#endif
#ifdef EROFS
NODE_DEFINE_CONSTANT(target, EROFS);
#endif
#ifdef ESPIPE
NODE_DEFINE_CONSTANT(target, ESPIPE);
#endif
#ifdef ESRCH
NODE_DEFINE_CONSTANT(target, ESRCH);
#endif
#ifdef ESTALE
NODE_DEFINE_CONSTANT(target, ESTALE);
#endif
#ifdef ETIME
NODE_DEFINE_CONSTANT(target, ETIME);
#endif
#ifdef ETIMEDOUT
NODE_DEFINE_CONSTANT(target, ETIMEDOUT);
#endif
#ifdef ETXTBSY
NODE_DEFINE_CONSTANT(target, ETXTBSY);
#endif
#ifdef EWOULDBLOCK
NODE_DEFINE_CONSTANT(target, EWOULDBLOCK);
#endif
#ifdef EXDEV
NODE_DEFINE_CONSTANT(target, EXDEV);
#endif
}
void DefineWindowsErrorConstants(Local<Object> target) {
#ifdef WSAEINTR
NODE_DEFINE_CONSTANT(target, WSAEINTR);
#endif
#ifdef WSAEBADF
NODE_DEFINE_CONSTANT(target, WSAEBADF);
#endif
#ifdef WSAEACCES
NODE_DEFINE_CONSTANT(target, WSAEACCES);
#endif
#ifdef WSAEFAULT
NODE_DEFINE_CONSTANT(target, WSAEFAULT);
#endif
#ifdef WSAEINVAL
NODE_DEFINE_CONSTANT(target, WSAEINVAL);
#endif
#ifdef WSAEMFILE
NODE_DEFINE_CONSTANT(target, WSAEMFILE);
#endif
#ifdef WSAEWOULDBLOCK
NODE_DEFINE_CONSTANT(target, WSAEWOULDBLOCK);
#endif
#ifdef WSAEINPROGRESS
NODE_DEFINE_CONSTANT(target, WSAEINPROGRESS);
#endif
#ifdef WSAEALREADY
NODE_DEFINE_CONSTANT(target, WSAEALREADY);
#endif
#ifdef WSAENOTSOCK
NODE_DEFINE_CONSTANT(target, WSAENOTSOCK);
#endif
#ifdef WSAEDESTADDRREQ
NODE_DEFINE_CONSTANT(target, WSAEDESTADDRREQ);
#endif
#ifdef WSAEMSGSIZE
NODE_DEFINE_CONSTANT(target, WSAEMSGSIZE);
#endif
#ifdef WSAEPROTOTYPE
NODE_DEFINE_CONSTANT(target, WSAEPROTOTYPE);
#endif
#ifdef WSAENOPROTOOPT
NODE_DEFINE_CONSTANT(target, WSAENOPROTOOPT);
#endif
#ifdef WSAEPROTONOSUPPORT
NODE_DEFINE_CONSTANT(target, WSAEPROTONOSUPPORT);
#endif
#ifdef WSAESOCKTNOSUPPORT
NODE_DEFINE_CONSTANT(target, WSAESOCKTNOSUPPORT);
#endif
#ifdef WSAEOPNOTSUPP
NODE_DEFINE_CONSTANT(target, WSAEOPNOTSUPP);
#endif
#ifdef WSAEPFNOSUPPORT
NODE_DEFINE_CONSTANT(target, WSAEPFNOSUPPORT);
#endif
#ifdef WSAEAFNOSUPPORT
NODE_DEFINE_CONSTANT(target, WSAEAFNOSUPPORT);
#endif
#ifdef WSAEADDRINUSE
NODE_DEFINE_CONSTANT(target, WSAEADDRINUSE);
#endif
#ifdef WSAEADDRNOTAVAIL
NODE_DEFINE_CONSTANT(target, WSAEADDRNOTAVAIL);
#endif
#ifdef WSAENETDOWN
NODE_DEFINE_CONSTANT(target, WSAENETDOWN);
#endif
#ifdef WSAENETUNREACH
NODE_DEFINE_CONSTANT(target, WSAENETUNREACH);
#endif
#ifdef WSAENETRESET
NODE_DEFINE_CONSTANT(target, WSAENETRESET);
#endif
#ifdef WSAECONNABORTED
NODE_DEFINE_CONSTANT(target, WSAECONNABORTED);
#endif
#ifdef WSAECONNRESET
NODE_DEFINE_CONSTANT(target, WSAECONNRESET);
#endif
#ifdef WSAENOBUFS
NODE_DEFINE_CONSTANT(target, WSAENOBUFS);
#endif
#ifdef WSAEISCONN
NODE_DEFINE_CONSTANT(target, WSAEISCONN);
#endif
#ifdef WSAENOTCONN
NODE_DEFINE_CONSTANT(target, WSAENOTCONN);
#endif
#ifdef WSAESHUTDOWN
NODE_DEFINE_CONSTANT(target, WSAESHUTDOWN);
#endif
#ifdef WSAETOOMANYREFS
NODE_DEFINE_CONSTANT(target, WSAETOOMANYREFS);
#endif
#ifdef WSAETIMEDOUT
NODE_DEFINE_CONSTANT(target, WSAETIMEDOUT);
#endif
#ifdef WSAECONNREFUSED
NODE_DEFINE_CONSTANT(target, WSAECONNREFUSED);
#endif
#ifdef WSAELOOP
NODE_DEFINE_CONSTANT(target, WSAELOOP);
#endif
#ifdef WSAENAMETOOLONG
NODE_DEFINE_CONSTANT(target, WSAENAMETOOLONG);
#endif
#ifdef WSAEHOSTDOWN
NODE_DEFINE_CONSTANT(target, WSAEHOSTDOWN);
#endif
#ifdef WSAEHOSTUNREACH
NODE_DEFINE_CONSTANT(target, WSAEHOSTUNREACH);
#endif
#ifdef WSAENOTEMPTY
NODE_DEFINE_CONSTANT(target, WSAENOTEMPTY);
#endif
#ifdef WSAEPROCLIM
NODE_DEFINE_CONSTANT(target, WSAEPROCLIM);
#endif
#ifdef WSAEUSERS
NODE_DEFINE_CONSTANT(target, WSAEUSERS);
#endif
#ifdef WSAEDQUOT
NODE_DEFINE_CONSTANT(target, WSAEDQUOT);
#endif
#ifdef WSAESTALE
NODE_DEFINE_CONSTANT(target, WSAESTALE);
#endif
#ifdef WSAEREMOTE
NODE_DEFINE_CONSTANT(target, WSAEREMOTE);
#endif
#ifdef WSASYSNOTREADY
NODE_DEFINE_CONSTANT(target, WSASYSNOTREADY);
#endif
#ifdef WSAVERNOTSUPPORTED
NODE_DEFINE_CONSTANT(target, WSAVERNOTSUPPORTED);
#endif
#ifdef WSANOTINITIALISED
NODE_DEFINE_CONSTANT(target, WSANOTINITIALISED);
#endif
#ifdef WSAEDISCON
NODE_DEFINE_CONSTANT(target, WSAEDISCON);
#endif
#ifdef WSAENOMORE
NODE_DEFINE_CONSTANT(target, WSAENOMORE);
#endif
#ifdef WSAECANCELLED
NODE_DEFINE_CONSTANT(target, WSAECANCELLED);
#endif
#ifdef WSAEINVALIDPROCTABLE
NODE_DEFINE_CONSTANT(target, WSAEINVALIDPROCTABLE);
#endif
#ifdef WSAEINVALIDPROVIDER
NODE_DEFINE_CONSTANT(target, WSAEINVALIDPROVIDER);
#endif
#ifdef WSAEPROVIDERFAILEDINIT
NODE_DEFINE_CONSTANT(target, WSAEPROVIDERFAILEDINIT);
#endif
#ifdef WSASYSCALLFAILURE
NODE_DEFINE_CONSTANT(target, WSASYSCALLFAILURE);
#endif
#ifdef WSASERVICE_NOT_FOUND
NODE_DEFINE_CONSTANT(target, WSASERVICE_NOT_FOUND);
#endif
#ifdef WSATYPE_NOT_FOUND
NODE_DEFINE_CONSTANT(target, WSATYPE_NOT_FOUND);
#endif
#ifdef WSA_E_NO_MORE
NODE_DEFINE_CONSTANT(target, WSA_E_NO_MORE);
#endif
#ifdef WSA_E_CANCELLED
NODE_DEFINE_CONSTANT(target, WSA_E_CANCELLED);
#endif
#ifdef WSAEREFUSED
NODE_DEFINE_CONSTANT(target, WSAEREFUSED);
#endif
}
void DefineSignalConstants(Local<Object> target) {
#ifdef SIGHUP
NODE_DEFINE_CONSTANT(target, SIGHUP);
#endif
#ifdef SIGINT
NODE_DEFINE_CONSTANT(target, SIGINT);
#endif
#ifdef SIGQUIT
NODE_DEFINE_CONSTANT(target, SIGQUIT);
#endif
#ifdef SIGILL
NODE_DEFINE_CONSTANT(target, SIGILL);
#endif
#ifdef SIGTRAP
NODE_DEFINE_CONSTANT(target, SIGTRAP);
#endif
#ifdef SIGABRT
NODE_DEFINE_CONSTANT(target, SIGABRT);
#endif
#ifdef SIGIOT
NODE_DEFINE_CONSTANT(target, SIGIOT);
#endif
#ifdef SIGBUS
NODE_DEFINE_CONSTANT(target, SIGBUS);
#endif
#ifdef SIGFPE
NODE_DEFINE_CONSTANT(target, SIGFPE);
#endif
#ifdef SIGKILL
NODE_DEFINE_CONSTANT(target, SIGKILL);
#endif
#ifdef SIGUSR1
NODE_DEFINE_CONSTANT(target, SIGUSR1);
#endif
#ifdef SIGSEGV
NODE_DEFINE_CONSTANT(target, SIGSEGV);
#endif
#ifdef SIGUSR2
NODE_DEFINE_CONSTANT(target, SIGUSR2);
#endif
#ifdef SIGPIPE
NODE_DEFINE_CONSTANT(target, SIGPIPE);
#endif
#ifdef SIGALRM
NODE_DEFINE_CONSTANT(target, SIGALRM);
#endif
NODE_DEFINE_CONSTANT(target, SIGTERM);
#ifdef SIGCHLD
NODE_DEFINE_CONSTANT(target, SIGCHLD);
#endif
#ifdef SIGSTKFLT
NODE_DEFINE_CONSTANT(target, SIGSTKFLT);
#endif
#ifdef SIGCONT
NODE_DEFINE_CONSTANT(target, SIGCONT);
#endif
#ifdef SIGSTOP
NODE_DEFINE_CONSTANT(target, SIGSTOP);
#endif
#ifdef SIGTSTP
NODE_DEFINE_CONSTANT(target, SIGTSTP);
#endif
#ifdef SIGBREAK
NODE_DEFINE_CONSTANT(target, SIGBREAK);
#endif
#ifdef SIGTTIN
NODE_DEFINE_CONSTANT(target, SIGTTIN);
#endif
#ifdef SIGTTOU
NODE_DEFINE_CONSTANT(target, SIGTTOU);
#endif
#ifdef SIGURG
NODE_DEFINE_CONSTANT(target, SIGURG);
#endif
#ifdef SIGXCPU
NODE_DEFINE_CONSTANT(target, SIGXCPU);
#endif
#ifdef SIGXFSZ
NODE_DEFINE_CONSTANT(target, SIGXFSZ);
#endif
#ifdef SIGVTALRM
NODE_DEFINE_CONSTANT(target, SIGVTALRM);
#endif
#ifdef SIGPROF
NODE_DEFINE_CONSTANT(target, SIGPROF);
#endif
#ifdef SIGWINCH
NODE_DEFINE_CONSTANT(target, SIGWINCH);
#endif
#ifdef SIGIO
NODE_DEFINE_CONSTANT(target, SIGIO);
#endif
#ifdef SIGPOLL
NODE_DEFINE_CONSTANT(target, SIGPOLL);
#endif
#ifdef SIGLOST
NODE_DEFINE_CONSTANT(target, SIGLOST);
#endif
#ifdef SIGPWR
NODE_DEFINE_CONSTANT(target, SIGPWR);
#endif
#ifdef SIGINFO
NODE_DEFINE_CONSTANT(target, SIGINFO);
#endif
#ifdef SIGSYS
NODE_DEFINE_CONSTANT(target, SIGSYS);
#endif
#ifdef SIGUNUSED
NODE_DEFINE_CONSTANT(target, SIGUNUSED);
#endif
}
void DefineOpenSSLConstants(Local<Object> target) {
#ifdef SSL_OP_ALL
NODE_DEFINE_CONSTANT(target, SSL_OP_ALL);
#endif
#ifdef SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
NODE_DEFINE_CONSTANT(target, SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION);
#endif
#ifdef SSL_OP_CIPHER_SERVER_PREFERENCE
NODE_DEFINE_CONSTANT(target, SSL_OP_CIPHER_SERVER_PREFERENCE);
#endif
#ifdef SSL_OP_CISCO_ANYCONNECT
NODE_DEFINE_CONSTANT(target, SSL_OP_CISCO_ANYCONNECT);
#endif
#ifdef SSL_OP_COOKIE_EXCHANGE
NODE_DEFINE_CONSTANT(target, SSL_OP_COOKIE_EXCHANGE);
#endif
#ifdef SSL_OP_CRYPTOPRO_TLSEXT_BUG
NODE_DEFINE_CONSTANT(target, SSL_OP_CRYPTOPRO_TLSEXT_BUG);
#endif
#ifdef SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS
NODE_DEFINE_CONSTANT(target, SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS);
#endif
#ifdef SSL_OP_EPHEMERAL_RSA
NODE_DEFINE_CONSTANT(target, SSL_OP_EPHEMERAL_RSA);
#endif
#ifdef SSL_OP_LEGACY_SERVER_CONNECT
NODE_DEFINE_CONSTANT(target, SSL_OP_LEGACY_SERVER_CONNECT);
#endif
#ifdef SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER
NODE_DEFINE_CONSTANT(target, SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER);
#endif
#ifdef SSL_OP_MICROSOFT_SESS_ID_BUG
NODE_DEFINE_CONSTANT(target, SSL_OP_MICROSOFT_SESS_ID_BUG);
#endif
#ifdef SSL_OP_MSIE_SSLV2_RSA_PADDING
NODE_DEFINE_CONSTANT(target, SSL_OP_MSIE_SSLV2_RSA_PADDING);
#endif
#ifdef SSL_OP_NETSCAPE_CA_DN_BUG
NODE_DEFINE_CONSTANT(target, SSL_OP_NETSCAPE_CA_DN_BUG);
#endif
#ifdef SSL_OP_NETSCAPE_CHALLENGE_BUG
NODE_DEFINE_CONSTANT(target, SSL_OP_NETSCAPE_CHALLENGE_BUG);
#endif
#ifdef SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG
NODE_DEFINE_CONSTANT(target, SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG);
#endif
#ifdef SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG
NODE_DEFINE_CONSTANT(target, SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG);
#endif
#ifdef SSL_OP_NO_COMPRESSION
NODE_DEFINE_CONSTANT(target, SSL_OP_NO_COMPRESSION);
#endif
#ifdef SSL_OP_NO_QUERY_MTU
NODE_DEFINE_CONSTANT(target, SSL_OP_NO_QUERY_MTU);
#endif
#ifdef SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION
NODE_DEFINE_CONSTANT(target, SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION);
#endif
#ifdef SSL_OP_NO_SSLv2
NODE_DEFINE_CONSTANT(target, SSL_OP_NO_SSLv2);
#endif
#ifdef SSL_OP_NO_SSLv3
NODE_DEFINE_CONSTANT(target, SSL_OP_NO_SSLv3);
#endif
#ifdef SSL_OP_NO_TICKET
NODE_DEFINE_CONSTANT(target, SSL_OP_NO_TICKET);
#endif
#ifdef SSL_OP_NO_TLSv1
NODE_DEFINE_CONSTANT(target, SSL_OP_NO_TLSv1);
#endif
#ifdef SSL_OP_NO_TLSv1_1
NODE_DEFINE_CONSTANT(target, SSL_OP_NO_TLSv1_1);
#endif
#ifdef SSL_OP_NO_TLSv1_2
NODE_DEFINE_CONSTANT(target, SSL_OP_NO_TLSv1_2);
#endif
#ifdef SSL_OP_PKCS1_CHECK_1
NODE_DEFINE_CONSTANT(target, SSL_OP_PKCS1_CHECK_1);
#endif
#ifdef SSL_OP_PKCS1_CHECK_2
NODE_DEFINE_CONSTANT(target, SSL_OP_PKCS1_CHECK_2);
#endif
#ifdef SSL_OP_SINGLE_DH_USE
NODE_DEFINE_CONSTANT(target, SSL_OP_SINGLE_DH_USE);
#endif
#ifdef SSL_OP_SINGLE_ECDH_USE
NODE_DEFINE_CONSTANT(target, SSL_OP_SINGLE_ECDH_USE);
#endif
#ifdef SSL_OP_SSLEAY_080_CLIENT_DH_BUG
NODE_DEFINE_CONSTANT(target, SSL_OP_SSLEAY_080_CLIENT_DH_BUG);
#endif
#ifdef SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG
NODE_DEFINE_CONSTANT(target, SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG);
#endif
#ifdef SSL_OP_TLS_BLOCK_PADDING_BUG
NODE_DEFINE_CONSTANT(target, SSL_OP_TLS_BLOCK_PADDING_BUG);
#endif
#ifdef SSL_OP_TLS_D5_BUG
NODE_DEFINE_CONSTANT(target, SSL_OP_TLS_D5_BUG);
#endif
#ifdef SSL_OP_TLS_ROLLBACK_BUG
NODE_DEFINE_CONSTANT(target, SSL_OP_TLS_ROLLBACK_BUG);
#endif
# ifndef OPENSSL_NO_ENGINE
# ifdef ENGINE_METHOD_RSA
NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_RSA);
# endif
# ifdef ENGINE_METHOD_DSA
NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_DSA);
# endif
# ifdef ENGINE_METHOD_DH
NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_DH);
# endif
# ifdef ENGINE_METHOD_RAND
NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_RAND);
# endif
# ifdef ENGINE_METHOD_ECDH
NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_ECDH);
# endif
# ifdef ENGINE_METHOD_ECDSA
NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_ECDSA);
# endif
# ifdef ENGINE_METHOD_CIPHERS
NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_CIPHERS);
# endif
# ifdef ENGINE_METHOD_DIGESTS
NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_DIGESTS);
# endif
# ifdef ENGINE_METHOD_STORE
NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_STORE);
# endif
# ifdef ENGINE_METHOD_PKEY_METHS
NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_PKEY_METHS);
# endif
# ifdef ENGINE_METHOD_PKEY_ASN1_METHS
NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_PKEY_ASN1_METHS);
# endif
# ifdef ENGINE_METHOD_ALL
NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_ALL);
# endif
# ifdef ENGINE_METHOD_NONE
NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_NONE);
# endif
# endif // !OPENSSL_NO_ENGINE
#ifdef DH_CHECK_P_NOT_SAFE_PRIME
NODE_DEFINE_CONSTANT(target, DH_CHECK_P_NOT_SAFE_PRIME);
#endif
#ifdef DH_CHECK_P_NOT_PRIME
NODE_DEFINE_CONSTANT(target, DH_CHECK_P_NOT_PRIME);
#endif
#ifdef DH_UNABLE_TO_CHECK_GENERATOR
NODE_DEFINE_CONSTANT(target, DH_UNABLE_TO_CHECK_GENERATOR);
#endif
#ifdef DH_NOT_SUITABLE_GENERATOR
NODE_DEFINE_CONSTANT(target, DH_NOT_SUITABLE_GENERATOR);
#endif
#ifdef OPENSSL_NPN_NEGOTIATED
#define NPN_ENABLED 1
NODE_DEFINE_CONSTANT(target, NPN_ENABLED);
#endif
#ifdef TLSEXT_TYPE_application_layer_protocol_negotiation
#define ALPN_ENABLED 1
NODE_DEFINE_CONSTANT(target, ALPN_ENABLED);
#endif
#ifdef RSA_PKCS1_PADDING
NODE_DEFINE_CONSTANT(target, RSA_PKCS1_PADDING);
#endif
#ifdef RSA_SSLV23_PADDING
NODE_DEFINE_CONSTANT(target, RSA_SSLV23_PADDING);
#endif
#ifdef RSA_NO_PADDING
NODE_DEFINE_CONSTANT(target, RSA_NO_PADDING);
#endif
#ifdef RSA_PKCS1_OAEP_PADDING
NODE_DEFINE_CONSTANT(target, RSA_PKCS1_OAEP_PADDING);
#endif
#ifdef RSA_X931_PADDING
NODE_DEFINE_CONSTANT(target, RSA_X931_PADDING);
#endif
#ifdef RSA_PKCS1_PSS_PADDING
NODE_DEFINE_CONSTANT(target, RSA_PKCS1_PSS_PADDING);
#endif
#if HAVE_OPENSSL
// NOTE: These are not defines
NODE_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) {
// file access modes
NODE_DEFINE_CONSTANT(target, O_RDONLY);
NODE_DEFINE_CONSTANT(target, O_WRONLY);
NODE_DEFINE_CONSTANT(target, O_RDWR);
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_IFBLK
NODE_DEFINE_CONSTANT(target, S_IFBLK);
#endif
#ifdef S_IFIFO
NODE_DEFINE_CONSTANT(target, S_IFIFO);
#endif
#ifdef S_IFLNK
NODE_DEFINE_CONSTANT(target, S_IFLNK);
#endif
#ifdef S_IFSOCK
NODE_DEFINE_CONSTANT(target, S_IFSOCK);
#endif
#ifdef O_CREAT
NODE_DEFINE_CONSTANT(target, O_CREAT);
#endif
#ifdef O_EXCL
NODE_DEFINE_CONSTANT(target, O_EXCL);
#endif
#ifdef O_NOCTTY
NODE_DEFINE_CONSTANT(target, O_NOCTTY);
#endif
#ifdef O_TRUNC
NODE_DEFINE_CONSTANT(target, O_TRUNC);
#endif
#ifdef O_APPEND
NODE_DEFINE_CONSTANT(target, O_APPEND);
#endif
#ifdef O_DIRECTORY
NODE_DEFINE_CONSTANT(target, O_DIRECTORY);
#endif
#ifdef O_EXCL
NODE_DEFINE_CONSTANT(target, O_EXCL);
#endif
#ifdef O_NOATIME
NODE_DEFINE_CONSTANT(target, O_NOATIME);
#endif
#ifdef O_NOFOLLOW
NODE_DEFINE_CONSTANT(target, O_NOFOLLOW);
#endif
#ifdef O_SYNC
NODE_DEFINE_CONSTANT(target, O_SYNC);
#endif
#ifdef O_SYMLINK
NODE_DEFINE_CONSTANT(target, O_SYMLINK);
#endif
#ifdef O_DIRECT
NODE_DEFINE_CONSTANT(target, O_DIRECT);
#endif
#ifdef O_NONBLOCK
NODE_DEFINE_CONSTANT(target, O_NONBLOCK);
#endif
#ifdef S_IRWXU
NODE_DEFINE_CONSTANT(target, S_IRWXU);
#endif
#ifdef S_IRUSR
NODE_DEFINE_CONSTANT(target, S_IRUSR);
#endif
#ifdef S_IWUSR
NODE_DEFINE_CONSTANT(target, S_IWUSR);
#endif
#ifdef S_IXUSR
NODE_DEFINE_CONSTANT(target, S_IXUSR);
#endif
#ifdef S_IRWXG
NODE_DEFINE_CONSTANT(target, S_IRWXG);
#endif
#ifdef S_IRGRP
NODE_DEFINE_CONSTANT(target, S_IRGRP);
#endif
#ifdef S_IWGRP
NODE_DEFINE_CONSTANT(target, S_IWGRP);
#endif
#ifdef S_IXGRP
NODE_DEFINE_CONSTANT(target, S_IXGRP);
#endif
#ifdef S_IRWXO
NODE_DEFINE_CONSTANT(target, S_IRWXO);
#endif
#ifdef S_IROTH
NODE_DEFINE_CONSTANT(target, S_IROTH);
#endif
#ifdef S_IWOTH
NODE_DEFINE_CONSTANT(target, S_IWOTH);
#endif
#ifdef S_IXOTH
NODE_DEFINE_CONSTANT(target, S_IXOTH);
#endif
#ifdef F_OK
NODE_DEFINE_CONSTANT(target, F_OK);
#endif
#ifdef R_OK
NODE_DEFINE_CONSTANT(target, R_OK);
#endif
#ifdef W_OK
NODE_DEFINE_CONSTANT(target, W_OK);
#endif
#ifdef X_OK
NODE_DEFINE_CONSTANT(target, X_OK);
#endif
}
void DefineUVConstants(Local<Object> target) {
NODE_DEFINE_CONSTANT(target, UV_UDP_REUSEADDR);
}
void DefineCryptoConstants(Local<Object> target) {
#if HAVE_OPENSSL
NODE_DEFINE_STRING_CONSTANT(target,
"defaultCoreCipherList",
DEFAULT_CIPHER_LIST_CORE);
NODE_DEFINE_STRING_CONSTANT(target,
"defaultCipherList",
default_cipher_list);
#endif
}
void DefineZlibConstants(Local<Object> target) {
NODE_DEFINE_CONSTANT(target, Z_NO_FLUSH);
NODE_DEFINE_CONSTANT(target, Z_PARTIAL_FLUSH);
NODE_DEFINE_CONSTANT(target, Z_SYNC_FLUSH);
NODE_DEFINE_CONSTANT(target, Z_FULL_FLUSH);
NODE_DEFINE_CONSTANT(target, Z_FINISH);
NODE_DEFINE_CONSTANT(target, Z_BLOCK);
// return/error codes
NODE_DEFINE_CONSTANT(target, Z_OK);
NODE_DEFINE_CONSTANT(target, Z_STREAM_END);
NODE_DEFINE_CONSTANT(target, Z_NEED_DICT);
NODE_DEFINE_CONSTANT(target, Z_ERRNO);
NODE_DEFINE_CONSTANT(target, Z_STREAM_ERROR);
NODE_DEFINE_CONSTANT(target, Z_DATA_ERROR);
NODE_DEFINE_CONSTANT(target, Z_MEM_ERROR);
NODE_DEFINE_CONSTANT(target, Z_BUF_ERROR);
NODE_DEFINE_CONSTANT(target, Z_VERSION_ERROR);
NODE_DEFINE_CONSTANT(target, Z_NO_COMPRESSION);
NODE_DEFINE_CONSTANT(target, Z_BEST_SPEED);
NODE_DEFINE_CONSTANT(target, Z_BEST_COMPRESSION);
NODE_DEFINE_CONSTANT(target, Z_DEFAULT_COMPRESSION);
NODE_DEFINE_CONSTANT(target, Z_FILTERED);
NODE_DEFINE_CONSTANT(target, Z_HUFFMAN_ONLY);
NODE_DEFINE_CONSTANT(target, Z_RLE);
NODE_DEFINE_CONSTANT(target, Z_FIXED);
NODE_DEFINE_CONSTANT(target, Z_DEFAULT_STRATEGY);
NODE_DEFINE_CONSTANT(target, ZLIB_VERNUM);
enum node_zlib_mode {
NONE,
DEFLATE,
INFLATE,
GZIP,
GUNZIP,
DEFLATERAW,
INFLATERAW,
UNZIP
};
NODE_DEFINE_CONSTANT(target, DEFLATE);
NODE_DEFINE_CONSTANT(target, INFLATE);
NODE_DEFINE_CONSTANT(target, GZIP);
NODE_DEFINE_CONSTANT(target, GUNZIP);
NODE_DEFINE_CONSTANT(target, DEFLATERAW);
NODE_DEFINE_CONSTANT(target, INFLATERAW);
NODE_DEFINE_CONSTANT(target, UNZIP);
#define Z_MIN_WINDOWBITS 8
#define Z_MAX_WINDOWBITS 15
#define Z_DEFAULT_WINDOWBITS 15
// Fewer than 64 bytes per chunk is not recommended.
// Technically it could work with as few as 8, but even 64 bytes
// is low. Usually a MB or more is best.
#define Z_MIN_CHUNK 64
#define Z_MAX_CHUNK std::numeric_limits<double>::infinity()
#define Z_DEFAULT_CHUNK (16 * 1024)
#define Z_MIN_MEMLEVEL 1
#define Z_MAX_MEMLEVEL 9
#define Z_DEFAULT_MEMLEVEL 8
#define Z_MIN_LEVEL -1
#define Z_MAX_LEVEL 9
#define Z_DEFAULT_LEVEL Z_DEFAULT_COMPRESSION
NODE_DEFINE_CONSTANT(target, Z_MIN_WINDOWBITS);
NODE_DEFINE_CONSTANT(target, Z_MAX_WINDOWBITS);
NODE_DEFINE_CONSTANT(target, Z_DEFAULT_WINDOWBITS);
NODE_DEFINE_CONSTANT(target, Z_MIN_CHUNK);
NODE_DEFINE_CONSTANT(target, Z_MAX_CHUNK);
NODE_DEFINE_CONSTANT(target, Z_DEFAULT_CHUNK);
NODE_DEFINE_CONSTANT(target, Z_MIN_MEMLEVEL);
NODE_DEFINE_CONSTANT(target, Z_MAX_MEMLEVEL);
NODE_DEFINE_CONSTANT(target, Z_DEFAULT_MEMLEVEL);
NODE_DEFINE_CONSTANT(target, Z_MIN_LEVEL);
NODE_DEFINE_CONSTANT(target, Z_MAX_LEVEL);
NODE_DEFINE_CONSTANT(target, Z_DEFAULT_LEVEL);
}
void DefineConstants(v8::Isolate* isolate, Local<Object> target) {
Local<Object> os_constants = Object::New(isolate);
Local<Object> err_constants = Object::New(isolate);
Local<Object> sig_constants = Object::New(isolate);
Local<Object> fs_constants = Object::New(isolate);
Local<Object> crypto_constants = Object::New(isolate);
Local<Object> zlib_constants = Object::New(isolate);
DefineErrnoConstants(err_constants);
DefineWindowsErrorConstants(err_constants);
DefineSignalConstants(sig_constants);
DefineUVConstants(os_constants);
DefineSystemConstants(fs_constants);
DefineOpenSSLConstants(crypto_constants);
DefineCryptoConstants(crypto_constants);
DefineZlibConstants(zlib_constants);
os_constants->Set(OneByteString(isolate, "errno"), err_constants);
os_constants->Set(OneByteString(isolate, "signals"), sig_constants);
target->Set(OneByteString(isolate, "os"), os_constants);
target->Set(OneByteString(isolate, "fs"), fs_constants);
target->Set(OneByteString(isolate, "crypto"), crypto_constants);
target->Set(OneByteString(isolate, "zlib"), zlib_constants);
}
} // namespace node