/[svn]/hopm/trunk/src/config.c
ViewVC logotype

Contents of /hopm/trunk/src/config.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 9517 - (show annotations)
Sat Jul 11 20:28:46 2020 UTC (3 weeks, 4 days ago) by michael
File MIME type: text/x-chdr
File size: 3161 byte(s)
- Allow IRCItem.oper and IRCItem.mode to be empty

1 /*
2 * Copyright (c) 2002 Erik Fears
3 * Copyright (c) 2014-2020 ircd-hybrid development team
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
18 * USA
19 */
20
21 #include "setup.h"
22
23 #include <stdio.h>
24 #include <errno.h>
25 #include <string.h>
26 #include <stdlib.h>
27
28 #include "config.h"
29 #include "config-parser.h"
30 #include "compat.h"
31 #include "memory.h"
32 #include "log.h"
33 #include "scan.h"
34 #include "irc.h"
35 #include "opercmd.h"
36 #include "stats.h"
37 #include "firedns.h"
38 #include "misc.h"
39
40
41 FILE *conf_file;
42 struct OptionsConf OptionsItem;
43 struct IRCConf IRCItem;
44 struct OpmConf OpmItem;
45 struct ExemptConf ExemptItem;
46 list_t UserItemList;
47 list_t ScannerItemList;
48
49
50 /* Setup structs that hold configuration data and then reset default values */
51 static void
52 config_setup(void)
53 {
54 /* Setup irc {} block defaults */
55 IRCItem.nick = xstrdup("hopm");
56 IRCItem.port = 6667;
57 IRCItem.tls = 0;
58 IRCItem.tls_hostname_verification = 1;
59 IRCItem.readtimeout = 900;
60 IRCItem.reconnectinterval = 30;
61 IRCItem.username = xstrdup("hopm");
62 IRCItem.realname = xstrdup("Hybrid Open Proxy Monitor");
63 IRCItem.server = xstrdup("irc.example.org");
64 IRCItem.connregex = xstrdup("\\*\\*\\* Notice -- Client connecting: ([^ ]+) \\(([^@]+)@([^\\)]+)\\) \\[([0-9a-f\\.:]+)\\].*");
65 IRCItem.kline = xstrdup("KLINE %u@%h :Open Proxy found on your host.");
66
67 /* Setup options {} block defaults */
68 OptionsItem.command_queue_size = 64;
69 OptionsItem.command_interval = 10;
70 OptionsItem.command_timeout = 180;
71 OptionsItem.negcache = 0; /* 0 disabled negcache */
72 OptionsItem.negcache_rebuild = 43200;
73 OptionsItem.pidfile = xstrdup("hopm.pid");
74 OptionsItem.dns_fdlimit = 50;
75 OptionsItem.dns_timeout = 5;
76 }
77
78 /* Load configuration from filename, via flex/bison parser */
79 void
80 config_load(const char *filename)
81 {
82 config_setup(); /* Setup/clear current configuration */
83
84 log_printf("CONFIG -> Loading %s", filename);
85
86 strlcpy(conffilebuf, filename, sizeof(conffilebuf));
87
88 conf_file = fopen(filename, "r");
89 if (conf_file == NULL)
90 {
91 log_printf("CONFIG -> Error opening %s: %s", filename, strerror(errno));
92 exit(EXIT_FAILURE);
93 }
94
95 yyparse();
96 fclose(conf_file);
97
98 scan_init(); /* Initialize the scanners once we have the configuration */
99 stats_init(); /* Initialize stats (UPTIME) */
100 firedns_init(); /* Initialize adns */
101 }
102
103 void
104 yyerror(const char *str)
105 {
106 log_printf("CONFIG -> \"%s\", line %u: %s: %s", conffilebuf, lineno, str, stripws(linebuf));
107 exit(EXIT_FAILURE);
108 }

Properties

Name Value
svn:eol-style native
svn:keywords Id

svnadmin@ircd-hybrid.org
ViewVC Help
Powered by ViewVC 1.1.28