From 4332435026e40d2b10e620ed265c8a4f7e09cff7 Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Wed, 2 May 2012 17:14:08 -0700 Subject: [PATCH] Manual editing button --- blue-theme/spam/images/manual.gif | Bin 0 -> 5031 bytes spam/CHANGELOG | 1 + spam/defaultacl | 2 +- spam/edit_manual.cgi | 34 ++++++++++++++++++++++++++++++ spam/images/manual.gif | Bin 0 -> 478 bytes spam/index.cgi | 16 +++++++------- spam/lang/en | 8 +++++++ spam/save_manual.cgi | 26 +++++++++++++++++++++++ 8 files changed, 78 insertions(+), 9 deletions(-) create mode 100755 blue-theme/spam/images/manual.gif create mode 100755 spam/edit_manual.cgi create mode 100644 spam/images/manual.gif create mode 100755 spam/save_manual.cgi diff --git a/blue-theme/spam/images/manual.gif b/blue-theme/spam/images/manual.gif new file mode 100755 index 0000000000000000000000000000000000000000..ce1f3a3f0f26f8785b26cb947ef331c791c11e3f GIT binary patch literal 5031 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 C`+kG~ literal 0 HcmV?d00001 diff --git a/spam/CHANGELOG b/spam/CHANGELOG index 7633336ca..4464e0157 100644 --- a/spam/CHANGELOG +++ b/spam/CHANGELOG @@ -24,3 +24,4 @@ Cleaned up the layout of all pages to improve formatted, in particular the Allow Don't show language and character set spam classification options unless the TextCat plugin is enabled, as they won't work without it. ---- Changes since 1.590 ---- Added a field for setting the trusted_networks parameter. +The SpamAssassin config files can now be manually edited by the root user. diff --git a/spam/defaultacl b/spam/defaultacl index c45a25bc3..ee121d136 100644 --- a/spam/defaultacl +++ b/spam/defaultacl @@ -1 +1 @@ -avail=white,score,report,user,header,priv,setup,procmail,db,awl +avail=white,score,report,user,header,priv,setup,procmail,db,awl,manual diff --git a/spam/edit_manual.cgi b/spam/edit_manual.cgi new file mode 100755 index 000000000..f32673e00 --- /dev/null +++ b/spam/edit_manual.cgi @@ -0,0 +1,34 @@ +#!/usr/local/bin/perl +# Show a config file for manual editing + +require './spam-lib.pl'; +&ReadParse(); +&set_config_file_in(\%in); +&can_use_check("manual"); +&ui_print_header($header_subtext, $text{'manual_title'}, ""); + +$conf = &get_config(); +@files = &unique(map { $_->{'file'} } @$conf); +$in{'manual'} ||= $files[0]; +&indexof($in{'manual'}, @files) >= 0 || + &error($text{'manual_efile'}); + +# File selector +print &ui_form_start("edit_manual.cgi"); +print $form_hiddens; +print "$text{'manual_file'}\n", + &ui_select("manual", $in{'manual'}, \@files),"\n", + &ui_submit($text{'manual_ok'}); +print &ui_form_end(); + +# Config editor +print &ui_form_start("save_manual.cgi", "form-data"); +print $form_hiddens; +print &ui_hidden("manual", $in{'manual'}); +print &ui_table_start(undef, undef, 2); +print &ui_table_row(undef, + &ui_textarea("data", &read_file_contents($in{'manual'}), 20, 80), 2); +print &ui_table_end(); +print &ui_form_end([ [ undef, $text{'save'} ] ]); + +&ui_print_footer("", $text{'index_return'}); diff --git a/spam/images/manual.gif b/spam/images/manual.gif new file mode 100644 index 0000000000000000000000000000000000000000..e57b83c90b70c191f4e142a86a456a52438ac895 GIT binary patch literal 478 zcmZ?wbhEHbG+;1bXklRZ|NsBYnKKy}7|x`notc^TKW*ljnKRD-!OS!NXBz)MV|-?& z@tHHm@7}%pe`Ki;O^-gz@Ye(g%PA*2Sk8e!NB@Y zL7^`tb6!RkTgHJty$9zuW}SY?{diB^cDtYp;(z8w9G=;s*0ML_RO-i_(Vx~uyb{e6 zb=&?RE4(|otJ+$2;}KTz&38XpYUZuZ4qS2OPw(vSZjCv<%1mud9fjdc%)LyVZl*!{ zOf0M{{S#&>wK22J)Xqtn*f58^XF>C-&PfbRj2z1?ooB6WV`p6HyQN}pa3B+B+sxX< zAyN57bGW#<`m_AjrcBDuJ;-w|H={JnFuP?6C)c4{$3n~QuF_#Td+1c^zUly<+7COq zxOmoIoNcM{=5fi_%?}^X+TGa6^1!-7U?Kw>=a;`fHY?rhO!&bfXIb2L;b;d>r~^0a zbERz)l)UOsYVX|C=u{~6x3p#vJMZoe!(cxr^YppR>>93RGFENf49t8*c`}pNsfaoY l2n2o+\n"; - print "\n"; - print "\n"; - print "\n"; - print "
",&text('index_applydesc', - "".join(" and ", &unique( - map { $_->[1] } @pids)).""),"
\n"; + print &ui_buttons_start(); + print &ui_buttons_row("apply.cgi", + $text{'index_apply'}, + &text('index_applydesc', + "".join(" and ", &unique( + map { $_->[1] } @pids))."")); + print &ui_buttons_end(); } } } diff --git a/spam/lang/en b/spam/lang/en index b95855fce..9ac4ba5f7 100644 --- a/spam/lang/en +++ b/spam/lang/en @@ -224,6 +224,7 @@ log_priv=Modified miscellaneous privileged options log_setup=Setup Procmail for SpamAssassin log_procmail=Changed Procmail configuration log_import=Imported $1 allowed addresses +log_manual=Manually edited configuration file import_title=Import Addresses import_err=Failed to import addresses @@ -381,4 +382,11 @@ dawl_ecannot=You are not allowed to manage the auto-whitelist for this user dawl_doing=Deleting auto-whitelists for all users .. dawl_done=.. deleted $2 entries from $1 users. dawl_title=Delete All Auto-Whitelists + +manual_title=Edit Config Files +manual_file=Edit config file: +manual_ok=OK +manual_efile=Invalid configuration file! +manual_err=Failed to save configuration file + __norefs=1 diff --git a/spam/save_manual.cgi b/spam/save_manual.cgi new file mode 100755 index 000000000..99f7b2c9b --- /dev/null +++ b/spam/save_manual.cgi @@ -0,0 +1,26 @@ +#!/usr/local/bin/perl +# Show a config file for manual editing + +require './spam-lib.pl'; +&ReadParseMime(); +&set_config_file_in(\%in); +&can_use_check("manual"); +&execute_before("manual"); +&error_setup($text{'manual_err'}); + +# Validate the filename +$conf = &get_config(); +@files = &unique(map { $_->{'file'} } @$conf); +$in{'manual'} ||= $files[0]; +&indexof($in{'manual'}, @files) >= 0 || + &error($text{'manual_efile'}); + +# Write the file +$in{'data'} =~ s/\r//g; +&open_lock_tempfile(MANUAL, ">$in{'manual'}"); +&print_tempfile(MANUAL, $in{'data'}); +&close_tempfile(MANUAL); + +&execute_after("manual"); +&webmin_log("manual"); +&redirect($redirect_url);