aboutsummaryrefslogtreecommitdiff
path: root/src/core/nginx.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/nginx.c')
-rw-r--r--src/core/nginx.c118
1 files changed, 118 insertions, 0 deletions
diff --git a/src/core/nginx.c b/src/core/nginx.c
new file mode 100644
index 000000000..f1671b38d
--- /dev/null
+++ b/src/core/nginx.c
@@ -0,0 +1,118 @@
+
+#include <nginx.h>
+
+#include <ngx_config.h>
+#include <ngx_string.h>
+#include <ngx_log.h>
+#include <ngx_alloc.h>
+#include <ngx_server.h>
+#include <ngx_connection.h>
+#include <ngx_listen.h>
+
+/*
+#include <ngx_http.h>
+*/
+
+
+#if !(WIN32)
+static int ngx_options(int argc, char *const *argv);
+#endif
+
+char *ngx_root = "/home/is/work/xml/xml/html";
+
+int ngx_http_init_connection(void *data);
+
+
+int ngx_max_conn = 512;
+struct sockaddr_in ngx_addr = {0, AF_INET, 0, 0, 0};
+
+
+ngx_pool_t ngx_pool;
+ngx_log_t ngx_log;
+ngx_server_t ngx_server;
+
+
+int main(int argc, char *const *argv)
+{
+ char addr_text[22];
+ ngx_socket_t fd;
+ ngx_listen_t ls;
+#if (WIN32)
+ WSADATA wsd;
+#endif
+
+
+ ngx_log.log_level = NGX_LOG_DEBUG;
+ ngx_pool.log = &ngx_log;
+ ngx_addr.sin_port = htons(8000);
+ ngx_addr.sin_family = AF_INET;
+
+#if !(WIN32)
+ if (ngx_options(argc, argv) == -1)
+ ngx_log_error(NGX_LOG_EMERG, (&ngx_log), 0, "invalid argument");
+#endif
+
+ ngx_log_debug((&ngx_log), "%d, %s:%d" _ ngx_max_conn _
+ inet_ntoa(ngx_addr.sin_addr) _ ntohs(ngx_addr.sin_port));
+
+#if (WIN32)
+ if (WSAStartup(MAKEWORD(2,2), &wsd) != 0)
+ ngx_log_error(NGX_LOG_EMERG, (&ngx_log), ngx_socket_errno,
+ "WSAStartup failed");
+#endif
+
+ ngx_snprintf(ngx_cpystrn(addr_text, inet_ntoa(ngx_addr.sin_addr), 16),
+ 7, ":%d", ntohs(ngx_addr.sin_port));
+ fd = ngx_listen((struct sockaddr *) &ngx_addr, -1, &ngx_log, addr_text);
+
+ ngx_server.buff_size = 1024;
+ ngx_server.handler = ngx_http_init_connection;
+
+ /* daemon */
+
+ ls.fd = fd;
+ ls.server = &ngx_server;
+ ls.log = &ngx_log;
+
+ /* fork */
+
+ ngx_worker(&ls, 1, &ngx_pool, &ngx_log);
+}
+
+#if !(WIN32)
+extern char *optarg;
+
+static int ngx_options(int argc, char *const *argv)
+{
+ char ch, *pos;
+ int port;
+
+ while ((ch = getopt(argc, argv, "l:c:")) != -1) {
+ switch (ch) {
+ case 'l':
+ if (pos = strchr(optarg, ':')) {
+ *(pos) = '\0';
+ if ((port = atoi(pos + 1)) <= 0)
+ return -1;
+ ngx_addr.sin_port = htons(port);
+ }
+
+ if ((ngx_addr.sin_addr.s_addr = inet_addr(optarg)) == INADDR_NONE)
+ return -1;
+ break;
+
+ case 'c':
+ if ((ngx_max_conn = atoi(optarg)) <= 0)
+ return -1;
+ break;
+
+ case '?':
+ default:
+ return -1;
+ }
+
+ }
+
+ return 0;
+}
+#endif