Added configure and command line option --control.
This commit is contained in:
10
auto/options
10
auto/options
@@ -17,6 +17,8 @@ NXT_PID="nginext.pid"
|
|||||||
NXT_LOG="nginext.log"
|
NXT_LOG="nginext.log"
|
||||||
NXT_MODULES="modules"
|
NXT_MODULES="modules"
|
||||||
|
|
||||||
|
NXT_CONTROL="unix:control.unit.sock"
|
||||||
|
|
||||||
NXT_USER="nobody"
|
NXT_USER="nobody"
|
||||||
NXT_GROUP=
|
NXT_GROUP=
|
||||||
|
|
||||||
@@ -67,6 +69,8 @@ do
|
|||||||
--log=*) NXT_LOG="$value" ;;
|
--log=*) NXT_LOG="$value" ;;
|
||||||
--modules=*) NXT_MODULES="$value" ;;
|
--modules=*) NXT_MODULES="$value" ;;
|
||||||
|
|
||||||
|
--control=*) NXT_CONTROL="$value" ;;
|
||||||
|
|
||||||
--user=*) NXT_USER="$value" ;;
|
--user=*) NXT_USER="$value" ;;
|
||||||
--group=*) NXT_GROUP="$value" ;;
|
--group=*) NXT_GROUP="$value" ;;
|
||||||
|
|
||||||
@@ -136,3 +140,9 @@ case "$NXT_MODULES" in
|
|||||||
/*) ;;
|
/*) ;;
|
||||||
*) NXT_MODULES="$NXT_PREFIX$NXT_MODULES" ;;
|
*) NXT_MODULES="$NXT_PREFIX$NXT_MODULES" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
case "$NXT_CONTROL" in
|
||||||
|
unix:/*) ;;
|
||||||
|
unix:*) NXT_CONTROL="unix:$NXT_PREFIX${NXT_CONTROL##unix:}" ;;
|
||||||
|
*) ;;
|
||||||
|
esac
|
||||||
|
|||||||
2
configure
vendored
2
configure
vendored
@@ -67,6 +67,8 @@ cat << END >> $NXT_AUTO_CONFIG_H
|
|||||||
#define NXT_LOG "$NXT_LOG"
|
#define NXT_LOG "$NXT_LOG"
|
||||||
#define NXT_MODULES "$NXT_MODULES"
|
#define NXT_MODULES "$NXT_MODULES"
|
||||||
|
|
||||||
|
#define NXT_CONTROL_SOCK "$NXT_CONTROL"
|
||||||
|
|
||||||
#define NXT_USER "$NXT_USER"
|
#define NXT_USER "$NXT_USER"
|
||||||
#define NXT_GROUP "$NXT_GROUP"
|
#define NXT_GROUP "$NXT_GROUP"
|
||||||
|
|
||||||
|
|||||||
@@ -147,22 +147,6 @@ nxt_runtime_controller_socket(nxt_task_t *task, nxt_runtime_t *rt)
|
|||||||
|
|
||||||
sa = rt->controller_listen;
|
sa = rt->controller_listen;
|
||||||
|
|
||||||
if (rt->controller_listen == NULL) {
|
|
||||||
sa = nxt_sockaddr_alloc(rt->mem_pool, sizeof(struct sockaddr_in),
|
|
||||||
NXT_INET_ADDR_STR_LEN);
|
|
||||||
if (sa == NULL) {
|
|
||||||
return NXT_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
sa->type = SOCK_STREAM;
|
|
||||||
sa->u.sockaddr_in.sin_family = AF_INET;
|
|
||||||
sa->u.sockaddr_in.sin_port = htons(8443);
|
|
||||||
|
|
||||||
nxt_sockaddr_text(sa);
|
|
||||||
|
|
||||||
rt->controller_listen = sa;
|
|
||||||
}
|
|
||||||
|
|
||||||
ls = nxt_mp_alloc(rt->mem_pool, sizeof(nxt_listen_socket_t));
|
ls = nxt_mp_alloc(rt->mem_pool, sizeof(nxt_listen_socket_t));
|
||||||
if (ls == NULL) {
|
if (ls == NULL) {
|
||||||
return NXT_ERROR;
|
return NXT_ERROR;
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ nxt_listen_socket_create(nxt_task_t *task, nxt_listen_socket_t *ls,
|
|||||||
|
|
||||||
name = (nxt_file_name_t *) sa->u.sockaddr_un.sun_path;
|
name = (nxt_file_name_t *) sa->u.sockaddr_un.sun_path;
|
||||||
|
|
||||||
access = (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
|
access = (S_IRUSR | S_IWUSR);
|
||||||
|
|
||||||
if (nxt_file_set_access(name, access) != NXT_OK) {
|
if (nxt_file_set_access(name, access) != NXT_OK) {
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|||||||
@@ -528,6 +528,20 @@ nxt_runtime_exit(nxt_task_t *task, void *obj, void *data)
|
|||||||
if (rt->pid_file != NULL) {
|
if (rt->pid_file != NULL) {
|
||||||
nxt_file_delete(rt->pid_file);
|
nxt_file_delete(rt->pid_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (NXT_HAVE_UNIX_DOMAIN)
|
||||||
|
{
|
||||||
|
nxt_sockaddr_t *sa;
|
||||||
|
nxt_file_name_t *name;
|
||||||
|
|
||||||
|
sa = rt->controller_listen;
|
||||||
|
|
||||||
|
if (sa->u.sockaddr.sa_family == AF_UNIX) {
|
||||||
|
name = (nxt_file_name_t *) sa->u.sockaddr_un.sun_path;
|
||||||
|
(void) nxt_file_delete(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!engine->event.signal_support) {
|
if (!engine->event.signal_support) {
|
||||||
@@ -692,6 +706,8 @@ nxt_runtime_conf_init(nxt_task_t *task, nxt_runtime_t *rt)
|
|||||||
{
|
{
|
||||||
nxt_int_t ret;
|
nxt_int_t ret;
|
||||||
nxt_file_t *file;
|
nxt_file_t *file;
|
||||||
|
nxt_str_t control;
|
||||||
|
nxt_sockaddr_t *sa;
|
||||||
nxt_file_name_str_t file_name;
|
nxt_file_name_str_t file_name;
|
||||||
const nxt_event_interface_t *interface;
|
const nxt_event_interface_t *interface;
|
||||||
|
|
||||||
@@ -704,15 +720,12 @@ nxt_runtime_conf_init(nxt_task_t *task, nxt_runtime_t *rt)
|
|||||||
rt->pid = NXT_PID;
|
rt->pid = NXT_PID;
|
||||||
rt->log = NXT_LOG;
|
rt->log = NXT_LOG;
|
||||||
rt->modules = NXT_MODULES;
|
rt->modules = NXT_MODULES;
|
||||||
|
rt->control = NXT_CONTROL_SOCK;
|
||||||
|
|
||||||
if (nxt_runtime_conf_read_cmd(task, rt) != NXT_OK) {
|
if (nxt_runtime_conf_read_cmd(task, rt) != NXT_OK) {
|
||||||
return NXT_ERROR;
|
return NXT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nxt_runtime_controller_socket(task, rt) != NXT_OK) {
|
|
||||||
return NXT_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nxt_user_cred_get(task, &rt->user_cred, rt->group) != NXT_OK) {
|
if (nxt_user_cred_get(task, &rt->user_cred, rt->group) != NXT_OK) {
|
||||||
return NXT_ERROR;
|
return NXT_ERROR;
|
||||||
}
|
}
|
||||||
@@ -749,6 +762,20 @@ nxt_runtime_conf_init(nxt_task_t *task, nxt_runtime_t *rt)
|
|||||||
|
|
||||||
rt->modules = (char *) file_name.start;
|
rt->modules = (char *) file_name.start;
|
||||||
|
|
||||||
|
control.length = nxt_strlen(rt->control);
|
||||||
|
control.start = (u_char *) rt->control;
|
||||||
|
|
||||||
|
sa = nxt_runtime_sockaddr_parse(task, rt->mem_pool, &control);
|
||||||
|
if (nxt_slow_path(sa == NULL)) {
|
||||||
|
return NXT_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
rt->controller_listen = sa;
|
||||||
|
|
||||||
|
if (nxt_runtime_controller_socket(task, rt) != NXT_OK) {
|
||||||
|
return NXT_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
return NXT_OK;
|
return NXT_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -758,14 +785,14 @@ nxt_runtime_conf_read_cmd(nxt_task_t *task, nxt_runtime_t *rt)
|
|||||||
{
|
{
|
||||||
char *p, **argv;
|
char *p, **argv;
|
||||||
u_char *end;
|
u_char *end;
|
||||||
nxt_str_t addr;
|
|
||||||
nxt_sockaddr_t *sa;
|
|
||||||
u_char buf[1024];
|
u_char buf[1024];
|
||||||
|
|
||||||
static const char version[] =
|
static const char version[] =
|
||||||
"nginext version: " NXT_VERSION "\n"
|
"nginext version: " NXT_VERSION "\n"
|
||||||
"configured as ./configure" NXT_CONFIGURE_OPTIONS "\n";
|
"configured as ./configure" NXT_CONFIGURE_OPTIONS "\n";
|
||||||
|
|
||||||
|
static const char no_control[] =
|
||||||
|
"option \"--control\" requires socket address\n";
|
||||||
static const char no_user[] = "option \"--user\" requires username\n";
|
static const char no_user[] = "option \"--user\" requires username\n";
|
||||||
static const char no_group[] = "option \"--group\" requires group name\n";
|
static const char no_group[] = "option \"--group\" requires group name\n";
|
||||||
static const char no_pid[] = "option \"--pid\" requires filename\n";
|
static const char no_pid[] = "option \"--pid\" requires filename\n";
|
||||||
@@ -778,25 +805,15 @@ nxt_runtime_conf_read_cmd(nxt_task_t *task, nxt_runtime_t *rt)
|
|||||||
while (*argv != NULL) {
|
while (*argv != NULL) {
|
||||||
p = *argv++;
|
p = *argv++;
|
||||||
|
|
||||||
if (nxt_strcmp(p, "--listen") == 0) {
|
if (nxt_strcmp(p, "--control") == 0) {
|
||||||
if (*argv == NULL) {
|
if (*argv == NULL) {
|
||||||
nxt_log(task, NXT_LOG_CRIT,
|
write(STDERR_FILENO, no_control, sizeof(no_control) - 1);
|
||||||
"no argument for option \"--listen\"");
|
|
||||||
return NXT_ERROR;
|
return NXT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
p = *argv++;
|
p = *argv++;
|
||||||
|
|
||||||
addr.length = nxt_strlen(p);
|
rt->control = p;
|
||||||
addr.start = (u_char *) p;
|
|
||||||
|
|
||||||
sa = nxt_runtime_sockaddr_parse(task, rt->mem_pool, &addr);
|
|
||||||
|
|
||||||
if (sa == NULL) {
|
|
||||||
return NXT_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
rt->controller_listen = sa;
|
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ struct nxt_runtime_s {
|
|||||||
const char *pid;
|
const char *pid;
|
||||||
const char *log;
|
const char *log;
|
||||||
const char *modules;
|
const char *modules;
|
||||||
|
const char *control;
|
||||||
|
|
||||||
nxt_queue_t engines; /* of nxt_event_engine_t */
|
nxt_queue_t engines; /* of nxt_event_engine_t */
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user