/usr/share/usermin/filter
NameSizeModeActions
images/-0755rm
lang/-0755rm
aliases-lib.pl81220755editdlrm
autoreply-file-lib.pl23390755editdlrm
CHANGELOG30330644editdlrm
config2180644editdlrm
config.info4890644editdlrm
config.info.ca5750644editdlrm
config.info.cs3700644editdlrm
config.info.de5940644editdlrm
config.info.el4040644editdlrm
config.info.hu00644editdlrm
config.info.nl5840644editdlrm
config.info.no5190644editdlrm
config.info.pl6040644editdlrm
delete.cgi4310755editdlrm
down.cgi2610755editdlrm
edit.cgi92630755editdlrm
edit_auto.cgi31870755editdlrm
edit_forward.cgi12100755editdlrm
filter-lib.pl181360755editdlrm
index.cgi49090755editdlrm
module.info2600644editdlrm
module.info.ar00644editdlrm
module.info.ar.auto1750644editdlrm
module.info.bg00644editdlrm
module.info.bg.auto1950644editdlrm
module.info.ca1090644editdlrm
module.info.cs460644editdlrm
module.info.cs.auto880644editdlrm
module.info.da00644editdlrm
module.info.da.auto1100644editdlrm
module.info.de1140644editdlrm
module.info.el00644editdlrm
module.info.el.auto2890644editdlrm
module.info.es00644editdlrm
module.info.es.auto1140644editdlrm
module.info.eu00644editdlrm
module.info.eu.auto1200644editdlrm
module.info.fa00644editdlrm
module.info.fa.auto1440644editdlrm
module.info.fi00644editdlrm
module.info.fi.auto1320644editdlrm
module.info.fr00644editdlrm
module.info.fr.auto1240644editdlrm
module.info.hr00644editdlrm
module.info.hr.auto1240644editdlrm
module.info.hu920644editdlrm
module.info.it00644editdlrm
module.info.it.auto1000644editdlrm
module.info.ja00644editdlrm
module.info.ja.auto1510644editdlrm
module.info.ko00644editdlrm
module.info.ko.auto1210644editdlrm
module.info.ms1030644editdlrm
module.info.nl340644editdlrm
module.info.nl.auto750644editdlrm
module.info.no370644editdlrm
module.info.no.auto740644editdlrm
module.info.pl1340644editdlrm
module.info.pt00644editdlrm
module.info.pt.auto1040644editdlrm
module.info.pt_BR00644editdlrm
module.info.pt_BR.auto1100644editdlrm
module.info.ru00644editdlrm
module.info.ru.auto2000644editdlrm
module.info.sk00644editdlrm
module.info.sk.auto1250644editdlrm
module.info.sv00644editdlrm
module.info.sv.auto1240644editdlrm
module.info.tr00644editdlrm
module.info.tr.auto1270644editdlrm
module.info.uk00644editdlrm
module.info.uk.auto1940644editdlrm
module.info.zh00644editdlrm
module.info.zh.auto970644editdlrm
module.info.zh_TW00644editdlrm
module.info.zh_TW.auto1030644editdlrm
move.cgi16500755editdlrm
save.cgi78150755editdlrm
save_auto.cgi27980755editdlrm
save_forward.cgi9590755editdlrm
up.cgi2590755editdlrm
Edit: /usr/share/usermin/filter/edit.cgi (9263B)
#!/usr/bin/perl # Show details of one filter require './filter-lib.pl'; &ReadParse(); # Show page header and get the filter if ($in{'new'}) { &ui_print_header(undef, $text{'edit_title1'}, ""); $filter = { 'actiondefault' => 1, 'nobounce' => 1 }; if ($in{'header'}) { # Initial filter is based on URL params $filter->{'condheader'} = $in{'header'}; $filter->{'condvalue'} = $in{'value'}; } } else { &ui_print_header(undef, $text{'edit_title2'}, ""); @filters = &list_filters(); ($filter) = grep { $_->{'index'} == $in{'idx'} } @filters; } @tds = ( "nowrap width=30%", "width=70%" ); print &ui_form_start("save.cgi", "post"); print &ui_hidden("new", $in{'new'}); print &ui_hidden("idx", $in{'idx'}); # Start of condition section $cmode = $filter->{'condspam'} ? 5 : $filter->{'condlevel'} ? 6 : $filter->{'condheader'} ? 4 : $filter->{'condtype'} eq '<' ? 3 : $filter->{'condtype'} eq '>' ? 2 : $filter->{'cond'} ? 1 : 0; print &ui_table_start($text{'edit_header1'}, "width=100%", 2); # Always do action print &ui_table_row( &ui_oneradio("cmode", 0, $text{'edit_cmode0'}, $cmode == 0), "", undef, \@tds); # Is spam print &ui_table_row( &ui_oneradio("cmode", 5, $text{'edit_cmode5'}, $cmode == 5), "", undef, \@tds); # Spam level is at or above print &ui_table_row( &ui_oneradio("cmode", 6, $text{'edit_cmode6'}, $cmode == 6), &ui_textbox("condlevel", $filter->{'condlevel'}, 4, 0, undef, "onFocus='form.cmode[2].checked = true'"), undef, \@tds); # Check some header @headers = ( "From", "To", "Subject", "Cc", "Reply-To", "List-Id" ); $common = &indexoflc($filter->{'condheader'}, @headers) >= 0; if ($filter->{'condvalue'} =~ /^\.\*(.*)\$$/) { # Ends with $condvalue = $1; $condmode = 2; } elsif ($filter->{'condvalue'} =~ /^\.\*(.*)\.\*$/ || $filter->{'condvalue'} =~ /^\.\*(.*)$/) { # Contains $condvalue = $1; $condmode = 1; } elsif ($filter->{'condvalue'} =~ /^(.*)\.\*$/ || $filter->{'condvalue'} =~ /^(.*)$/) { # Starts with $condvalue = $1; $condmode = 0; } if ($condvalue =~ /^[a-zA-Z0-9_ ]*$/) { # Contains no special chars, so not a regexp $regexp = 0; } else { # Has special chars .. but if they are all escaped, then not a regexp $condre = $condvalue; $condre =~ s/\\./x/g; if ($condre =~ /^[a-zA-Z0-9_ ]*$/) { $condvalue =~ s/\\(.)/$1/g; $regexp = 0; } else { $regexp = 1; } } $condvalue = &mailbox::decode_mimewords($condvalue); print &ui_table_row( &ui_oneradio("cmode", 4, $text{'edit_cmode4'}, $cmode == 4), &text('edit_cheader2', &ui_select("condmenu", $cmode != 4 ? "From" : $common ? $filter->{'condheader'} : "", [ (map { [ $_ ] } @headers), [ "", $text{'edit_other'} ] ], 1, 0, 0, 0, "onChange='form.condheader.disabled = (form.condmenu.value!=\"\")'"), &ui_textbox("condheader", $common ? "" : $filter->{'condheader'}, 20, $cmode != 4 || $common), &ui_select("condmode", $condmode, [ [ 0, $text{'edit_modestart'} ], [ 1, $text{'edit_modecont'} ], [ 2, $text{'edit_modeend'} ] ]), &ui_textbox("condvalue", $condvalue, 40, 0, undef, "onFocus='form.cmode[3].checked = true'")."
\n". &ui_checkbox("condregexp", 1, $text{'edit_regexp'}, $regexp)), undef, \@tds); # Smaller print &ui_table_row( &ui_oneradio("cmode", 3, $text{'edit_cmode3'}, $cmode == 3), &ui_bytesbox("condsmall", $cmode == 3 ? $filter->{'cond'} : "", undef, 0, "onFocus='form.cmode[4].checked = true'"), undef, \@tds); # Larger print &ui_table_row( &ui_oneradio("cmode", 2, $text{'edit_cmode2'}, $cmode == 2), &ui_bytesbox("condlarge", $cmode == 2 ? $filter->{'cond'} : "", undef, 0, "onFocus='form.cmode[5].checked = true'"), undef, \@tds); # Matches regexp print &ui_table_row( &ui_oneradio("cmode", 1, $text{'edit_cmode1'}, $cmode == 1), &ui_textbox("cond", $cmode == 1 ? $filter->{'cond'} : "", 70, 0, undef, "onFocus='form.cmode[6].checked = true'")."
". &ui_checkbox("body", 1, $text{'edit_cbody'}, $filter->{'body'}), undef, \@tds); print &ui_table_end(); # Start of action section $amode = $filter->{'actionreply'} ? 6 : $filter->{'actionspam'} ? 5 : $filter->{'actionthrow'} ? 4 : $filter->{'actiondefault'} ? 3 : $filter->{'actionreply'} ? 2 : $filter->{'actiontype'} eq '!' ? 1 : 0; print &ui_table_start($text{'edit_header2'}, "width=100%", 2); # Deliver normally print &ui_table_row( &ui_oneradio("amode", 3, $text{'edit_amode3'}, $amode == 3), "", undef, \@tds); if ($amode == 5 || &has_spamassassin()) { # Run spamassassin print &ui_table_row( &ui_oneradio("amode", 5, $text{'edit_amode5'}, $amode == 5), "", undef, \@tds); } # Throw away print &ui_table_row( &ui_oneradio("amode", 4, $text{'edit_amode4'}, $amode == 4), "", undef, \@tds); # Forward to some addresses print &ui_table_row( &ui_oneradio("amode", 1, $text{'edit_amode1'}, $amode == 1), &ui_textarea("forward", $amode == 1 ? join("\n", split(/,/, $filter->{'action'})) : "", 3, 70). "
\n". &ui_checkbox("nobounce", 1, $text{'edit_nobounce'}, $filter->{'nobounce'}), undef, \@tds); # Save to a folder or file @folders = grep { $_->{'file'} } &mailbox::list_folders_sorted(); if ($amode == 0) { $folder = &file_to_folder($filter->{'action'}, \@folders); } else { $folder = $folders[0]; } print &ui_table_row( &ui_oneradio("amode", 0, $text{'edit_amode0'}, $amode == 0), &ui_select("folder", $folder ? &mailbox::folder_name($folder) : "", [ (map { [ &mailbox::folder_name($_), &html_escape($_->{'name'}) ] } @folders), [ "", $text{'edit_file'} ] ], 1, 0, 0, 0, "onChange='form.file.disabled = (form.folder.value!=\"\")'"). "\n". &ui_textbox("file", $folder ? "" : $filter->{'action'}, 50, $folder ? 1 : 0), undef, \@tds); # Save to a new folder print &ui_table_row( &ui_oneradio("amode", 7, $text{'edit_amode7'}, 0), &ui_textbox("newfolder", undef, 20), undef, \@tds); # Send autoreply if ($amode == 6) { $r = $filter->{'reply'}; $period = $in{'new'} ? 60 : $r->{'replies'} && $r->{'period'} ? int($r->{'period'}/60) : $r->{'replies'} ? 60 : undef; if ($r->{'autoreply_start'}) { @stm = localtime($r->{'autoreply_start'}); $stm[4]++; $stm[5] += 1900; } if ($r->{'autoreply_end'}) { @etm = localtime($r->{'autoreply_end'}); $etm[4]++; $etm[5] += 1900; } } else { $period = 60; } if ($config{'reply_force'}) { $replyblock = ""; } elsif ($config{'reply_min'}) { $replyblock = " $text{'index_period'} ". "".&ui_textbox("period", $period, 3)." ". $text{'index_mins'}." \n"; } else { $replyblock = " $text{'index_period'} ". "".&ui_opt_textbox("period", $period, 3, $text{'index_noperiod'})." ".$text{'index_mins'}. " \n"; } $cs = !$in{'new'} ? $r->{'charset'} : &get_charset() eq $default_charset ? undef : &get_charset(); print &ui_table_row( &ui_oneradio("amode", 6, $text{'edit_amode6'}, $amode == 6, "onClick='form.continue.checked = true'"), &ui_textarea("reply", $filter->{'reply'}->{'autotext'}, 5, 60)."
". "\n". $replyblock. " ". "\n". " ". "\n". " ". "\n". " ". "\n". "
$text{'index_astart'}".&ui_date_input($stm[3], $stm[4], $stm[5], "dstart", "mstart", "ystart")." ". &date_chooser_button("dstart", "mstart", "ystart")."
$text{'index_aend'}".&ui_date_input($etm[3], $etm[4], $etm[5], "dend", "mend", "yend")." ". &date_chooser_button("dend", "mend", "yend")."
$text{'index_charset'}".&ui_opt_textbox("charset", $cs, 20, $text{'default'}." ($default_charset)")."
$text{'index_subject'}".&ui_opt_textbox("subject", $in{'new'} ? "" : $r->{'subject'}, 20, $text{'default'}." (Autoreply to \$SUBJECT)")."
", undef, \@tds); # Continue checkbox print &ui_table_row( undef, &ui_checkbox("continue", 1, $text{'edit_continue'}, $filter->{'continue'}), 2); print &ui_table_end(); # End of the form, with buttons if ($in{'new'}) { @buts = ( [ "create", $text{'create'} ] ); } else { @buts = ( [ "save", $text{'save'} ], [ "delete", $text{'delete'} ] ); ($inbox) = grep { $_->{'inbox'} } @folders; if ($cmode == 4 || $cmode == 5 || $cmode == 6) { # Add button to show results of a search for the filter's # conditions push(@buts, undef, [ "apply", $text{'edit_apply'}, &ui_select("applyfrom", $inbox ? &mailbox::folder_name($inbox) : "", [ map { [ &mailbox::folder_name($_), &html_escape($_->{'name'}) ] } @folders ]) ]); } if (($cmode == 4 || $cmode == 5 || $cmode == 6) && $amode == 0) { # Add button to apply the action to matching emails push(@buts, undef, [ "move", $text{'edit_move'}, &ui_select("movefrom", $inbox ? &mailbox::folder_name($inbox) : "", [ map { [ &mailbox::folder_name($_), &html_escape($_->{'name'}) ] } @folders ]) ]); } } print &ui_form_end(\@buts); # Show page footer &ui_print_footer("", $text{'index_return'});