Files
webgui/emhttp/plugins/dynamix/RoutingTable.page

74 lines
2.9 KiB
Plaintext

Menu="NetworkSettings"
Title="Routing Table"
Tag="icon-share"
---
<?PHP
/* Copyright 2005-2025, Lime Technology
* Copyright 2012-2025, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
?>
<?
unset($list,$other);
exec("ls /sys/class/net|grep -P '^br[0-9]'",$list);
exec("ls /sys/class/net|grep -P '^(bond|eth)[0-9]'",$other);
foreach ($other as $port) {
if (substr($port,0,4)=='bond') {
$br = str_replace('bond','br',$port);
if (!in_array($br,$list)) $list[] = $port;
} else {
$br = str_replace('eth','br',$port);
$bond = str_replace('eth','bond',$port);
if (!in_array($br,$list) && !in_array($bond,$list)) $list[] = $port;
}
}
?>
<script>
function deleteRoute(gateway,route,metric) {
swal({title:"Delete route?",text:route+" by gateway "+gateway,type:"warning",html:true,showCancelButton:true,confirmButtonText:"_(Proceed)_",cancelButtonText:"_(Cancel)_"},function(){
$.post('/webGui/include/RoutingTable.php',{gateway:gateway,route:route,metric:metric,task:'delete'},function(){resetTable();});
});
}
function routeTable() {
$.post('/webGui/include/RoutingTable.php',{task:'update'},function(data){
if (data) $('#route_list').html(data);
timers.routeTable = setTimeout(routeTable,10000);
});
}
function resetTable() {
document.add_routes.route.value = '';
document.add_routes.gateway.value = '';
document.add_routes.metric.value = '';
clearTimeout(timers.routeTable);
routeTable();
}
$(function(){
routeTable();
});
</script>
<table class="unraid">
<thead><tr><td>_(Protocol)_</td><td>_(Route)_</td><td>_(Gateway)_</td><td>_(Metric)_</td><td style="width:8%;text-align:center">_(Delete)_</td></tr></thead>
<tbody id="route_list"></tbody>
</table>
<div class="shade" style="margin-top:12px;padding:12px 4px;">
<form markdown="1" name="add_routes" method="POST" action="/webGui/include/RoutingTable.php" target="progressFrame" onsubmit="setTimeout(resetTable,500)">
_(Enter route + gateway + metric)_:
: <input type="text" name="route" maxlength="39" value="" class="fixed" placeholder="_(IPv4/nn or IPv6/nn route)_" required>
<input type="text" name="gateway" class="fixed" value="" list="device" placeholder="_(gateway name or address)_" required>
<datalist id="device"><?foreach ($list as $port):?><?echo "<option value='$port'>"?><?endforeach;?></datalist>
<input type="text" name="metric" min="1" max="9999" value="" class="trim" placeholder="1"><i class="fa fa-sort-numeric-asc"></i> *_(optional metric (lowest is preferred))_*
<input type="hidden" name="task" value="Add Route">
:eth_routing_table_help:
&nbsp;
: <input type="submit" value="_(Add Route)_"><input type="button" value="_(Done)_" class="lock" onclick="done()">
</form>
</div>