#!/usr/bin/perl # Show a status of all active jails use strict; use warnings; no warnings 'redefine'; no warnings 'uninitialized'; require './fail2ban-lib.pl'; our (%in, %text, %config); &ui_print_header(undef, $text{'status_title2'}, ""); my $out = &backquote_logged("$config{'client_cmd'} status 2>&1 </dev/null"); my ($jail_list) = $out =~ /jail\s+list:\s*(.*)/im; my @jails = split(/,\s*/, $jail_list); if (@jails) { my $tdc = 'style="text-align: center;"'; my $tal = 'style="text-align: right; font-size: 96%;"'; my $lwf = 'style="width: 100%; padding-right: 4px;"'; my @links = ( &select_all_link("jail"), &select_invert_link("jail") ); my $head; my @jipsall; foreach my $jail (@jails) { my $fh = 'cmdjail'; my $cmd = "$config{'client_cmd'} status ".quotemeta($jail); my $jcmd = "$cmd 2>&1 </dev/null"; my @head = (undef, $text{"status_head_jail_name"}); my @body = (&ui_link("edit_jail.cgi?name=".urlize($jail), " ".&html_escape($jail))); my $br = '<br>'; my $nbsp = ' '; my $ipslimit = sub { my ($ips, $limit) = @_; $limit ||= 15; # Limit sanity check $limit = 1 if ($limit < 1); my $ipscount = () = $ips =~ /$br/g; if ($ipscount > $limit) { my @ips = split($br, $ips); @ips = @ips[0 .. $limit]; $ips = join($br, @ips); $ips .= "<small style='cursor: default;'>$br".&text('status_rules_plus_more', $ipscount-$limit)."</small>"; } return $ips; }; my $jips; &open_execute_command($fh, $jcmd, 1); while(<$fh>) { if (/-\s+(.*?):\s*(.*)/) { my $col = $1; my $val = $2; $col = lc($col); $col =~ s/\s/_/g; if ($col !~ /journal_matches/ && $col !~ /file_list/) { push(@head, "<div $tdc>".$text{"status_head_$col"}."</div>"); if ($col =~ /banned_ip_list/) { $jips = $val; my @ips = split(/\s+/, $val); @ips = map { "<small $tal><tt><label $lwf>" . &ui_link("unblock_jail.cgi?unblock=1&jips-@{[&urlize($jail)]}=@{[&urlize($_)]}&jail=@{[&urlize($jail)]}", $_, undef, "title=\"@{[&text('status_jail_unblock_ip', "e_escape($_))]}\" onmouseover=\"this.style.textDecoration='line-through'\" onmouseout=\"this.style.textDecoration='none'\"" ) . "</label></tt></small>" } @ips; $val = "<br>" if ($val); $val .= join('<br>', @ips); $val = &$ipslimit($val); $val .= "<br><br>" if ($val); $val .= "–" if (!$val); } push(@body, $val); } } } close($fh); if (!$head++) { print &ui_form_start("unblock_jail.cgi", "post"); print &ui_links_row(\@links); print &ui_columns_start(\@head); } print &ui_checked_columns_row(\@body, [ 'width=5', undef, $tdc, $tdc, $tdc, $tdc, $tdc ], "jail", $jail); push(@jipsall, ["$jail" => $jips]); } if ($head) { print &ui_columns_end(); print &ui_links_row(\@links); foreach my $j (@jipsall) { print &ui_hidden("jips-$j->[0]", "$j->[1]"); } print &ui_form_end([ [ 'unblock', $text{'status_jail_unblock'} ] ]); } } else { print $text{'status_jail_noactive'}; } &ui_print_footer("", $text{'index_return'});
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
CHANGELOG | File | 110 B | 0644 |
|
atboot.cgi | File | 919 B | 0755 |
|
backup_config.pl | File | 771 B | 0755 |
|
config | File | 100 B | 0644 |
|
config-debian-linux | File | 118 B | 0644 |
|
config-redhat-linux | File | 118 B | 0644 |
|
config-syno-linux | File | 100 B | 0644 |
|
config.info | File | 196 B | 0644 |
|
config.info.ca | File | 249 B | 0644 |
|
config.info.de | File | 202 B | 0644 |
|
config.info.fr | File | 231 B | 0644 |
|
config.info.ms | File | 201 B | 0644 |
|
config.info.no | File | 203 B | 0644 |
|
config.info.pl | File | 232 B | 0644 |
|
delete_actions.cgi | File | 877 B | 0755 |
|
delete_filters.cgi | File | 877 B | 0755 |
|
delete_jails.cgi | File | 624 B | 0755 |
|
edit_action.cgi | File | 2.12 KB | 0755 |
|
edit_config.cgi | File | 1.67 KB | 0755 |
|
edit_filter.cgi | File | 1.67 KB | 0755 |
|
edit_jail.cgi | File | 3.91 KB | 0755 |
|
edit_jaildef.cgi | File | 2.57 KB | 0755 |
|
edit_manual.cgi | File | 1.05 KB | 0755 |
|
fail2ban-lib.pl | File | 13.86 KB | 0644 |
|
index.cgi | File | 2.15 KB | 0755 |
|
install_check.pl | File | 465 B | 0755 |
|
list_actions.cgi | File | 1.15 KB | 0755 |
|
list_filters.cgi | File | 1.2 KB | 0755 |
|
list_jails.cgi | File | 1.55 KB | 0755 |
|
list_status.cgi | File | 3.04 KB | 0755 |
|
log_parser.pl | File | 804 B | 0755 |
|
module.info | File | 201 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 150 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 233 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 225 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 239 B | 0644 |
|
module.info.ca | File | 149 B | 0644 |
|
module.info.cs | File | 0 B | 0644 |
|
module.info.cs.auto | File | 161 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 157 B | 0644 |
|
module.info.de | File | 138 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 291 B | 0644 |
|
module.info.es | File | 0 B | 0644 |
|
module.info.es.auto | File | 152 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 157 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 220 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 175 B | 0644 |
|
module.info.fr | File | 0 B | 0644 |
|
module.info.fr.auto | File | 180 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 201 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 141 B | 0644 |
|
module.info.hu | File | 0 B | 0644 |
|
module.info.hu.auto | File | 159 B | 0644 |
|
module.info.it | File | 0 B | 0644 |
|
module.info.it.auto | File | 163 B | 0644 |
|
module.info.ja | File | 0 B | 0644 |
|
module.info.ja.auto | File | 187 B | 0644 |
|
module.info.ko | File | 0 B | 0644 |
|
module.info.ko.auto | File | 167 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 171 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 162 B | 0644 |
|
module.info.ms | File | 161 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 176 B | 0644 |
|
module.info.nl | File | 0 B | 0644 |
|
module.info.nl.auto | File | 156 B | 0644 |
|
module.info.no | File | 36 B | 0644 |
|
module.info.no.auto | File | 114 B | 0644 |
|
module.info.pl | File | 158 B | 0644 |
|
module.info.pt | File | 0 B | 0644 |
|
module.info.pt.auto | File | 161 B | 0644 |
|
module.info.pt_BR | File | 0 B | 0644 |
|
module.info.pt_BR.auto | File | 167 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 186 B | 0644 |
|
module.info.ru | File | 0 B | 0644 |
|
module.info.ru.auto | File | 249 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 174 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 147 B | 0644 |
|
module.info.sv | File | 0 B | 0644 |
|
module.info.sv.auto | File | 164 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 326 B | 0644 |
|
module.info.tr | File | 0 B | 0644 |
|
module.info.tr.auto | File | 173 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 236 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 272 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 203 B | 0644 |
|
module.info.zh | File | 0 B | 0644 |
|
module.info.zh.auto | File | 118 B | 0644 |
|
module.info.zh_TW | File | 0 B | 0644 |
|
module.info.zh_TW.auto | File | 124 B | 0644 |
|
restart.cgi | File | 334 B | 0755 |
|
save_action.cgi | File | 1.86 KB | 0755 |
|
save_config.cgi | File | 975 B | 0755 |
|
save_filter.cgi | File | 1.69 KB | 0755 |
|
save_jail.cgi | File | 3.71 KB | 0755 |
|
save_jaildef.cgi | File | 1.49 KB | 0755 |
|
save_manual.cgi | File | 620 B | 0755 |
|
start.cgi | File | 326 B | 0755 |
|
stop.cgi | File | 322 B | 0755 |
|
syslog_logs.pl | File | 599 B | 0755 |
|
unblock_jail.cgi | File | 708 B | 0755 |
|