Linux mail.vriendennsm.nl 6.1.0-51-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.177-1 (2026-07-16) x86_64
Apache/2.4.68 (Debian)
Server IP : 217.154.75.17 & Your IP : 216.73.217.15
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
webmin /
quota /
Delete
Unzip
Name
Size
Permission
Date
Action
help
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
images
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
lang
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
CHANGELOG
3.33
KB
-rw-r--r--
2026-07-17 21:17
acl_security.pl
4.27
KB
-rwxr-xr-x
2026-07-17 21:17
activate.cgi
940
B
-rwxr-xr-x
2026-07-17 21:22
cgi_args.pl
1.05
KB
-rwxr-xr-x
2026-07-17 21:17
check_quotas.cgi
710
B
-rwxr-xr-x
2026-07-17 21:22
config-ALL-linux
838
B
-rw-r--r--
2026-07-17 21:17
config-freebsd
747
B
-rw-r--r--
2026-07-17 21:17
config-hpux
488
B
-rw-r--r--
2026-07-17 21:17
config-irix
473
B
-rw-r--r--
2026-07-17 21:17
config-macos
747
B
-rw-r--r--
2026-07-17 21:17
config-netbsd
747
B
-rw-r--r--
2026-07-17 21:17
config-openbsd
747
B
-rw-r--r--
2026-07-17 21:17
config-solaris
488
B
-rw-r--r--
2026-07-17 21:17
config-unixware
488
B
-rw-r--r--
2026-07-17 21:17
config.info
1.77
KB
-rw-r--r--
2026-07-17 21:17
config.info.ca
2.11
KB
-rw-r--r--
2026-07-17 21:17
config.info.cs
1.89
KB
-rw-r--r--
2026-07-17 21:17
config.info.da
1.48
KB
-rw-r--r--
2026-07-17 21:17
config.info.de
2.06
KB
-rw-r--r--
2026-07-17 21:17
config.info.es
1.58
KB
-rw-r--r--
2026-07-17 21:17
config.info.fr
1.53
KB
-rw-r--r--
2026-07-17 21:17
config.info.hu
0
B
-rw-r--r--
2026-07-17 21:17
config.info.it
1.5
KB
-rw-r--r--
2026-07-17 21:17
config.info.ko
1.87
KB
-rw-r--r--
2026-07-17 21:17
config.info.nl
2.1
KB
-rw-r--r--
2026-07-17 21:17
config.info.no
1.96
KB
-rw-r--r--
2026-07-17 21:17
config.info.pl
2.15
KB
-rw-r--r--
2026-07-17 21:17
config.info.ru
1.73
KB
-rw-r--r--
2026-07-17 21:17
config.info.sv
1.11
KB
-rw-r--r--
2026-07-17 21:17
config.info.tr
1.37
KB
-rw-r--r--
2026-07-17 21:17
config.info.uk
1.68
KB
-rw-r--r--
2026-07-17 21:17
config.info.zh
940
B
-rw-r--r--
2026-07-17 21:17
config.info.zh_TW
807
B
-rw-r--r--
2026-07-17 21:17
copy_group.cgi
1.37
KB
-rwxr-xr-x
2026-07-17 21:22
copy_group_form.cgi
922
B
-rwxr-xr-x
2026-07-17 21:22
copy_user.cgi
1.29
KB
-rwxr-xr-x
2026-07-17 21:22
copy_user_form.cgi
903
B
-rwxr-xr-x
2026-07-17 21:22
defaultacl
99
B
-rw-r--r--
2026-07-17 21:17
edgrace.pl
496
B
-rwxr-xr-x
2026-07-17 21:22
edit_group_mass.cgi
1.17
KB
-rwxr-xr-x
2026-07-17 21:22
edit_group_quota.cgi
2.37
KB
-rwxr-xr-x
2026-07-17 21:22
edit_user_mass.cgi
1.17
KB
-rwxr-xr-x
2026-07-17 21:22
edit_user_quota.cgi
2.34
KB
-rwxr-xr-x
2026-07-17 21:22
edquota.pl
508
B
-rwxr-xr-x
2026-07-17 21:22
email.pl
5.65
KB
-rwxr-xr-x
2026-07-17 21:22
freebsd-lib.pl
10.97
KB
-rwxr-xr-x
2026-07-17 21:17
group_filesys.cgi
3.06
KB
-rwxr-xr-x
2026-07-17 21:22
group_grace_form.cgi
1.29
KB
-rwxr-xr-x
2026-07-17 21:22
group_grace_save.cgi
788
B
-rwxr-xr-x
2026-07-17 21:22
hpux-lib.pl
6.39
KB
-rwxr-xr-x
2026-07-17 21:17
index.cgi
3.4
KB
-rwxr-xr-x
2026-07-17 21:22
install_check.pl
373
B
-rwxr-xr-x
2026-07-17 21:17
irix-lib.pl
5.87
KB
-rwxr-xr-x
2026-07-17 21:17
linux-lib.pl
28.72
KB
-rwxr-xr-x
2026-07-17 21:17
list_groups.cgi
9.42
KB
-rwxr-xr-x
2026-07-17 21:22
list_users.cgi
9.33
KB
-rwxr-xr-x
2026-07-17 21:22
log_parser.pl
1.41
KB
-rwxr-xr-x
2026-07-17 21:17
macos-lib.pl
9.29
KB
-rwxr-xr-x
2026-07-17 21:17
module.info
238
B
-rw-r--r--
2026-07-17 21:17
module.info.ar
155
B
-rw-r--r--
2026-07-17 21:17
module.info.ar.auto
26
B
-rw-r--r--
2026-07-17 21:17
module.info.bg
0
B
-rw-r--r--
2026-07-17 21:17
module.info.bg.auto
241
B
-rw-r--r--
2026-07-17 21:17
module.info.ca
123
B
-rw-r--r--
2026-07-17 21:17
module.info.ca.auto
14
B
-rw-r--r--
2026-07-17 21:17
module.info.cs
24
B
-rw-r--r--
2026-07-17 21:17
module.info.cs.auto
126
B
-rw-r--r--
2026-07-17 21:17
module.info.da
20
B
-rw-r--r--
2026-07-17 21:17
module.info.da.auto
108
B
-rw-r--r--
2026-07-17 21:17
module.info.de
147
B
-rw-r--r--
2026-07-17 21:17
module.info.de.auto
14
B
-rw-r--r--
2026-07-17 21:17
module.info.el
0
B
-rw-r--r--
2026-07-17 21:17
module.info.el.auto
242
B
-rw-r--r--
2026-07-17 21:17
module.info.es
24
B
-rw-r--r--
2026-07-17 21:17
module.info.es.auto
114
B
-rw-r--r--
2026-07-17 21:17
module.info.eu
0
B
-rw-r--r--
2026-07-17 21:17
module.info.eu.auto
147
B
-rw-r--r--
2026-07-17 21:17
module.info.fa
0
B
-rw-r--r--
2026-07-17 21:17
module.info.fa.auto
210
B
-rw-r--r--
2026-07-17 21:17
module.info.fi
0
B
-rw-r--r--
2026-07-17 21:17
module.info.fi.auto
148
B
-rw-r--r--
2026-07-17 21:17
module.info.fr
27
B
-rw-r--r--
2026-07-17 21:17
module.info.fr.auto
139
B
-rw-r--r--
2026-07-17 21:17
module.info.hr
0
B
-rw-r--r--
2026-07-17 21:17
module.info.hr.auto
140
B
-rw-r--r--
2026-07-17 21:17
module.info.hu
30
B
-rw-r--r--
2026-07-17 21:17
module.info.hu.auto
126
B
-rw-r--r--
2026-07-17 21:17
module.info.it
20
B
-rw-r--r--
2026-07-17 21:17
module.info.it.auto
96
B
-rw-r--r--
2026-07-17 21:17
module.info.ja
36
B
-rw-r--r--
2026-07-17 21:17
module.info.ja.auto
169
B
-rw-r--r--
2026-07-17 21:17
module.info.ko
25
B
-rw-r--r--
2026-07-17 21:17
module.info.ko.auto
135
B
-rw-r--r--
2026-07-17 21:17
module.info.ms
115
B
-rw-r--r--
2026-07-17 21:17
module.info.ms.auto
14
B
-rw-r--r--
2026-07-17 21:17
module.info.nl
23
B
-rw-r--r--
2026-07-17 21:17
module.info.nl.auto
112
B
-rw-r--r--
2026-07-17 21:17
module.info.no
19
B
-rw-r--r--
2026-07-17 21:17
module.info.no.auto
100
B
-rw-r--r--
2026-07-17 21:17
module.info.pl
148
B
-rw-r--r--
2026-07-17 21:17
module.info.pl.auto
126
B
-rw-r--r--
2026-07-17 21:17
module.info.pt
24
B
-rw-r--r--
2026-07-17 21:17
module.info.pt.auto
120
B
-rw-r--r--
2026-07-17 21:17
module.info.pt_BR
0
B
-rw-r--r--
2026-07-17 21:17
module.info.pt_BR.auto
152
B
-rw-r--r--
2026-07-17 21:17
module.info.ru
36
B
-rw-r--r--
2026-07-17 21:17
module.info.ru.auto
224
B
-rw-r--r--
2026-07-17 21:17
module.info.sk
0
B
-rw-r--r--
2026-07-17 21:17
module.info.sk.auto
153
B
-rw-r--r--
2026-07-17 21:17
module.info.sv
18
B
-rw-r--r--
2026-07-17 21:17
module.info.sv.auto
103
B
-rw-r--r--
2026-07-17 21:17
module.info.tr
23
B
-rw-r--r--
2026-07-17 21:17
module.info.tr.auto
121
B
-rw-r--r--
2026-07-17 21:17
module.info.uk
0
B
-rw-r--r--
2026-07-17 21:17
module.info.uk.auto
246
B
-rw-r--r--
2026-07-17 21:17
module.info.zh
21
B
-rw-r--r--
2026-07-17 21:17
module.info.zh.auto
91
B
-rw-r--r--
2026-07-17 21:17
module.info.zh_TW
24
B
-rw-r--r--
2026-07-17 21:17
module.info.zh_TW.auto
97
B
-rw-r--r--
2026-07-17 21:17
netbsd-lib.pl
10.97
KB
-rwxr-xr-x
2026-07-17 21:17
notes
1.7
KB
-rw-r--r--
2026-07-17 21:17
openbsd-lib.pl
10.97
KB
-rwxr-xr-x
2026-07-17 21:17
prefs.info
51
B
-rw-r--r--
2026-07-17 21:17
quota-lib.pl
14.77
KB
-rwxr-xr-x
2026-07-17 21:17
save_email.cgi
1.32
KB
-rwxr-xr-x
2026-07-17 21:22
save_gemail.cgi
1.31
KB
-rwxr-xr-x
2026-07-17 21:22
save_group_mass.cgi
1.51
KB
-rwxr-xr-x
2026-07-17 21:22
save_group_quota.cgi
1.28
KB
-rwxr-xr-x
2026-07-17 21:22
save_gsync.cgi
794
B
-rwxr-xr-x
2026-07-17 21:22
save_sync.cgi
789
B
-rwxr-xr-x
2026-07-17 21:22
save_user_mass.cgi
1.49
KB
-rwxr-xr-x
2026-07-17 21:22
save_user_quota.cgi
1.26
KB
-rwxr-xr-x
2026-07-17 21:22
solaris-lib.pl
8.05
KB
-rwxr-xr-x
2026-07-17 21:17
uninstall.pl
226
B
-rwxr-xr-x
2026-07-17 21:17
unixware-lib.pl
6.51
KB
-rwxr-xr-x
2026-07-17 21:17
user_filesys.cgi
3.04
KB
-rwxr-xr-x
2026-07-17 21:22
user_grace_form.cgi
1.29
KB
-rwxr-xr-x
2026-07-17 21:22
user_grace_save.cgi
783
B
-rwxr-xr-x
2026-07-17 21:22
useradmin_update.pl
2.45
KB
-rwxr-xr-x
2026-07-17 21:17
Save
Rename
#!/usr/bin/perl # Send email to users approaching their quotas $no_acl_check++; require './quota-lib.pl'; &foreign_require("mailboxes", "mailboxes-lib.pl"); # Find filesystems with quotas foreach $fs (&list_filesystems()) { if ($fs->[4] && $fs->[5]) { $fslist{$fs->[0]}++; } } # Load Virtualmin if available my $has_virt = 0; if (&foreign_check("virtual-server")) { &foreign_require("virtual-server"); $has_virt = 1; } # Look for filesystems with warning enabled $now = time(); %domain_users_cache = ( ); foreach $k (keys %config) { if ($k =~ /^email_(\S+)$/ && $fslist{$1}) { # Found a filesystem to check users on $f = $1; %user = ( ); $n = &filesystem_users($f); my %emailtimes; my $qf = $f; $qf =~ s/\//_/g; &read_file("$module_config_directory/emailtimes.$qf", \%emailtimes); $interval = $config{'email_interval_'.$f}*60*60; for($i=0; $i<$n; $i++) { if ($config{'email_type_'.$f}) { $limit = $user{$i,'hblocks'}; } else { $limit = $user{$i,'sblocks'}; } next if (!$limit); # Check if over threshold $upercent = 100.0*$user{$i,'ublocks'}/$limit; next if ($upercent < $config{'email_percent_'.$f}); # Check if time to email next if ($emailtimes{$user{$i,'user'}} >= $now - $interval); # Work out the domain, perhaps from Virtualmin $email = $user{$i,'user'}."\@". $config{'email_domain_'.$f}; if ($config{'email_virtualmin_'.$f} && $has_virt) { my $d = &virtual_server::get_user_domain( $user{$i,'user'}); if ($d) { # User belongs to a Virtualmin domain, so work # out their email my $users = $domain_users_cache{$d->{'id'}}; if (!$users) { $domain_users_cache{$d->{'id'}} = $users = [ &virtual_server::list_domain_users($d, 0, 0, 1, 1) ]; } my ($uinfo) = grep { $_->{'user'} eq $user{$i,'user'} } @$users; if ($uinfo && $uinfo->{'domainowner'}) { # Domain owner, with own email $email = $d->{'emailto'}; } elsif ($uinfo && $uinfo->{'email'}) { # Regular user with email $email = $uinfo->{'email'}; } } } # Email the user &send_quota_mail( $user{$i,'user'}, $email, $limit, $user{$i,'ublocks'}, $f, $upercent, $config{'email_from_'.$f}, $user{$i,'gblocks'}, 'email', $config{'email_cc_'.$f}, ); # Save last email time $emailtimes{$user{$i,'user'}} = $now; } &write_file("$module_config_directory/emailtimes.$qf", \%emailtimes); } if ($k =~ /^gemail_(\S+)$/ && $fslist{$1}) { # Found a filesystem to check groups on $f = $1; $n = &filesystem_groups($f); my %emailtimes; my $qf = $f; $qf =~ s/\//_/g; &read_file("$module_config_directory/gemailtimes.$qf", \%emailtimes); $interval = $config{'gemail_interval_'.$f}*60*60; for($i=0; $i<$n; $i++) { if ($config{'gemail_type_'.$f}) { $limit = $group{$i,'hblocks'}; } else { $limit = $group{$i,'sblocks'}; } next if (!$limit); # Check if over threshold $upercent = 100.0*$group{$i,'ublocks'}/$limit; next if ($upercent < $config{'gemail_percent_'.$f}); # Check if time to email next if ($emailtimes{$group{$i,'group'}} >= $now - $interval); # Work out the destination my $to; if ($config{'gemail_tomode_'.$f} == 0) { # Same name as group $to = $group{$i,'group'}; } elsif ($config{'gemail_tomode_'.$f} == 1) { # Fixed address $to = $config{'gemail_to_'.$f}; } else { # From Virtualmin my $d = &virtual_server::get_domain_by( "group", $group{$i,'group'}, "parent", undef); if ($d) { $to = $d->{'emailto'} || $d->{'email'}; } } my $cc = $config{'gemail_cc_'.$f}; if (!$to && $cc) { # No to address, such as when a virtualmin # domain was not found. So still send to the # CC address $to = $cc; $cc = undef; } if ($to) { # Email the responsible person if ($to !~ /\@/) { my $dom = $config{'email_domain_'.$f} || &get_system_hostname(); $to .= "\@$dom"; } &send_quota_mail( $group{$i,'group'}, $to, $limit, $group{$i,'ublocks'}, $f, $upercent, $config{'gemail_from_'.$f}, $group{$i,'gblocks'}, 'gemail', $cc, ); } # Save last email time $emailtimes{$group{$i,'group'}} = $now; } &write_file("$module_config_directory/gemailtimes.$qf", \%emailtimes); } } sub send_quota_mail { my ($user, $addr, $limit, $used, $fs, $percent, $from, $grace, $suffix, $ccaddr) = @_; my $bsize = &block_size($fs); if ($bsize) { $used = &nice_size($used*$bsize); $limit = &nice_size($limit*$bsize); } else { $used = "$used blocks"; $limit = "$limit blocks"; } my $body; my %hash = ( 'USER' => $user, 'FS' => $fs, 'PERCENT' => int($percent), 'USED' => $used, 'QUOTA' => $limit, 'GRACE' => $grace, ); if ($config{$suffix.'_msg'}) { # Use configured template $body = &substitute_template($config{$suffix.'_msg'}, \%hash); $body =~ s/\t/\n/g; } else { # Fall back to default $body = &text($suffix.'_msg', $user, $fs, int($percent), $used,$limit); $body =~ s/\\n/\n/g; } my $subject; if ($config{$suffix.'_subject'}) { # Use configured subject $subject = &substitute_template($config{$suffix.'_subject'}, \%hash); } else { # Fall back to default $subject = $text{$suffix.'_subject'}; } &mailboxes::send_text_mail($from || &mailboxes::get_from_address(), $addr, undef, $subject, $body); if ($ccaddr) { # Also send to other address (like the domain owner) &mailboxes::send_text_mail($from || &mailboxes::get_from_address(), $ccaddr, undef, $subject, $body); } }