From: cebka@lenovo-laptop Date: Wed, 17 Mar 2010 14:24:35 +0000 (+0300) Subject: * Fix statistics of messages in controller X-Git-Tag: 0.3.0~54 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=80e0a6ac5f69911be278c7d1ae67c8027e903e5b;p=rspamd.git * Fix statistics of messages in controller * Fix building and installing perl target * Fix learn command name * Controller's commands are now case insensitive * Statfiles can now be selected from popup list in cgi interface * Password for controller's commands can now be specified in cgi interface --- diff --git a/CMakeLists.txt b/CMakeLists.txt index dc6158b08..37630d51e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -485,7 +485,7 @@ ADD_CUSTOM_COMMAND(OUTPUT src/modules.c IF(PERL_EXECUTABLE) ADD_CUSTOM_COMMAND(OUTPUT perl/Makefile - PRE_BUILD + DEPENDS perl/Makefile.PL COMMAND ${PERL_EXECUTABLE} ./Makefile.PL WORKING_DIRECTORY perl) CONFIGURE_FILE(perl/Makefile.PL.in perl/Makefile.PL) @@ -655,8 +655,6 @@ ENDIF(ENABLE_LUA MATCHES "ON") # Perl lib IF(PERL_EXECUTABLE) - INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} ./Makefile.PL WORKING_DIRECTORY perl)") - INSTALL(CODE "EXECUTE_PROCESS(COMMAND make WORKING_DIRECTORY perl)") INSTALL(CODE "EXECUTE_PROCESS(COMMAND make install WORKING_DIRECTORY perl)") ENDIF(PERL_EXECUTABLE) diff --git a/cgi/rspamd.cgi b/cgi/rspamd.cgi index 386bf39af..2c5f9113a 100644 --- a/cgi/rspamd.cgi +++ b/cgi/rspamd.cgi @@ -17,6 +17,8 @@ use Data::Dumper; my %cfg = ( 'hosts' => ['localhost:11333'], 'timeout' => 1, + 'password' => '', + 'statfiles' => ['WINNOW_HAM', 'WINNOW_SPAM'], ); sub new { @@ -128,7 +130,7 @@ sub _show_html { ), br, "", - textfield(-name=>'statfile', -id=>'id_statfile'), + popup_menu(-name=>'statfile', -id=>'id_statfile', -values=>$cfg{'statfiles'}), br, "", filefield(-name=>'upload_file', -id=>'id_file'), @@ -291,7 +293,7 @@ sub _handle_form { if (!@servers || scalar(@servers) == 0) { @servers = @{ $cfg{'hosts'} }; } - my $rspamd = Mail::Rspamd::Client->new({hosts => \@servers, timeout=>$cfg{timeout}}); + my $rspamd = Mail::Rspamd::Client->new({hosts => \@servers, timeout=>$cfg{timeout}, password=>$cfg{password}}); my $cmd = $cgi->param('command'); if (!$cmd) { return undef; diff --git a/perl/lib/Mail/Rspamd/Client.pm b/perl/lib/Mail/Rspamd/Client.pm index 100bfad68..d5b630118 100644 --- a/perl/lib/Mail/Rspamd/Client.pm +++ b/perl/lib/Mail/Rspamd/Client.pm @@ -394,7 +394,7 @@ This method makes a call to the spamd learning a statfile with message. sub learn { my ($self, $msg) = @_; - $self->{command} = 'LEARN'; + $self->{command} = 'learn'; $self->{control} = 1; return $self->do_all_cmd ($msg); diff --git a/src/controller.c b/src/controller.c index 69b5608e7..4133aad12 100644 --- a/src/controller.c +++ b/src/controller.c @@ -982,6 +982,7 @@ start_controller (struct rspamd_worker *worker) } comp = g_completion_new (completion_func); g_completion_add_items (comp, comp_list); + g_completion_set_compare (comp, g_ascii_strncasecmp); /* Fill hostname buf */ hostmax = sysconf (_SC_HOST_NAME_MAX) + 1; hostbuf = alloca (hostmax); diff --git a/src/message.c b/src/message.c index 225125bcc..08f1bf5f1 100644 --- a/src/message.c +++ b/src/message.c @@ -824,10 +824,6 @@ process_message (struct worker_task *task) #endif } - if (task->worker) { - task->worker->srv->stat->messages_scanned++; - } - return 0; } diff --git a/src/protocol.c b/src/protocol.c index 1209f3754..8da0f174d 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -721,6 +721,7 @@ write_check_reply (struct worker_task *task) msg_info ("%s", logbuf); rspamd_dispatcher_write (task->dispatcher, CRLF, sizeof (CRLF) - 1, FALSE, TRUE); + task->worker->srv->stat->messages_scanned++; if (default_score >= default_required_score) { task->worker->srv->stat->messages_spam ++; } @@ -785,6 +786,7 @@ write_process_reply (struct worker_task *task) rspamd_dispatcher_write (task->dispatcher, outbuf, r, TRUE, FALSE); rspamd_dispatcher_write (task->dispatcher, outmsg, strlen (outmsg), FALSE, TRUE); + task->worker->srv->stat->messages_scanned++; if (default_score >= default_required_score) { task->worker->srv->stat->messages_spam ++; }