system_gateway_groups.php 7.92 KB
Newer Older
Ad Schellevis's avatar
Ad Schellevis committed
1
<?php
2

Ad Schellevis's avatar
Ad Schellevis committed
3
/*
4
	Copyright (C) 2014-2015 Deciso B.V.
Ad Schellevis's avatar
Ad Schellevis committed
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
	Copyright (C) 2010 Seth Mos <seth.mos@dds.nl>.
	All rights reserved.

	Redistribution and use in source and binary forms, with or without
	modification, are permitted provided that the following conditions are met:

	1. Redistributions of source code must retain the above copyright notice,
	   this list of conditions and the following disclaimer.

	2. Redistributions in binary form must reproduce the above copyright
	   notice, this list of conditions and the following disclaimer in the
	   documentation and/or other materials provided with the distribution.

	THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
	AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
	OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
	POSSIBILITY OF SUCH DAMAGE.
*/

30
require_once("guiconfig.inc");
31
require_once("functions.inc");
Ad Schellevis's avatar
Ad Schellevis committed
32 33 34
require_once("filter.inc");
require_once("openvpn.inc");

35
if (!is_array($config['gateways'])) {
36
    $config['gateways'] = array();
37 38 39
}

if (!is_array($config['gateways']['gateway_item'])) {
40
    $config['gateways']['gateway_item'] = array();
41 42 43
}

if (!is_array($config['gateways']['gateway_group'])) {
44
    $config['gateways']['gateway_group'] = array();
45
}
Ad Schellevis's avatar
Ad Schellevis committed
46 47 48 49 50 51

$a_gateway_groups = &$config['gateways']['gateway_group'];
$a_gateways = &$config['gateways']['gateway_item'];
$changedesc = gettext("Gateway Groups") . ": ";

if ($_POST) {
52
    $pconfig = $_POST;
Ad Schellevis's avatar
Ad Schellevis committed
53

54 55
    if ($_POST['apply']) {
        $retval = 0;
Ad Schellevis's avatar
Ad Schellevis committed
56

57
        $retval = system_routing_configure();
Ad Schellevis's avatar
Ad Schellevis committed
58

59 60 61
        configd_run('dyndns reload');
        configd_run('ipsecdns reload');
        configd_run('filter reload');
Ad Schellevis's avatar
Ad Schellevis committed
62

63 64
        /* reconfigure our gateway monitor */
        setup_gateways_monitor();
65

66 67 68 69
        $savemsg = get_std_save_message($retval);
        if ($retval == 0) {
            clear_subsystem_dirty('staticroutes');
        }
Ad Schellevis's avatar
Ad Schellevis committed
70

71 72 73 74 75 76 77 78
        foreach ($a_gateway_groups as $gateway_group) {
            $gw_subsystem = 'gwgroup.' . $gateway_group['name'];
            if (is_subsystem_dirty($gw_subsystem)) {
                openvpn_resync_gwgroup($gateway_group['name']);
                clear_subsystem_dirty($gw_subsystem);
            }
        }
    }
Ad Schellevis's avatar
Ad Schellevis committed
79 80 81
}

if ($_GET['act'] == "del") {
82 83 84 85 86 87 88 89 90 91 92 93 94
    if ($a_gateway_groups[$_GET['id']]) {
        $changedesc .= gettext("removed gateway group") . " {$_GET['id']}";
        foreach ($config['filter']['rule'] as $idx => $rule) {
            if ($rule['gateway'] == $a_gateway_groups[$_GET['id']]['name']) {
                unset($config['filter']['rule'][$idx]['gateway']);
            }
        }
        unset($a_gateway_groups[$_GET['id']]);
        write_config($changedesc);
        mark_subsystem_dirty('staticroutes');
        header("Location: system_gateway_groups.php");
        exit;
    }
Ad Schellevis's avatar
Ad Schellevis committed
95 96 97 98 99 100 101
}

$pgtitle = array(gettext("System"),gettext("Gateway Groups"));
$shortcut_section = "gateway-groups";

include("head.inc");

Ad Schellevis's avatar
Ad Schellevis committed
102
$main_buttons = array(
103
    array('label'=>'Add group', 'href'=>'system_gateway_groups_edit.php'),
Ad Schellevis's avatar
Ad Schellevis committed
104 105
);

Ad Schellevis's avatar
Ad Schellevis committed
106 107
?>

Ad Schellevis's avatar
Ad Schellevis committed
108
<body>
Ad Schellevis's avatar
Ad Schellevis committed
109
<?php include("fbegin.inc"); ?>
Ad Schellevis's avatar
Ad Schellevis committed
110 111 112


	<section class="page-content-main">
113
		<div class="container-fluid">
Ad Schellevis's avatar
Ad Schellevis committed
114
			<div class="row">
115

116
				<?php if (isset($savemsg)) {
117 118 119 120
                    print_info_box($savemsg);
} ?>
				<?php if (is_subsystem_dirty('staticroutes')) :
?><br/>
Ad Schellevis's avatar
Ad Schellevis committed
121
				<?php print_info_box_np(sprintf(gettext("The gateway configuration has been changed.%sYou must apply the changes in order for them to take effect."), "<br />"));?><br /><br />
122 123
				<?php
endif; ?>
124

Ad Schellevis's avatar
Ad Schellevis committed
125
			    <section class="col-xs-12">
126

127
				<? include('system_gateways_tabs.inc'); ?>
128 129 130 131

					<div class="tab-content content-box col-xs-12">

				    <div class="container-fluid">
Ad Schellevis's avatar
Ad Schellevis committed
132 133 134

	                        <form action="system_gateway_groups.php" method="post" name="iform" id="iform">
								<input type="hidden" name="y1" value="1" />
135

Ad Schellevis's avatar
Ad Schellevis committed
136 137 138 139 140 141 142 143 144
	                        <div class="table-responsive">
		                        <table class="table table-striped table-sort">
									<thead>
						                <tr>
						                  <td width="15%" class="listhdrr"><?=gettext("Group Name");?></td>
						                  <td width="15%" class="listhdrr"><?=gettext("Gateways");?></td>
						                  <td width="20%" class="listhdrr"><?=gettext("Priority");?></td>
						                  <td width="30%" class="listhdr"><?=gettext("Description");?></td>
						                  <td width="10%" class="list">
145 146

											</td>
Ad Schellevis's avatar
Ad Schellevis committed
147 148 149
								</tr>
								</thead>
								<tbody>
150 151
                                        <?php $i = 0; foreach ($a_gateway_groups as $gateway_group) :
?>
Ad Schellevis's avatar
Ad Schellevis committed
152 153 154
						                <tr>
						                  <td class="listlr" ondblclick="document.location='system_gateway_groups_edit.php?id=<?=$i;?>';">
						                    <?php
155 156
                                            echo $gateway_group['name'];
                                ?>
Ad Schellevis's avatar
Ad Schellevis committed
157 158 159
						                  </td>
						                  <td class="listr" ondblclick="document.location='system_gateway_groups_edit.php?id=<?=$i;?>';">
						                    <?php
160 161 162 163 164
                                            foreach ($gateway_group['item'] as $item) {
                                                $itemsplit = explode("|", $item);
                                                echo htmlspecialchars(strtoupper($itemsplit[0])) . "<br />\n";
                                            }
                                    ?>
Ad Schellevis's avatar
Ad Schellevis committed
165 166 167
						                  </td>
						                  <td class="listr" ondblclick="document.location='system_gateway_groups_edit.php?id=<?=$i;?>';">
								    <?php
168 169 170 171 172
                                    foreach ($gateway_group['item'] as $item) {
                                        $itemsplit = explode("|", $item);
                                        echo "Tier ". htmlspecialchars($itemsplit[1]) . "<br />\n";
                                    }
                                    ?>
Ad Schellevis's avatar
Ad Schellevis committed
173 174 175 176 177 178 179 180
						                  </td>
						                  <td class="listbg" ondblclick="document.location='system_gateway_groups_edit.php?id=<?=$i;?>';">
										<?=htmlspecialchars($gateway_group['descr']);?>&nbsp;
						                  </td>
						                  <td valign="middle" class="list nowrap">
									<table border="0" cellspacing="0" cellpadding="1" summary="edit">
									   <tr>
										<td><a href="system_gateway_groups_edit.php?id=<?=$i;?>" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-pencil"></span></a></td>
181 182
										<td><a href="system_gateway_groups.php?act=del&amp;id=<?=$i;
?>" onclick="return confirm('<?=gettext("Do you really want to delete this gateway group?");?>')" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-remove"></span></a></td>
Ad Schellevis's avatar
Ad Schellevis committed
183 184 185 186 187 188 189 190
									   </tr>
									   <tr>
										<td width="17"></td>
										<td><a href="system_gateway_groups_edit.php?dup=<?=$i;?>" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-plus"></span></a></td>
									   </tr>
									</table>
						                  </td>
								</tr>
191 192 193
                                        <?php $i++;

endforeach; ?>
Ad Schellevis's avatar
Ad Schellevis committed
194 195 196 197
						                <tr style="display:none;"><td></td></tr>
								</tbody>
									</table>
									</div>
198 199
									<p><b><?=gettext("Note:");
?></b>  <?=gettext("Remember to use these Gateway Groups in firewall rules in order to enable load balancing, failover, or policy-based routing. Without rules directing traffic into the Gateway Groups, they will not be used.");?></p>
Ad Schellevis's avatar
Ad Schellevis committed
200
							</form>
201

Ad Schellevis's avatar
Ad Schellevis committed
202 203 204 205 206 207
							</div>
							</div>
							</section>
							</div>
							</div>
							</section>
208 209


210
<?php include("foot.inc");