From 4d0d8bf1cd60a52101668c72c94462500c326240 Mon Sep 17 00:00:00 2001 From: Quentin Garnier Date: Tue, 25 Feb 2014 12:08:03 +0100 Subject: [PATCH] Some fix on apache plugin --- apps/apache/mode/requests.pm | 221 --------------- apps/apache/mode/responsetime.pm | 244 ----------------- apps/apache/mode/slotstates.pm | 251 ----------------- apps/apache/mode/workers.pm | 217 --------------- apps/apache/plugin.pm | 66 ----- apps/apache/serverstatus/mode/requests.pm | 156 +++++------ apps/apache/serverstatus/mode/responsetime.pm | 257 +++++++++--------- apps/apache/serverstatus/mode/slotstates.pm | 158 ++++++----- apps/apache/serverstatus/mode/workers.pm | 142 +++++----- apps/apache/serverstatus/plugin.pm | 24 +- 10 files changed, 360 insertions(+), 1376 deletions(-) delete mode 100644 apps/apache/mode/requests.pm delete mode 100644 apps/apache/mode/responsetime.pm delete mode 100644 apps/apache/mode/slotstates.pm delete mode 100644 apps/apache/mode/workers.pm delete mode 100644 apps/apache/plugin.pm diff --git a/apps/apache/mode/requests.pm b/apps/apache/mode/requests.pm deleted file mode 100644 index f080d6ef6..000000000 --- a/apps/apache/mode/requests.pm +++ /dev/null @@ -1,221 +0,0 @@ -################################################################################ -## Copyright 2005-2013 MERETHIS -## Centreon is developped by : Julien Mathis and Romain Le Merlus under -## GPL Licence 2.0. -## -## This program is free software; you can redistribute it and/or modify it under -## the terms of the GNU General Public License as published by the Free Software -## Foundation ; either version 2 of the License. -## -## This program is distributed in the hope that it will be useful, but WITHOUT ANY -## WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -## PARTICULAR PURPOSE. See the GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License along with -## this program; if not, see . -## -## Linking this program statically or dynamically with other modules is making a -## combined work based on this program. Thus, the terms and conditions of the GNU -## General Public License cover the whole combination. -## -## As a special exception, the copyright holders of this program give MERETHIS -## permission to link this program with independent modules to produce an timeelapsedutable, -## regardless of the license terms of these independent modules, and to copy and -## distribute the resulting timeelapsedutable under terms of MERETHIS choice, provided that -## MERETHIS also meet, for each linked independent module, the terms and conditions -## of the license of that module. An independent module is a module which is not -## derived from this program. If you modify this program, you may extend this -## exception to your version of the program, but you are not obliged to do so. If you -## do not wish to do so, delete this exception statement from your version. -## -## For more information : contact@centreon.com -## Author : Simon BOMM -## -## Based on De Bodt Lieven plugin -##################################################################################### - -package apps::apache::mode::requests; - -use base qw(centreon::plugins::mode); - -use strict; -use warnings; -use LWP::UserAgent; -use Time::HiRes qw(gettimeofday tv_interval); - -sub new { - my ($class, %options) = @_; - my $self = $class->SUPER::new(package => __PACKAGE__, %options); - bless $self, $class; - - $self->{version} = '1.0'; - $options{options}->add_options(arguments => - { - "hostname:s" => { name => 'hostname' }, - "port:i" => { name => 'port' }, - "proto:s" => { name => 'proto', default => "http" }, - "proxyurl:s" => { name => 'proxyurl' }, - "warning:i" => { name => 'warning' }, - "critical:i" => { name => 'critical' }, - "warningrequest:i" => { name => 'warningrequest' }, - "criticalrequest:i" => { name => 'criticalrequest' }, - "timeout:i" => { name => 'timeout', default => '3' }, - "extended" => { name => 'extended'}, - }); - return $self; -} - -sub check_options { - - my ($self, %options) = @_; - $self->SUPER::init(%options); - - if (($self->{perfdata}->threshold_validate(label => 'warning', value => $self->{option_results}->{warning})) == 0) { - $self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{warning} . "'."); - $self->{output}->option_exit(); - } - if (($self->{perfdata}->threshold_validate(label => 'critical', value => $self->{option_results}->{critical})) == 0) { - $self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{critical} . "'."); - $self->{output}->option_exit(); - } - - if (($self->{perfdata}->threshold_validate(label => 'criticalrequest', value => $self->{option_results}->{criticalrequest})) == 0) { - $self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{warning} . "'."); - $self->{output}->option_exit(); - } - if (($self->{perfdata}->threshold_validate(label => 'warningrequest', value => $self->{option_results}->{warningrequest})) == 0) { - $self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{critical} . "'."); - $self->{output}->option_exit(); - } - -} - -sub run { - - my ($self, %options) = @_; - my $ua = LWP::UserAgent->new( protocols_allowed => ['http','https'], timeout => $self->{option_results}->{timeout}); - - my $timing0 = [gettimeofday]; - my $response = ''; - - if ($self->{option_results}->{proto} eq "https") { - if (defined $self->{option_results}->{proxyurl}) { - $ua->proxy(['https'], $self->{option_results}->{proxyurl}); - } - if (!defined $self->{option_results}->{port}) { - $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status'); - } else { - $response = $ua->get('https://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status'); - } - - } else { - if (defined $self->{option_results}->{proxyurl}) { - $ua->proxy(['http'], $self->{option_results}->{proxyurl}); - } - if (!defined $self->{option_results}->{port}) { - $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status'); - } else { - $response = $ua->get('http://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status'); - } - } - - my $timeelapsed = tv_interval ($timing0, [gettimeofday]); - - if ($response->is_success) { - - my $webcontent=$response->content; - my @webcontentarr = split("\n", $webcontent); - my $i = 0; - my $rPerSec=undef; - my $rPerSecSfx=undef; - my $bPerSec=undef; - my $bPerSecSfx=undef; - my $bPerReq=undef; - my $bPerReqSfx=undef; - while (($i < @webcontentarr) && ((!defined($rPerSec)) || (!defined($bPerSec)) || (!defined($bPerReq)))) { - if ($webcontentarr[$i] =~ /([0-9]*\.?[0-9]+)\s([A-Za-z]+)\/sec\s-\s([0-9]*\.?[0-9]+)\s([A-Za-z]+)\/second\s-\s([0-9]*\.?[0-9]+)\s([A-Za-z]+)\/request/) { - ($rPerSec, $rPerSecSfx, $bPerSec, $bPerSecSfx, $bPerReq, $bPerReqSfx) = ($webcontentarr[$i] =~ /([0-9]*\.?[0-9]+)\s([A-Za-z]+)\/sec\s-\s([0-9]*\.?[0-9]+)\s([A-Za-z]+)\/second\s-\s([0-9]*\.?[0-9]+)\s([A-Za-z]+)\/request/); - } - $i++; - } - - my $exit1 = $self->{perfdata}->threshold_check(value => $rPerSec, - threshold => [ { label => 'criticalrequest', 'exit_litteral' => 'critical' }, { label => 'query', exit_litteral => 'warning' } ]); - my $exit2 = $self->{perfdata}->threshold_check(value => $timeelapsed, - threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]); - my $exit = $self->{output}->get_most_critical(status => [ $exit1, $exit2 ]); - - $self->{output}->output_add(severity => $exit, - short_msg => sprintf("RequestPerSec: %f BytesPerSecond: %d BytesPerRequest: %d", $rPerSec, $bPerSec, $bPerReq)); - $self->{output}->perfdata_add(label => "requestPerSec", - value => $rPerSec, - unit => $rPerSecSfx, - warning => $self->{option_results}->{warningrequest}, - critical => $self->{option_results}->{criticalrequest}); - $self->{output}->perfdata_add(label => "bytesPerSec", - value => $bPerSec, - unit => $bPerSecSfx); - $self->{output}->perfdata_add(label => "bytesPerRequest", - value => $bPerReq, - unit => $bPerReqSfx); - - } else { - $self->{output}->output_add(severity => 'UNKNOWN', - short_msg => $response->status_line); - } - - $self->{output}->display(); - $self->{output}->exit(); - -} - -1; - - -__END__ - -=head1 MODE - -Check Apache WebServer Request statistics - -=over 8 - -=item B<--hostname> - -IP Addr/FQDN of the webserver host - -=item B<--port> - -Port used by Apache - -=item B<--proxyurl> - -Proxy URL if any - -=item B<--proto> - -Specify https if needed - -=item B<--timeout> - -Threshold for HTTP timeout - -=item B<--warning> - -Threshold warning in seconds (server-status page response time) - -=item B<--critical> - -Threshold critical in seconds (server-status page response time) - -=item B<--warningrequest> - -Warning Threshold for Request per seconds - -=item B<--criticalrequest> - -Critical Threshold for Request per seconds - -=back - -=cut diff --git a/apps/apache/mode/responsetime.pm b/apps/apache/mode/responsetime.pm deleted file mode 100644 index 635d84e33..000000000 --- a/apps/apache/mode/responsetime.pm +++ /dev/null @@ -1,244 +0,0 @@ -################################################################################ -## Copyright 2005-2013 MERETHIS -## Centreon is developped by : Julien Mathis and Romain Le Merlus under -## GPL Licence 2.0. -## -## This program is free software; you can redistribute it and/or modify it under -## the terms of the GNU General Public License as published by the Free Software -## Foundation ; either version 2 of the License. -## -## This program is distributed in the hope that it will be useful, but WITHOUT ANY -## WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -## PARTICULAR PURPOSE. See the GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License along with -## this program; if not, see . -## -## Linking this program statically or dynamically with other modules is making a -## combined work based on this program. Thus, the terms and conditions of the GNU -## General Public License cover the whole combination. -## -## As a special exception, the copyright holders of this program give MERETHIS -## permission to link this program with independent modules to produce an timeelapsedutable, -## regardless of the license terms of these independent modules, and to copy and -## distribute the resulting timeelapsedutable under terms of MERETHIS choice, provided that -## MERETHIS also meet, for each linked independent module, the terms and conditions -## of the license of that module. An independent module is a module which is not -## derived from this program. If you modify this program, you may extend this -## exception to your version of the program, but you are not obliged to do so. If you -## do not wish to do so, delete this exception statement from your version. -## -## For more information : contact@centreon.com -## Author : Simon BOMM -## -## Based on De Bodt Lieven plugin -##################################################################################### - -package apps::apache::mode::responsetime; - -use base qw(centreon::plugins::mode); - -use strict; -use warnings; -use LWP::UserAgent; -use Time::HiRes qw(gettimeofday tv_interval); - -sub new { - my ($class, %options) = @_; - my $self = $class->SUPER::new(package => __PACKAGE__, %options); - bless $self, $class; - - $self->{version} = '1.0'; - $options{options}->add_options(arguments => - { - "hostname:s" => { name => 'hostname' }, - "port:i" => { name => 'port' }, - "proto:s" => { name => 'proto', default => "http" }, - "proxyurl:s" => { name => 'proxyurl' }, - "warning:i" => { name => 'warning' }, - "critical:i" => { name => 'critical' }, - "timeout:i" => { name => 'timeout', default => '3' }, - "lightperfdata" => { name => 'lightperfdata' }, - }); - return $self; -} - -sub check_options { - - my ($self, %options) = @_; - $self->SUPER::init(%options); - - if (($self->{perfdata}->threshold_validate(label => 'warning', value => $self->{option_results}->{warning})) == 0) { - $self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{warning} . "'."); - $self->{output}->option_exit(); - } - if (($self->{perfdata}->threshold_validate(label => 'critical', value => $self->{option_results}->{critical})) == 0) { - $self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{critical} . "'."); - $self->{output}->option_exit(); - } - - if (($self->{option_results}->{proto} ne 'http') && ($self->{option_results}->{proto} ne 'https')) { - $self->{output}->add_option_msg(short_msg => "Unsupported protocol specified '" . $self->{proto} . "'."); - $self->{output}->option_exit(); - } - -} - -sub run { - - my ($self, %options) = @_; - my $ua = LWP::UserAgent->new( protocols_allowed => ['http','https'], timeout => $self->{option_results}->{timeout}); - - my $timing0 = [gettimeofday]; - my $response = ''; - - if ($self->{option_results}->{proto} eq "https") { - if (defined $self->{option_results}->{proxyurl}) { - $ua->proxy(['https'], $self->{option_results}->{proxyurl}); - } - if (!defined $self->{option_results}->{port}) { - $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status'); - } else { - $response = $ua->get('https://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status'); - } - - } else { - if (defined $self->{option_results}->{proxyurl}) { - $ua->proxy(['http'], $self->{option_results}->{proxyurl}); - } - if (!defined $self->{option_results}->{port}) { - $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status'); - } else { - $response = $ua->get('http://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status'); - } - } - - my $timeelapsed = tv_interval ($timing0, [gettimeofday]); - - if ($response->is_success) { - - my $webcontent=$response->content; - my @webcontentarr = split("\n", $webcontent); - my $i = 0; - my $ScoreBoard = ""; - my $PosPreBegin = undef; - my $PosPreEnd = undef; - while (($i < @webcontentarr) && ((!defined($PosPreBegin)) || (!defined($PosPreEnd)))) { - if (!defined($PosPreBegin)) { - if ( $webcontentarr[$i] =~ m/
/i ) {
-					$PosPreBegin = $i;
-				}
-			}
-			if (defined($PosPreBegin)) {
-				if ( $webcontentarr[$i] =~ m/<\/pre>/i ) {
-					$PosPreEnd = $i;
-				}
-			}
-			$i++;
-		}
-
-		for ($i = $PosPreBegin; $i <= $PosPreEnd; $i++) {
-			$ScoreBoard = $ScoreBoard . $webcontentarr[$i];
-		}
-
-		$ScoreBoard =~ s/^.*<[Pp][Rr][Ee]>//;
-		$ScoreBoard =~ s/<\/[Pp][Rr][Ee].*>//;
-
-		my $CountOpenSlots = ($ScoreBoard =~ tr/\.//);
-
-		my $exit = $self->{perfdata}->threshold_check(value => $timeelapsed,
-				threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
-
-		if (!defined $self->{option_results}->{lightperfdata}) {
-			$self->{output}->output_add(severity => $exit,
-					short_msg => sprintf("Response time %fs ", $timeelapsed));
-			$self->{output}->perfdata_add(label => "time",
-					value => $timeelapsed,
-					warning => $self->{option_results}->{warning},
-					critical => $self->{option_results}->{critical});
-			$self->{output}->perfdata_add(label => "open_slots",
-					value => $CountOpenSlots);
-			$self->{output}->perfdata_add(label => "waiting",
-					value => ($ScoreBoard =~ tr/\_//));
-			$self->{output}->perfdata_add(label => "starting",
-					value => ($ScoreBoard =~ tr/S//));
-			$self->{output}->perfdata_add(label => "reading",
-					value => ($ScoreBoard =~ tr/R//));
-			$self->{output}->perfdata_add(label => "sending",
-					value => ($ScoreBoard =~ tr/W//));
-			$self->{output}->perfdata_add(label => "keepalive",
-					value => ($ScoreBoard =~ tr/K//));
-			$self->{output}->perfdata_add(label => "dns_lookup",
-					value => ($ScoreBoard =~ tr/D//));
-			$self->{output}->perfdata_add(label => "closing",
-					value => ($ScoreBoard =~ tr/C//));
-			$self->{output}->perfdata_add(label => "logging",
-					value => ($ScoreBoard =~ tr/L//));
-			$self->{output}->perfdata_add(label => "gracefuly_finished",
-					value => ($ScoreBoard =~ tr/G//));
-			$self->{output}->perfdata_add(label => "idle_cleanup_worker",
-					value => ($ScoreBoard =~ tr/I//));
-			$self->{output}->perfdata_add(label => "open_slots_without_process",
-					value => ($ScoreBoard =~ tr/R//));
-		} else {
-			$self->{output}->output_add(severity => $exit,
-					short_msg => sprintf("Response time %fs ", $timeelapsed));
-			$self->{output}->perfdata_add(label => "time",
-					value => ($timeelapsed),
-					warning =>  $self->{option_results}->{warning},
-					critical => $self->{option_results}->{critical});
-		}
-	} else {
-		$self->{output}->output_add(severity => 'UNKNOWN',
-				short_msg => $response->status_line);
-	}
-
-	$self->{output}->display();
-	$self->{output}->exit();
-
-}
-
-1;
-
-
-__END__
-
-=head1 MODE
-
-Check Apache WebServer statistics informations
-
-=over 8
-
-=item B<--hostname>
-
-IP Addr/FQDN of the webserver host
-
-=item B<--port>
-
-Port used by Apache
-
-=item B<--proxyurl>
-
-Proxy URL if any
-
-=item B<--timeout>
-
-Threshold for HTTP timeout
-
-=item B<--warning>
-
-Threshold warning in seconds (server-status page response time)
-
-=item B<--critical>
-
-Threshold critical in seconds (server-status page response time)
-
-=item B<--lightperfdata>
-
-Add this option to get a light graph with the following metric : Request timer
-
-Otherwise, you'll get the following metrics : Request timer and Slot states : Waiting for Connection, Starting up, Reading Request, Sending Reply, Keepalive (read), DNS Lookup, Closing connection,Logging Gracefully finishing, Idle cleanup of worker, Open slot with no current process
-
-=back
-
-=cut
diff --git a/apps/apache/mode/slotstates.pm b/apps/apache/mode/slotstates.pm
deleted file mode 100644
index cbbbd3189..000000000
--- a/apps/apache/mode/slotstates.pm
+++ /dev/null
@@ -1,251 +0,0 @@
-################################################################################
-## Copyright 2005-2013 MERETHIS
-## Centreon is developped by : Julien Mathis and Romain Le Merlus under
-## GPL Licence 2.0.
-## 
-## This program is free software; you can redistribute it and/or modify it under 
-## the terms of the GNU General Public License as published by the Free Software 
-## Foundation ; either version 2 of the License.
-## 
-## This program is distributed in the hope that it will be useful, but WITHOUT ANY
-## WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-## PARTICULAR PURPOSE. See the GNU General Public License for more details.
-## 
-## You should have received a copy of the GNU General Public License along with 
-## this program; if not, see .
-## 
-## Linking this program statically or dynamically with other modules is making a 
-## combined work based on this program. Thus, the terms and conditions of the GNU 
-## General Public License cover the whole combination.
-## 
-## As a special exception, the copyright holders of this program give MERETHIS 
-## permission to link this program with independent modules to produce an timeelapsedutable, 
-## regardless of the license terms of these independent modules, and to copy and 
-## distribute the resulting timeelapsedutable under terms of MERETHIS choice, provided that 
-## MERETHIS also meet, for each linked independent module, the terms  and conditions 
-## of the license of that module. An independent module is a module which is not 
-## derived from this program. If you modify this program, you may extend this 
-## exception to your version of the program, but you are not obliged to do so. If you
-## do not wish to do so, delete this exception statement from your version.
-## 
-## For more information : contact@centreon.com
-## Author : Simon BOMM 
-##
-## Based on De Bodt Lieven plugin
-#####################################################################################
-
-package apps::apache::mode::slotstates;
-
-use base qw(centreon::plugins::mode);
-
-use strict;
-use warnings;
-use LWP::UserAgent;
-use Time::HiRes qw(gettimeofday tv_interval);
-
-sub new {
-	my ($class, %options) = @_;
-	my $self = $class->SUPER::new(package => __PACKAGE__, %options);
-	bless $self, $class;
-
-	$self->{version} = '1.0';
-	$options{options}->add_options(arguments =>
-			{
-			"hostname:s"        => { name => 'hostname' },
-			"port:i"	=> { name => 'port' },
-			"proto:s"	=> { name => 'proto', default => "http" },
-			"proxyurl:s"	=> { name => 'proxyurl' },
-			"warning:i"    => { name => 'warning', default => '1' },
-			"critical:i"    => { name => 'critical', default => '2' },
-			"warningfree:s"    => { name => 'warningfree' },
-			"criticalfree:s"    => { name => 'criticalfree' },
-			"timeout:i"	    => { name => 'timeout', default => '3' },
-			});
-	return $self;
-}
-
-sub check_options {
-
-	my ($self, %options) = @_;
-	$self->SUPER::init(%options);
-
-	if (($self->{perfdata}->threshold_validate(label => 'warning', value => $self->{option_results}->{warning})) == 0) {
-		$self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{warning} . "'.");
-		$self->{output}->option_exit();
-	}
-	if (($self->{perfdata}->threshold_validate(label => 'critical', value => $self->{option_results}->{critical})) == 0) {
-		$self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{critical} . "'.");
-		$self->{output}->option_exit();
-	}
-	
-	if (($self->{perfdata}->threshold_validate(label => 'warningfree', value => $self->{option_results}->{warningfree})) == 0) {
-                $self->{output}->add_option_msg(short_msg => "Wrong warningfree threshold '" . $self->{warningfree} . "'.");
-                $self->{output}->option_exit();
-        }
-        if (($self->{perfdata}->threshold_validate(label => 'criticalfree', value => $self->{option_results}->{criticalfree})) == 0) {
-                $self->{output}->add_option_msg(short_msg => "Wrong criticalfree threshold '" . $self->{criticalfree} . "'.");
-                $self->{output}->option_exit();
-        }
-	
-	if (($self->{option_results}->{proto} ne 'http') && ($self->{option_results}->{proto} ne 'https')) {
-		$self->{output}->add_option_msg(short_msg => "Unsupported protocol specified '" . $self->{proto} . "'.");
-                $self->{output}->option_exit();
-	}
-
-}
-
-sub run {
-
-	my ($self, %options) = @_;
-	my $ua = LWP::UserAgent->new( protocols_allowed => ['http','https'], timeout => $self->{option_results}->{timeout});
-	
-	my $timing0 = [gettimeofday];
-	my $response = '';
-	
-        if ($self->{option_results}->{proto} eq "https") {
-                if (defined $self->{option_results}->{proxyurl}) {
-                        $ua->proxy(['https'], $self->{option_results}->{proxyurl});
-                }
-                if (!defined $self->{option_results}->{port}) {
-                        $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
-                } else  {
-                        $response = $ua->get('https://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
-                }
-
-        } else {
-                if (defined $self->{option_results}->{proxyurl}) {
-                        $ua->proxy(['http'], $self->{option_results}->{proxyurl});
-                }
-                if (!defined $self->{option_results}->{port}) {
-                        $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
-                } else  {
-                        $response = $ua->get('http://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
-                }
-        }
-
-	my $timeelapsed = tv_interval ($timing0, [gettimeofday]);
-
-	if ($response->is_success) {
-
-		my $webcontent=$response->content;
-		my @webcontentarr = split("\n", $webcontent);
-		my $i = 0;
-		my $ScoreBoard = "";
-		my $PosPreBegin = undef;
-		my $PosPreEnd = undef;
-		
-		while (($i < @webcontentarr) && ((!defined($PosPreBegin)) || (!defined($PosPreEnd)))) {
-			if (!defined($PosPreBegin)) {
-				if ( $webcontentarr[$i] =~ m/
/i ) {
-					$PosPreBegin = $i;
-				}
-			}
-			if (defined($PosPreBegin)) {
-				if ( $webcontentarr[$i] =~ m/<\/pre>/i ) {
-					$PosPreEnd = $i;
-				}
-			}
-			$i++;
-		}
-
-		for ($i = $PosPreBegin; $i <= $PosPreEnd; $i++) {
-			$ScoreBoard = $ScoreBoard . $webcontentarr[$i];
-		}
-
-		$ScoreBoard =~ s/^.*<[Pp][Rr][Ee]>//;
-		$ScoreBoard =~ s/<\/[Pp][Rr][Ee].*>//;
-
-		my $CountOpenSlots = ($ScoreBoard =~ tr/\.//);
-
-		my $exit1 = $self->{perfdata}->threshold_check(value => $CountOpenSlots,
-				threshold => [ { label => 'criticalfree', 'exit_litteral' => 'critical' }, { label => 'warningslot', exit_litteral => 'warning' } ]);
-		my $exit2 = $self->{perfdata}->threshold_check(value => $timeelapsed,
-				threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
-		my $exit = $self->{output}->get_most_critical(status => [ $exit1, $exit2 ]);
-
-		$self->{output}->output_add(severity => $exit,
-				short_msg => sprintf("Free slots: %d", $CountOpenSlots));
-                $self->{output}->perfdata_add(label => "freeSlots",
-                                value => $CountOpenSlots,
-                                warning => $self->{option_results}->{warningfree},
-                                critical => $self->{option_results}->{criticalfree});
-		$self->{output}->perfdata_add(label => "waiting",
-				value => ($ScoreBoard =~ tr/\_//));
-		$self->{output}->perfdata_add(label => "starting",
-				value => ($ScoreBoard =~ tr/S//));
-		$self->{output}->perfdata_add(label => "reading",
-				value => ($ScoreBoard =~ tr/R//));
-		$self->{output}->perfdata_add(label => "sending",
-				value => ($ScoreBoard =~ tr/W//));
-		$self->{output}->perfdata_add(label => "keepalive",
-				value => ($ScoreBoard =~ tr/K//));
-		$self->{output}->perfdata_add(label => "dns_lookup",
-				value => ($ScoreBoard =~ tr/D//));
-		$self->{output}->perfdata_add(label => "closing",
-				value => ($ScoreBoard =~ tr/C//));
-		$self->{output}->perfdata_add(label => "logging",
-				value => ($ScoreBoard =~ tr/L//));
-		$self->{output}->perfdata_add(label => "gracefuly_finished",
-				value => ($ScoreBoard =~ tr/G//));
-		$self->{output}->perfdata_add(label => "idle_cleanup_worker",
-				value => ($ScoreBoard =~ tr/I//));
-	} else {
-		$self->{output}->output_add(severity => 'UNKNOWN',
-				short_msg => $response->status_line);
-	}
-
-	$self->{output}->display();
-	$self->{output}->exit();
-
-}
-
-1;
-
-
-__END__
-
-=head1 MODE
-
-Check Apache WebServer Slots informations
-
-=over 8
-
-=item B<--hostname>
-
-IP Address or FQDN of the webserver host
-
-=item B<--port>
-
-Port used by Apache
-
-=item B<--proxyurl>
-
-Proxy URL if any
-
-=item B<--proto>
-
-Protocol used http or https
-
-=item B<--timeout>
-
-Threshold for HTTP timeout
-
-=item B<--warning>
-
-Threshold warning in seconds (server-status page response time)
-
-=item B<--critical>
-
-Threshold critical in seconds (server-status page response time)
-
-=item B<--warningfree>
-
-Warning Threshold on remaining free slot
-
-=item B<--criticalfree>
-
-Critical Threshold on remaining free slot
-
-=back
-
-=cut
diff --git a/apps/apache/mode/workers.pm b/apps/apache/mode/workers.pm
deleted file mode 100644
index ef4d5ed4c..000000000
--- a/apps/apache/mode/workers.pm
+++ /dev/null
@@ -1,217 +0,0 @@
-################################################################################
-## Copyright 2005-2013 MERETHIS
-## Centreon is developped by : Julien Mathis and Romain Le Merlus under
-## GPL Licence 2.0.
-## 
-## This program is free software; you can redistribute it and/or modify it under 
-## the terms of the GNU General Public License as published by the Free Software 
-## Foundation ; either version 2 of the License.
-## 
-## This program is distributed in the hope that it will be useful, but WITHOUT ANY
-## WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-## PARTICULAR PURPOSE. See the GNU General Public License for more details.
-## 
-## You should have received a copy of the GNU General Public License along with 
-## this program; if not, see .
-## 
-## Linking this program statically or dynamically with other modules is making a 
-## combined work based on this program. Thus, the terms and conditions of the GNU 
-## General Public License cover the whole combination.
-## 
-## As a special exception, the copyright holders of this program give MERETHIS 
-## permission to link this program with independent modules to produce an timeelapsedutable, 
-## regardless of the license terms of these independent modules, and to copy and 
-## distribute the resulting timeelapsedutable under terms of MERETHIS choice, provided that 
-## MERETHIS also meet, for each linked independent module, the terms  and conditions 
-## of the license of that module. An independent module is a module which is not 
-## derived from this program. If you modify this program, you may extend this 
-## exception to your version of the program, but you are not obliged to do so. If you
-## do not wish to do so, delete this exception statement from your version.
-## 
-## For more information : contact@centreon.com
-## Author : Simon BOMM 
-##
-## Based on De Bodt Lieven plugin
-#####################################################################################
-
-package apps::apache::mode::workers;
-
-use base qw(centreon::plugins::mode);
-
-use strict;
-use warnings;
-use LWP::UserAgent;
-use Time::HiRes qw(gettimeofday tv_interval);
-
-sub new {
-	my ($class, %options) = @_;
-	my $self = $class->SUPER::new(package => __PACKAGE__, %options);
-	bless $self, $class;
-
-	$self->{version} = '1.0';
-	$options{options}->add_options(arguments =>
-			{
-			"hostname:s"        => { name => 'hostname' },
-			"port:i"	=> { name => 'port' },
-			"proto:s"	=> { name => 'proto', default => "http" },
-			"proxyurl:s"	=> { name => 'proxyurl' },
-			"warning:i"    => { name => 'warning' },
-			"critical:i"    => { name => 'critical' },
-			"warningbusy"    => { name => 'warningbusy' },
-			"criticalbusy"    => { name => 'criticalbusy' },
-			"timeout:i"	    => { name => 'timeout', default => '3' },
-			});
-	return $self;
-}
-
-sub check_options {
-
-	my ($self, %options) = @_;
-	$self->SUPER::init(%options);
-
-	if (($self->{perfdata}->threshold_validate(label => 'warning', value => $self->{option_results}->{warning})) == 0) {
-		$self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{warning} . "'.");
-		$self->{output}->option_exit();
-	}
-	if (($self->{perfdata}->threshold_validate(label => 'critical', value => $self->{option_results}->{critical})) == 0) {
-		$self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{critical} . "'.");
-		$self->{output}->option_exit();
-	}
-
-	if (($self->{perfdata}->threshold_validate(label => 'warningbusy', value => $self->{option_results}->{warningbusy})) == 0) {
-		$self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{warning} . "'.");
-		$self->{output}->option_exit();
-	}
-	if (($self->{perfdata}->threshold_validate(label => 'criticalbusy', value => $self->{option_results}->{criticalbusy})) == 0) {
-		$self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{critical} . "'.");
-		$self->{output}->option_exit();
-	}
-	if (($self->{option_results}->{proto} ne 'http') && ($self->{option_results}->{proto} ne 'https')) {
-		$self->{output}->add_option_msg(short_msg => "Unsupported protocol specified '" . $self->{proto} . "'.");
-                $self->{output}->option_exit();
-	}
-
-}
-
-sub run {
-
-	my ($self, %options) = @_;
-	my $ua = LWP::UserAgent->new( protocols_allowed => ['http','https'], timeout => $self->{option_results}->{timeout});
-	
-	my $timing0 = [gettimeofday];
-	my $response = '';
-	
-	if ($self->{option_results}->{proto} eq "https") {
-        	if (defined $self->{option_results}->{proxyurl}) {
-                	$ua->proxy(['https'], $self->{option_results}->{proxyurl});
-                }
-                if (!defined $self->{option_results}->{port}) {
-                        $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
-                } else  {
-                        $response = $ua->get('https://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
-                }
-        } else {
-                if (defined $self->{option_results}->{proxyurl}) {
-                        $ua->proxy(['http'], $self->{option_results}->{proxyurl});
-                }
-                if (!defined $self->{option_results}->{port}) {
-                        $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
-                } else  {
-                        $response = $ua->get('http://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
-                }
-        }
-
-	my $timeelapsed = tv_interval ($timing0, [gettimeofday]);
-
-	if ($response->is_success) {
-		
-		my $BusyWorkers;
-		my $IdleWorkers;
-		my $webcontent=$response->content;
-		my @webcontentarr = split("\n", $webcontent);
-		my $i = 0;
-		my $prct_busy=0;
-
-		while ($i < @webcontentarr) {
-			if ($webcontentarr[$i] =~ /(\d+)\s+requests\s+currently\s+being\s+processed,\s+(\d+)\s+idle\s+....ers/) {
-				($BusyWorkers, $IdleWorkers) = ($webcontentarr[$i] =~ /(\d+)\s+requests\s+currently\s+being\s+processed,\s+(\d+)\s+idle\s+....ers/);
-			}
-			$i++;
-		}
-		
-		$prct_busy = $BusyWorkers / ($BusyWorkers + $IdleWorkers) * 100;
-	
-		my $exit1 = $self->{perfdata}->threshold_check(value => $prct_busy,
-				threshold => [ { label => 'criticalbusy', 'exit_litteral' => 'critical' }, { label => 'warningbusy', exit_litteral => 'warning' } ]);
-		my $exit2 = $self->{perfdata}->threshold_check(value => $timeelapsed,
-				threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
-		my $exit = $self->{output}->get_most_critical(status => [ $exit1, $exit2 ]);
-
-		$self->{output}->output_add(severity => $exit,
-				short_msg => sprintf("Busy workers: %d Idle workers: %d ", $BusyWorkers, $IdleWorkers));
-		$self->{output}->perfdata_add(label => "idle_workers",
-				value => $IdleWorkers);
-		$self->{output}->perfdata_add(label => "busy_workers",
-				value => $BusyWorkers,
-				warning => $self->{option_results}->{warningbusy},
-				critical => $self->{option_results}->{criticalbusy});
-	} else {
-		$self->{output}->output_add(severity => 'UNKNOWN',
-				short_msg => $response->status_line);
-	}
-
-	$self->{output}->display();
-	$self->{output}->exit();
-
-}
-
-1;
-
-
-__END__
-
-=head1 MODE
-
-Check Apache WebServer Workers and Open Slots
-
-=over 8
-
-=item B<--hostname>
-
-IP Addr/FQDN of the webserver host
-
-=item B<--port>
-
-Port used by Apache
-
-=item B<--proxyurl>
-
-Proxy URL if any
-
-=item B<--proto>
-
-Protocol to use http or https, http is default
-
-=item B<--timeout>
-
-Threshold for HTTP timeout
-
-=item B<--warning>
-
-Threshold warning in seconds (server-status page response time)
-
-=item B<--critical>
-
-Threshold critical in seconds (server-status page response time)
-
-=item B<--warningbusy>
-
-Warning Threshold (%) of busy workers
-
-=item B<--criticalbusy>
-
-Critical Threshold (%) of busy workers
-
-=back
-
-=cut
diff --git a/apps/apache/plugin.pm b/apps/apache/plugin.pm
deleted file mode 100644
index 3dcadabab..000000000
--- a/apps/apache/plugin.pm
+++ /dev/null
@@ -1,66 +0,0 @@
-###############################################################################
-# Copyright 2005-2013 MERETHIS
-# Centreon is developped by : Julien Mathis and Romain Le Merlus under
-# GPL Licence 2.0.
-# 
-# This program is free software; you can redistribute it and/or modify it under 
-# the terms of the GNU General Public License as published by the Free Software 
-# Foundation ; either version 2 of the License.
-# 
-# This program is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-# PARTICULAR PURPOSE. See the GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License along with 
-# this program; if not, see .
-# 
-# Linking this program statically or dynamically with other modules is making a 
-# combined work based on this program. Thus, the terms and conditions of the GNU 
-# General Public License cover the whole combination.
-# 
-# As a special exception, the copyright holders of this program give MERETHIS 
-# permission to link this program with independent modules to produce an executable, 
-# regardless of the license terms of these independent modules, and to copy and 
-# distribute the resulting executable under terms of MERETHIS choice, provided that 
-# MERETHIS also meet, for each linked independent module, the terms  and conditions 
-# of the license of that module. An independent module is a module which is not 
-# derived from this program. If you modify this program, you may extend this 
-# exception to your version of the program, but you are not obliged to do so. If you
-# do not wish to do so, delete this exception statement from your version.
-# 
-# For more information : contact@centreon.com
-# Authors : Quentin Garnier 
-#
-####################################################################################
-
-package apps::apache::plugin;
-
-use strict;
-use warnings;
-use base qw(centreon::plugins::script_simple);
-
-sub new {
-	my ($class, %options) = @_;
-	my $self = $class->SUPER::new(package => __PACKAGE__, %options);
-	bless $self, $class;
-# $options->{options} = options object
-
-	$self->{version} = '0.1';
-	%{$self->{modes}} = (
-			'responsetime'	=> 'apps::apache::mode::responsetime',
-			'requests'	=> 'apps::apache::mode::requests',
-			'slotstates'	=> 'apps::apache::mode::slotstates',
-			'workers'	=> 'apps::apache::mode::workers',
-			);
-
-	return $self;
-}
-
-1;
-
-__END__
-
-=head1 PLUGIN DESCRIPTION
-
-Check Apache and Apache 2 Web Servers through server-status webpage
-=cut
diff --git a/apps/apache/serverstatus/mode/requests.pm b/apps/apache/serverstatus/mode/requests.pm
index 78629cc56..7a5ec0fda 100644
--- a/apps/apache/serverstatus/mode/requests.pm
+++ b/apps/apache/serverstatus/mode/requests.pm
@@ -1,38 +1,38 @@
-################################################################################
-## Copyright 2005-2013 MERETHIS
-## Centreon is developped by : Julien Mathis and Romain Le Merlus under
-## GPL Licence 2.0.
-## 
-## This program is free software; you can redistribute it and/or modify it under 
-## the terms of the GNU General Public License as published by the Free Software 
-## Foundation ; either version 2 of the License.
-## 
-## This program is distributed in the hope that it will be useful, but WITHOUT ANY
-## WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-## PARTICULAR PURPOSE. See the GNU General Public License for more details.
-## 
-## You should have received a copy of the GNU General Public License along with 
-## this program; if not, see .
-## 
-## Linking this program statically or dynamically with other modules is making a 
-## combined work based on this program. Thus, the terms and conditions of the GNU 
-## General Public License cover the whole combination.
-## 
-## As a special exception, the copyright holders of this program give MERETHIS 
-## permission to link this program with independent modules to produce an timeelapsedutable, 
-## regardless of the license terms of these independent modules, and to copy and 
-## distribute the resulting timeelapsedutable under terms of MERETHIS choice, provided that 
-## MERETHIS also meet, for each linked independent module, the terms  and conditions 
-## of the license of that module. An independent module is a module which is not 
-## derived from this program. If you modify this program, you may extend this 
-## exception to your version of the program, but you are not obliged to do so. If you
-## do not wish to do so, delete this exception statement from your version.
-## 
-## For more information : contact@centreon.com
-## Author : Simon BOMM 
-##
-## Based on De Bodt Lieven plugin
-#####################################################################################
+###############################################################################
+# Copyright 2005-2013 MERETHIS
+# Centreon is developped by : Julien Mathis and Romain Le Merlus under
+# GPL Licence 2.0.
+# 
+# This program is free software; you can redistribute it and/or modify it under 
+# the terms of the GNU General Public License as published by the Free Software 
+# Foundation ; either version 2 of the License.
+# 
+# This program is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
+# PARTICULAR PURPOSE. See the GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License along with 
+# this program; if not, see .
+# 
+# Linking this program statically or dynamically with other modules is making a 
+# combined work based on this program. Thus, the terms and conditions of the GNU 
+# General Public License cover the whole combination.
+# 
+# As a special exception, the copyright holders of this program give MERETHIS 
+# permission to link this program with independent modules to produce an timeelapsedutable, 
+# regardless of the license terms of these independent modules, and to copy and 
+# distribute the resulting timeelapsedutable under terms of MERETHIS choice, provided that 
+# MERETHIS also meet, for each linked independent module, the terms  and conditions 
+# of the license of that module. An independent module is a module which is not 
+# derived from this program. If you modify this program, you may extend this 
+# exception to your version of the program, but you are not obliged to do so. If you
+# do not wish to do so, delete this exception statement from your version.
+# 
+# For more information : contact@centreon.com
+# Author : Simon BOMM 
+#
+# Based on De Bodt Lieven plugin
+####################################################################################
 
 package apps::apache::serverstatus::mode::requests;
 
@@ -51,14 +51,14 @@ sub new {
     $options{options}->add_options(arguments =>
             {
             "hostname:s"        => { name => 'hostname' },
-            "port:i"    => { name => 'port' },
-            "proto:s"    => { name => 'proto', default => "http" },
-            "proxyurl:s"    => { name => 'proxyurl' },
-            "warning:s"    => { name => 'warning' },
-            "critical:s"    => { name => 'critical' },
-            "warning-bytes:s"    => { name => 'warning_bytes' },
-            "critical-bytes:s"    => { name => 'critical_bytes' },
-            "timeout:i"        => { name => 'timeout', default => '3' },
+            "port:s"            => { name => 'port' },
+            "proto:s"           => { name => 'proto', default => "http" },
+            "proxyurl:s"        => { name => 'proxyurl' },
+            "warning:s"         => { name => 'warning' },
+            "critical:s"        => { name => 'critical' },
+            "warning-bytes:s"   => { name => 'warning_bytes' },
+            "critical-bytes:s"  => { name => 'critical_bytes' },
+            "timeout:s"         => { name => 'timeout', default => '3' },
             });
     return $self;
 }
@@ -68,16 +68,24 @@ sub check_options {
     my ($self, %options) = @_;
     $self->SUPER::init(%options);
 
-    if (($self->{perfdata}->threshold_validate(label => 'critical', value => $self->{option_results}->{critical})) == 0) {
-        $self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{warning} . "'.");
+    if (($self->{perfdata}->threshold_validate(label => 'warning', value => $self->{option_results}->{warning})) == 0) {
+        $self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{option_results}->{warning} . "'.");
         $self->{output}->option_exit();
     }
-    if (($self->{perfdata}->threshold_validate(label => 'warning', value => $self->{option_results}->{warning})) == 0) {
-        $self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{critical} . "'.");
+    if (($self->{perfdata}->threshold_validate(label => 'critical', value => $self->{option_results}->{critical})) == 0) {
+        $self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{option_results}->{critical} . "'.");
+        $self->{output}->option_exit();
+    }
+    if (($self->{perfdata}->threshold_validate(label => 'warning-bytes', value => $self->{option_results}->{warning_bytes})) == 0) {
+        $self->{output}->add_option_msg(short_msg => "Wrong warning-bytes threshold '" . $self->{option_results}->{warning_bytes} . "'.");
+        $self->{output}->option_exit();
+    }
+    if (($self->{perfdata}->threshold_validate(label => 'critical-bytes', value => $self->{option_results}->{critical_bytes})) == 0) {
+        $self->{output}->add_option_msg(short_msg => "Wrong critical-bytes threshold '" . $self->{option_results}->{critical_bytes} . "'.");
         $self->{output}->option_exit();
     }
     if (!defined($self->{option_results}->{hostname})) {
-	$self->{output}->add_option_msg(short_msg => "Please set the hostname option");
+        $self->{output}->add_option_msg(short_msg => "Please set the hostname option");
         $self->{output}->option_exit();
     }
 }
@@ -95,17 +103,16 @@ sub run {
         }
         if (!defined $self->{option_results}->{port}) {
             $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
-        } else  {
-                $response = $ua->get('https://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
-        }    
-        
+        } else {
+            $response = $ua->get('https://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
+        }
     } else {
         if (defined $self->{option_results}->{proxyurl}) {
             $ua->proxy(['http'], $self->{option_results}->{proxyurl});
         }
         if (!defined $self->{option_results}->{port}) {
             $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
-        } else  {
+        } else {
             $response = $ua->get('http://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
         }
     }
@@ -115,43 +122,39 @@ sub run {
         my $webcontent=$response->content;
         my @webcontentarr = split("\n", $webcontent);
         my $i = 0;
-        my $rPerSec=undef;
-        my $rPerSecSfx=undef;
-        my $bPerSec=undef;
-        my $bPerSecSfx=undef;
-        my $bPerReq=undef;
-        my $bPerReqSfx=undef;
+        my ($rPerSec, $rPerSecSfx, $bPerSec, $bPerSecSfx, $bPerReq, $bPerReqSfx);
+
         while (($i < @webcontentarr) && ((!defined($rPerSec)) || (!defined($bPerSec)) || (!defined($bPerReq)))) {
             if ($webcontentarr[$i] =~ /([0-9]*\.?[0-9]+)\s([A-Za-z]+)\/sec\s-\s([0-9]*\.?[0-9]+)\s([A-Za-z]+)\/second\s-\s([0-9]*\.?[0-9]+)\s([A-Za-z]+)\/request/) {
                 ($rPerSec, $rPerSecSfx, $bPerSec, $bPerSecSfx, $bPerReq, $bPerReqSfx) = ($webcontentarr[$i] =~ /([0-9]*\.?[0-9]+)\s([A-Za-z]+)\/sec\s-\s([0-9]*\.?[0-9]+)\s([A-Za-z]+)\/second\s-\s([0-9]*\.?[0-9]+)\s([A-Za-z]+)\/request/);
             }
-        $i++;
+            $i++;
         }
 	
         my $exit1 = $self->{perfdata}->threshold_check(value => $rPerSec, threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
         my $exit2 = $self->{perfdata}->threshold_check(value => $bPerReq, threshold => [ { label => 'critical-bytes', 'exit_litteral' => 'critical' }, { label => 'warning-bytes', exit_litteral => 'warning' } ]);
 
-	my $exit = $self->{output}->get_most_critical(status => [ $exit1, $exit2 ]);
+        my $exit = $self->{output}->get_most_critical(status => [ $exit1, $exit2 ]);
 
         $self->{output}->output_add(severity => $exit,
-                short_msg => sprintf("RequestPerSec: %f  BytesPerSecond: %d BytesPerRequest: %d", $rPerSec, $bPerSec, $bPerReq));
+                                    short_msg => sprintf("RequestPerSec: %f  BytesPerSecond: %d BytesPerRequest: %d", $rPerSec, $bPerSec, $bPerReq));
         $self->{output}->perfdata_add(label => "requestPerSec",
-                value => $rPerSec,
-                unit => $rPerSecSfx,
-                warning => $self->{option_results}->{warning},
-                critical => $self->{option_results}->{critical});
+                                      value => $rPerSec,
+                                      unit => $rPerSecSfx,
+                                      warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning'),
+                                      critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical')
+                                      );
         $self->{output}->perfdata_add(label => "bytesPerSec",
-                value => $bPerSec,
-                unit => $bPerSecSfx);
+                                      value => $bPerSec,
+                                      unit => $bPerSecSfx);
         $self->{output}->perfdata_add(label => "bytesPerRequest",
-                value => $bPerReq,
-                warning => $self->{option_results}->{warning_bytes},
-                critical => $self->{option_results}->{critical_bytes},
-                unit => $bPerReqSfx);
-    
+                                      value => $bPerReq,
+                                      warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning-bytes'),
+                                      critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical-bytes'),
+                                      unit => $bPerReqSfx);
     } else {
         $self->{output}->output_add(severity => 'UNKNOWN',
-                short_msg => $response->status_line);
+                                    short_msg => $response->status_line);
     }
 
     $self->{output}->display();
@@ -161,7 +164,6 @@ sub run {
 
 1;
 
-
 __END__
 
 =head1 MODE
@@ -198,11 +200,11 @@ Warning Threshold for Request per seconds
 
 Critical Threshold for Request per seconds
 
-=item B<--warningbytes>
+=item B<--warning-bytes>
 
 Warning Threshold for Bytes Per Request
 
-=item B<--criticalbytes>
+=item B<--critical-bytes>
 
 Critical Threshold for Bytes Per Request
 
diff --git a/apps/apache/serverstatus/mode/responsetime.pm b/apps/apache/serverstatus/mode/responsetime.pm
index ee1383ebc..2a0c5b57a 100644
--- a/apps/apache/serverstatus/mode/responsetime.pm
+++ b/apps/apache/serverstatus/mode/responsetime.pm
@@ -1,38 +1,38 @@
-################################################################################
-## Copyright 2005-2013 MERETHIS
-## Centreon is developped by : Julien Mathis and Romain Le Merlus under
-## GPL Licence 2.0.
-## 
-## This program is free software; you can redistribute it and/or modify it under 
-## the terms of the GNU General Public License as published by the Free Software 
-## Foundation ; either version 2 of the License.
-## 
-## This program is distributed in the hope that it will be useful, but WITHOUT ANY
-## WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-## PARTICULAR PURPOSE. See the GNU General Public License for more details.
-## 
-## You should have received a copy of the GNU General Public License along with 
-## this program; if not, see .
-## 
-## Linking this program statically or dynamically with other modules is making a 
-## combined work based on this program. Thus, the terms and conditions of the GNU 
-## General Public License cover the whole combination.
-## 
-## As a special exception, the copyright holders of this program give MERETHIS 
-## permission to link this program with independent modules to produce an timeelapsedutable, 
-## regardless of the license terms of these independent modules, and to copy and 
-## distribute the resulting timeelapsedutable under terms of MERETHIS choice, provided that 
-## MERETHIS also meet, for each linked independent module, the terms  and conditions 
-## of the license of that module. An independent module is a module which is not 
-## derived from this program. If you modify this program, you may extend this 
-## exception to your version of the program, but you are not obliged to do so. If you
-## do not wish to do so, delete this exception statement from your version.
-## 
-## For more information : contact@centreon.com
-## Author : Simon BOMM 
-##
-## Based on De Bodt Lieven plugin
-#####################################################################################
+###############################################################################
+# Copyright 2005-2013 MERETHIS
+# Centreon is developped by : Julien Mathis and Romain Le Merlus under
+# GPL Licence 2.0.
+# 
+# This program is free software; you can redistribute it and/or modify it under 
+# the terms of the GNU General Public License as published by the Free Software 
+# Foundation ; either version 2 of the License.
+# 
+# This program is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
+# PARTICULAR PURPOSE. See the GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License along with 
+# this program; if not, see .
+# 
+# Linking this program statically or dynamically with other modules is making a 
+# combined work based on this program. Thus, the terms and conditions of the GNU 
+# General Public License cover the whole combination.
+# 
+# As a special exception, the copyright holders of this program give MERETHIS 
+# permission to link this program with independent modules to produce an timeelapsedutable, 
+# regardless of the license terms of these independent modules, and to copy and 
+# distribute the resulting timeelapsedutable under terms of MERETHIS choice, provided that 
+# MERETHIS also meet, for each linked independent module, the terms  and conditions 
+# of the license of that module. An independent module is a module which is not 
+# derived from this program. If you modify this program, you may extend this 
+# exception to your version of the program, but you are not obliged to do so. If you
+# do not wish to do so, delete this exception statement from your version.
+# 
+# For more information : contact@centreon.com
+# Author : Simon BOMM 
+#
+# Based on De Bodt Lieven plugin
+####################################################################################
 
 package apps::apache::serverstatus::mode::responsetime;
 
@@ -51,46 +51,42 @@ sub new {
     $self->{version} = '1.0';
     $options{options}->add_options(arguments =>
          {
-         "hostname:s"     => { name => 'hostname' },
-         "port:i"    => { name => 'port' },
-         "proto:s"    => { name => 'proto', default => "http" },
-         "proxyurl:s"    => { name => 'proxyurl' },
+         "hostname:s"   => { name => 'hostname' },
+         "port:s"       => { name => 'port' },
+         "proto:s"      => { name => 'proto', default => "http" },
+         "proxyurl:s"   => { name => 'proxyurl' },
          "warning:s"    => { name => 'warning' },
-         "critical:s"    => { name => 'critical' },
-         "timeout:i"     => { name => 'timeout', default => '3' },
-         "lightperfdata"     => { name => 'lightperfdata' },
+         "critical:s"   => { name => 'critical' },
+         "timeout:s"    => { name => 'timeout', default => '3' },
          });
     return $self;
 }
 
 sub check_options {
-
     my ($self, %options) = @_;
     $self->SUPER::init(%options);
 
     if (($self->{perfdata}->threshold_validate(label => 'warning', value => $self->{option_results}->{warning})) == 0) {
-     $self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{warning} . "'.");
-     $self->{output}->option_exit();
+        $self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{option_results}->{warning} . "'.");
+        $self->{output}->option_exit();
     }
     if (($self->{perfdata}->threshold_validate(label => 'critical', value => $self->{option_results}->{critical})) == 0) {
-     $self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{critical} . "'.");
-     $self->{output}->option_exit();
+        $self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{option_results}->{critical} . "'.");
+        $self->{output}->option_exit();
     }
 
     if (($self->{option_results}->{proto} ne 'http') && ($self->{option_results}->{proto} ne 'https')) {
-     $self->{output}->add_option_msg(short_msg => "Unsupported protocol specified '" . $self->{proto} . "'.");
-          $self->{output}->option_exit();
+        $self->{output}->add_option_msg(short_msg => "Unsupported protocol specified '" . $self->{option_results}->{proto} . "'.");
+        $self->{output}->option_exit();
     }
 
     if (!defined($self->{option_results}->{hostname})) {
         $self->{output}->add_option_msg(short_msg => "Please set the hostname option");
         $self->{output}->option_exit();
     }
-
 }
 
 sub run {
-
     my ($self, %options) = @_;
     my $ua = LWP::UserAgent->new( protocols_allowed => ['http','https'], timeout => $self->{option_results}->{timeout});
     
@@ -98,105 +94,100 @@ sub run {
     my $response = '';
     
     if ($self->{option_results}->{proto} eq "https") {
-          if (defined $self->{option_results}->{proxyurl}) {
-               $ua->proxy(['https'], $self->{option_results}->{proxyurl});
-          }
-          if (!defined $self->{option_results}->{port}) {
-               $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
-          } else  {
-               $response = $ua->get('https://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
-          }
-
-     } else {
-          if (defined $self->{option_results}->{proxyurl}) {
-               $ua->proxy(['http'], $self->{option_results}->{proxyurl});
-          }
-          if (!defined $self->{option_results}->{port}) {
-               $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
-          } else  {
-               $response = $ua->get('http://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
-          }
-     }
+        if (defined $self->{option_results}->{proxyurl}) {
+            $ua->proxy(['https'], $self->{option_results}->{proxyurl});
+        }
+        if (!defined $self->{option_results}->{port}) {
+            $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
+        } else  {
+            $response = $ua->get('https://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
+        }
+    } else {
+        if (defined $self->{option_results}->{proxyurl}) {
+            $ua->proxy(['http'], $self->{option_results}->{proxyurl});
+        }
+        if (!defined $self->{option_results}->{port}) {
+            $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
+        } else  {
+            $response = $ua->get('http://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
+        }
+    }
 
     my $timeelapsed = tv_interval ($timing0, [gettimeofday]);
-
     if ($response->is_success) {
+        my $webcontent=$response->content;
+        my @webcontentarr = split("\n", $webcontent);
+        my $i = 0;
+        my $ScoreBoard = "";
+        my $PosPreBegin = undef;
+        my $PosPreEnd = undef;
+        while (($i < @webcontentarr) && ((!defined($PosPreBegin)) || (!defined($PosPreEnd)))) {
+            if (!defined($PosPreBegin)) {
+                if ($webcontentarr[$i] =~ m/
/i) {
+                    $PosPreBegin = $i;
+                }
+            }
+            if (defined($PosPreBegin)) {
+                if ($webcontentarr[$i] =~ m/<\/pre>/i) {
+                    $PosPreEnd = $i;
+                }
+            }
+            $i++;
+        }
 
-     my $webcontent=$response->content;
-     my @webcontentarr = split("\n", $webcontent);
-     my $i = 0;
-     my $ScoreBoard = "";
-     my $PosPreBegin = undef;
-     my $PosPreEnd = undef;
-     while (($i < @webcontentarr) && ((!defined($PosPreBegin)) || (!defined($PosPreEnd)))) {
-         if (!defined($PosPreBegin)) {
-          if ( $webcontentarr[$i] =~ m/
/i ) {
-              $PosPreBegin = $i;
-          }
-         }
-         if (defined($PosPreBegin)) {
-          if ( $webcontentarr[$i] =~ m/<\/pre>/i ) {
-              $PosPreEnd = $i;
-          }
-         }
-         $i++;
-     }
+        for ($i = $PosPreBegin; $i <= $PosPreEnd; $i++) {
+            $ScoreBoard = $ScoreBoard . $webcontentarr[$i];
+        }
 
-     for ($i = $PosPreBegin; $i <= $PosPreEnd; $i++) {
-         $ScoreBoard = $ScoreBoard . $webcontentarr[$i];
-     }
+        $ScoreBoard =~ s/^.*<[Pp][Rr][Ee]>//;
+        $ScoreBoard =~ s/<\/[Pp][Rr][Ee].*>//;
 
-     $ScoreBoard =~ s/^.*<[Pp][Rr][Ee]>//;
-     $ScoreBoard =~ s/<\/[Pp][Rr][Ee].*>//;
+        my $CountOpenSlots = ($ScoreBoard =~ tr/\.//);
 
-     my $CountOpenSlots = ($ScoreBoard =~ tr/\.//);
+        my $exit = $self->{perfdata}->threshold_check(value => $timeelapsed,
+                                                      threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
 
-     my $exit = $self->{perfdata}->threshold_check(value => $timeelapsed,
-          threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
-
-     $self->{output}->output_add(severity => $exit,
-              short_msg => sprintf("Response time %fs ", $timeelapsed));
-         $self->{output}->perfdata_add(label => "time",
-              value => $timeelapsed,
-              warning => $self->{option_results}->{warning},
-              critical => $self->{option_results}->{critical});
-         $self->{output}->perfdata_add(label => "open_slots",
-              value => $CountOpenSlots);
-         $self->{output}->perfdata_add(label => "waiting",
-              value => ($ScoreBoard =~ tr/\_//));
-         $self->{output}->perfdata_add(label => "starting",
-              value => ($ScoreBoard =~ tr/S//));
-         $self->{output}->perfdata_add(label => "reading",
-              value => ($ScoreBoard =~ tr/R//));
-         $self->{output}->perfdata_add(label => "sending",
-              value => ($ScoreBoard =~ tr/W//));
-         $self->{output}->perfdata_add(label => "keepalive",
-              value => ($ScoreBoard =~ tr/K//));
-         $self->{output}->perfdata_add(label => "dns_lookup",
-              value => ($ScoreBoard =~ tr/D//));
-         $self->{output}->perfdata_add(label => "closing",
-              value => ($ScoreBoard =~ tr/C//));
-         $self->{output}->perfdata_add(label => "logging",
-              value => ($ScoreBoard =~ tr/L//));
-         $self->{output}->perfdata_add(label => "gracefuly_finished",
-              value => ($ScoreBoard =~ tr/G//));
-         $self->{output}->perfdata_add(label => "idle_cleanup_worker",
-              value => ($ScoreBoard =~ tr/I//));
-         $self->{output}->perfdata_add(label => "open_slots_without_process",
-              value => ($ScoreBoard =~ tr/R//));
+        $self->{output}->output_add(severity => $exit,
+                                    short_msg => sprintf("Response time %fs ", $timeelapsed));
+        $self->{output}->perfdata_add(label => "time",
+                                      value => $timeelapsed,
+                                      warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning'),
+                                      critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical'));
+        $self->{output}->perfdata_add(label => "open_slots",
+                                      value => $CountOpenSlots);
+        $self->{output}->perfdata_add(label => "waiting",
+                                      value => ($ScoreBoard =~ tr/\_//));
+        $self->{output}->perfdata_add(label => "starting",
+                                      value => ($ScoreBoard =~ tr/S//));
+        $self->{output}->perfdata_add(label => "reading",
+                                      value => ($ScoreBoard =~ tr/R//));
+        $self->{output}->perfdata_add(label => "sending",
+                                      value => ($ScoreBoard =~ tr/W//));
+        $self->{output}->perfdata_add(label => "keepalive",
+                                      value => ($ScoreBoard =~ tr/K//));
+        $self->{output}->perfdata_add(label => "dns_lookup",
+                                      value => ($ScoreBoard =~ tr/D//));
+        $self->{output}->perfdata_add(label => "closing",
+                                      value => ($ScoreBoard =~ tr/C//));
+        $self->{output}->perfdata_add(label => "logging",
+                                      value => ($ScoreBoard =~ tr/L//));
+        $self->{output}->perfdata_add(label => "gracefuly_finished",
+                                      value => ($ScoreBoard =~ tr/G//));
+        $self->{output}->perfdata_add(label => "idle_cleanup_worker",
+                                      value => ($ScoreBoard =~ tr/I//));
+        $self->{output}->perfdata_add(label => "open_slots_without_process",
+                                      value => ($ScoreBoard =~ tr/R//));
     } else {
-     $self->{output}->output_add(severity => 'UNKNOWN',
-          short_msg => $response->status_line);
+        $self->{output}->output_add(severity => 'UNKNOWN',
+                                    short_msg => $response->status_line);
     }
 
     $self->{output}->display();
     $self->{output}->exit();
-
 }
 
 1;
 
-
 __END__
 
 =head1 MODE
diff --git a/apps/apache/serverstatus/mode/slotstates.pm b/apps/apache/serverstatus/mode/slotstates.pm
index 9543fa465..7ef99df41 100644
--- a/apps/apache/serverstatus/mode/slotstates.pm
+++ b/apps/apache/serverstatus/mode/slotstates.pm
@@ -1,38 +1,38 @@
-################################################################################
-## Copyright 2005-2013 MERETHIS
-## Centreon is developped by : Julien Mathis and Romain Le Merlus under
-## GPL Licence 2.0.
-## 
-## This program is free software; you can redistribute it and/or modify it under 
-## the terms of the GNU General Public License as published by the Free Software 
-## Foundation ; either version 2 of the License.
-## 
-## This program is distributed in the hope that it will be useful, but WITHOUT ANY
-## WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-## PARTICULAR PURPOSE. See the GNU General Public License for more details.
-## 
-## You should have received a copy of the GNU General Public License along with 
-## this program; if not, see .
-## 
-## Linking this program statically or dynamically with other modules is making a 
-## combined work based on this program. Thus, the terms and conditions of the GNU 
-## General Public License cover the whole combination.
-## 
-## As a special exception, the copyright holders of this program give MERETHIS 
-## permission to link this program with independent modules to produce an timeelapsedutable, 
-## regardless of the license terms of these independent modules, and to copy and 
-## distribute the resulting timeelapsedutable under terms of MERETHIS choice, provided that 
-## MERETHIS also meet, for each linked independent module, the terms  and conditions 
-## of the license of that module. An independent module is a module which is not 
-## derived from this program. If you modify this program, you may extend this 
-## exception to your version of the program, but you are not obliged to do so. If you
-## do not wish to do so, delete this exception statement from your version.
-## 
-## For more information : contact@centreon.com
-## Author : Simon BOMM 
-##
-## Based on De Bodt Lieven plugin
-#####################################################################################
+###############################################################################
+# Copyright 2005-2013 MERETHIS
+# Centreon is developped by : Julien Mathis and Romain Le Merlus under
+# GPL Licence 2.0.
+# 
+# This program is free software; you can redistribute it and/or modify it under 
+# the terms of the GNU General Public License as published by the Free Software 
+# Foundation ; either version 2 of the License.
+# 
+# This program is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
+# PARTICULAR PURPOSE. See the GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License along with 
+# this program; if not, see .
+# 
+# Linking this program statically or dynamically with other modules is making a 
+# combined work based on this program. Thus, the terms and conditions of the GNU 
+# General Public License cover the whole combination.
+# 
+# As a special exception, the copyright holders of this program give MERETHIS 
+# permission to link this program with independent modules to produce an timeelapsedutable, 
+# regardless of the license terms of these independent modules, and to copy and 
+# distribute the resulting timeelapsedutable under terms of MERETHIS choice, provided that 
+# MERETHIS also meet, for each linked independent module, the terms  and conditions 
+# of the license of that module. An independent module is a module which is not 
+# derived from this program. If you modify this program, you may extend this 
+# exception to your version of the program, but you are not obliged to do so. If you
+# do not wish to do so, delete this exception statement from your version.
+# 
+# For more information : contact@centreon.com
+# Author : Simon BOMM 
+#
+# Based on De Bodt Lieven plugin
+####################################################################################
 
 package apps::apache::serverstatus::mode::slotstates;
 
@@ -50,13 +50,13 @@ sub new {
     $self->{version} = '1.0';
     $options{options}->add_options(arguments =>
             {
-            "hostname:s"        => { name => 'hostname' },
-            "port:i"    => { name => 'port' },
-            "proto:s"    => { name => 'proto', default => "http" },
+            "hostname:s"    => { name => 'hostname' },
+            "port:s"        => { name => 'port' },
+            "proto:s"       => { name => 'proto', default => "http" },
             "proxyurl:s"    => { name => 'proxyurl' },
-            "warning:s"    => { name => 'warning' },
+            "warning:s"     => { name => 'warning' },
             "critical:s"    => { name => 'critical' },
-            "timeout:i"        => { name => 'timeout', default => '3' },
+            "timeout:s"     => { name => 'timeout', default => '3' },
             });
     return $self;
 }
@@ -66,18 +66,18 @@ sub check_options {
     my ($self, %options) = @_;
     $self->SUPER::init(%options);
 
-    if (($self->{perfdata}->threshold_validate(label => 'warning', value => $self->{option_results}->{critical})) == 0) {
-                $self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{critical} . "'.");
-                $self->{output}->option_exit();
-        }
-        if (($self->{perfdata}->threshold_validate(label => 'critical', value => $self->{option_results}->{critical})) == 0) {
-                $self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{critical} . "'.");
-                $self->{output}->option_exit();
-        }
+    if (($self->{perfdata}->threshold_validate(label => 'warning', value => $self->{option_results}->{warning})) == 0) {
+        $self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{option_results}->{warning} . "'.");
+        $self->{output}->option_exit();
+    }
+    if (($self->{perfdata}->threshold_validate(label => 'critical', value => $self->{option_results}->{critical})) == 0) {
+        $self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{option_results}->{critical} . "'.");
+        $self->{output}->option_exit();
+    }
     
     if (($self->{option_results}->{proto} ne 'http') && ($self->{option_results}->{proto} ne 'https')) {
-        $self->{output}->add_option_msg(short_msg => "Unsupported protocol specified '" . $self->{proto} . "'.");
-                $self->{output}->option_exit();
+        $self->{output}->add_option_msg(short_msg => "Unsupported protocol specified '" . $self->{option_results}->{proto} . "'.");
+        $self->{output}->option_exit();
     }
     if (!defined($self->{option_results}->{hostname})) {
         $self->{output}->add_option_msg(short_msg => "Please set the hostname option");
@@ -87,35 +87,31 @@ sub check_options {
 }
 
 sub run {
-
     my ($self, %options) = @_;
     my $ua = LWP::UserAgent->new( protocols_allowed => ['http','https'], timeout => $self->{option_results}->{timeout});
     
     my $response = '';
-    
-        if ($self->{option_results}->{proto} eq "https") {
-                if (defined $self->{option_results}->{proxyurl}) {
-                        $ua->proxy(['https'], $self->{option_results}->{proxyurl});
-                }
-                if (!defined $self->{option_results}->{port}) {
-                        $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
-                } else  {
-                        $response = $ua->get('https://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
-                }
-
-        } else {
-                if (defined $self->{option_results}->{proxyurl}) {
-                        $ua->proxy(['http'], $self->{option_results}->{proxyurl});
-                }
-                if (!defined $self->{option_results}->{port}) {
-                        $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
-                } else  {
-                        $response = $ua->get('http://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
-                }
+    if ($self->{option_results}->{proto} eq "https") {
+        if (defined $self->{option_results}->{proxyurl}) {
+            $ua->proxy(['https'], $self->{option_results}->{proxyurl});
         }
+        if (!defined $self->{option_results}->{port}) {
+            $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
+        } else  {
+            $response = $ua->get('https://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
+        }
+    } else {
+        if (defined $self->{option_results}->{proxyurl}) {
+            $ua->proxy(['http'], $self->{option_results}->{proxyurl});
+        }
+        if (!defined $self->{option_results}->{port}) {
+            $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
+        } else  {
+            $response = $ua->get('http://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
+        }
+    }
 
     if ($response->is_success) {
-
         my $webcontent=$response->content;
         my @webcontentarr = split("\n", $webcontent);
         my $i = 0;
@@ -147,14 +143,14 @@ sub run {
         my $CountOpenSlots = ($ScoreBoard =~ tr/\.//);
 
         my $exit = $self->{perfdata}->threshold_check(value => $CountOpenSlots,
-                threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
+                                                      threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
 
         $self->{output}->output_add(severity => $exit,
-                short_msg => sprintf("Free slots: %d", $CountOpenSlots));
-                $self->{output}->perfdata_add(label => "freeSlots",
-                                value => $CountOpenSlots,
-                                warning => $self->{option_results}->{warning},
-                                critical => $self->{option_results}->{critical});
+                                    short_msg => sprintf("Free slots: %d", $CountOpenSlots));
+        $self->{output}->perfdata_add(label => "freeSlots",
+                                      value => $CountOpenSlots,
+                                      warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning'),
+                                      critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical'));
         $self->{output}->perfdata_add(label => "waiting",
                 value => ($ScoreBoard =~ tr/\_//));
         $self->{output}->perfdata_add(label => "starting",
@@ -177,17 +173,15 @@ sub run {
                 value => ($ScoreBoard =~ tr/I//));
     } else {
         $self->{output}->output_add(severity => 'UNKNOWN',
-                short_msg => $response->status_line);
+                                    short_msg => $response->status_line);
     }
 
     $self->{output}->display();
     $self->{output}->exit();
-
 }
 
 1;
 
-
 __END__
 
 =head1 MODE
@@ -216,7 +210,7 @@ Protocol used http or https
 
 Threshold for HTTP timeout
 
-=item B<--critical>
+=item B<--warning>
 
 Warning Threshold on remaining free slot
 
diff --git a/apps/apache/serverstatus/mode/workers.pm b/apps/apache/serverstatus/mode/workers.pm
index ab0736193..ebe83544e 100644
--- a/apps/apache/serverstatus/mode/workers.pm
+++ b/apps/apache/serverstatus/mode/workers.pm
@@ -1,38 +1,38 @@
-################################################################################
-## Copyright 2005-2013 MERETHIS
-## Centreon is developped by : Julien Mathis and Romain Le Merlus under
-## GPL Licence 2.0.
-## 
-## This program is free software; you can redistribute it and/or modify it under 
-## the terms of the GNU General Public License as published by the Free Software 
-## Foundation ; either version 2 of the License.
-## 
-## This program is distributed in the hope that it will be useful, but WITHOUT ANY
-## WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
-## PARTICULAR PURPOSE. See the GNU General Public License for more details.
-## 
-## You should have received a copy of the GNU General Public License along with 
-## this program; if not, see .
-## 
-## Linking this program statically or dynamically with other modules is making a 
-## combined work based on this program. Thus, the terms and conditions of the GNU 
-## General Public License cover the whole combination.
-## 
-## As a special exception, the copyright holders of this program give MERETHIS 
-## permission to link this program with independent modules to produce an timeelapsedutable, 
-## regardless of the license terms of these independent modules, and to copy and 
-## distribute the resulting timeelapsedutable under terms of MERETHIS choice, provided that 
-## MERETHIS also meet, for each linked independent module, the terms  and conditions 
-## of the license of that module. An independent module is a module which is not 
-## derived from this program. If you modify this program, you may extend this 
-## exception to your version of the program, but you are not obliged to do so. If you
-## do not wish to do so, delete this exception statement from your version.
-## 
-## For more information : contact@centreon.com
-## Author : Simon BOMM 
-##
-## Based on De Bodt Lieven plugin
-#####################################################################################
+###############################################################################
+# Copyright 2005-2013 MERETHIS
+# Centreon is developped by : Julien Mathis and Romain Le Merlus under
+# GPL Licence 2.0.
+# 
+# This program is free software; you can redistribute it and/or modify it under 
+# the terms of the GNU General Public License as published by the Free Software 
+# Foundation ; either version 2 of the License.
+# 
+# This program is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
+# PARTICULAR PURPOSE. See the GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License along with 
+# this program; if not, see .
+# 
+# Linking this program statically or dynamically with other modules is making a 
+# combined work based on this program. Thus, the terms and conditions of the GNU 
+# General Public License cover the whole combination.
+# 
+# As a special exception, the copyright holders of this program give MERETHIS 
+# permission to link this program with independent modules to produce an timeelapsedutable, 
+# regardless of the license terms of these independent modules, and to copy and 
+# distribute the resulting timeelapsedutable under terms of MERETHIS choice, provided that 
+# MERETHIS also meet, for each linked independent module, the terms  and conditions 
+# of the license of that module. An independent module is a module which is not 
+# derived from this program. If you modify this program, you may extend this 
+# exception to your version of the program, but you are not obliged to do so. If you
+# do not wish to do so, delete this exception statement from your version.
+# 
+# For more information : contact@centreon.com
+# Author : Simon BOMM 
+#
+# Based on De Bodt Lieven plugin
+####################################################################################
 
 package apps::apache::serverstatus::mode::workers;
 
@@ -50,70 +50,66 @@ sub new {
     $self->{version} = '1.0';
     $options{options}->add_options(arguments =>
             {
-            "hostname:s"        => { name => 'hostname' },
-            "port:i"    => { name => 'port' },
-            "proto:s"    => { name => 'proto', default => "http" },
+            "hostname:s"    => { name => 'hostname' },
+            "port:s"        => { name => 'port' },
+            "proto:s"       => { name => 'proto', default => "http" },
             "proxyurl:s"    => { name => 'proxyurl' },
-            "warning:s"    => { name => 'warning' },
+            "warning:s"     => { name => 'warning' },
             "critical:s"    => { name => 'critical' },
-            "timeout:i"        => { name => 'timeout', default => '3' },
+            "timeout:s"     => { name => 'timeout', default => '3' },
             });
     return $self;
 }
 
 sub check_options {
-
     my ($self, %options) = @_;
     $self->SUPER::init(%options);
 
     if (($self->{perfdata}->threshold_validate(label => 'warning', value => $self->{option_results}->{warning})) == 0) {
-        $self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{warning} . "'.");
+        $self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{option_results}->{warning} . "'.");
         $self->{output}->option_exit();
     }
     if (($self->{perfdata}->threshold_validate(label => 'critical', value => $self->{option_results}->{critical})) == 0) {
-        $self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{critical} . "'.");
+        $self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{option_results}->{critical} . "'.");
         $self->{output}->option_exit();
     }
     if (($self->{option_results}->{proto} ne 'http') && ($self->{option_results}->{proto} ne 'https')) {
-        $self->{output}->add_option_msg(short_msg => "Unsupported protocol specified '" . $self->{proto} . "'.");
-                $self->{output}->option_exit();
+        $self->{output}->add_option_msg(short_msg => "Unsupported protocol specified '" . $self->{option_results}->{proto} . "'.");
+        $self->{output}->option_exit();
     }
     if (!defined($self->{option_results}->{hostname})) {
         $self->{output}->add_option_msg(short_msg => "Please set the hostname option");
         $self->{output}->option_exit();
     }
-
 }
 
 sub run {
-
     my ($self, %options) = @_;
     my $ua = LWP::UserAgent->new( protocols_allowed => ['http','https'], timeout => $self->{option_results}->{timeout});
     
     my $response = '';
     
     if ($self->{option_results}->{proto} eq "https") {
-            if (defined $self->{option_results}->{proxyurl}) {
-                    $ua->proxy(['https'], $self->{option_results}->{proxyurl});
-                }
-                if (!defined $self->{option_results}->{port}) {
-                        $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
-                } else  {
-                        $response = $ua->get('https://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
-                }
-        } else {
-                if (defined $self->{option_results}->{proxyurl}) {
-                        $ua->proxy(['http'], $self->{option_results}->{proxyurl});
-                }
-                if (!defined $self->{option_results}->{port}) {
-                        $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
-                } else  {
-                        $response = $ua->get('http://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
-                }
+        if (defined $self->{option_results}->{proxyurl}) {
+            $ua->proxy(['https'], $self->{option_results}->{proxyurl});
         }
+        if (!defined $self->{option_results}->{port}) {
+            $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
+        } else  {
+            $response = $ua->get('https://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
+        }
+    } else {
+        if (defined $self->{option_results}->{proxyurl}) {
+            $ua->proxy(['http'], $self->{option_results}->{proxyurl});
+        }
+        if (!defined $self->{option_results}->{port}) {
+            $response = $ua->get($self->{option_results}->{proto}."://" .$self->{option_results}->{hostname}.'/server-status');
+        } else  {
+            $response = $ua->get('http://'.$self->{option_results}->{hostname}.':'.$self->{option_results}->{port}.'/server-status');
+        }
+    }
 
-    if ($response->is_success) {
-        
+    if ($response->is_success) {   
         my $BusyWorkers;
         my $IdleWorkers;
         my $webcontent=$response->content;
@@ -131,18 +127,18 @@ sub run {
         $prct_busy = $BusyWorkers / ($BusyWorkers + $IdleWorkers) * 100;
     
         my $exit = $self->{perfdata}->threshold_check(value => $prct_busy,
-                threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
+                                                      threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]);
         $self->{output}->output_add(severity => $exit,
-                short_msg => sprintf("Busy workers: %d Idle workers: %d ( %d %% )", $BusyWorkers, $IdleWorkers, $prct_busy));
+                                    short_msg => sprintf("Busy workers: %d Idle workers: %d ( %d %% )", $BusyWorkers, $IdleWorkers, $prct_busy));
         $self->{output}->perfdata_add(label => "idle_workers",
-                value => $IdleWorkers);
+                                      value => $IdleWorkers);
         $self->{output}->perfdata_add(label => "busy_workers",
-                value => $BusyWorkers,
-                warning => $self->{option_results}->{warning},
-                critical => $self->{option_results}->{critical});
+                                      value => $BusyWorkers,
+                                      warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning'),
+                                      critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical'));
     } else {
         $self->{output}->output_add(severity => 'UNKNOWN',
-                short_msg => $response->status_line);
+                                    short_msg => $response->status_line);
     }
 
     $self->{output}->display();
diff --git a/apps/apache/serverstatus/plugin.pm b/apps/apache/serverstatus/plugin.pm
index 7b601a1f6..784ddc136 100644
--- a/apps/apache/serverstatus/plugin.pm
+++ b/apps/apache/serverstatus/plugin.pm
@@ -40,20 +40,20 @@ use warnings;
 use base qw(centreon::plugins::script_simple);
 
 sub new {
-	my ($class, %options) = @_;
-	my $self = $class->SUPER::new(package => __PACKAGE__, %options);
-	bless $self, $class;
-# $options->{options} = options object
+    my ($class, %options) = @_;
+    my $self = $class->SUPER::new(package => __PACKAGE__, %options);
+    bless $self, $class;
+    # $options->{options} = options object
 
-	$self->{version} = '0.1';
-	%{$self->{modes}} = (
-			'responsetime'	=> 'apps::apache::serverstatus::mode::responsetime',
-			'requests'	=> 'apps::apache::serverstatus::mode::requests',
-			'slotstates'	=> 'apps::apache::serverstatus::mode::slotstates',
-			'workers'	=> 'apps::apache::serverstatus::mode::workers',
-			);
+    $self->{version} = '0.1';
+    %{$self->{modes}} = (
+            'responsetime'  => 'apps::apache::serverstatus::mode::responsetime',
+            'requests'      => 'apps::apache::serverstatus::mode::requests',
+            'slotstates'    => 'apps::apache::serverstatus::mode::slotstates',
+            'workers'       => 'apps::apache::serverstatus::mode::workers',
+    );
 
-	return $self;
+    return $self;
 }
 
 1;