summaryrefslogtreecommitdiffhomepage
path: root/src/os
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2005-03-22 16:02:46 +0000
committerIgor Sysoev <igor@sysoev.ru>2005-03-22 16:02:46 +0000
commit4d656dcd0bd6309b0ec76fc444198ed6c2948a8e (patch)
tree67ce201b7d515273fa2a6a617542cece4fa16898 /src/os
parent3599a1b885533d929315494258fb407765243a95 (diff)
downloadnginx-release-0.1.26.tar.gz
nginx-release-0.1.26.tar.bz2
nginx-0.1.26-RELEASE importrelease-0.1.26
*) Change: the invalid client header lines are now ignored and logged at the info level. *) Change: the server name is also logged in error log. *) Feature: the ngx_http_auth_basic_module module and the auth_basic and auth_basic_user_file directives.
Diffstat (limited to '')
-rw-r--r--src/os/unix/ngx_linux_config.h1
-rw-r--r--src/os/unix/ngx_solaris_config.h1
-rw-r--r--src/os/unix/ngx_user.c89
-rw-r--r--src/os/unix/ngx_user.h5
-rw-r--r--src/os/win32/ngx_gui.c8
-rw-r--r--src/os/win32/ngx_gui.h6
-rw-r--r--src/os/win32/ngx_user.c22
-rw-r--r--src/os/win32/ngx_user.h4
-rw-r--r--src/os/win32/ngx_win32_config.h10
9 files changed, 138 insertions, 8 deletions
diff --git a/src/os/unix/ngx_linux_config.h b/src/os/unix/ngx_linux_config.h
index 35e3b8b73..29d8aae1b 100644
--- a/src/os/unix/ngx_linux_config.h
+++ b/src/os/unix/ngx_linux_config.h
@@ -48,6 +48,7 @@
#include <malloc.h> /* memalign() */
#include <sys/ioctl.h>
#include <sys/sysctl.h>
+#include <crypt.h>
#include <ngx_auto_config.h>
diff --git a/src/os/unix/ngx_solaris_config.h b/src/os/unix/ngx_solaris_config.h
index d629e046b..088fbd023 100644
--- a/src/os/unix/ngx_solaris_config.h
+++ b/src/os/unix/ngx_solaris_config.h
@@ -46,6 +46,7 @@
#include <sys/systeminfo.h>
#include <limits.h> /* IOV_MAX */
#include <inttypes.h>
+#include <crypt.h>
#include <ngx_auto_config.h>
diff --git a/src/os/unix/ngx_user.c b/src/os/unix/ngx_user.c
new file mode 100644
index 000000000..fe2f79489
--- /dev/null
+++ b/src/os/unix/ngx_user.c
@@ -0,0 +1,89 @@
+
+/*
+ * Copyright (C) Igor Sysoev
+ */
+
+
+#include <ngx_config.h>
+#include <ngx_core.h>
+
+
+/*
+ * Solaris has thread-safe crypt()
+ * Linux has crypt_r(); "struct crypt_data" is more than 128K
+ * FreeBSD needs the mutex to protect crypt()
+ *
+ * TODO:
+ * ngx_crypt_init() to init mutex
+ */
+
+
+#if (NGX_CRYPT)
+
+#if (NGX_LINUX)
+
+ngx_int_t
+ngx_crypt(ngx_pool_t *pool, u_char *key, u_char *salt, u_char **encrypted)
+{
+ char *value;
+ size_t len;
+ struct crypt_data cd;
+
+ value = crypt_r((char *) key, (char *) salt, &cd);
+
+ if (value) {
+ len = ngx_strlen(value);
+
+ *encrypted = ngx_palloc(pool, len);
+ if (*encrypted) {
+ ngx_memcpy(*encrypted, value, len + 1);
+ return NGX_OK;
+ }
+ }
+
+ return NGX_ERROR;
+}
+
+#else
+
+ngx_int_t
+ngx_crypt(ngx_pool_t *pool, u_char *key, u_char *salt, u_char **encrypted)
+{
+ char *value;
+ size_t len;
+ ngx_int_t rc;
+
+#if (NGX_THREADS && NGX_NONREENTRANT_CRYPT)
+
+ /* crypt() is a time consuming funtion, so we only try to lock */
+
+ if (ngx_mutex_trylock(ngx_crypt_mutex) != NGX_OK) {
+ return NGX_AGAIN;
+ }
+
+#endif
+
+ rc = NGX_ERROR;
+
+ value = crypt((char *) key, (char *) salt);
+
+ if (value) {
+ len = ngx_strlen(value);
+
+ *encrypted = ngx_palloc(pool, len);
+ if (*encrypted) {
+ ngx_memcpy(*encrypted, value, len + 1);
+ rc = NGX_OK;
+ }
+ }
+
+#if (NGX_THREADS && NGX_NONREENTRANT_CRYPT)
+ ngx_mutex_unlock(ngx_crypt_mutex);
+#endif
+
+ return rc;
+}
+
+#endif
+
+#endif /* NGX_CRYPT */
diff --git a/src/os/unix/ngx_user.h b/src/os/unix/ngx_user.h
index f939b84b4..a24a66bf3 100644
--- a/src/os/unix/ngx_user.h
+++ b/src/os/unix/ngx_user.h
@@ -16,4 +16,9 @@ typedef uid_t ngx_uid_t;
typedef gid_t ngx_gid_t;
+ngx_int_t ngx_crypt(ngx_pool_t *pool, u_char *key, u_char *salt,
+ u_char **encrypted);
+
+
+
#endif /* _NGX_USER_H_INCLUDED_ */
diff --git a/src/os/win32/ngx_gui.c b/src/os/win32/ngx_gui.c
index 5673820d2..36d3c49d2 100644
--- a/src/os/win32/ngx_gui.c
+++ b/src/os/win32/ngx_gui.c
@@ -11,8 +11,8 @@
#define NGX_MAX_TEXT 2048
-void ngx_message_box(char *title, ngx_uint_t type, ngx_err_t err,
- const char *fmt, ...)
+void ngx_cdecl ngx_message_box(char *title, ngx_uint_t type, ngx_err_t err,
+ const char *fmt, ...)
{
va_list args;
u_char text[NGX_MAX_TEXT], *p, *last;
@@ -59,8 +59,8 @@ void ngx_message_box(char *title, ngx_uint_t type, ngx_err_t err,
}
-ngx_int_t ngx_system_tray_icon(HWND window, u_long action,
- HICON icon, u_char *tip)
+ngx_int_t
+ngx_system_tray_icon(HWND window, u_long action, HICON icon, u_char *tip)
{
NOTIFYICONDATA ni;
diff --git a/src/os/win32/ngx_gui.h b/src/os/win32/ngx_gui.h
index e44e6aa15..0bff21c09 100644
--- a/src/os/win32/ngx_gui.h
+++ b/src/os/win32/ngx_gui.h
@@ -13,11 +13,11 @@
#include <ngx_gui_resources.h>
-void ngx_message_box(char *title, ngx_uint_t type, ngx_err_t err,
- const char *fmt, ...);
+void ngx_cdecl ngx_message_box(char *title, ngx_uint_t type, ngx_err_t err,
+ const char *fmt, ...);
ngx_int_t ngx_system_tray_icon(HWND window, u_long action,
- HICON icon, u_char *tip);
+ HICON icon, u_char *tip);
#endif /* _NGX_GUI_H_INCLUDED_ */
diff --git a/src/os/win32/ngx_user.c b/src/os/win32/ngx_user.c
new file mode 100644
index 000000000..cc0760301
--- /dev/null
+++ b/src/os/win32/ngx_user.c
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) Igor Sysoev
+ */
+
+
+#include <ngx_config.h>
+#include <ngx_core.h>
+
+
+#if (NGX_CRYPT)
+
+ngx_int_t
+ngx_crypt(ngx_pool_t *pool, u_char *key, u_char *salt, u_char **encrypted)
+{
+ /* STUB: a plain text password */
+
+ *encrypted = key;
+
+ return NGX_OK;
+}
+
+#endif /* NGX_CRYPT */
diff --git a/src/os/win32/ngx_user.h b/src/os/win32/ngx_user.h
index 452daa161..6e8c58bd2 100644
--- a/src/os/win32/ngx_user.h
+++ b/src/os/win32/ngx_user.h
@@ -17,4 +17,8 @@
#define ngx_gid_t ngx_int_t
+ngx_int_t ngx_crypt(ngx_pool_t *pool, u_char *key, u_char *salt,
+ u_char **encrypted);
+
+
#endif /* _NGX_USER_H_INCLUDED_ */
diff --git a/src/os/win32/ngx_win32_config.h b/src/os/win32/ngx_win32_config.h
index 02d4db5c6..f49a16c96 100644
--- a/src/os/win32/ngx_win32_config.h
+++ b/src/os/win32/ngx_win32_config.h
@@ -93,15 +93,23 @@
#define ngx_inline __inline
+#define ngx_cdecl __cdecl
#ifdef _MSC_VER
typedef unsigned __int32 uint32_t;
typedef __int32 int32_t;
+#define ngx_libc_cdecl __cdecl
-#else /* __WATCOMC__ and __BORLANDC__ */
+#elif defined __WATCOMC__
typedef unsigned int uint32_t;
typedef int int32_t;
+#define ngx_libc_cdecl
+
+#else /* __BORLANDC__ */
+typedef unsigned int uint32_t;
+typedef int int32_t;
+#define ngx_libc_cdecl __cdecl
#endif
typedef __int64 int64_t;