Project

General

Profile

Download (6.54 KB) Statistics
| Branch: | Tag: | Revision:
1 a26686cb Scott Ullrich
<?php
2
/*
3
    carp_status.php
4
    Copyright (C) 2004 Scott Ullrich
5
    All rights reserved.
6
7
    Redistribution and use in source and binary forms, with or without
8
    modification, are permitted provided that the following conditions are met:
9
10
    1. Redistributions of source code must retain the above copyright notice,
11
       this list of conditions and the following disclaimer.
12
13
    2. Redistributions in binary form must reproduce the above copyright
14
       notice, this list of conditions and the following disclaimer in the
15
       documentation and/or other materials provided with the distribution.
16
17
    THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
18
    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
19
    AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
20
    AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
21
    OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22
    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23
    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24
    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25
    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26
    POSSIBILITY OF SUCH DAMAGE.
27
*/
28
29 6b07c15a Matthew Grooms
##|+PRIV
30
##|*IDENT=page-status-carp
31
##|*NAME=Status: CARP page
32
##|*DESCR=Allow access to the 'Status: CARP' page.
33
##|*MATCH=carp_status.php*
34
##|-PRIV
35
36 13d193c2 Scott Ullrich
/*
37
	pfSense_BUILDER_BINARIES:	/sbin/sysctl	
38
	pfSense_MODULE:	carp
39
*/
40 6b07c15a Matthew Grooms
41 670fafe5 Scott Ullrich
require_once("guiconfig.inc");
42 a26686cb Scott Ullrich
43
function gentitle_pkg($pgname) {
44
	global $config;
45
	return $config['system']['hostname'] . "." . $config['system']['domain'] . " - " . $pgname;
46
}
47
48 a1e58090 Scott Ullrich
unset($interface_arr_cache);
49
unset($carp_interface_count_cache);
50 07e5afeb Scott Ullrich
unset($interface_ip_arr_cache);
51 a1e58090 Scott Ullrich
52 a26686cb Scott Ullrich
$status = get_carp_status();
53
if($_POST['disablecarp'] <> "") {
54
	if($status == true) {
55
		mwexec("/sbin/sysctl net.inet.carp.allow=0");
56 8e2986f8 Ermal
		if(is_array($config['virtualip']['vip'])) {
57
			$viparr = &$config['virtualip']['vip'];
58
                	foreach ($viparr as $vip) {
59 a133bb38 Ermal
                               	switch ($vip['mode']) {
60
                                       	case "carp":
61
                                       		interface_vip_bring_down($vip);
62
                                       		sleep(1);
63
                                       	break;
64
                               	}
65 8e2986f8 Ermal
                	}
66
        	}
67 24143605 Scott Ullrich
		$savemsg = sprintf(gettext("%s IPs have been disabled. Please note that disabling does not survive a reboot."), $carp_counter);
68 a26686cb Scott Ullrich
	} else {
69 2df8214a Carlos Eduardo Ramos
		$savemsg = gettext("CARP has been enabled.");
70 8e2986f8 Ermal
		if(is_array($config['virtualip']['vip'])) {
71
                        $viparr = &$config['virtualip']['vip'];
72
                        foreach ($viparr as $vip) {
73 a133bb38 Ermal
				switch ($vip['mode']) {
74
					case "carp":
75
						interface_carp_configure($vip);
76
						sleep(1);
77
					break;
78 5aa7a46c Ermal
					case "ipalias":
79 7b47bd4c Ermal
						if (strstr($vip['interface'], "_vip"))
80 5aa7a46c Ermal
							interface_ipalias_configure($vip);
81
					break;
82 8e2986f8 Ermal
                                }
83
                        }
84
                }
85 5aa7a46c Ermal
		interfaces_carp_setup();
86
		mwexec("/sbin/sysctl net.inet.carp.allow=1");
87 a26686cb Scott Ullrich
	}
88
}
89
90
$status = get_carp_status();
91 b63695db Scott Ullrich
92 2df8214a Carlos Eduardo Ramos
$pgtitle = array(gettext("Status"),gettext("CARP"));
93 b32dd0a6 jim-p
$shortcut_section = "carp";
94 b63695db Scott Ullrich
include("head.inc");
95
96 a26686cb Scott Ullrich
?>
97
98
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
99 e8fc8fa0 Erik Kristensen
<?php include("fbegin.inc"); ?>
100 a26686cb Scott Ullrich
<form action="carp_status.php" method="post">
101
<?php if ($savemsg) print_info_box($savemsg); ?>
102
103 4208d208 Scott Ullrich
<div id="mainlevel">
104 e8fc8fa0 Erik Kristensen
	<table width="100%" border="0" cellpadding="0" cellspacing="0">
105
		<tr>
106 1f919154 Scott Ullrich
			<td>
107 a26686cb Scott Ullrich
<?php
108 2bfade90 Ermal
			$carpcount = 0;
109 e8fc8fa0 Erik Kristensen
			if(is_array($config['virtualip']['vip'])) {
110
				foreach($config['virtualip']['vip'] as $carp) {
111 4ed5ad5a Ermal
					if ($carp['mode'] == "carp") {
112 9175156f Scott Ullrich
						$carpcount++;
113 4ed5ad5a Ermal
						break;
114
					}
115 9175156f Scott Ullrich
				}
116
			}
117
			if($carpcount > 0) {
118
				if($status == false) {
119
					$carp_enabled = false;
120 2df8214a Carlos Eduardo Ramos
					echo "<input type=\"submit\" name=\"disablecarp\" id=\"disablecarp\" value=\"" . gettext("Enable Carp") . "\">";
121 9175156f Scott Ullrich
				} else {
122
					$carp_enabled = true;
123 2df8214a Carlos Eduardo Ramos
					echo "<input type=\"submit\" name=\"disablecarp\" id=\"disablecarp\" value=\"" . gettext("Disable Carp") . "\">";
124 e8fc8fa0 Erik Kristensen
				}
125
			}
126 a26686cb Scott Ullrich
?>
127
128 e8fc8fa0 Erik Kristensen
			<p>
129 3473bb6a Scott Ullrich
			<table class="tabcont sortable" width="100%" border="0" cellpadding="6" cellspacing="0">
130 e8fc8fa0 Erik Kristensen
				<tr>
131 2df8214a Carlos Eduardo Ramos
					<td class="listhdrr"><b><center><?=gettext("CARP Interface"); ?></center></b></td>
132
					<td class="listhdrr"><b><center><?=gettext("Virtual IP"); ?></center></b></td>
133
					<td class="listhdrr"><b><center><?=gettext("Status"); ?></center></b></td>
134 e8fc8fa0 Erik Kristensen
				</tr>
135 a26686cb Scott Ullrich
<?php
136 172bd075 Scott Ullrich
				if ($carpcount == 0) {
137 381af659 Renato Botelho
					echo "</td></tr></table></table></div><center><br>" . gettext("Could not locate any defined CARP interfaces.");
138 172bd075 Scott Ullrich
					echo "</center>";
139
140
					include("fend.inc");
141
					echo "</body></html>";
142
					exit;
143
				}
144
145 e8fc8fa0 Erik Kristensen
				if(is_array($config['virtualip']['vip'])) {
146
					foreach($config['virtualip']['vip'] as $carp) {
147 4ed5ad5a Ermal
						if ($carp['mode'] != "carp")
148
							continue;
149 e8fc8fa0 Erik Kristensen
						$ipaddress = $carp['subnet'];
150
						$password = $carp['password'];
151
						$netmask = $carp['subnet_bits'];
152
						$vhid = $carp['vhid'];
153
						$advskew = $carp['advskew'];
154 6f247d1f Ermal
						$advbase = $carp['advbase'];
155 7b47bd4c Ermal
						$carp_int = "{$carp['interface']}_vip{$vhid}";
156 e8fc8fa0 Erik Kristensen
						$status = get_carp_interface_status($carp_int);
157
						echo "<tr>";
158
						$align = "valign='middle'";
159
						if($carp_enabled == false) {
160
							$icon = "<img {$align} src='/themes/".$g['theme']."/images/icons/icon_block.gif'>";
161
							$status = "DISABLED";
162
						} else {
163
							if($status == "MASTER") {
164
								$icon = "<img {$align} src='/themes/".$g['theme']."/images/icons/icon_pass.gif'>";
165
							} else if($status == "BACKUP") {
166
								$icon = "<img {$align} src='/themes/".$g['theme']."/images/icons/icon_pass_d.gif'>";
167
							} else if($status == "INIT") {
168
								$icon = "<img {$align} src='/themes/".$g['theme']."/images/icons/icon_log.gif'>";
169
							}
170
						}
171
						echo "<td class=\"listlr\"><center>" . $carp_int . "&nbsp;</td>";
172
						echo "<td class=\"listlr\"><center>" . $ipaddress . "&nbsp;</td>";
173
						echo "<td class=\"listlr\"><center>{$icon}&nbsp;&nbsp;" . $status . "&nbsp;</td>";
174
						echo "</tr>";
175
					}
176
				}
177 a26686cb Scott Ullrich
?>
178 e8fc8fa0 Erik Kristensen
			</table>
179
			</td>
180
		</tr>
181
	</table>
182 e2de5461 Scott Ullrich
</div>
183 a26686cb Scott Ullrich
184 1f919154 Scott Ullrich
<p/>
185
186
<span class="vexpl">
187 2df8214a Carlos Eduardo Ramos
<span class="red"><strong><?=gettext("Note"); ?>:</strong></span>
188 1f919154 Scott Ullrich
<br />
189 f97a5b04 Darren Embry
<?=gettext("You can configure high availability sync settings"); ?> <a href="system_hasync.php"><?=gettext("here"); ?></a>.
190 1f919154 Scott Ullrich
</span>
191 e8fc8fa0 Erik Kristensen
192 1f919154 Scott Ullrich
<p/>
193
194
<?php
195 2df8214a Carlos Eduardo Ramos
	echo "<br>" . gettext("pfSync nodes") . ":<br>";
196 1f919154 Scott Ullrich
	echo "<pre>";
197
	system("/sbin/pfctl -vvss | /usr/bin/grep creator | /usr/bin/cut -d\" \" -f7 | /usr/bin/sort -u");
198
	echo "</pre>";
199
?>
200
201
<?php include("fend.inc"); ?>
202 e2de5461 Scott Ullrich
203 a26686cb Scott Ullrich
</body>
204 07bdf973 Bill Marquette
</html>