File: global.c

package info (click to toggle)
ndtpd 2.3.6-3
  • links: PTS
  • area: main
  • in suites: potato
  • size: 5,688 kB
  • ctags: 3,377
  • sloc: ansic: 24,078; sh: 7,530; perl: 1,335; makefile: 646
file content (218 lines) | stat: -rw-r--r-- 3,830 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
/*
 * Copyright (c) 1997, 1999  Motoyuki Kasahara
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif

#ifdef HAVE_LIMITS_H
#include <limits.h>
#endif

#include <eb/eb.h>
#include <eb/text.h>

#include "hostname.h"
#include "ident.h"
#include "linebuf.h"
#include "permission.h"

#include "ndtpd.h"

/*
 * The maximum length of path name.
 */
#ifndef PATH_MAX
#ifdef MAXPATHLEN
#define PATH_MAX        MAXPATHLEN
#else /* not MAXPATHLEN */
#define PATH_MAX        1024
#endif /* not MAXPATHLEN */
#endif /* not PATH_MAX */

/*
 * Actual program name (argv[0]).
 */
const char *invoked_name;

/*
 * Generic name of the program.
 */
const char *program_name;

/*
 * Program version.
 */
const char *program_version;

/*
 * Path to a working directory.
 */
char work_path[PATH_MAX + 1];

/*
 * Configuration filename.
 */
char configuration_filename[PATH_MAX + 1];

/*
 * Server name with a domain name.
 */
char server_name[MAXLEN_HOSTNAME + 1];

/*
 * Port number the server listens to.
 */
int listening_port;
int old_listening_port;

/*
 * File descriptor for the server to listen to the port.
 */
int listening_file;

/*
 * File descriptor to communicate with a client.
 */
int accepted_file;

/*
 * User ID of the server process.
 */
uid_t user_id;

/*
 * Group ID of the server process.
 */
gid_t group_id;

/*
 * Filename to log the process ID of the server.
 */
char pid_filename[PATH_MAX + 1];
char old_pid_filename[PATH_MAX + 1];

/*
 * Lock filename and ticket stock to count connections to the server.
 */
char connection_lock_filename[PATH_MAX + 1];
Ticket_Stock connection_ticket_stock;

/*
 * The maximum number of connections to the server at once.
 */
int max_clients;

/*
 * The number of the current connections.
 */
int connection_count;

/*
 * Seconds the server closes an idle connection.
 */
int idle_timeout;

/*
 * Clients the server uses IDENT protocol for.
 */
Permission identifications;

/*
 * Seconds the server give up to identify a remote user by Identification
 * protocol.
 */
int identification_timeout;

/*
 * Host permission list.
 */
Permission permissions;

/*
 * Book registry.
 */
Book *book_registry;
Book *book_registry_tail;
int book_count;

/*
 * Current book.
 */
Book *current_book;

/*
 * The number of hit entries the server give up searching.
 */
int max_hits;

/*
 * The maximum size of text the server may send as a response to a client.
 */
size_t max_text_size;

/*
 * Hookset for processing text in CD-ROM books.
 */
EB_Hookset text_hookset;

/*
 * Hostname of the client.
 */
char client_hostname[MAXLEN_HOSTNAME + 1];

/*
 * Address of the client.
 */
char client_address[MAXLEN_HOSTNAME + 1];

/*
 * User name of the client.
 */
char client_user[MAXLEN_USER_ID + 1];

/*
 * Running mode of the server.
 * (SERVER_MODE_STANDALONE or SERVER_MODE_INETD)
 */
int server_mode;

/*
 * Syslog facility.
 */
int syslog_facility;

/*
 * Line buffer to comunicate with a client.
 */
Line_Buffer line_buffer;

/*
 * Canonical name of the `EIWA' alias.
 */
char alias_eiwa[MAXLEN_BOOK_NAME + 1 + EB_MAXLEN_BASENAME + 1];

/*
 * Canonical name of the `WAEI' alias.
 */
char alias_waei[MAXLEN_BOOK_NAME + 1 + EB_MAXLEN_BASENAME + 1];

/*
 * Canonical name of the `KOJIEN' alias.
 */
char alias_kojien[MAXLEN_BOOK_NAME + 1 + EB_MAXLEN_BASENAME + 1];