gateway: simplify stopping the cleanup timer
[olsrd.git] / lib / tas / test.c
1
2 /*
3  * The olsr.org Optimized Link-State Routing daemon (olsrd)
4  *
5  * Copyright (c) 2004, Thomas Lopatic (thomas@olsr.org)
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * * Redistributions of source code must retain the above copyright
13  *   notice, this list of conditions and the following disclaimer.
14  * * Redistributions in binary form must reproduce the above copyright
15  *   notice, this list of conditions and the following disclaimer in
16  *   the documentation and/or other materials provided with the
17  *   distribution.
18  * * Neither the name of olsr.org, olsrd nor the names of its
19  *   contributors may be used to endorse or promote products derived
20  *   from this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33  * POSSIBILITY OF SUCH DAMAGE.
34  *
35  * Visit http://www.olsr.org for more information.
36  *
37  * If you find this software useful feel free to make a donation
38  * to the project. For more information see the website or contact
39  * the copyright holders.
40  *
41  */
42
43 #include "src/link.h"
44 #include "src/plugin.h"
45 #include "src/lib.h"
46 #include "src/os_unix.h"
47 #include "src/http.h"
48 #include "src/glua.h"
49 #include "src/glua_ext.h"
50
51 #include <stdio.h>
52 #include <unistd.h>
53 #include <signal.h>
54 #include <stdlib.h>
55 #include <string.h>
56
57 static void sigHand(int sig) __attribute__ ((noreturn));
58 static void
59 sigHand(int sig __attribute__ ((unused)))
60 {
61   httpShutdown();
62   exit(0);
63 }
64
65 static void
66 usage(void)
67 {
68   fprintf(stderr, "usage: tas [--address ip-address] [--port port-number]\n");
69   fprintf(stderr, "           [--work-dir work-directory] [--root-dir root-directory]\n");
70   fprintf(stderr, "           [--password password] [--user user] [--sess-time session-timeout]\n");
71   fprintf(stderr, "           [--index-file index-file] [--pub-dir public-directory]\n");
72   fprintf(stderr, "           [--quantum quantum] [--mess-time message-timeout]\n");
73   fprintf(stderr, "           [--mess-limit message-queue-limit]\n");
74 }
75
76 int
77 main(int ac, char *av[])
78 {
79   int i;
80
81   httpInit();
82
83   for (i = 1; i < ac; i++) {
84     if (strcmp(av[i], "--address") == 0) {
85       if (++i == ac) {
86         fprintf(stderr, "missing address parameter\n");
87         usage();
88         return 1;
89       }
90
91       if (httpSetAddress(av[i], NULL, (set_plugin_parameter_addon) {
92                          0}
93           ) < 0) {
94         fprintf(stderr, "cannot set address\n");
95         return 1;
96       }
97     }
98
99     else if (strcmp(av[i], "--port") == 0) {
100       if (++i == ac) {
101         fprintf(stderr, "missing port parameter\n");
102         usage();
103         return 1;
104       }
105
106       if (httpSetPort(av[i], NULL, (set_plugin_parameter_addon) {
107                       0}
108           ) < 0) {
109         fprintf(stderr, "cannot set port\n");
110         return 1;
111       }
112     }
113
114     else if (strcmp(av[i], "--work-dir") == 0) {
115       if (++i == ac) {
116         fprintf(stderr, "missing work directory parameter\n");
117         usage();
118         return 1;
119       }
120
121       if (httpSetWorkDir(av[i], NULL, (set_plugin_parameter_addon) {
122                          0}
123           ) < 0) {
124         fprintf(stderr, "cannot set work directory\n");
125         return 1;
126       }
127     }
128
129     else if (strcmp(av[i], "--root-dir") == 0) {
130       if (++i == ac) {
131         fprintf(stderr, "missing root directory parameter\n");
132         usage();
133         return 1;
134       }
135
136       if (httpSetRootDir(av[i], NULL, (set_plugin_parameter_addon) {
137                          0}
138           ) < 0) {
139         fprintf(stderr, "cannot set root directory\n");
140         return 1;
141       }
142     }
143
144     else if (strcmp(av[i], "--index-file") == 0) {
145       if (++i == ac) {
146         fprintf(stderr, "missing index file parameter\n");
147         usage();
148         return 1;
149       }
150
151       httpSetIndexFile(av[i], NULL, (set_plugin_parameter_addon) {
152                        0}
153       );
154     }
155
156     else if (strcmp(av[i], "--user") == 0) {
157       if (++i == ac) {
158         fprintf(stderr, "missing user parameter\n");
159         usage();
160         return 1;
161       }
162
163       httpSetUser(av[i], NULL, (set_plugin_parameter_addon) {
164                   0}
165       );
166     }
167
168     else if (strcmp(av[i], "--password") == 0) {
169       if (++i == ac) {
170         fprintf(stderr, "missing password parameter\n");
171         usage();
172         return 1;
173       }
174
175       httpSetPassword(av[i], NULL, (set_plugin_parameter_addon) {
176                       0}
177       );
178     }
179
180     else if (strcmp(av[i], "--sess-time") == 0) {
181       if (++i == ac) {
182         fprintf(stderr, "missing timeout parameter\n");
183         usage();
184         return 1;
185       }
186
187       if (httpSetSessTime(av[i], NULL, (set_plugin_parameter_addon) {
188                           0}
189           ) < 0) {
190         fprintf(stderr, "cannot set session timeout\n");
191         return 1;
192       }
193     }
194
195     else if (strcmp(av[i], "--pub-dir") == 0) {
196       if (++i == ac) {
197         fprintf(stderr, "missing public directory parameter\n");
198         usage();
199         return 1;
200       }
201
202       httpSetPubDir(av[i], NULL, (set_plugin_parameter_addon) {
203                     0}
204       );
205     }
206
207     else if (strcmp(av[i], "--quantum") == 0) {
208       if (++i == ac) {
209         fprintf(stderr, "missing quantum parameter\n");
210         usage();
211         return 1;
212       }
213
214       if (httpSetQuantum(av[i], NULL, (set_plugin_parameter_addon) {
215                          0}
216           ) < 0) {
217         fprintf(stderr, "cannot set quantum\n");
218         return 1;
219       }
220     }
221
222     else if (strcmp(av[i], "--mess-time") == 0) {
223       if (++i == ac) {
224         fprintf(stderr, "missing timeout parameter\n");
225         usage();
226         return 1;
227       }
228
229       if (httpSetMessTime(av[i], NULL, (set_plugin_parameter_addon) {
230                           0}
231           ) < 0) {
232         fprintf(stderr, "cannot set message timeout\n");
233         return 1;
234       }
235     }
236
237     else if (strcmp(av[i], "--mess-limit") == 0) {
238       if (++i == ac) {
239         fprintf(stderr, "missing limit parameter\n");
240         usage();
241         return 1;
242       }
243
244       if (httpSetMessLimit(av[i], NULL, (set_plugin_parameter_addon) {
245                            0}
246           ) < 0) {
247         fprintf(stderr, "cannot set message queue limit\n");
248         return 1;
249       }
250     }
251
252     else {
253       fprintf(stderr, "invalid argument: %s\n", av[i]);
254       usage();
255       return 1;
256     }
257   }
258
259   signal(SIGINT, sigHand);
260   signal(SIGTERM, sigHand);
261
262   if (httpSetup() < 0) {
263     fprintf(stderr, "cannot set up HTTP server\n");
264     return 1;
265   }
266
267   while (1) {
268     if (httpService(10) < 0) {
269       fprintf(stderr, "cannot run HTTP server\n");
270       return 1;
271     }
272
273     usleep(100000);
274   }
275
276   return 0;
277 }
278
279 /*
280  * Local Variables:
281  * c-basic-offset: 2
282  * indent-tabs-mode: nil
283  * End:
284  */