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
|
--- config.c.orig Sat Jun 16 20:37:40 2007
+++ config.c Sat Jun 16 20:39:05 2007
@@ -43,6 +43,12 @@
return 0;
}
+size_t strnlen(const char *s, size_t maxlen)
+{
+ int len = strlen(s);
+ return (len < maxlen) ? len : maxlen;
+}
+
int parseConfigFile(globals_p vars)
{
FILE *conf_file;
@@ -50,11 +56,8 @@
regex_t re_comment;
regex_t re_empty_row;
- regex_t re_iptables_location;
+ regex_t re_ipnat_location;
regex_t re_debug_mode;
- regex_t re_insert_forward_rules_yes;
- regex_t re_forward_chain_name;
- regex_t re_prerouting_chain_name;
regex_t re_upstream_bitrate;
regex_t re_downstream_bitrate;
regex_t re_duration;
@@ -63,10 +66,7 @@
// Make sure all vars are 0 or \0 terminated
vars->debug = 0;
- vars->forwardRules = 0;
- strcpy(vars->iptables,"");
- strcpy(vars->forwardChainName,"");
- strcpy(vars->preroutingChainName,"");
+ strcpy(vars->ipnat,"");
strcpy(vars->upstreamBitrate,"");
strcpy(vars->downstreamBitrate,"");
vars->duration = DEFAULT_DURATION;
@@ -78,14 +78,11 @@
regcomp(&re_empty_row,"^[[:blank:]]*\r?\n$",REG_EXTENDED);
// Regexps to match configuration file settings
- regcomp(&re_iptables_location,"iptables_location[[:blank:]]*=[[:blank:]]*\"([^\"]+)\"",REG_EXTENDED);
+ regcomp(&re_ipnat_location,"ipnat_location[[:blank:]]*=[[:blank:]]*\"([^\"]+)\"",REG_EXTENDED);
regcomp(&re_debug_mode,"debug_mode[[:blank:]]*=[[:blank:]]*([[:digit:]])",REG_EXTENDED);
- regcomp(&re_insert_forward_rules_yes,"insert_forward_rules[[:blank:]]*=[[:blank:]]*yes",REG_ICASE);
- regcomp(&re_forward_chain_name,"forward_chain_name[[:blank:]]*=[[:blank:]]*([[:alpha:]_-]+)",REG_EXTENDED);
- regcomp(&re_prerouting_chain_name,"prerouting_chain_name[[:blank:]]*=[[:blank:]]([[:alpha:]_-]+)",REG_EXTENDED);
regcomp(&re_upstream_bitrate,"upstream_bitrate[[:blank:]]*=[[:blank:]]*([[:digit:]]+)",REG_EXTENDED);
regcomp(&re_downstream_bitrate,"downstream_bitrate[[:blank:]]*=[[:blank:]]*([[:digit:]]+)",REG_EXTENDED);
- regcomp(&re_duration,"duration[[:blank:]]*=[[:blank:]]*(@?)([[:digit:]]+|[[:digit:]]+{2}:[[:digit:]]+{2})",REG_EXTENDED);
+ regcomp(&re_duration,"duration[[:blank:]]*=[[:blank:]]*(@?)([[:digit:]]+|[[:digit:]]{2}:[[:digit:]]{2})",REG_EXTENDED);
regcomp(&re_desc_doc,"description_document_name[[:blank:]]*=[[:blank:]]*([[:alpha:].]{1,20})",REG_EXTENDED);
regcomp(&re_xml_path,"xml_document_path[[:blank:]]*=[[:blank:]]*([[:alpha:]_/.]{1,50})",REG_EXTENDED);
@@ -99,21 +96,10 @@
if ( (0 != regexec(&re_comment,line,0,NULL,0) ) &&
(0 != regexec(&re_empty_row,line,0,NULL,0)) )
{
- // Chec if iptables_location
- if (regexec(&re_iptables_location,line,NMATCH,submatch,0) == 0)
- {
- getConfigOptionArgument(vars->iptables, PATH_LEN, line, submatch);
- }
-
- // Check is insert_forward_rules
- else if (regexec(&re_insert_forward_rules_yes,line,0,NULL,0) == 0)
- {
- vars->forwardRules = 1;
- }
- // Check forward_chain_name
- else if (regexec(&re_forward_chain_name,line,NMATCH,submatch,0) == 0)
+ // Chec if ipnat_location
+ if (regexec(&re_ipnat_location,line,NMATCH,submatch,0) == 0)
{
- getConfigOptionArgument(vars->forwardChainName, CHAIN_NAME_LEN, line, submatch);
+ getConfigOptionArgument(vars->ipnat, PATH_LEN, line, submatch);
}
else if (regexec(&re_debug_mode,line,NMATCH,submatch,0) == 0)
{
@@ -121,10 +107,6 @@
getConfigOptionArgument(tmp,sizeof(tmp),line,submatch);
vars->debug = atoi(tmp);
}
- else if (regexec(&re_prerouting_chain_name,line,NMATCH,submatch,0) == 0)
- {
- getConfigOptionArgument(vars->preroutingChainName, CHAIN_NAME_LEN, line, submatch);
- }
else if (regexec(&re_upstream_bitrate,line,NMATCH,submatch,0) == 0)
{
getConfigOptionArgument(vars->upstreamBitrate, BITRATE_LEN, line, submatch);
@@ -156,27 +138,13 @@
}
regfree(&re_comment);
regfree(&re_empty_row);
- regfree(&re_iptables_location);
+ regfree(&re_ipnat_location);
regfree(&re_debug_mode);
- regfree(&re_insert_forward_rules_yes);
- regfree(&re_forward_chain_name);
- regfree(&re_prerouting_chain_name);
regfree(&re_upstream_bitrate);
regfree(&re_downstream_bitrate);
regfree(&re_duration);
regfree(&re_desc_doc);
regfree(&re_xml_path);
- // Set default values for options not found in config file
- if (strnlen(vars->forwardChainName, CHAIN_NAME_LEN) == 0)
- {
- // No forward chain name was set in conf file, set it to default
- snprintf(vars->forwardChainName, CHAIN_NAME_LEN, IPTABLES_DEFAULT_FORWARD_CHAIN);
- }
- if (strnlen(vars->preroutingChainName, CHAIN_NAME_LEN) == 0)
- {
- // No prerouting chain name was set in conf file, set it to default
- snprintf(vars->preroutingChainName, CHAIN_NAME_LEN, IPTABLES_DEFAULT_PREROUTING_CHAIN);
- }
if (strnlen(vars->upstreamBitrate, BITRATE_LEN) == 0)
{
// No upstream_bitrate was found in the conf file, set it to default
@@ -195,8 +163,8 @@
{
snprintf(vars->xmlPath, PATH_LEN, XML_PATH_DEFAULT);
}
- if (strnlen(vars->iptables, PATH_LEN) == 0) {
- // Can't find the iptables executable, return -1 to
+ if (strnlen(vars->ipnat, PATH_LEN) == 0) {
+ // Can't find the ipnat executable, return -1 to
// indicate en error
return -1;
}
|