-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreate.web.ajOnuFdb.pl
More file actions
76 lines (69 loc) · 2.83 KB
/
create.web.ajOnuFdb.pl
File metadata and controls
76 lines (69 loc) · 2.83 KB
1
2
3
4
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#<ACTION> file=>'web/ajOnuFdb.pl',hook=>'new'
# -------------------------- NoDeny --------------------------
# Created by Redmen for NoDeny (https://nodeny.com.ua)
# https://forum.nodeny.com.ua/index.php?action=profile;u=1139
# https://t.me/MrMethod
# ------------------------------------------------------------
# Info: PON monitor FDB
# NoDeny: rev. 718
# Update: 2025.11.01
# ------------------------------------------------------------
use strict;
sub go {
my $domid = ses::input('domid');
my $res = _proc($_[0], $domid);
$res && push @$ses::cmd, {
id => $domid,
data => $res,
};
}
sub _proc {
my ($Url, $domid) = @_;
my $llid = ses::input('llid');
my $olt_id = ses::input_int('olt_id');
my $clear = ses::input_int('clear') || 0;
my $admin = Adm->chk_privil('SuperAdmin') || Adm->chk_privil('Admin') || Adm->chk_privil(1204);
$admin or return $lang::err_no_priv;
if ($clear == 1) {
my $block_domid = ses::input('block_id');
my $clear_link = url->a(L('Очистити?'), a=>'ajOnuFdb', olt_id=>$olt_id, llid=>$llid, clear=>2, block_id=>$block_domid, -ajax=>1, -class=>'error');
push @$ses::cmd, {
id => $domid,
data => $clear_link,
};
return '';
}
if ($clear == 2) {
Db->do("DELETE from pon_fdb WHERE llid=? AND olt_id=?", $llid, $olt_id);
$domid = ses::input('block_id');
push @$ses::cmd, {
id => $domid,
data => '',
};
}
my $db = Db->sql(
"SELECT f.*, i.auth, i.ip as ipa FROM pon_fdb f LEFT JOIN v_ips i ON (i.uid = f.uid AND i.properties LIKE CONCAT('%user=', LOWER(REPLACE(`mac`,':','')),';%')) ".
"WHERE olt_id=? AND llid=?", $olt_id, $llid
);
return '' if !$db->rows;
my $user_field = Set_usr_field_line();
my $tbl = tbl->new(-class=>'td_wide pretty');
while (my %p = $db->line) {
my $auth = $p{auth} ? [ v::tag('img', src=>$cfg::img_url.'/on.gif') ] : '';
my $client = $p{uid} ? [ Show_usr_info($p{uid}, $user_field) ] : '';
my $mac = $p{mac};
$mac =~ s/(..)(?=.)/$1:/g if $mac !~ m/:/;
$tbl->add($p{uid} ? '*' : 'rowoff', [
[ '', L('Клиент'), $client ],
[ '', L('MAC'), uc($mac) ],
[ '', L('VLAN'), $p{vlan} ],
[ '', '', $p{auth} ? [ v::tag('img', src=>$cfg::img_url.'/on.gif') ] : '' ],
[ '', L('IP'), $p{ipa} ],
[ '', L('Оновлено'), the_time($p{time}) ],
]);
}
my $link_domid = v::get_uniq_id();
my $clear_link = url->a(L('Очистити'), a=>'ajOnuFdb', olt_id=>$olt_id, llid=>$llid, clear=>1, -id=>$link_domid, '-data-domid'=>$link_domid, block_id=>$domid, -ajax=>1);
return WideBox(msg=>$tbl->show, title=>L('FDB кеш') . " | ${clear_link}");
}
1;