Linux sagir-us1.hostever.us 5.14.0-570.51.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Oct 8 09:41:34 EDT 2025 x86_64
LiteSpeed
Server IP : 104.247.108.91 & Your IP : 216.73.216.105
Domains : 74 Domain
User : georgeto
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
softaculous /
apps /
exim /
Delete
Unzip
Name
Size
Permission
Date
Action
3
[ DIR ]
drwxr-xr-x
2026-04-11 11:45
assets
[ DIR ]
drwxr-xr-x
2026-04-11 11:45
build
[ DIR ]
drwxr-xr-x
2026-04-11 11:45
images
[ DIR ]
drwxr-xr-x
2026-04-11 11:45
includes
[ DIR ]
drwxr-xr-x
2026-04-11 11:45
languages
[ DIR ]
drwxr-xr-x
2026-04-11 11:45
themes
[ DIR ]
drwxr-xr-x
2026-04-11 11:45
todo
[ DIR ]
drwxr-xr-x
2026-04-11 11:45
2020020100.sql
2.03
KB
-rw-r--r--
2026-04-11 11:45
autoresponder_charsets.json
2.88
KB
-rw-r--r--
2025-01-13 08:52
box_msg.json
2.43
KB
-rw-r--r--
2023-02-02 09:28
boxtrapper.php
6.23
KB
-rwxr-xr-x
2023-03-06 08:04
boxtrapper_func.php
8.22
KB
-rw-r--r--
2023-12-15 01:43
boxtrapper_url.php
2.06
KB
-rw-r--r--
2025-10-17 04:29
c7_exim-x86_64.tar.gz
1.89
MB
-rw-r--r--
2026-04-11 11:45
config.inc.php
7.65
KB
-rw-r--r--
2026-04-10 07:27
configure.php
71.76
KB
-rw-r--r--
2026-04-10 05:55
exim-x86_64.tar.gz
1.92
MB
-rw-r--r--
2026-04-11 11:45
exim.conf
44.01
KB
-rw-r--r--
2021-12-24 06:44
exim.json
2.97
KB
-rw-r--r--
2024-06-11 08:31
exim4.conf.template
76.83
KB
-rw-r--r--
2021-12-24 06:44
greylist_common_providers.json
62.76
KB
-rw-r--r--
2022-08-04 11:24
hooks.php
677.01
KB
-rw-r--r--
2026-04-10 07:33
info.xml
4.15
KB
-rw-r--r--
2026-04-10 07:27
install.php
62.1
KB
-rw-r--r--
2026-04-10 07:33
install.xml
63
B
-rw-r--r--
2025-05-08 02:51
logrotate
304
B
-rw-r--r--
2024-02-19 05:16
md5
13.23
KB
-rw-r--r--
2026-04-10 07:33
notes.txt
293
B
-rw-r--r--
2025-11-26 03:01
popb4smtp
1.75
KB
-rw-r--r--
2022-12-09 08:27
popb4smtp-clean
1.93
KB
-rw-r--r--
2022-12-09 08:27
popb4smtp-watch
3.34
KB
-rw-r--r--
2022-12-09 08:27
rbl.json
396
B
-rw-r--r--
2022-09-23 08:09
remove.php
7.95
KB
-rw-r--r--
2026-04-10 07:33
rev
4
B
-rw-r--r--
2026-04-10 07:33
roundcube.tar.gz
7.17
MB
-rw-r--r--
2026-04-11 11:45
sqlite.rcube.db
62
KB
-rw-r--r--
2023-01-12 05:14
update-exim4.conf.conf
1.01
KB
-rw-r--r--
2021-12-24 06:44
update.php
11.53
KB
-rw-r--r--
2026-04-10 07:33
Save
Rename
#!/usr/bin/perl -w use strict; use Date::Parse; use File::Tail; use Unix::Syslog qw(:macros :subs); $SIG{INT} = sub { syslog(LOG_CRIT, "%s", "exiting on SIGINT\n"); exit 1; }; $SIG{TERM} = sub { syslog(LOG_CRIT, "%s", "exiting on SIGTERM\n"); exit 1; }; my $DSEARCHDIR = '/var/webuzo-data/popb4smtp'; my $DEBIANLOG = '/var/log/mail.log'; my $POPLOG = '/var/log/maillog'; my $PROGNAME = 'popb4smtp-watch'; my $PIDFILE = '/var/run/popb4smtp-watch.pid'; sub dsearch_store_popauth($$$); sub mkdirp($); sub select_readable(\@); sub xdie(@); sub xwarn(@); my (@readable_tails, @tail_refs); openlog($PROGNAME, LOG_PERROR | LOG_PID, LOG_MAIL); open(PID, "> $PIDFILE") or xdie "$PIDFILE: $!\n"; print PID "$$\n"; close(PID); foreach my $fn ($DEBIANLOG, $POPLOG) { my $tail; $tail = File::Tail->new( name => $fn, maxinterval => 1, interval => 1, ignore_nonexistant => 1 ); push(@tail_refs, $tail); } syslog(LOG_CRIT, "%s", "tailing files: $DEBIANLOG, $POPLOG\n"); while (1) { @readable_tails = select_readable(@tail_refs); if (not @readable_tails) { # Give up our time slice so that the kernel treats us like # a model citizen with respect to CPU utilization. # select(undef, undef, undef, 0.25); next; } foreach my $tail (@readable_tails) { my ($ip, $line, $timestr, $unixtime, $user); $line = $tail->read(); chomp($line); if ($line =~ /^(\w+\s+\d+\s+\d+:\d+:\d+).*user=<(.*?)>.*rip=(.*?),/ or $line =~ /^(\w+\s+\d+\s+\d+:\d+:\d+) .* imapd: LOGIN, user=([^,]+), ip=\[.+:([0-9.]+)\]/) { ($timestr, $user, $ip) = ($1, $2, $3); $unixtime = str2time($timestr); dsearch_store_popauth($unixtime, $user, $ip); } } } sub dsearch_store_popauth($$$) { my ($unixtime, $user, $ip) = @_; my ($subdir); $ip =~ /(\d)$/; $subdir = $1; if (not mkdirp("$DSEARCHDIR/$subdir")) { # mkdirp() logs its own warnings for us } elsif (not open(IPFILE, "> $DSEARCHDIR/$subdir/$ip")) { xwarn "$DSEARCHDIR/$subdir/$ip: $!\n"; } elsif (not print IPFILE "$unixtime:$user:$ip\n") { xwarn "$DSEARCHDIR/$subdir/$ip: $!\n"; } elsif (not close(IPFILE)) { xwarn "$DSEARCHDIR/$subdir/$ip: $!\n"; } } sub mkdirp($) { my ($dir) = @_; my ($i, @parts, $path); @parts = split(/\//, $dir); if (not @parts or (@parts == 1 and not $parts[0])) { xdie "panic: empty path passed to mkdirp()\n"; } if (not $parts[0]) { $path = '/'; shift @parts; } else { $path = ''; } for ($i = 0; $i < @parts; $i++) { if ($i > 0) { $path .= "/$parts[$i]"; } else { $path .= $parts[$i]; } if (not -e $path) { if (not mkdir($path, 0777)) { xwarn "$path: $!\n"; return 0; } } elsif (not -d $path and not -l $path) { return 0; xwarn "$path: exists and is not a directory\n"; } } return 1; } # Given a list of File::Tail object references, block until one or more of # the objects becomes readable and then return the list of readable objects. # sub select_readable(\@) { my ($tails) = @_; my ($nfound, $timeleft, @pending); ($nfound, $timeleft, @pending) = File::Tail::select( undef, undef, undef, undef, @{$tails} ); return @pending; } sub xdie(@) { my (@msg) = @_; my ($msgstr, $rv); $rv = $! or 1; $msgstr = join(' ', @msg); chomp($msgstr); syslog(LOG_CRIT, "%s", $msgstr); exit $rv; } sub xwarn(@) { my (@msg) = @_; my ($msgstr); $msgstr = join(' ', @msg); chomp($msgstr); syslog(LOG_CRIT, "%s", $msgstr); }