Commit 22f9c097 authored by Ad Schellevis's avatar Ad Schellevis Committed by Franco Fichtner

(legacy) refactor carp_status.php

(cherry picked from commit 90ee04ce)
parent 8685970a
......@@ -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);
$status = get_carp_status();
if ($_POST['carp_maintenancemode'] <> "") {
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!empty($_POST['carp_maintenancemode'])) {
interfaces_carp_set_maintenancemode(!isset($config["virtualip_carp_maintenancemode"]));
}
if ($_POST['disablecarp'] <> "") {
if ($status == true) {
} elseif (!empty($_POST['disablecarp'])) {
if (get_single_sysctl('net.inet.carp.allow') > 0) {
$carp_counter = 0;
set_single_sysctl('net.inet.carp.allow', '0');
if (is_array($config['virtualip']['vip'])) {
$viparr = &$config['virtualip']['vip'];
foreach ($viparr as $vip) {
foreach ($a_vip as $vip) {
switch ($vip['mode']) {
case "carp":
interface_vip_bring_down($vip);
$carp_counter++;
sleep(1);
break;
}
}
}
$savemsg = sprintf(gettext("%s IPs have been disabled. Please note that disabling does not survive a reboot."), $carp_counter);
} else {
$savemsg = gettext("CARP has been enabled.");
if (is_array($config['virtualip']['vip'])) {
$viparr = &$config['virtualip']['vip'];
foreach ($viparr as $vip) {
foreach ($a_vip as $vip) {
switch ($vip['mode']) {
case "carp":
interface_carp_configure($vip);
......@@ -84,126 +84,119 @@ if ($_POST['disablecarp'] <> "") {
break;
}
}
}
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");
?>
<body>
<?php include("fbegin.inc"); ?>
<section class="page-content-main">
<div class="container-fluid">
<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
$carpcount = 0;
if (isset($config['virtualip']['vip'])) {
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 (isset($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."));
}
?>
<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">
<table class="table table-striped table-sort sortable">
<table class="table table-striped">
<thead>
<tr>
<td class="listhdrr" align="center"><?=gettext("CARP Interface"); ?></td>
<td class="listhdrr" align="center"><?=gettext("Virtual IP"); ?></td>
<td class="listhdrr" align="center"><?=gettext("Status"); ?></td>
<td><?=gettext("CARP Interface"); ?></td>
<td><?=gettext("Virtual IP"); ?></td>
<td><?=gettext("Status"); ?></td>
</tr>
<?php
if ($carpcount == 0) {
echo "</table></div></form><center><br />" . gettext("Could not locate any defined CARP interfaces.");
} elseif (is_array($config['virtualip']['vip'])) {
foreach ($config['virtualip']['vip'] as $carp) {
</thead>
<tbody>
<?php
if ($carpcount == 0):?>
<tr>
<td colspan="3"><?=gettext("Could not locate any defined CARP interfaces.");?></td>
</tr>
<?php
else:
foreach ($a_vip as $carp):
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>";
}
}
?>
$icon = "";
$intf_status = get_carp_interface_status("{$carp['interface']}_vip{$carp['vhid']}");
if (($carpcount > 0 && $status)) {
$icon = "glyphicon glyphicon-remove text-danger";
$intf_status = "DISABLED";
} elseif ($intf_status == "MASTER") {
$icon = "glyphicon glyphicon-play text-success";
} elseif ($intf_status == "BACKUP") {
$icon = "glyphicon glyphicon-play text-muted";
} elseif ($intf_status == "INIT") {
$icon = "glyphicon glyphicon-info-sign";
}?>
<tr>
<td><?=convert_friendly_interface_to_friendly_descr($carp['interface']) . "@{$carp['vhid']}" ;?></td>
<td><?=$carp['subnet'];?></td>
<td><span class="<?=$icon;?>"></span> <?=$intf_status;?></td>
</tr>
<?php
endforeach;
endif;?>
</tbody>
</table>
</div>
<div class="col-xs-12">
<hr/>
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<td><?=gettext("pfSync nodes");?></td>
</tr>
</thead>
<tbody>
<?php
echo "<br />" . gettext("pfSync nodes") . ":<br />";
echo "<pre>";
system("/sbin/pfctl -vvss | /usr/bin/grep creator | /usr/bin/cut -d\" \" -f7 | /usr/bin/sort -u");
echo "</pre>";
?>
if (isset($pfsyncnodes['nodes'])):
foreach ($pfsyncnodes['nodes'] as $node):?>
<tr>
<td><?=$node;?></td>
</tr>
<?php
endforeach;
endif;?>
</tbody>
</table>
</div>
</div>
</section>
</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