Project

General

Profile

Download (9.98 KB) Statistics
| Branch: | Tag: | Revision:
1
<?php
2
/*
3
 * globals.inc
4
 *
5
 * part of pfSense (https://www.pfsense.org)
6
 * Copyright (c) 2004-2013 BSD Perimeter
7
 * Copyright (c) 2013-2016 Electric Sheep Fencing
8
 * Copyright (c) 2014-2019 Rubicon Communications, LLC (Netgate)
9
 * All rights reserved.
10
 *
11
 * Licensed under the Apache License, Version 2.0 (the "License");
12
 * you may not use this file except in compliance with the License.
13
 * You may obtain a copy of the License at
14
 *
15
 * http://www.apache.org/licenses/LICENSE-2.0
16
 *
17
 * Unless required by applicable law or agreed to in writing, software
18
 * distributed under the License is distributed on an "AS IS" BASIS,
19
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
 * See the License for the specific language governing permissions and
21
 * limitations under the License.
22
 */
23

    
24
// Global defines
25

    
26
// Automatic panel collapse
27
define('COLLAPSIBLE', 0x08);
28
define('SEC_CLOSED', 0x04);
29
define('SEC_OPEN', 0x00);
30

    
31
// IP address types
32
define("IPV4", 4);
33
define("IPV6", 6);
34
define("IPV4V6", 2);
35
define("ALIAS", 1);
36

    
37
// Interface Name Size
38
define("IF_NAMESIZE", 15);	/* 16 minus the terminating NULL */
39

    
40
// AddPassword method defines
41
define('DMYPWD', "********");
42

    
43
global $g;
44
$g = array(
45
	"event_address" => "unix:///var/run/check_reload_status",
46
	"factory_shipped_username" => "admin",
47
	"factory_shipped_password" => "pfsense",
48
	"upload_path" => "/root",
49
	"dhcpd_chroot_path" => "/var/dhcpd",
50
	"unbound_chroot_path" => "/var/unbound",
51
	"var_path" => "/var",
52
	"varrun_path" => "/var/run",
53
	"varetc_path" => "/var/etc",
54
	"vardb_path" => "/var/db",
55
	"varlog_path" => "/var/log",
56
	"etc_path" => "/etc",
57
	"tmp_path" => "/tmp",
58
	"tmp_path_user_code" => "/tmp/user_code",
59
	"conf_path" => "/conf",
60
	"conf_default_path" => "/conf.default",
61
	"cf_path" => "/cf",
62
	"cf_conf_path" => "/cf/conf",
63
	"www_path" => "/usr/local/www",
64
	"xml_rootobj" => "pfsense",
65
	"admin_group" => "admins",
66
	"product_name" => "pfSense",
67
	"product_version" => trim(file_get_contents("/etc/version"), " \n"),
68
	"product_copyright_years" => "2004 - ".date("Y"),
69
	"disablehelpmenu" => false,
70
	"disablehelpicon" => false,
71
	"disablecrashreporter" => false,
72
	"crashreporterurl" => "https://crashreporter.pfsense.org/crash_reporter.php",
73
	"debug" => false,
74
	"latest_config" => "19.9",
75
	"minimum_ram_warning" => "101",
76
	"minimum_ram_warning_text" => "128 MB",
77
	"wan_interface_name" => "wan",
78
	"captiveportal_path" => "/usr/local/captiveportal",
79
	"captiveportal_element_path" => "/var/db/cpelements",
80
	"captiveportal_element_sizelimit" => 1048576,
81
	"captiveportal_rules_interval" => 50,
82
	"services_dhcp_server_enable" => true,
83
	"wireless_regex" => "/^(ath|athp|bwi|bwn|ipw|iwi|iwm|iwn|malo|mwl|ral|rsu|rum|run|uath|upgt|ural|urtw|urtwn|wi|wpi|wtap|zyd)[0-9]+/",
84
	"help_base_url" => "/help.php",
85
	"pkg_prefix" => "pfSense-pkg-",
86
	"default_timezone" => "Etc/UTC",
87
	"language" => "en_US",
88
	"default_config_backup_count" => 30,
89
	"default_cert_expiredays" => 28,
90
	"default_log_entries" => 500,
91
	"default_log_size" => 512000,
92
	"minimumtableentries_bogonsv6" => 400000,
93
	"alternativemetaports" => array("vmware", "php72", "php73")
94
);
95

    
96
/* IP TOS flags */
97
$iptos = array("lowdelay", "throughput", "reliability");
98

    
99
/* TCP flags */
100
$tcpflags = array("syn", "ack", "fin", "rst", "psh", "urg", "ece", "cwr");
101

    
102
if (file_exists("/etc/version.patch")) {
103
	$g["product_version_patch"] = trim(file_get_contents("/etc/version.patch"), " \n");
104
} else {
105
	$g["product_version_patch"] = "0";
106
}
107

    
108
$g['product_version_string'] = $g['product_version'];
109
if (is_numeric($g["product_version_patch"]) && $g["product_version_patch"] != "0") {
110
	$g['product_version_string'] .= "-p{$g['product_version_patch']}";
111
}
112

    
113
/* XXX: Backward compatible */
114
$g['platform'] = $g['product_name'];
115

    
116
if (file_exists("{$g['etc_path']}/default-config-flavor")) {
117
	$flavor_array = file("{$g['etc_path']}/default-config-flavor");
118
	$g['default-config-flavor'] = chop($flavor_array[0]);
119
} else {
120
	$g['default-config-flavor'] = '';
121
}
122

    
123
$g['openvpn_base'] = "{$g['varetc_path']}/openvpn";
124

    
125
/* Default sysctls */
126
$sysctls = array("net.inet.ip.portrange.first" => "1024",
127
	"net.inet.tcp.blackhole" => "2",
128
	"net.inet.udp.blackhole" => "1",
129
	"net.inet.ip.random_id" => "1",
130
	"net.inet.tcp.drop_synfin" => "1",
131
	"net.inet.ip.redirect" => "1",
132
	"net.inet6.ip6.redirect" => "1",
133
	"net.inet6.ip6.use_tempaddr" => "0",
134
	"net.inet6.ip6.prefer_tempaddr" => "0",
135
	"net.inet.tcp.syncookies" => "1",
136
	"net.inet.tcp.recvspace" => "65228",
137
	"net.inet.tcp.sendspace" => "65228",
138
	"net.inet.tcp.delayed_ack" => "0",
139
	"net.inet.udp.maxdgram" => "57344",
140
	"net.link.bridge.pfil_onlyip" => "0",
141
	"net.link.bridge.pfil_member" => "1",
142
	"net.link.bridge.pfil_bridge" => "0",
143
	"net.link.tap.user_open" => "1",
144
	"net.link.vlan.mtag_pcp" => "1",
145
	"kern.randompid" => "347",
146
	"net.inet.ip.intr_queue_maxlen" => "1000",
147
	"hw.syscons.kbd_reboot" => "0",
148
	"net.inet.tcp.log_debug" => "0",
149
	"net.inet.tcp.tso" => "1",
150
	"net.inet.icmp.icmplim" => "0",
151
	"vfs.read_max" => "32",
152
	"kern.ipc.maxsockbuf" => "4262144",
153
	"net.inet.ip.process_options" => 0,
154
	"kern.random.harvest.mask" => "351",
155
	"net.route.netisr_maxqlen" => 1024,
156
	"net.inet.udp.checksum" => 1,
157
	"net.inet.icmp.reply_from_interface" => 1,
158
	"net.inet6.ip6.rfc6204w3" => 1,
159
	"net.enc.out.ipsec_bpf_mask" => "0x0001",
160
	"net.enc.out.ipsec_filter_mask" => "0x0001",
161
	"net.enc.in.ipsec_bpf_mask" => "0x0002",
162
	"net.enc.in.ipsec_filter_mask" => "0x0002",
163
	"net.key.preferred_oldsa" => "0",
164
	"net.inet.carp.senderr_demotion_factor" => 0, /* Do not demote CARP for interface send errors */
165
	"net.pfsync.carp_demotion_factor" => 0, /* Do not demote CARP for pfsync errors */
166
	"net.raw.recvspace" => 65536,
167
	"net.raw.sendspace" => 65536,
168
	"net.inet.raw.recvspace" => 131072,
169
	"net.inet.raw.maxdgram" => 131072,
170
	"kern.corefile" => "/root/%N.core" /* Write all core files to /root/ so they do not consume space on other slices */
171
);
172

    
173
$machine_type = php_uname('m');
174
if (($machine_type == 'arm') || ($machine_type == 'arm64')) {
175
	$sysctls['kern.shutdown.secure_halt'] = 1;
176
}
177

    
178
/* Include override values for the above if needed. If the file doesn't exist, don't try to load it. */
179
if (file_exists("/etc/inc/globals_override.inc")) {
180
	@include_once("globals_override.inc");
181
}
182

    
183
/* Read all XML files in following dir and load menu entries */
184
$g["ext_menu_path"] = "/usr/local/share/{$g['product_name']}/menu";
185

    
186
/* Cache file used to store pfSense version */
187
$g["version_cache_file"] = "{$g['varrun_path']}/{$g['product_name']}_version";
188
$g['version_cache_refresh'] = 2 * 60 * 60; /* 2h */
189

    
190
function platform_booting($on_console = false) {
191
	global $g;
192

    
193
	if ($g['booting'] || file_exists("{$g['varrun_path']}/booting")) {
194
		if ($on_console == false || php_sapi_name() != 'fpm-fcgi') {
195
			return true;
196
		}
197
	}
198

    
199
	return false;
200
}
201

    
202
if (file_exists("{$g['cf_conf_path']}/enableserial_force")) {
203
	$g['enableserial_force'] = true;
204
}
205

    
206
$config_parsed = false;
207

    
208
/* Factory default check IP service. */
209
$factory_default_checkipservice = array(
210
	"enable" => true,
211
	"name" => 'Default',
212
	"url" => 'http://checkip.dyndns.org',
213
//	"username" => '',
214
//	"password" => '',
215
//	"verifysslpeer" => true,
216
	"descr" => 'Default Check IP Service'
217
);
218

    
219
$dyndns_split_domain_types = array("namecheap", "cloudflare", "cloudflare-v6", "gratisdns", "cloudns", "godaddy", "godaddy-v6", "linode", "linode-v6");
220

    
221
/* pf tokens from FreeBSD source sbin/pfctl/parse.y (plus our custom entries at the end)*/
222
global $pf_reserved_keywords;
223
$pf_reserved_keywords = array(
224
	"pass", "block", "scrub", "return", "in", "os", "out", "log", "quick", "on", "from", "to", "flags", "returnrst",
225
	"returnicmp", "returnicmp6", "proto", "inet", "inet6", "all", "any", "icmptype", "icmp6type", "code", "keep",
226
	"modulate", "state", "port", "rdr", "nat", "binat", "arrow", "nodf", "minttl", "error", "allowopts", "fastroute",
227
	"filename", "routeto", "dupto", "replyto", "no", "label", "noroute", "urpffailed", "fragment", "user", "group",
228
	"maxmss", "maximum", "ttl", "tos", "drop", "table", "reassemble", "fragdrop", "fragcrop", "anchor", "natanchor",
229
	"rdranchor", "binatanchor", "set", "optimization", "timeout", "limit", "loginterface", "blockpolicy", "randomid",
230
	"requireorder", "synproxy", "fingerprints", "nosync", "debug", "skip", "hostid", "antispoof", "for", "include",
231
	"bitmask", "random", "sourcehash", "roundrobin", "staticport", "probability", "altq", "cbq", "codel", "priq",
232
	"hfsc", "fairq", "bandwidth", "tbrsize", "linkshare", "realtime", "upperlimit", "queue", "priority", "qlimit",
233
	"hogs", "buckets", "rtable", "target", "interval", "load", "ruleset_optimization", "prio", "stickyaddress",
234
	"maxsrcstates", "maxsrcnodes", "sourcetrack", "global", "rule", "maxsrcconn", "maxsrcconnrate", "overload",
235
	"flush", "sloppy", "tagged", "tag", "ifbound", "floating", "statepolicy", "statedefaults", "route", "settos",
236
	"divertto", "divertreply", "max", "min", "pptp", "pppoe", "L2TP", "OpenVPN", "IPsec");
237

    
238
/* VLAN Prio values. */
239
$vlanprio_values = array(
240
	"bk" => 0,
241
	"be" => 1,
242
	"ee" => 2,
243
	"ca" => 3,
244
	"vi" => 4,
245
	"vo" => 5,
246
	"ic" => 6,
247
	"nc" => 7
248
);
249

    
250
$vlanprio = array(
251
	"bk" => "Background (BK, 0)",
252
	"be" => "Best Effort (BE, 1)",
253
	"ee" => "Excellent Effort (EE, 2)",
254
	"ca" => "Critical Applications (CA, 3)",
255
	"vi" => "Video (VI, 4)",
256
	"vo" => "Voice (VO, 5)",
257
	"ic" => "Internetwork Control (IC, 6)",
258
	"nc" => "Network Control (NC, 7)"
259
);
260

    
261
global $system_log_files;
262
$system_log_files = array(
263
	"system", "filter", "dhcpd", "vpn", "poes", "l2tps", "openvpn",
264
	"portalauth", "ipsec", "ppp", "wireless", "nginx", "ntpd", "gateways",
265
	"resolver", "routing", "auth");
266

    
267
global $system_log_non_syslog_files;
268
$system_log_non_syslog_files = array('dmesg.boot', 'utx.log', 'userlog');
269

    
270
global $system_log_compression_types;
271
$system_log_compression_types = array(
272
	'bzip2' => array(
273
			'flag' => 'J',
274
			'cat' => '/usr/bin/bzcat -qf',
275
			'ext' => 'bz2',
276
		),
277
	'gzip' => array(
278
			'flag' => 'Z',
279
			'cat' => '/usr/bin/zcat -qf',
280
			'ext' => 'gz',
281
		),
282
	'xz' => array(
283
			'flag' => 'X',
284
			'cat' => '/usr/bin/xzcat -qf',
285
			'ext' => 'xz',
286
		),
287
	'zstd' => array(
288
			'flag' => 'Y',
289
			'cat' => '/usr/bin/zstdcat -qqf',
290
			'ext' => 'zst',
291
		),
292
	'none' => array(
293
			'flag' => '',
294
			'cat' => '/usr/bin/cat',
295
			'ext' => '',
296
		),
297
);
298

    
299
?>
(19-19/60)