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']
if ( !isset($config['virtualip']['vip']) || !is_array($config['virtualip']['vip'])) {
$config['virtualip']['vip'] = array();
}
$a_vip = &$config['virtualip']['vip'];
unset($carp_interface_count_cache); if ($_SERVER['REQUEST_METHOD'] === 'GET') {
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
$status = get_carp_status(); if (!empty($_POST['carp_maintenancemode'])) {
if ($_POST['carp_maintenancemode'] <> "") {
interfaces_carp_set_maintenancemode(!isset($config["virtualip_carp_maintenancemode"])); interfaces_carp_set_maintenancemode(!isset($config["virtualip_carp_maintenancemode"]));
} } elseif (!empty($_POST['disablecarp'])) {
if ($_POST['disablecarp'] <> "") { if (get_single_sysctl('net.inet.carp.allow') > 0) {
if ($status == true) { $carp_counter = 0;
set_single_sysctl('net.inet.carp.allow', '0'); set_single_sysctl('net.inet.carp.allow', '0');
if (is_array($config['virtualip']['vip'])) { foreach ($a_vip as $vip) {
$viparr = &$config['virtualip']['vip'];
foreach ($viparr 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.");
if (is_array($config['virtualip']['vip'])) { foreach ($a_vip as $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,126 +84,119 @@ if ($_POST['disablecarp'] <> "") { ...@@ -84,126 +84,119 @@ if ($_POST['disablecarp'] <> "") {
break; break;
} }
} }
}
interfaces_carp_setup(); interfaces_carp_setup();
set_single_sysctl('net.inet.carp.allow', '1'); 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)) {
print_info_box($savemsg);
} ?>
<?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."));
} ?>
<div class="content-box">
<form action="<?=$_SERVER['REQUEST_URI'];?>" method="post">
<?php <?php
$carpcount = 0; if (isset($savemsg)) {
if (isset($config['virtualip']['vip'])) { print_info_box($savemsg);
foreach ($config['virtualip']['vip'] as $carp) {
if ($carp['mode'] == "carp") {
$carpcount++;
break;
}
}
}
if ($carpcount > 0) {
if ($status == false) {
$carp_enabled = false;
echo "<input type=\"submit\" name=\"disablecarp\" id=\"disablecarp\" value=\"" . gettext("Enable CARP") . "\" />";
} else {
$carp_enabled = true;
echo "<input type=\"submit\" name=\"disablecarp\" id=\"disablecarp\" value=\"" . gettext("Temporarily Disable CARP") . "\" />";
}
if (isset($config["virtualip_carp_maintenancemode"])) {
echo "<input type=\"submit\" name=\"carp_maintenancemode\" id=\"carp_maintenancemode\" value=\"" . gettext("Leave Persistent CARP Maintenance Mode") . "\" />";
} else {
echo "<input type=\"submit\" name=\"carp_maintenancemode\" id=\"carp_maintenancemode\" value=\"" . gettext("Enter Persistent CARP Maintenance Mode") . "\" />";
} }
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">
<table class="table table-condensed">
<tr>
<td>
<input type="submit" class="btn btn-primary" name="disablecarp" value="<?=($carpcount > 0 && $status) ? gettext("Enable CARP") : gettext("Temporarily Disable CARP") ;?>" />
<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");?> " />
</td>
</tr>
</table>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-striped">
<table class="table table-striped table-sort sortable"> <thead>
<tr> <tr>
<td class="listhdrr" align="center"><?=gettext("CARP Interface"); ?></td> <td><?=gettext("CARP Interface"); ?></td>
<td class="listhdrr" align="center"><?=gettext("Virtual IP"); ?></td> <td><?=gettext("Virtual IP"); ?></td>
<td class="listhdrr" align="center"><?=gettext("Status"); ?></td> <td><?=gettext("Status"); ?></td>
</tr> </tr>
<?php </thead>
if ($carpcount == 0) { <tbody>
echo "</table></div></form><center><br />" . gettext("Could not locate any defined CARP interfaces."); <?php
if ($carpcount == 0):?>
<tr>
} elseif (is_array($config['virtualip']['vip'])) { <td colspan="3"><?=gettext("Could not locate any defined CARP interfaces.");?></td>
foreach ($config['virtualip']['vip'] as $carp) { </tr>
<?php
else:
foreach ($a_vip as $carp):
if ($carp['mode'] != "carp") { if ($carp['mode'] != "carp") {
continue; continue;
} }
$ipaddress = $carp['subnet']; $icon = "";
$password = $carp['password']; $intf_status = get_carp_interface_status("{$carp['interface']}_vip{$carp['vhid']}");
$netmask = $carp['subnet_bits']; if (($carpcount > 0 && $status)) {
$vhid = $carp['vhid']; $icon = "glyphicon glyphicon-remove text-danger";
$advskew = $carp['advskew']; $intf_status = "DISABLED";
$advbase = $carp['advbase']; } elseif ($intf_status == "MASTER") {
$status = get_carp_interface_status("{$carp['interface']}_vip{$carp['vhid']}"); $icon = "glyphicon glyphicon-play text-success";
echo "<tr>"; } elseif ($intf_status == "BACKUP") {
$align = "style=\"vertical-align:middle\""; $icon = "glyphicon glyphicon-play text-muted";
if ($carp_enabled == false) { } elseif ($intf_status == "INIT") {
$icon = "<span {$align} class=\"glyphicon glyphicon-remove text-danger\" alt=\"disabled\" ></span>"; $icon = "glyphicon glyphicon-info-sign";
$status = "DISABLED"; }?>
} else { <tr>
if ($status == "MASTER") { <td><?=convert_friendly_interface_to_friendly_descr($carp['interface']) . "@{$carp['vhid']}" ;?></td>
$icon = "<span {$align} class=\"glyphicon glyphicon-play text-success\" alt=\"master\" ></span>"; <td><?=$carp['subnet'];?></td>
} elseif ($status == "BACKUP") { <td><span class="<?=$icon;?>"></span> <?=$intf_status;?></td>
$icon = "<span {$align} class=\"glyphicon glyphicon-play text-muted\" alt=\"backup\" ></span>"; </tr>
} elseif ($status == "INIT") { <?php
$icon = "<span {$align} class=\"glyphicon glyphicon-info-sign\" alt=\"init\" ></span>"; endforeach;
} endif;?>
} </tbody>
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> </table>
</div> </div>
<hr/>
<div class="col-xs-12"> <div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<td><?=gettext("pfSync nodes");?></td>
</tr>
</thead>
<tbody>
<?php <?php
echo "<br />" . gettext("pfSync nodes") . ":<br />"; if (isset($pfsyncnodes['nodes'])):
echo "<pre>"; foreach ($pfsyncnodes['nodes'] as $node):?>
system("/sbin/pfctl -vvss | /usr/bin/grep creator | /usr/bin/cut -d\" \" -f7 | /usr/bin/sort -u"); <tr>
echo "</pre>"; <td><?=$node;?></td>
?> </tr>
<?php
endforeach;
endif;?>
</tbody>
</table>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
......
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