Commit 90ee04ce authored by Ad Schellevis's avatar Ad Schellevis

(legacy) refactor carp_status.php

parent 1f182df6
...@@ -50,33 +50,33 @@ function interfaces_carp_set_maintenancemode($carp_maintenancemode) ...@@ -50,33 +50,33 @@ function interfaces_carp_set_maintenancemode($carp_maintenancemode)
} }
} }
// init $config['virtualip']['vip']
unset($carp_interface_count_cache); if ( !isset($config['virtualip']['vip']) || !is_array($config['virtualip']['vip'])) {
$config['virtualip']['vip'] = array();
$status = get_carp_status();
if ($_POST['carp_maintenancemode'] <> "") {
interfaces_carp_set_maintenancemode(!isset($config["virtualip_carp_maintenancemode"]));
} }
if ($_POST['disablecarp'] <> "") { $a_vip = &$config['virtualip']['vip'];
if ($status == true) {
set_single_sysctl('net.inet.carp.allow', '0'); if ($_SERVER['REQUEST_METHOD'] === 'GET') {
if (is_array($config['virtualip']['vip'])) { } elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
$viparr = &$config['virtualip']['vip']; if (!empty($_POST['carp_maintenancemode'])) {
foreach ($viparr as $vip) { interfaces_carp_set_maintenancemode(!isset($config["virtualip_carp_maintenancemode"]));
} elseif (!empty($_POST['disablecarp'])) {
if (get_single_sysctl('net.inet.carp.allow') > 0) {
$carp_counter = 0;
set_single_sysctl('net.inet.carp.allow', '0');
foreach ($a_vip as $vip) {
switch ($vip['mode']) { switch ($vip['mode']) {
case "carp": case "carp":
interface_vip_bring_down($vip); interface_vip_bring_down($vip);
$carp_counter++;
sleep(1); sleep(1);
break; break;
} }
} }
} $savemsg = sprintf(gettext("%s IPs have been disabled. Please note that disabling does not survive a reboot."), $carp_counter);
$savemsg = sprintf(gettext("%s IPs have been disabled. Please note that disabling does not survive a reboot."), $carp_counter); } else {
} else { $savemsg = gettext("CARP has been enabled.");
$savemsg = gettext("CARP has been enabled."); foreach ($a_vip as $vip) {
if (is_array($config['virtualip']['vip'])) {
$viparr = &$config['virtualip']['vip'];
foreach ($viparr as $vip) {
switch ($vip['mode']) { switch ($vip['mode']) {
case "carp": case "carp":
interface_carp_configure($vip); interface_carp_configure($vip);
...@@ -84,130 +84,123 @@ if ($_POST['disablecarp'] <> "") { ...@@ -84,130 +84,123 @@ if ($_POST['disablecarp'] <> "") {
break; break;
} }
} }
interfaces_carp_setup();
set_single_sysctl('net.inet.carp.allow', '1');
} }
interfaces_carp_setup();
set_single_sysctl('net.inet.carp.allow', '1');
} }
} }
$status = get_carp_status(); $carpcount = 0;
foreach ($a_vip as $carp) {
if ($carp['mode'] == "carp") {
$carpcount++;
break;
}
}
$carp_detected_problems = (array_pop(get_sysctl("net.inet.carp.demotion")) > 0); // fetch pfsync info
$pfsyncnodes = json_decode(configd_run("filter list pfsync json"), true);
legacy_html_escape_form_data($a_vip);
$status = (get_single_sysctl('net.inet.carp.allow') > 0);
$carp_detected_problems = (array_pop(get_sysctl("net.inet.carp.demotion")) > 0);
include("head.inc"); include("head.inc");
?> ?>
<body> <body>
<?php include("fbegin.inc"); ?> <?php include("fbegin.inc"); ?>
<section class="page-content-main"> <section class="page-content-main">
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<section class="col-xs-12"> <?php
if (isset($savemsg)) {
<?php if (isset($savemsg)) { print_info_box($savemsg);
print_info_box($savemsg); }
} ?> if ($carp_detected_problems) {
print_info_box(gettext("CARP has detected a problem and this unit has been demoted to BACKUP status.") . "<br />" . gettext("Check link status on all interfaces with configured CARP VIPs."));
<?php if ($carp_detected_problems) { }
print_info_box(gettext("CARP has detected a problem and this unit has been demoted to BACKUP status.") . "<br />" . gettext("Check link status on all interfaces with configured CARP VIPs.")); ?>
} ?> <section class="col-xs-12">
<div class="content-box">
<form method="post">
<div class="content-box"> <table class="table table-condensed">
<tr>
<form action="<?=$_SERVER['REQUEST_URI'];?>" method="post"> <td>
<?php <input type="submit" class="btn btn-primary" name="disablecarp" value="<?=($carpcount > 0 && $status) ? gettext("Enable CARP") : gettext("Temporarily Disable CARP") ;?>" />
$carpcount = 0; <input type="submit" class="btn btn-primary" name="carp_maintenancemode" value="<?=isset($config["virtualip_carp_maintenancemode"]) ? gettext("Leave Persistent CARP Maintenance Mode") : gettext("Enter Persistent CARP Maintenance Mode");?> " />
if (isset($config['virtualip']['vip'])) { </td>
foreach ($config['virtualip']['vip'] as $carp) { </tr>
if ($carp['mode'] == "carp") { </table>
$carpcount++; <div class="table-responsive">
break; <table class="table table-striped">
} <thead>
} <tr>
} <td><?=gettext("CARP Interface"); ?></td>
if ($carpcount > 0) { <td><?=gettext("Virtual IP"); ?></td>
if ($status == false) { <td><?=gettext("Status"); ?></td>
$carp_enabled = false; </tr>
echo "<input type=\"submit\" name=\"disablecarp\" id=\"disablecarp\" value=\"" . gettext("Enable CARP") . "\" />"; </thead>
} else { <tbody>
$carp_enabled = true; <?php
echo "<input type=\"submit\" name=\"disablecarp\" id=\"disablecarp\" value=\"" . gettext("Temporarily Disable CARP") . "\" />"; if ($carpcount == 0):?>
} <tr>
if (isset($config["virtualip_carp_maintenancemode"])) { <td colspan="3"><?=gettext("Could not locate any defined CARP interfaces.");?></td>
echo "<input type=\"submit\" name=\"carp_maintenancemode\" id=\"carp_maintenancemode\" value=\"" . gettext("Leave Persistent CARP Maintenance Mode") . "\" />"; </tr>
} else { <?php
echo "<input type=\"submit\" name=\"carp_maintenancemode\" id=\"carp_maintenancemode\" value=\"" . gettext("Enter Persistent CARP Maintenance Mode") . "\" />"; else:
} foreach ($a_vip as $carp):
if ($carp['mode'] != "carp") {
continue;
} }
?> $icon = "";
$intf_status = get_carp_interface_status("{$carp['interface']}_vip{$carp['vhid']}");
<div class="table-responsive"> if (($carpcount > 0 && $status)) {
$icon = "glyphicon glyphicon-remove text-danger";
<table class="table table-striped table-sort sortable"> $intf_status = "DISABLED";
<tr> } elseif ($intf_status == "MASTER") {
<td class="listhdrr" align="center"><?=gettext("CARP Interface"); ?></td> $icon = "glyphicon glyphicon-play text-success";
<td class="listhdrr" align="center"><?=gettext("Virtual IP"); ?></td> } elseif ($intf_status == "BACKUP") {
<td class="listhdrr" align="center"><?=gettext("Status"); ?></td> $icon = "glyphicon glyphicon-play text-muted";
</tr> } elseif ($intf_status == "INIT") {
<?php $icon = "glyphicon glyphicon-info-sign";
if ($carpcount == 0) { }?>
echo "</table></div></form><center><br />" . gettext("Could not locate any defined CARP interfaces."); <tr>
<td><?=convert_friendly_interface_to_friendly_descr($carp['interface']) . "@{$carp['vhid']}" ;?></td>
<td><?=$carp['subnet'];?></td>
} elseif (is_array($config['virtualip']['vip'])) { <td><span class="<?=$icon;?>"></span> <?=$intf_status;?></td>
foreach ($config['virtualip']['vip'] as $carp) { </tr>
if ($carp['mode'] != "carp") {
continue;
}
$ipaddress = $carp['subnet'];
$password = $carp['password'];
$netmask = $carp['subnet_bits'];
$vhid = $carp['vhid'];
$advskew = $carp['advskew'];
$advbase = $carp['advbase'];
$status = get_carp_interface_status("{$carp['interface']}_vip{$carp['vhid']}");
echo "<tr>";
$align = "style=\"vertical-align:middle\"";
if ($carp_enabled == false) {
$icon = "<span {$align} class=\"glyphicon glyphicon-remove text-danger\" alt=\"disabled\" ></span>";
$status = "DISABLED";
} else {
if ($status == "MASTER") {
$icon = "<span {$align} class=\"glyphicon glyphicon-play text-success\" alt=\"master\" ></span>";
} elseif ($status == "BACKUP") {
$icon = "<span {$align} class=\"glyphicon glyphicon-play text-muted\" alt=\"backup\" ></span>";
} elseif ($status == "INIT") {
$icon = "<span {$align} class=\"glyphicon glyphicon-info-sign\" alt=\"init\" ></span>";
}
}
echo "<td class=\"listlr\" align=\"center\">" . convert_friendly_interface_to_friendly_descr($carp['interface']) . "@{$vhid} &nbsp;</td>";
echo "<td class=\"listlr\" align=\"center\">" . $ipaddress . "&nbsp;</td>";
echo "<td class=\"listlr\" align=\"center\">{$icon}&nbsp;&nbsp;" . $status . "&nbsp;</td>";
echo "</tr>";
}
}
?>
</table>
</div>
<div class="col-xs-12">
<?php <?php
echo "<br />" . gettext("pfSync nodes") . ":<br />"; endforeach;
echo "<pre>"; endif;?>
system("/sbin/pfctl -vvss | /usr/bin/grep creator | /usr/bin/cut -d\" \" -f7 | /usr/bin/sort -u"); </tbody>
echo "</pre>"; </table>
?> </div>
</div> <hr/>
<div class="table-responsive">
</div> <table class="table table-striped">
</section> <thead>
</div> <tr>
</div> <td><?=gettext("pfSync nodes");?></td>
</tr>
</thead>
<tbody>
<?php
if (isset($pfsyncnodes['nodes'])):
foreach ($pfsyncnodes['nodes'] as $node):?>
<tr>
<td><?=$node;?></td>
</tr>
<?php
endforeach;
endif;?>
</tbody>
</table>
</div>
</div>
</section>
</div>
</div>
</section> </section>
<?php include("foot.inc"); ?> <?php include("foot.inc"); ?>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment