# spam-amavis-lib.pl BEGIN { push(@INC, ".."); }; use WebminCore; use Fcntl; &init_config(); # get_amavis_config() # Parse and return the amavisd config file sub get_amavis_config { local(@rv, $line); open(CONF, "<".$config{'amavisdconf'}); while(<CONF>) { s/\r|\n//g; if (/^\s*#|^\s*$/) { $line++; next; } if (/^\s*\$(\S+)\s*=\s*"(.*)";/ || /^\s*\$(\S+)\s*=\s*'(.*)';/) { # STRING config option push(@rv, { 'name' => $1, 'value' => &perl_unescape($2), 'line' => $line, 'eline' => $line }); } elsif (/^\s*\$(\S+)\s*=\s*(.*);/) { # VALUE or computed config option push(@rv, { 'name' => $1, 'value' => $2, 'computed' => 1, 'line' => $line, 'eline' => $line }); } # ignore multiline options for now .... $line++; } close(CONF); return \@rv; } # amavis_check_value(value, numeric) # check if value is ok or not sub check_amavis_value { if ($_[1] && $_[1] eq "*") { return $_[0] =~ m/^[0-9\.\,\*\-\+\/]+$|undef/; } return 1; } # save_amavis_directive(&config, name, value, multiline) # Update some directive in the global config file sub save_amavis_directive { local ($c,$n,$v,$m) = @_; local $old = &amavis_find($n, $c); local $lref = &read_file_lines($config{'amavisdconf'}); if (!$old) { pop(@$lref); push(@$lref, "# new config added by webmin"); if (&check_amavis_value($v, 1)) { push(@$lref, "\$$n = $v;"); } else { push(@$lref, "\$$n = \"$v\";"); } push(@$lref, "1;"); return; } local $olen = $old->{'eline'} - $old->{'line'} + 1; local $pos = $old->{'line'}; $v =~ s/\n$//; $v =~ s/\@/\\@/g; if ($old->{'computed'} && $v ne "*") { splice(@$lref, $pos, $olen, "\$$n = $v; # modified by webmin"); } else { splice(@$lref, $pos, $olen, "\$$n = \"$v\"; # modified by webmin"); } } # amavis_find(name, &array) sub amavis_find { local($c, @rv); foreach $c (@{$_[1]}) { if ($c->{'name'} eq $_[0]) { push(@rv, $c); } } return @rv ? wantarray ? @rv : $rv[0] : wantarray ? () : undef; } # amavis_find_value(name, &array) sub amavis_find_value { local(@v); @v = &amavis_find($_[0], $_[1]); @v = grep { !$_->{'computed'} } @v; if (!@v) { return undef; } elsif (wantarray) { return map { $_->{'value'} } @v; } else { return $v[0]->{'value'}; } } # perl_unescape(string) # Converts a string like "hello\@there\\foo" to "hello@there\foo" sub perl_unescape { local $v = $_[0]; $v =~ s/\\(.)/$1/g; return $v; } # perl_var_replace(string, &config) # Replaces variables like $foo in a string with their value from # the config file sub perl_var_replace { local $str = $_[0]; local %donevar; while($str =~ /\$([A-z0-9\_]+)/ && !$donevar{$1}) { $donevar{$1}++; local $val = &amavis_find_value($1, $_[1]); $str =~ s/\$([A-z0-9\_]+)/$val/; } return $str; } 1;
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
CHANGELOG | File | 2.12 KB | 0644 |
|
acl_security.pl | File | 1.46 KB | 0755 |
|
apply.cgi | File | 229 B | 0755 |
|
backup_config.pl | File | 890 B | 0755 |
|
cgi_args.pl | File | 189 B | 0755 |
|
config | File | 236 B | 0644 |
|
config-AlmaLinux-7.0-ALL | File | 287 B | 0644 |
|
config-CentOS-Stream-Linux-8.0-ALL | File | 287 B | 0644 |
|
config-CloudLinux-8.0-ALL | File | 287 B | 0644 |
|
config-Oracle-Linux-8.0-ALL | File | 287 B | 0644 |
|
config-Rocky-Linux-7.0-ALL | File | 287 B | 0644 |
|
config-debian-linux | File | 246 B | 0644 |
|
config-debian-linux-10.0-ALL | File | 294 B | 0644 |
|
config-freebsd | File | 288 B | 0644 |
|
config-pardus-linux | File | 224 B | 0644 |
|
config-redhat-linux-24.0-ALL | File | 287 B | 0644 |
|
config-syno-linux | File | 277 B | 0644 |
|
config.info | File | 1.43 KB | 0644 |
|
config.info.ca | File | 1.66 KB | 0644 |
|
config.info.cs | File | 1.41 KB | 0644 |
|
config.info.de | File | 1.67 KB | 0644 |
|
config.info.el | File | 967 B | 0644 |
|
config.info.es | File | 450 B | 0644 |
|
config.info.fr | File | 482 B | 0644 |
|
config.info.hu | File | 0 B | 0644 |
|
config.info.nl | File | 1.45 KB | 0644 |
|
config.info.no | File | 1.41 KB | 0644 |
|
defaultacl | File | 71 B | 0644 |
|
delete_awl.cgi | File | 1.17 KB | 0755 |
|
deleteall_awl.cgi | File | 806 B | 0755 |
|
deleteone_awl.cgi | File | 560 B | 0755 |
|
edit_amavisd.cgi | File | 4.85 KB | 0755 |
|
edit_awl.cgi | File | 3.54 KB | 0755 |
|
edit_db.cgi | File | 3.17 KB | 0755 |
|
edit_header.cgi | File | 4.21 KB | 0755 |
|
edit_manual.cgi | File | 1.06 KB | 0755 |
|
edit_priv.cgi | File | 1.2 KB | 0755 |
|
edit_procmail.cgi | File | 1.87 KB | 0755 |
|
edit_report.cgi | File | 4.3 KB | 0755 |
|
edit_score.cgi | File | 3.18 KB | 0755 |
|
edit_setup.cgi | File | 1.57 KB | 0755 |
|
edit_simple.cgi | File | 1.5 KB | 0755 |
|
edit_user.cgi | File | 2.76 KB | 0755 |
|
edit_white.cgi | File | 4.38 KB | 0755 |
|
index.cgi | File | 5.18 KB | 0755 |
|
install_check.pl | File | 423 B | 0755 |
|
langs | File | 718 B | 0644 |
|
locales | File | 69 B | 0644 |
|
log_parser.pl | File | 329 B | 0755 |
|
module.info | File | 197 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 151 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 219 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 231 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 226 B | 0644 |
|
module.info.ca | File | 114 B | 0644 |
|
module.info.ca.auto | File | 21 B | 0644 |
|
module.info.cs | File | 36 B | 0644 |
|
module.info.cs.auto | File | 128 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 154 B | 0644 |
|
module.info.de | File | 141 B | 0644 |
|
module.info.de.auto | File | 21 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 266 B | 0644 |
|
module.info.es | File | 40 B | 0644 |
|
module.info.es.auto | File | 129 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 164 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 216 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 156 B | 0644 |
|
module.info.fr | File | 40 B | 0644 |
|
module.info.fr.auto | File | 122 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 191 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 163 B | 0644 |
|
module.info.hu | File | 41 B | 0644 |
|
module.info.hu.auto | File | 129 B | 0644 |
|
module.info.it | File | 0 B | 0644 |
|
module.info.it.auto | File | 149 B | 0644 |
|
module.info.ja | File | 0 B | 0644 |
|
module.info.ja.auto | File | 220 B | 0644 |
|
module.info.ko | File | 0 B | 0644 |
|
module.info.ko.auto | File | 185 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 190 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 162 B | 0644 |
|
module.info.ms | File | 138 B | 0644 |
|
module.info.ms.auto | File | 21 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 154 B | 0644 |
|
module.info.nl | File | 34 B | 0644 |
|
module.info.nl.auto | File | 121 B | 0644 |
|
module.info.no | File | 35 B | 0644 |
|
module.info.no.auto | File | 120 B | 0644 |
|
module.info.pl | File | 0 B | 0644 |
|
module.info.pl.auto | File | 172 B | 0644 |
|
module.info.pt | File | 0 B | 0644 |
|
module.info.pt.auto | File | 158 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 | 162 B | 0644 |
|
module.info.ru | File | 0 B | 0644 |
|
module.info.ru.auto | File | 235 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 170 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 161 B | 0644 |
|
module.info.sv | File | 0 B | 0644 |
|
module.info.sv.auto | File | 170 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 271 B | 0644 |
|
module.info.tr | File | 0 B | 0644 |
|
module.info.tr.auto | File | 177 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 253 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 244 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 185 B | 0644 |
|
module.info.zh | File | 0 B | 0644 |
|
module.info.zh.auto | File | 142 B | 0644 |
|
module.info.zh_TW | File | 0 B | 0644 |
|
module.info.zh_TW.auto | File | 151 B | 0644 |
|
save_amavisd.cgi | File | 2.54 KB | 0755 |
|
save_db.cgi | File | 1.87 KB | 0755 |
|
save_header.cgi | File | 2.99 KB | 0755 |
|
save_manual.cgi | File | 727 B | 0755 |
|
save_priv.cgi | File | 879 B | 0755 |
|
save_procmail.cgi | File | 1.75 KB | 0755 |
|
save_report.cgi | File | 2.14 KB | 0755 |
|
save_score.cgi | File | 2.05 KB | 0755 |
|
save_simple.cgi | File | 2.75 KB | 0755 |
|
save_user.cgi | File | 1.64 KB | 0755 |
|
save_white.cgi | File | 2.1 KB | 0755 |
|
setup.cgi | File | 2.71 KB | 0755 |
|
spam-amavis-lib.pl | File | 2.72 KB | 0755 |
|
spam-lib.pl | File | 28.79 KB | 0755 |
|