Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpnSense
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kulya
OpnSense
Commits
b9f53dee
Commit
b9f53dee
authored
Feb 19, 2016
by
Ad Schellevis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(legacy) refactor status_dhcpv6_leases.php
parent
ca46899b
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
525 additions
and
563 deletions
+525
-563
status_dhcpv6_leases.php
src/www/status_dhcpv6_leases.php
+525
-563
No files found.
src/www/status_dhcpv6_leases.php
View file @
b9f53dee
<?php
/*
Copyright (C) 2014-2015
Deciso B.V.
Copyright (C) 2014-2016
Deciso B.V.
Copyright (C) 2004-2009 Scott Ullrich
Copyright (C) 2011 Seth Mos
Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
...
...
@@ -34,61 +34,6 @@ require_once("pfsense-utils.inc");
require_once
(
"interfaces.inc"
);
require_once
(
"services.inc"
);
$leasesfile
=
"
{
$g
[
'dhcpd_chroot_path'
]
}
/var/db/dhcpd6.leases"
;
if
((
$_GET
[
'deleteip'
])
&&
(
is_ipaddr
(
$_GET
[
'deleteip'
])))
{
/* Stop DHCPD */
killbyname
(
"dhcpd"
);
/* Read existing leases */
$leases_contents
=
explode
(
"
\n
"
,
file_get_contents
(
$leasesfile
));
$newleases_contents
=
array
();
$i
=
0
;
while
(
$i
<
count
(
$leases_contents
))
{
/* Find the lease(s) we want to delete */
if
(
$leases_contents
[
$i
]
==
" iaaddr
{
$_GET
[
'deleteip'
]
}
{"
)
{
/* The iaaddr line is two lines down from the start of the lease, so remove those two lines. */
array_pop
(
$newleases_contents
);
array_pop
(
$newleases_contents
);
/* Skip to the end of the lease declaration */
do
{
$i
++
;
}
while
(
$leases_contents
[
$i
]
!=
"}"
);
}
else
{
/* It's a line we want to keep, copy it over. */
$newleases_contents
[]
=
$leases_contents
[
$i
];
}
$i
++
;
}
/* Write out the new leases file */
$fd
=
fopen
(
$leasesfile
,
'w'
);
fwrite
(
$fd
,
implode
(
"
\n
"
,
$newleases_contents
));
fclose
(
$fd
);
/* Restart DHCP Service */
services_dhcpd_configure
();
header
(
"Location: status_dhcpv6_leases.php?all=
{
$_GET
[
'all'
]
}
"
);
}
// Load MAC-Manufacturer table
$mac_man
=
load_mac_manufacturer_table
();
$service_hook
=
'dhcpd'
;
include
(
"head.inc"
);
?>
<body>
<?php
include
(
"fbegin.inc"
);
?>
<section
class=
"page-content-main"
>
<div
class=
"container-fluid"
>
<div
class=
"row"
>
<?php
function
leasecmp
(
$a
,
$b
)
{
return
strcmp
(
$a
[
$_GET
[
'order'
]],
$b
[
$_GET
[
'order'
]]);
...
...
@@ -102,10 +47,11 @@ function adjust_gmt($dt) {
$dhcpdv6
=
$config
[
'dhcpdv6'
];
foreach
(
$dhcpdv6
as
$dhcpv6leaseinlocaltime
)
{
$dhcpv6leaseinlocaltime
=
$dhcpv6leaseinlocaltime
[
'dhcpv6leaseinlocaltime'
];
if
(
$dhcpv6leaseinlocaltime
==
"yes"
)
if
(
$dhcpv6leaseinlocaltime
==
"yes"
)
{
break
;
}
}
}
$timezone
=
$config
[
'system'
][
'timezone'
];
$ts
=
strtotime
(
$dt
.
" GMT"
);
...
...
@@ -115,17 +61,19 @@ function adjust_gmt($dt) {
$offset
=
$this_tz
->
getOffset
(
$dhcp_lt
);
$ts
=
$ts
+
$offset
;
return
strftime
(
"%Y/%m/%d %I:%M:%S%p"
,
$ts
);
}
else
}
else
{
return
strftime
(
"%Y/%m/%d %H:%M:%S"
,
$ts
);
}
}
function
remove_duplicate
(
$array
,
$field
)
{
foreach
(
$array
as
$sub
)
foreach
(
$array
as
$sub
)
{
$cmp
[]
=
$sub
[
$field
];
}
$unique
=
array_unique
(
array_reverse
(
$cmp
,
true
));
foreach
(
$unique
as
$k
=>
$rien
)
foreach
(
$unique
as
$k
=>
$rien
)
{
$new
[]
=
$array
[
$k
];
}
return
$new
;
}
...
...
@@ -150,19 +98,24 @@ function parse_duid($duid_string) {
return
array
(
$iaid
,
$duid
);
}
$awk
=
"/usr/bin/awk"
;
/* this pattern sticks comments into a single array item */
$cleanpattern
=
"'{ gsub(
\"
^#.*
\"
,
\"\"
);} { gsub(
\"
^server-duid.*
\"
,
\"\"
);} { gsub(
\"
;$\"
,
\
"
\"
); print;}'"
;
/* We then split the leases file by } */
$splitpattern
=
"'BEGIN { RS=
\"
}
\"
;} {for (i=1; i<=NF; i++) printf
\"
%s
\"
,
\$
i; printf
\"
}
\\
n
\"
;}'"
;
//$leasesfile = "{$g['dhcpd_chroot_path']}/var/db/dhcpd6.leases";
$leasesfile
=
"/tmp/dhcpd6.leases"
;
if
(
$_SERVER
[
'REQUEST_METHOD'
]
===
'GET'
)
{
$awk
=
"/usr/bin/awk"
;
/* stuff the leases file in a proper format into a array by line */
exec
(
"/bin/cat
{
$leasesfile
}
|
{
$awk
}
{
$cleanpattern
}
|
{
$awk
}
{
$splitpattern
}
| /usr/bin/grep '^ia-.. '"
,
$leases_content
);
$leases_count
=
count
(
$leases_content
);
exec
(
"/usr/sbin/ndp -an"
,
$rawdata
);
$ndpdata
=
array
();
foreach
(
$rawdata
as
$line
)
{
/* this pattern sticks comments into a single array item */
$cleanpattern
=
"'{ gsub(
\"
^#.*
\"
,
\"\"
);} { gsub(
\"
^server-duid.*
\"
,
\"\"
);} { gsub(
\"
;$\"
,
\
"
\"
); print;}'"
;
/* We then split the leases file by } */
$splitpattern
=
"'BEGIN { RS=
\"
}
\"
;} {for (i=1; i<=NF; i++) printf
\"
%s
\"
,
\$
i; printf
\"
}
\\
n
\"
;}'"
;
/* stuff the leases file in a proper format into a array by line */
exec
(
"/bin/cat
{
$leasesfile
}
|
{
$awk
}
{
$cleanpattern
}
|
{
$awk
}
{
$splitpattern
}
| /usr/bin/grep '^ia-.. '"
,
$leases_content
);
$leases_count
=
count
(
$leases_content
);
exec
(
"/usr/sbin/ndp -an"
,
$rawdata
);
$ndpdata
=
array
();
foreach
(
$rawdata
as
$line
)
{
$elements
=
preg_split
(
'/\s+/ '
,
$line
);
if
(
$elements
[
1
]
!=
"(incomplete)"
)
{
$ndpent
=
array
();
...
...
@@ -171,18 +124,18 @@ foreach ($rawdata as $line) {
$ndpent
[
'interface'
]
=
trim
(
$elements
[
2
]);
$ndpdata
[
$ip
]
=
$ndpent
;
}
}
}
$pools
=
array
();
$leases
=
array
();
$prefixes
=
array
();
$mappings
=
array
();
$i
=
0
;
$l
=
0
;
$p
=
0
;
$pools
=
array
();
$leases
=
array
();
$prefixes
=
array
();
$mappings
=
array
();
$i
=
0
;
$l
=
0
;
$p
=
0
;
// Put everything together again
while
(
$i
<
$leases_count
)
{
// Put everything together again
while
(
$i
<
$leases_count
)
{
$entry
=
array
();
/* split the line by space */
$duid_split
=
array
();
...
...
@@ -199,7 +152,7 @@ while($i < $leases_count) {
$f
=
0
;
$fcount
=
count
(
$data
);
/* with less then 12 fields there is nothing useful */
if
(
$fcount
<
12
)
{
if
(
$fcount
<
12
)
{
$i
++
;
continue
;
}
...
...
@@ -302,11 +255,11 @@ while($i < $leases_count) {
$f
=
$f
+
2
;
break
;
case
"client-hostname"
:
if
(
$data
[
$f
+
1
]
<>
""
)
{
if
(
$data
[
$f
+
1
]
<>
""
)
{
$entry
[
'hostname'
]
=
preg_replace
(
'/"/'
,
''
,
$data
[
$f
+
1
]);
}
else
{
$hostname
=
gethostbyaddr
(
$entry
[
'ip'
]);
if
(
$hostname
<>
""
)
{
if
(
$hostname
<>
""
)
{
$entry
[
'hostname'
]
=
$hostname
;
}
}
...
...
@@ -327,22 +280,22 @@ while($i < $leases_count) {
$l
++
;
$i
++
;
$is_prefix
=
false
;
}
}
if
(
count
(
$leases
)
>
0
)
{
if
(
count
(
$leases
)
>
0
)
{
$leases
=
remove_duplicate
(
$leases
,
"ip"
);
}
}
if
(
count
(
$prefixes
)
>
0
)
{
if
(
count
(
$prefixes
)
>
0
)
{
$prefixes
=
remove_duplicate
(
$prefixes
,
"prefix"
);
}
}
if
(
count
(
$pools
)
>
0
)
{
if
(
count
(
$pools
)
>
0
)
{
$pools
=
remove_duplicate
(
$pools
,
"name"
);
asort
(
$pools
);
}
}
foreach
(
$config
[
'interfaces'
]
as
$ifname
=>
$ifarr
)
{
foreach
(
$config
[
'interfaces'
]
as
$ifname
=>
$ifarr
)
{
if
(
isset
(
$config
[
'dhcpdv6'
][
$ifname
][
'staticmap'
]))
{
foreach
(
$config
[
'dhcpdv6'
][
$ifname
][
'staticmap'
]
as
$static
)
{
$slease
=
array
();
...
...
@@ -363,83 +316,142 @@ foreach($config['interfaces'] as $ifname => $ifarr) {
$leases
[]
=
$slease
;
}
}
}
}
if
(
$_GET
[
'order'
])
if
(
$_GET
[
'order'
])
{
usort
(
$leases
,
"leasecmp"
);
}
}
elseif
(
$_SERVER
[
'REQUEST_METHOD'
]
===
'POST'
)
{
if
(
!
empty
(
$_POST
[
'deleteip'
])
&&
is_ipaddr
(
$_POST
[
'deleteip'
]))
{
// delete dhcp lease
/* Stop DHCPD */
killbyname
(
"dhcpd"
);
$fin
=
@
fopen
(
$leasesfile
,
"r"
);
$fout
=
@
fopen
(
$leasesfile
.
".new"
,
"w"
);
if
(
$fin
)
{
$ip_to_remove
=
$_POST
[
'deleteip'
];
$iaaddr
=
""
;
$content_to_flush
=
array
();
while
((
$line
=
fgets
(
$fin
,
4096
))
!==
false
)
{
$fields
=
explode
(
' '
,
trim
(
$line
));
if
(
$fields
[
0
]
==
'iaaddr'
)
{
// lease segment, record ip
$iaaddr
=
trim
(
$fields
[
1
]);
$content_to_flush
[]
=
$line
;
}
elseif
(
$fields
[
0
]
==
'ia-na'
||
count
(
$content_to_flush
)
>
0
)
{
$content_to_flush
[]
=
$line
;
}
else
{
// output data directly if we're not in a "ia-na" section
fputs
(
$fout
,
$line
);
}
if
(
$line
==
"}
\n
"
)
{
if
(
$iaaddr
!=
$ip_to_remove
)
{
// write ia-na section
foreach
(
$content_to_flush
as
$cached_line
)
{
fputs
(
$fout
,
$cached_line
);
}
}
else
{
// skip empty line
fgets
(
$fin
,
4096
);
}
// end of segment
$content_to_flush
=
array
();
$iaaddr
=
""
;
}
}
fclose
(
$fin
);
fclose
(
$fout
);
@
unlink
(
$leasesfile
);
@
rename
(
$leasesfile
.
".new"
,
$leasesfile
);
/* Restart DHCP Service */
//services_dhcpd_configure();
}
}
exit
;
}
$service_hook
=
'dhcpd'
;
include
(
"head.inc"
);
/* only print pool status when we have one */
if
(
count
(
$pools
)
>
0
)
{
?>
<body>
<script>
$
(
document
).
ready
(
function
()
{
$
(
"
.act_delete
"
).
click
(
function
(){
$
.
post
(
window
.
location
,
{
deleteip
:
$
(
this
).
data
(
'
deleteip
'
)},
function
(
data
)
{
location
.
reload
();
});
});
});
</script>
<?php
include
(
"fbegin.inc"
);
?>
<section
class=
"page-content-main"
>
<div
class=
"container-fluid"
>
<div
class=
"row"
>
<?php
/* only print pool status when we have one */
if
(
count
(
$pools
)
>
0
)
:?>
<
section
class
="
col
-
xs
-
12
">
<div class="
content
-
box
">
<div class="
table
-
responsive
">
<table class="
table
table
-
striped
table
-
sort
sortable
__nomb
">
<tr>
<td
class=
"listhdrr"
>
<?=
gettext
(
"Failover Group"
);
?>
</a></td>
<td
class=
"listhdrr"
>
<?=
gettext
(
"My State"
);
?>
</a></td>
<td
class=
"listhdrr"
>
<?=
gettext
(
"Since"
);
?>
</a></td>
<td
class=
"listhdrr"
>
<?=
gettext
(
"Peer State"
);
?>
</a></td>
<td
class=
"listhdrr"
>
<?=
gettext
(
"Since"
);
?>
</a></td>
<td><?=gettext("
Failover
Group
"); ?></a></td>
<td><?=gettext("
My
State
"); ?></a></td>
<td><?=gettext("
Since
"); ?></a></td>
<td><?=gettext("
Peer
State
"); ?></a></td>
<td><?=gettext("
Since
"); ?></a></td>
</tr>
<?php
foreach (
$pools
as
$data
):?>
<tr>
<td><?=
$data['name']
;?></td>
<td><?=
$data['mystate']
;?></td>
<td><?=adjust_gmt(
$data['mydate']
);?></td>
<td><?=
$data['peerstate']
;?></td>
<td><?=adjust_gmt(
$data['peerdate']
);?></td>
</tr>
<?php
foreach
(
$pools
as
$data
)
{
echo
"<tr>
\n
"
;
echo
"<td class=
\"
listlr
\"
>
{
$fspans
}{
$data
[
'name'
]
}{
$fspane
}
</td>
\n
"
;
echo
"<td class=
\"
listr
\"
>
{
$fspans
}{
$data
[
'mystate'
]
}{
$fspane
}
</td>
\n
"
;
echo
"<td class=
\"
listr
\"
>
{
$fspans
}
"
.
adjust_gmt
(
$data
[
'mydate'
])
.
"
{
$fspane
}
</td>
\n
"
;
echo
"<td class=
\"
listr
\"
>
{
$fspans
}{
$data
[
'peerstate'
]
}{
$fspane
}
</td>
\n
"
;
echo
"<td class=
\"
listr
\"
>
{
$fspans
}
"
.
adjust_gmt
(
$data
[
'peerdate'
])
.
"
{
$fspane
}
</td>
\n
"
;
echo
"<td class=
\"
list
\"
valign=
\"
middle
\"
width=
\"
17
\"
> </td>
\n
"
;
echo
"<td class=
\"
list
\"
valign=
\"
middle
\"
width=
\"
17
\"
> </td>
\n
"
;
echo
"</tr>
\n
"
;
}
?>
<?php
endforeach;?>
</table>
</div>
</div>
</section>
<?php
/* only print pool status when we have one */
}
?>
endif;?>
<section class="
col
-
xs
-
12
">
<div class="
content
-
box
">
<div class="
table
-
responsive
">
<table
class=
"table table-striped table-sort sortable __nomb"
>
<table class="
table
table
-
striped
">
<thead>
<tr>
<td
class=
"listhdrr"
>
<?=
gettext
(
"IPv6 address"
);
?>
</td>
<td
class=
"listhdrr"
>
<?=
gettext
(
"IAID"
);
?>
</td>
<td
class=
"listhdrr"
>
<?=
gettext
(
"DUID"
);
?>
</td>
<td
class=
"listhdrr"
>
<?=
gettext
(
"Hostname/MAC"
);
?>
</td>
<td
class=
"listhdrr"
>
<?=
gettext
(
"Description"
);
?>
</td>
<td
class=
"listhdrr"
>
<?=
gettext
(
"Start"
);
?>
</td>
<td
class=
"listhdrr"
>
<?=
gettext
(
"End"
);
?>
</td>
<td
class=
"listhdrr"
>
<?=
gettext
(
"Online"
);
?>
</td>
<td
class=
"listhdrr"
>
<?=
gettext
(
"Lease Type"
);
?>
</td>
<th><?=gettext("
IPv6
address
"); ?></th>
<th><?=gettext("
IAID
"); ?></th>
<th><?=gettext("
DUID
"); ?></th>
<th><?=gettext("
Hostname
/
MAC
"); ?></th>
<th><?=gettext("
Description
"); ?></th>
<th><?=gettext("
Start
"); ?></th>
<th><?=gettext("
End
"); ?></th>
<th><?=gettext("
Online
"); ?></th>
<th><?=gettext("
Lease
Type
"); ?></th>
<th></th>
</tr>
<?php
foreach
(
$leases
as
$data
)
{
if
((
$data
[
'act'
]
==
"active"
)
||
(
$data
[
'act'
]
==
"static"
)
||
(
$_GET
[
'all'
]
==
1
))
{
if
(
$data
[
'act'
]
!=
"active"
&&
$data
[
'act'
]
!=
"static"
)
{
$fspans
=
"<span class=
\"
gray
\"
>"
;
$fspane
=
" </span>"
;
}
else
{
$fspans
=
""
;
$fspane
=
" "
;
}
</thead>
<tbody>
<?php
$mac_man
= load_mac_manufacturer_table();
foreach (
$leases
as
$data
):
if (
$data['act']
== "
static
") {
foreach (
$config['dhcpdv6']
as
$dhcpif
=>
$dhcpifconf
) {
if
(
is_array
(
$dhcpifconf
[
'staticmap'
]))
{
if
(is_array(
$dhcpifconf['staticmap']
)) {
foreach (
$dhcpifconf['staticmap']
as
$staticent
) {
if (
$data['ip']
==
$staticent['ipaddr']
) {
$data['if']
=
$dhcpif
;
...
...
@@ -448,138 +460,89 @@ if(count($pools) > 0) {
}
}
/* exit as soon as we have an interface */
if
(
$data
[
'if'
]
!=
""
)
if (
$data['if']
!= "") {
break;
}
}
else
{
$data
[
'if'
]
=
convert_real_interface_to_friendly_interface_name
(
guess_interface_from_ip
(
$data
[
'ip'
]));
}
echo
"<tr>
\n
"
;
echo
"<td class=
\"
listlr
\"
>
{
$fspans
}{
$data
[
'ip'
]
}{
$fspane
}
</td>
\n
"
;
echo
"<td class=
\"
listr
\"
>
{
$fspans
}{
$data
[
'iaid'
]
}{
$fspane
}
</td>
\n
"
;
echo
"<td class=
\"
listr
\"
>
{
$fspans
}{
$data
[
'duid'
]
}{
$fspane
}
</td>
\n
"
;
echo
"<td class=
\"
listr
\"
>
{
$fspans
}
"
;
if
(
!
empty
(
$data
[
'hostname'
]))
{
echo
htmlentities
(
$data
[
'hostname'
])
.
"<br />"
;
}
if
(
isset
(
$data
[
'descr'
]))
{
echo
"<td class=
\"
listr
\"
>
{
$fspans
}
"
.
htmlentities
(
$data
[
'descr'
])
.
"
{
$fspane
}
</td>
\n
"
;
}
else
{
echo
"<td class=
\"
listr
\"
>
{
$fspans
}
n/a
{
$fspane
}
</td>
\n
"
;
}
$mac
=
trim
(
$ndpdata
[
$data
[
'ip'
]][
'mac'
]);
if
(
!
empty
(
$mac
))
{
$mac_hi
=
strtoupper
(
$mac
[
0
]
.
$mac
[
1
]
.
$mac
[
3
]
.
$mac
[
4
]
.
$mac
[
6
]
.
$mac
[
7
]);
print
htmlentities
(
$mac
);
if
(
isset
(
$mac_man
[
$mac_hi
])){
print
"<br /><font size=
\"
-2
\"
><i>
{
$mac_man
[
$mac_hi
]
}
</i></font>"
;
}
}
echo
"
{
$fspane
}
</td>
\n
"
;
if
(
$data
[
'type'
]
!=
"static"
)
{
echo
"<td class=
\"
listr
\"
>
{
$fspans
}
"
.
adjust_gmt
(
$data
[
'start'
])
.
"
{
$fspane
}
</td>
\n
"
;
echo
"<td class=
\"
listr
\"
>
{
$fspans
}
"
.
adjust_gmt
(
$data
[
'end'
])
.
"
{
$fspane
}
</td>
\n
"
;
}
else
{
echo
"<td class=
\"
listr
\"
>
{
$fspans
}
n/a
{
$fspane
}
</td>
\n
"
;
echo
"<td class=
\"
listr
\"
>
{
$fspans
}
n/a
{
$fspane
}
</td>
\n
"
;
}
echo
"<td class=
\"
listr
\"
>
{
$fspans
}{
$data
[
'online'
]
}{
$fspane
}
</td>
\n
"
;
echo
"<td class=
\"
listr
\"
>
{
$fspans
}{
$data
[
'act'
]
}{
$fspane
}
</td>
\n
"
;
if
(
$data
[
'type'
]
==
"dynamic"
)
{
echo
"<td valign=
\"
middle
\"
style=
\"
padding-left: 0px;
\"
><a href=
\"
services_dhcpv6_edit.php?if=
{
$data
[
'if'
]
}
&duid=
{
$data
[
'duid'
]
}
&hostname=
{
$data
[
'hostname'
]
}
\"
class=
\"
btn btn-default btn-xs
\"
>"
;
echo
"<span class=
\"
glyphicon glyphicon-plus
\"
></span></a><br />
\n
"
;
} else {
echo
"<td class=
\"
list
\"
valign=
\"
middle
\"
style=
\"
padding-left: 0px;
\"
>"
;
echo
"<span class=
\"
glyphicon glyphicon-plus
\"
></span>
\n
"
;
}
/* Only show the button for offline dynamic leases */
if
((
$data
[
'type'
]
==
"dynamic"
)
&&
(
$data
[
'online'
]
!=
"online"
))
{
echo
"<a href=
\"
status_dhcpv6_leases.php?deleteip=
{
$data
[
'ip'
]
}
&all="
.
htmlspecialchars
(
$_GET
[
'all'
])
.
"
\"
class=
\"
btn btn-default btn-xs
\"
>"
;
echo
"<span class=
\"
glyphicon glyphicon-remove
\"
></span></a></td>
\n
"
;
}
echo
"</tr>
\n
"
;
}
$data['if']
= convert_real_interface_to_friendly_interface_name(guess_interface_from_ip(
$data['ip']
));
}
?>
<tr>
<td><?=
$data['ip']
;?></td>
<td><?=
$data['iaid']
;?></td>
<td><?=
$data['duid']
;?></td>
<td><?=!empty(
$data['hostname']
) ? htmlentities(
$data['hostname']
) : "";?></td>
<td><?=htmlentities(
$data['descr']
);?> <?=!empty(
$ndpdata[$data['ip']]['mac']
) ?
$ndpdata[$data['ip']]['mac']
: "";?></td>
<td><?=
$data['type']
!= "
static
" ? adjust_gmt(
$data['start']
) : "";?></td>
<td><?=
$data['type']
!= "
static
" ? adjust_gmt(
$data['end']
) : "";?></td>
<td><?=
$data['online']
;?></td>
<td><?=
$data['act']
;?></td>
<td>
<?php
if (
$data['type']
== "
dynamic
"):?>
<a class="
btn
btn
-
default
btn
-
xs
" href="
services_dhcpv6_edit
.
php
?
if
=<?=
$data
[
'if'
];
?>
&
mac=
<?=
$data
[
'mac'
];
?>
&
hostname=
<?=
$data
[
'hostname'
];
?>
">
<span
class=
"glyphicon glyphicon-plus"
data-toggle=
"tooltip"
title=
"
<?=
gettext
(
"add a static mapping for this MAC address"
);
?>
"
alt=
"add"
></span>
</a>
<?php
endif
;
?>
<?php
if
((
$data
[
'type'
]
==
"dynamic"
)
&&
(
$data
[
'online'
]
!=
"online"
))
:?>
<
a
class
="
act_delete
btn
btn
-
default
btn
-
xs
" href="
#" data-deleteip="<?=$data['ip'];?>">
<
span
class
="
fa
fa
-
trash
text
-
muted
" title="
<?=
gettext
(
"delete this DHCP lease"
);
?>
" data-toggle="tooltip" alt="delete" >
</span>
</a>
<?php
endif
;
?>
</td>
</tr>
<?php
endforeach
;
?>
</tbody>
</table>
</div>
</div>
</section>
<section
class=
"col-xs-12"
>
<div
class=
"content-box"
>
<header
class=
"content-box-head container-fluid"
>
<h3>
Delegated Prefixes
</h3>
<h3>
<?=
gettext
(
"Delegated Prefixes"
);
?>
</h3>
</header>
<div
class=
"table-responsive"
>
<table
class=
"table table-striped table-sort sortable __nomb"
>
<table
class=
"table table-striped"
>
<thead>
<tr>
<td
class=
"listhdrr"
>
<?=
gettext
(
"IPv6 Prefix"
);
?>
</td
>
<td
class=
"listhdrr"
>
<?=
gettext
(
"IAID"
);
?>
</td
>
<td
class=
"listhdrr"
>
<?=
gettext
(
"DUID"
);
?>
</td
>
<td
class=
"listhdrr"
>
<?=
gettext
(
"Start"
);
?>
</td
>
<td
class=
"listhdrr"
>
<?=
gettext
(
"End"
);
?>
</td
>
<td
class=
"listhdrr"
>
<?=
gettext
(
"State"
);
?>
</td
>
<th>
<?=
gettext
(
"IPv6 Prefix"
);
?>
</th
>
<th>
<?=
gettext
(
"IAID"
);
?>
</th
>
<th>
<?=
gettext
(
"DUID"
);
?>
</th
>
<th>
<?=
gettext
(
"Start"
);
?>
</th
>
<th>
<?=
gettext
(
"End"
);
?>
</th
>
<th>
<?=
gettext
(
"State"
);
?>
</th
>
</tr>
<?php
foreach
(
$prefixes
as
$data
)
{
if
((
$data
[
'act'
]
==
"active"
)
||
(
$data
[
'act'
]
==
"static"
)
||
(
$_GET
[
'all'
]
==
1
))
{
if
(
$data
[
'act'
]
!=
"active"
&&
$data
[
'act'
]
!=
"static"
)
{
$fspans
=
"<span class=
\"
gray
\"
>"
;
$fspane
=
" </span>"
;
}
else
{
$fspans
=
""
;
$fspane
=
" "
;
}
if
(
$data
[
'act'
]
==
"static"
)
{
foreach
(
$config
[
'dhcpdv6'
]
as
$dhcpif
=>
$dhcpifconf
)
{
if
(
is_array
(
$dhcpifconf
[
'staticmap'
]))
{
foreach
(
$dhcpifconf
[
'staticmap'
]
as
$staticent
)
{
if
(
$data
[
'ip'
]
==
$staticent
[
'ipaddr'
])
{
$data
[
'if'
]
=
$dhcpif
;
break
;
}
}
}
/* exit as soon as we have an interface */
if
(
$data
[
'if'
]
!=
""
)
break
;
}
}
else
{
$data
[
'if'
]
=
convert_real_interface_to_friendly_interface_name
(
guess_interface_from_ip
(
$data
[
'ip'
]));
}
echo
"<tr>
\n
"
;
if
(
$mappings
[
$data
[
'iaid'
]
.
$data
[
'duid'
]])
{
$dip
=
"<br />Routed To:
{
$mappings
[
$data
[
'iaid'
]
.
$data
[
'duid'
]]
}
"
;
}
echo
"<td class=
\"
listlr
\"
>
{
$fspans
}{
$data
[
'prefix'
]
}{
$dip
}{
$fspane
}
</td>
\n
"
;
echo
"<td class=
\"
listr
\"
>
{
$fspans
}{
$data
[
'iaid'
]
}{
$fspane
}
</td>
\n
"
;
echo
"<td class=
\"
listr
\"
>
{
$fspans
}{
$data
[
'duid'
]
}{
$fspane
}
</td>
\n
"
;
if
(
$data
[
'type'
]
!=
"static"
)
{
echo
"<td class=
\"
listr
\"
>
{
$fspans
}
"
.
adjust_gmt
(
$data
[
'start'
])
.
"
{
$fspane
}
</td>
\n
"
;
echo
"<td class=
\"
listr
\"
>
{
$fspans
}
"
.
adjust_gmt
(
$data
[
'end'
])
.
"
{
$fspane
}
</td>
\n
"
;
}
else
{
echo
"<td class=
\"
listr
\"
>
{
$fspans
}
n/a
{
$fspane
}
</td>
\n
"
;
echo
"<td class=
\"
listr
\"
>
{
$fspans
}
n/a
{
$fspane
}
</td>
\n
"
;
}
echo
"<td class=
\"
listr
\"
>
{
$fspans
}{
$data
[
'act'
]
}{
$fspane
}
</td>
\n
"
;
echo
"</tr>
\n
"
;
}
}
?>
</thead>
<tbody>
<?php
foreach
(
$prefixes
as
$data
)
:?>
<
tr
>
<
td
>
<?=!
empty
(
$mappings
[
$data
[
'iaid'
]
.
$data
[
'duid'
]])
?
$mappings
[
$data
[
'iaid'
]
.
$data
[
'duid'
]]
:
""
;
?>
<?=
$data
[
'prefix'
];
?>
</td>
<td>
<?=
$data
[
'prefix'
];
?>
</td>
<td>
<?=
$data
[
'iaid'
];
?>
</td>
<td>
<?=
$data
[
'type'
]
!=
"static"
?
adjust_gmt
(
$data
[
'start'
])
:
""
;
?>
</td>
<td>
<?=
$data
[
'type'
]
!=
"static"
?
adjust_gmt
(
$data
[
'end'
])
:
""
;
?>
</td>
<td>
<?=
$data
[
'act'
];
?>
</td>
</tr>
<?php
endforeach
;
?>
</tbody>
</table>
</div>
</div>
</section>
<section
class=
"col-xs-12"
>
<form
action=
"status_dhcpv6_leases.php"
method=
"get"
>
<input
type=
"hidden"
name=
"order"
value=
"
<?=
htmlspecialchars
(
$_GET
[
'order'
]);
?>
"
/>
<?php
if
(
$_GET
[
'all'
])
:
?>
...
...
@@ -590,10 +553,9 @@ if(count($pools) > 0) {
<input
type=
"submit"
class=
"btn btn-default"
value=
"
<?=
gettext
(
"Show all configured leases"
);
?>
"
/>
<?php
endif
;
?>
</form>
<?php
if
(
$leases
==
0
)
:
?>
<?php
if
(
$leases
==
0
)
:
?>
<p><strong>
<?=
gettext
(
"No leases file found. Is the DHCP server active"
);
?>
?
</strong></p>
<?php
endif
;
?>
</section>
</div>
</div>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment