remove networking code.

sj3serv communicates only unix domain socket.
This commit is contained in:
iratqq 2008-02-01 04:37:40 +00:00
commit 5f05301928
5 changed files with 4 additions and 201 deletions

View file

@ -14,8 +14,7 @@ INCLUDES = \
LDADD = \
$(top_srcdir)/lib/sj3core/libsj3core.la \
$(top_srcdir)/lib/sj3compat/libsj3compat.la \
@WRAP_LIB@
$(top_srcdir)/lib/sj3compat/libsj3compat.la
if SJ3_INTERNAL_LUA
AM_CFLAGS += -I$(top_builddir)/lib/lua/src

View file

@ -79,8 +79,6 @@ jmp_buf client_dead;
int client_fd;
static int fd_unix = -1;
static int fd_inets[MAX_LISTEN_SOCKS];
static int num_inets = 0;
static char putbuf[BUFSIZ];
static char getbuf[BUFSIZ];
@ -161,100 +159,10 @@ open_af_unix()
set_fd(fd_unix);
}
void
open_af_inet()
{
struct addrinfo hints;
struct addrinfo *res, *res0;
int error;
int true = 1;
/*
* getaddrinfo() case. You can get IPv6 address and IPv4 address
* at the same time.
*/
memset(&hints, 0, sizeof(hints));
/* set-up hints structure */
hints.ai_family = address_family;
hints.ai_flags = AI_PASSIVE;
hints.ai_socktype = SOCK_STREAM;
error = getaddrinfo(inet_host_name, inet_port_name, &hints, &res);
if (error) {
fprintf(stderr, gai_strerror(error));
exit(1);
}
res0 = res;
for ( ; res; res = res->ai_next) {
struct sockaddr *sa = res->ai_addr;
u_int8_t salen = res->ai_addrlen;
char ntop[NI_MAXHOST], strport[NI_MAXSERV];
int listen_sock;
if (res->ai_family != AF_INET && res->ai_family != AF_INET6)
continue;
if (num_inets >= MAX_LISTEN_SOCKS) {
fprintf(stderr,
"Too many listen sockets. "
"Enlarge MAX_LISTEN_SOCKS\n");
exit(1);
}
if (getnameinfo(sa, salen,
ntop, sizeof(ntop), strport, sizeof(strport),
NI_NUMERICHOST | NI_NUMERICSERV) != 0) {
fprintf(stderr, "getnameinfo failed\n");
continue;
}
listen_sock = socket(res->ai_family, res->ai_socktype,
res->ai_protocol);
if (listen_sock < 0) {
fprintf(stderr, "socket: %.100s\n", strerror(errno));
exit(1);
}
if (setsockopt(listen_sock, SOL_SOCKET, SO_REUSEADDR,
&true, sizeof(true)) == -1)
fprintf(stderr, "setsockopt SO_REUSEADDR: %s\n", strerror(errno));
if (bind(listen_sock, sa, salen) < 0) {
fprintf(stderr, "Bind to port %s on %s failed: %.200s.\n",
strport, ntop, strerror(errno));
close(listen_sock);
continue;
}
if (listen(listen_sock, SOMAXCONN) < 0) {
fprintf(stderr, "listen: %.100s\n", strerror(errno));
close(listen_sock);
exit(1);
}
set_fd(listen_sock);
fd_inets[num_inets] = listen_sock;
num_inets++;
}
freeaddrinfo(res0);
if (num_inets < 0) {
fprintf(stderr, "Cannot bind any address.");
exit(1);
}
}
void
open_socket()
{
if (inet_enable)
open_af_inet();
if (domain_enable)
open_af_unix();
open_af_unix();
}
static int
@ -269,34 +177,6 @@ connect_af_unix()
return fd;
}
static int
connect_af_inet(int fd_inet)
{
struct sockaddr_in sin;
int i = sizeof(sin);
int fd = 0;
if ((fd = accept(fd_inet, (struct sockaddr *)&sin, &i)) == ERROR)
warning_out("Can't accept AF_INET socket");
#ifdef USE_LIBWRAP
{
struct request_info req;
request_init(&req, RQ_DAEMON, "sj3", RQ_FILE, fd_inets[i], NULL);
fromhost(&req);
if (!hosts_access(&req)) {
warning_out("connection refused from %s",
eval_client(&req));
close(fd);
fd = -1;
}
}
#endif
return fd;
}
static void
close_af_unix()
{
@ -316,33 +196,10 @@ close_af_unix()
clr_fd(fd_unix);
}
static void
close_af_inet()
{
struct sockaddr_in sin;
int true = 1;
int i, j;
for (j = 0; j < num_inets; j++) {
ioctl(fd_inets[j], FIONBIO, &true);
for ( ; ; ) {
i = sizeof(sin);
if (accept(fd_inets[j], (struct sockaddr *)&sin, &i) < 0)
break;
}
shutdown(fd_inets[j], 2);
close(fd_inets[j]);
clr_fd(fd_inets[j]);
}
}
void
close_socket()
{
if (inet_enable)
close_af_unix();
if (domain_enable)
close_af_inet();
close_af_unix();
}
static void
@ -352,12 +209,6 @@ connect_client(fd_set *readfds)
Client *client_tmp;
int i;
for (i = 0; i < num_inets; i++) {
if (FD_ISSET(fd_inets[i], readfds)) {
fd = connect_af_inet(fd_inets[i]);
break;
}
}
if (fd < 0 && FD_ISSET(fd_unix, readfds))
fd = connect_af_unix();
if (fd == ERROR)

View file

@ -74,7 +74,6 @@ int address_family = AF_UNSPEC;
char inet_host_name[MAXHOSTNAMELEN];
char inet_port_name[256];
int domain_enable = -1;
char domain_socket_name[MAXPATHLEN];
char dict_dir[MAXPATHLEN];
@ -113,8 +112,6 @@ struct allow_user_entry {
} *allow_user;
static int opt_daemon_disable = 0;
static int opt_ipv4 = 0;
static int opt_ipv6 = 0;
static lua_State *lua_state;
static int
@ -265,7 +262,6 @@ set_domain(lua_State *lstate)
{
if (!check_table(lstate))
return 0;
lua2sj_boolean(lstate, "enable", 1, 0, &domain_enable);
lua2sj_string(lstate, "socket_name", 1, SOCKETNAME, domain_socket_name, sizeof(domain_socket_name));
return 0;
@ -274,7 +270,6 @@ set_domain(lua_State *lstate)
static int
get_domain(lua_State *lstate)
{
sj2lua_boolean(lstate, "enable", domain_enable);
sj2lua_string(lstate, "socket_name", domain_socket_name);
return 1;
@ -421,15 +416,6 @@ read_runcmd()
else
daemon_enable = 1;
if (opt_ipv4)
address_family = AF_INET;
else if (opt_ipv6)
address_family = AF_INET6;
else if (strcmp(inet_address_family, "inet") == 0)
address_family = AF_INET;
else if (strcmp(inet_address_family, "inet6") == 0)
address_family = AF_INET6;
#if 0 /* DON'T LEAVE */
lua_close(lua_state);
lua_state = NULL;
@ -490,14 +476,8 @@ parse_arg(int argc, char **argv)
strlcpy(program_name, p, sizeof(program_name));
strlcpy(runcmd_file, RUNCMDFILE, sizeof(runcmd_file));
while ((c = getopt(argc, argv, "46f:d")) != EOF) {
while ((c = getopt(argc, argv, "f:d")) != EOF) {
switch (c) {
case '4':
opt_ipv4 = 1;
break;
case '6':
opt_ipv6 = 1;
break;
case 'f':
ret = strlcpy(runcmd_file, optarg, sizeof(runcmd_file));
if (ret > sizeof(runcmd_file))

View file

@ -118,12 +118,7 @@ extern char pid_file[MAXPATHLEN];
extern char chuser_name[BUFSIZ];
extern int chroot_enable;
extern char chroot_dir[MAXPATHLEN];
extern int inet_enable;
extern char inet_address_family[256];
extern int address_family;
extern char inet_host_name[MAXHOSTNAMELEN];
extern char inet_port_name[256];
extern int domain_enable;
extern char domain_socket_name[MAXPATHLEN];
extern char dict_dir[MAXPATHLEN];
extern char dict_file[FILENAME_MAX];

View file

@ -43,29 +43,7 @@ sj3.set_server {
dict_dir = "/spool/sj3",
}
sj3.set_inet {
-- enable: Boolean
-- allow acccess via internet connection
enable = false,
-- family: String "unspec" or "inet4" or "inet6"
-- address family
address_family = "unspec",
-- host_name: String
-- listening address
host_name = "localhost",
-- port_name: String
-- binding port name, man services
port_name = "3086",
}
sj3.set_domain {
-- enable: Boolean
-- allow acccess via unix domain socket
enable = true,
-- socket_name: String
-- binding filename of unix domain socket
socket_name = prefix .. "/run/sj3serv.socket",