############################################################################### # # スパム対策の設定を行うアクションハンドラ # ############################################################################### package plugin::admin::AdminSpamHandler; use strict; #============================================================================== # コンストラクタ #============================================================================== sub new { my $class = shift; my $self = {}; return bless $self,$class; } #============================================================================== # アクションハンドラメソッド #============================================================================== sub do_action { my $self = shift; my $wiki = shift; my $cgi = $wiki->get_CGI(); $wiki->set_title("スパム対策の設定"); if($cgi->param("SAVE") ne ""){ return $self->save_config($wiki); } else { return $self->config_form($wiki); } } #============================================================================== # 設定フォーム #============================================================================== sub config_form { my $self = shift; my $wiki = shift; my $spam = &Util::load_config_text($wiki,'spam.dat'); my $spam_ip = &Util::load_config_text($wiki,'spam_ip.dat'); my $rule = &Util::load_config_text($wiki,'spam_rules.dat'); # テンプレートにパラメータをセット my $tmpl = HTML::Template->new(filename=>$wiki->config('tmpl_dir')."/admin_spam.tmpl", die_on_bad_params => 0); $tmpl->param( SPAM_CONTENT => $spam, SPAM_IP => $spam_ip ); foreach my $line (split(/\n/, $rule)){ chomp($line); $tmpl->param( $line => 1, ); } return "<form action=\"".$wiki->create_url()."\" method=\"POST\">\n". $tmpl->output(). "<input type=\"hidden\" name=\"action\" value=\"ADMINSPAM\">\n". "</form>\n"; } #============================================================================== # 設定を保存 #============================================================================== sub save_config { my $self = shift; my $wiki = shift; my $cgi = $wiki->get_CGI; my $spam = $cgi->param('spam'); my $spam_ip = $cgi->param('spam_ip'); my $rule = join("\n", $cgi->param('rules')); &Util::save_config_text($wiki,'spam.dat',$spam); &Util::save_config_text($wiki,'spam_ip.dat',$spam_ip); &Util::save_config_text($wiki,'spam_rules.dat',$rule); $wiki->redirectURL( $wiki->create_url({ action=>"ADMINSPAM"}) ); } 1;