Project

General

Profile

Download (6.83 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
                                       	case "carpdev-dhcp":
65
                                       		interface_vip_bring_down($vip);
66
                                       		sleep(1);
67
                                       	break;
68
                               	}
69 8e2986f8 Ermal
                	}
70
        	}
71 24143605 Scott Ullrich
		$savemsg = sprintf(gettext("%s IPs have been disabled. Please note that disabling does not survive a reboot."), $carp_counter);
72 a26686cb Scott Ullrich
	} else {
73 2df8214a Carlos Eduardo Ramos
		$savemsg = gettext("CARP has been enabled.");
74 8e2986f8 Ermal
		if(is_array($config['virtualip']['vip'])) {
75
                        $viparr = &$config['virtualip']['vip'];
76
                        foreach ($viparr as $vip) {
77 a133bb38 Ermal
				switch ($vip['mode']) {
78
					case "carp":
79
						interface_carp_configure($vip);
80
						sleep(1);
81
					break;
82
					case "carpdev-dhcp":
83
						interface_carpdev_configure($vip);
84
						sleep(1);
85
					break;
86 5aa7a46c Ermal
					case "ipalias":
87
						if (substr($vip['interface'], 0, 3) == "vip")
88
							interface_ipalias_configure($vip);
89
					break;
90 8e2986f8 Ermal
                                }
91
                        }
92
                }
93 5aa7a46c Ermal
		interfaces_carp_setup();
94
		mwexec("/sbin/sysctl net.inet.carp.allow=1");
95 a26686cb Scott Ullrich
	}
96
}
97
98
$status = get_carp_status();
99 b63695db Scott Ullrich
100 2df8214a Carlos Eduardo Ramos
$pgtitle = array(gettext("Status"),gettext("CARP"));
101 b63695db Scott Ullrich
include("head.inc");
102
103 a26686cb Scott Ullrich
?>
104
105
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
106 e8fc8fa0 Erik Kristensen
<?php include("fbegin.inc"); ?>
107 a26686cb Scott Ullrich
<form action="carp_status.php" method="post">
108
<?php if ($savemsg) print_info_box($savemsg); ?>
109
110 4208d208 Scott Ullrich
<div id="mainlevel">
111 e8fc8fa0 Erik Kristensen
	<table width="100%" border="0" cellpadding="0" cellspacing="0">
112
		<tr>
113 1f919154 Scott Ullrich
			<td>
114 a26686cb Scott Ullrich
<?php
115 2bfade90 Ermal
			$carpcount = 0;
116 e8fc8fa0 Erik Kristensen
			if(is_array($config['virtualip']['vip'])) {
117
				foreach($config['virtualip']['vip'] as $carp) {
118 4ed5ad5a Ermal
					if ($carp['mode'] == "carp") {
119 9175156f Scott Ullrich
						$carpcount++;
120 4ed5ad5a Ermal
						break;
121
					}
122 9175156f Scott Ullrich
				}
123
			}
124
			if($carpcount > 0) {
125
				if($status == false) {
126
					$carp_enabled = false;
127 2df8214a Carlos Eduardo Ramos
					echo "<input type=\"submit\" name=\"disablecarp\" id=\"disablecarp\" value=\"" . gettext("Enable Carp") . "\">";
128 9175156f Scott Ullrich
				} else {
129
					$carp_enabled = true;
130 2df8214a Carlos Eduardo Ramos
					echo "<input type=\"submit\" name=\"disablecarp\" id=\"disablecarp\" value=\"" . gettext("Disable Carp") . "\">";
131 e8fc8fa0 Erik Kristensen
				}
132
			}
133 a26686cb Scott Ullrich
?>
134
135 e8fc8fa0 Erik Kristensen
			<p>
136 3473bb6a Scott Ullrich
			<table class="tabcont sortable" width="100%" border="0" cellpadding="6" cellspacing="0">
137 e8fc8fa0 Erik Kristensen
				<tr>
138 2df8214a Carlos Eduardo Ramos
					<td class="listhdrr"><b><center><?=gettext("CARP Interface"); ?></center></b></td>
139
					<td class="listhdrr"><b><center><?=gettext("Virtual IP"); ?></center></b></td>
140
					<td class="listhdrr"><b><center><?=gettext("Status"); ?></center></b></td>
141 e8fc8fa0 Erik Kristensen
				</tr>
142 a26686cb Scott Ullrich
<?php
143 172bd075 Scott Ullrich
				if ($carpcount == 0) {
144 381af659 Renato Botelho
					echo "</td></tr></table></table></div><center><br>" . gettext("Could not locate any defined CARP interfaces.");
145 172bd075 Scott Ullrich
					echo "</center>";
146
147
					include("fend.inc");
148
					echo "</body></html>";
149
					exit;
150
				}
151
152 e8fc8fa0 Erik Kristensen
				if(is_array($config['virtualip']['vip'])) {
153
					foreach($config['virtualip']['vip'] as $carp) {
154 4ed5ad5a Ermal
						if ($carp['mode'] != "carp")
155
							continue;
156 e8fc8fa0 Erik Kristensen
						$ipaddress = $carp['subnet'];
157
						$password = $carp['password'];
158
						$netmask = $carp['subnet_bits'];
159
						$vhid = $carp['vhid'];
160
						$advskew = $carp['advskew'];
161 6f247d1f Ermal
						$advbase = $carp['advbase'];
162 4ed5ad5a Ermal
						$carp_int = "vip{$vhid}";
163 e8fc8fa0 Erik Kristensen
						$status = get_carp_interface_status($carp_int);
164
						echo "<tr>";
165
						$align = "valign='middle'";
166
						if($carp_enabled == false) {
167
							$icon = "<img {$align} src='/themes/".$g['theme']."/images/icons/icon_block.gif'>";
168
							$status = "DISABLED";
169
						} else {
170
							if($status == "MASTER") {
171
								$icon = "<img {$align} src='/themes/".$g['theme']."/images/icons/icon_pass.gif'>";
172
							} else if($status == "BACKUP") {
173
								$icon = "<img {$align} src='/themes/".$g['theme']."/images/icons/icon_pass_d.gif'>";
174
							} else if($status == "INIT") {
175
								$icon = "<img {$align} src='/themes/".$g['theme']."/images/icons/icon_log.gif'>";
176
							}
177
						}
178
						echo "<td class=\"listlr\"><center>" . $carp_int . "&nbsp;</td>";
179
						echo "<td class=\"listlr\"><center>" . $ipaddress . "&nbsp;</td>";
180
						echo "<td class=\"listlr\"><center>{$icon}&nbsp;&nbsp;" . $status . "&nbsp;</td>";
181
						echo "</tr>";
182
					}
183
				}
184 a26686cb Scott Ullrich
?>
185 e8fc8fa0 Erik Kristensen
			</table>
186
			</td>
187
		</tr>
188
	</table>
189 e2de5461 Scott Ullrich
</div>
190 a26686cb Scott Ullrich
191 1f919154 Scott Ullrich
<p/>
192
193
<span class="vexpl">
194 2df8214a Carlos Eduardo Ramos
<span class="red"><strong><?=gettext("Note"); ?>:</strong></span>
195 1f919154 Scott Ullrich
<br />
196 2df8214a Carlos Eduardo Ramos
<?=gettext("You can configure CARP settings"); ?> <a href="pkg_edit.php?xml=carp_settings.xml&id=0"><?=gettext("here"); ?></a>.
197 1f919154 Scott Ullrich
</span>
198 e8fc8fa0 Erik Kristensen
199 1f919154 Scott Ullrich
<p/>
200
201
<?php
202 2df8214a Carlos Eduardo Ramos
	echo "<br>" . gettext("pfSync nodes") . ":<br>";
203 1f919154 Scott Ullrich
	echo "<pre>";
204
	system("/sbin/pfctl -vvss | /usr/bin/grep creator | /usr/bin/cut -d\" \" -f7 | /usr/bin/sort -u");
205
	echo "</pre>";
206
?>
207
208
<?php include("fend.inc"); ?>
209 e2de5461 Scott Ullrich
210 a26686cb Scott Ullrich
</body>
211 07bdf973 Bill Marquette
</html>