1 | /*
|
---|
2 | * Copyright (c) 1995-2000, Index Data.
|
---|
3 | *
|
---|
4 | * Permission to use, copy, modify, distribute, and sell this software and
|
---|
5 | * its documentation, in whole or in part, for any purpose, is hereby granted,
|
---|
6 | * provided that:
|
---|
7 | *
|
---|
8 | * 1. This copyright and permission notice appear in all copies of the
|
---|
9 | * software and its documentation. Notices of copyright or attribution
|
---|
10 | * which appear at the beginning of any file must remain unchanged.
|
---|
11 | *
|
---|
12 | * 2. The name of Index Data or the individual authors may not be used to
|
---|
13 | * endorse or promote products derived from this software without specific
|
---|
14 | * prior written permission.
|
---|
15 | *
|
---|
16 | * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND,
|
---|
17 | * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
|
---|
18 | * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
---|
19 | * IN NO EVENT SHALL INDEX DATA BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
|
---|
20 | * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES
|
---|
21 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR
|
---|
22 | * NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
|
---|
23 | * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
|
---|
24 | * OF THIS SOFTWARE.
|
---|
25 | *
|
---|
26 | * $Log$
|
---|
27 | * Revision 1.1 2000/08/03 03:10:50 johnmcp
|
---|
28 | * Added the YAZ toolkit source to the packages directory (for z39.50 stuff)
|
---|
29 | *
|
---|
30 | * Revision 1.2 2000/02/28 11:20:06 adam
|
---|
31 | * Using autoconf. New definitions: YAZ_BEGIN_CDECL/YAZ_END_CDECL.
|
---|
32 | *
|
---|
33 | * Revision 1.1 1999/11/30 13:47:11 adam
|
---|
34 | * Improved installation. Moved header files to include/yaz.
|
---|
35 | *
|
---|
36 | * Revision 1.17 1999/07/06 12:17:15 adam
|
---|
37 | * Added option -1 that runs server once (for profiling purposes).
|
---|
38 | *
|
---|
39 | * Revision 1.16 1999/06/10 11:45:30 adam
|
---|
40 | * Added bend_start, bend_stop handlers and removed pre_init.
|
---|
41 | * Handlers bend_start/bend_stop are called when service/daemon is
|
---|
42 | * started/stopped.
|
---|
43 | *
|
---|
44 | * Revision 1.15 1999/04/16 14:45:55 adam
|
---|
45 | * Added interface for tcpd wrapper for access control.
|
---|
46 | *
|
---|
47 | * Revision 1.14 1999/02/02 13:57:32 adam
|
---|
48 | * Uses preprocessor define WIN32 instead of WINDOWS to build code
|
---|
49 | * for Microsoft WIN32.
|
---|
50 | *
|
---|
51 | * Revision 1.13 1998/02/10 10:28:56 adam
|
---|
52 | * Added app_name, service_dependencies, service_display_name and
|
---|
53 | * options_func. options_func allows us to specify a different function
|
---|
54 | * to interogate the command line arguments. The other members allow us
|
---|
55 | * to pass the full service details accross to the service manager (CW).
|
---|
56 | *
|
---|
57 | * Revision 1.??? 1997/12/18 Chas
|
---|
58 | * Added app_name, service_dependencies, service_display_name and
|
---|
59 | * options_func. options_func allows us to specify a different function
|
---|
60 | * to interogate the command line arguments. The other members allow us
|
---|
61 | * to pass the full service details accross to the service manager.
|
---|
62 | *
|
---|
63 | * Revision 1.12 1997/11/07 13:31:47 adam
|
---|
64 | * Added NT Service name part of statserv_options_block. Moved NT
|
---|
65 | * service utility to server library.
|
---|
66 | *
|
---|
67 | * Revision 1.11 1997/10/27 14:03:01 adam
|
---|
68 | * Added new member to statserver_options_block, pre_init, which
|
---|
69 | * specifies a callback to be invoked after command line parsing and
|
---|
70 | * before the server listens for the first time.
|
---|
71 | *
|
---|
72 | * Revision 1.10 1997/09/01 09:31:26 adam
|
---|
73 | * Removed definition statserv_remove to eventl.h. (A hack really).
|
---|
74 | *
|
---|
75 | * Revision 1.9 1997/09/01 08:49:53 adam
|
---|
76 | * New windows NT/95 port using MSV5.0. To export DLL functions the
|
---|
77 | * YAZ_EXPORT modifier was added. Defined in yconfig.h.
|
---|
78 | *
|
---|
79 | * Revision 1.8 1997/05/14 06:53:51 adam
|
---|
80 | * C++ support.
|
---|
81 | *
|
---|
82 | * Revision 1.7 1995/09/29 17:12:12 quinn
|
---|
83 | * Smallish
|
---|
84 | *
|
---|
85 | * Revision 1.6 1995/09/27 15:02:53 quinn
|
---|
86 | * Modified function heads & prototypes.
|
---|
87 | *
|
---|
88 | * Revision 1.5 1995/06/19 12:38:31 quinn
|
---|
89 | * Reorganized include-files. Added small features.
|
---|
90 | *
|
---|
91 | * Revision 1.4 1995/06/15 07:45:08 quinn
|
---|
92 | * Moving to v3.
|
---|
93 | *
|
---|
94 | * Revision 1.3 1995/05/16 08:50:38 quinn
|
---|
95 | * License, documentation, and memory fixes
|
---|
96 | *
|
---|
97 | *
|
---|
98 | */
|
---|
99 |
|
---|
100 | #ifndef STATSERVER_H
|
---|
101 | #define STATSERVER_H
|
---|
102 |
|
---|
103 | #include <yaz/yconfig.h>
|
---|
104 | #include <yaz/odr.h>
|
---|
105 | #include <yaz/oid.h>
|
---|
106 |
|
---|
107 | YAZ_BEGIN_CDECL
|
---|
108 |
|
---|
109 | typedef struct statserv_options_block
|
---|
110 | {
|
---|
111 | int dynamic; /* fork on incoming requests */
|
---|
112 | int one_shot; /* one session then exit(1) */
|
---|
113 | int loglevel; /* desired logging-level */
|
---|
114 | char apdufile[ODR_MAXNAME+1]; /* file for pretty-printed PDUs */
|
---|
115 | char logfile[ODR_MAXNAME+1]; /* file for diagnostic output */
|
---|
116 | char default_listen[1024]; /* 0 == no default listen */
|
---|
117 | enum oid_proto default_proto; /* PROTO_SR or PROTO_Z3950 */
|
---|
118 | int idle_timeout; /* how many minutes to wait before closing */
|
---|
119 | int maxrecordsize; /* maximum value for negotiation */
|
---|
120 | char configname[ODR_MAXNAME+1]; /* given to the backend in bend_init */
|
---|
121 | char setuid[ODR_MAXNAME+1]; /* setuid to this user after binding */
|
---|
122 | void (*bend_start)(struct statserv_options_block *p);
|
---|
123 | void (*bend_stop)(struct statserv_options_block *p);
|
---|
124 | int (*options_func)(int argc, char **argv);
|
---|
125 | int (*check_ip)(void *cd, const char *addr, int len, int type);
|
---|
126 | char daemon_name[128];
|
---|
127 | int inetd; /* Do we use the inet deamon or not */
|
---|
128 |
|
---|
129 | #ifdef WIN32
|
---|
130 | /* We only have these members for the windows version */
|
---|
131 | /* They seemed a bit large to have them there in general */
|
---|
132 | char service_name[128]; /* NT Service Name */
|
---|
133 | char app_name[128]; /* Application Name */
|
---|
134 | char service_dependencies[128]; /* The services we are dependent on */
|
---|
135 | char service_display_name[128]; /* The service display name */
|
---|
136 | #endif /* WIN32 */
|
---|
137 | } statserv_options_block;
|
---|
138 |
|
---|
139 | int statserv_main(int argc, char **argv);
|
---|
140 | int statserv_start(int argc, char **argv);
|
---|
141 | void statserv_closedown(void);
|
---|
142 | statserv_options_block *statserv_getcontrol(void);
|
---|
143 | void statserv_setcontrol(statserv_options_block *block);
|
---|
144 |
|
---|
145 | int check_ip_tcpd(void *cd, const char *addr, int len, int type);
|
---|
146 |
|
---|
147 | YAZ_END_CDECL
|
---|
148 |
|
---|
149 | #endif
|
---|