From b9ac1fc18d9ce2f7827390ea0ad2686a7b230331 Mon Sep 17 00:00:00 2001 From: slerena Date: Wed, 19 Aug 2009 01:41:25 +0000 Subject: [PATCH] 2009-08-19 Sancho lerena * pandora_server.spec: Updated some dependencies. Also included the install of pandora_db maintance script in cron.daily. * pandora_server, tentacle_serverd: Added short description to able yast visualizate correctly the description in software selection screen. * lib/PandoraFMS/Core.pm: Fixed problem with OS Detection at creation. Added support for AUTOTIME (time of data is given by the server instead by data coming from the agent) and autoimport of agent description. * util/tentacle_serverd: Call to umask to let tentacle_server create files with mask 0007, because Enterprise version need to write files fetched with tentacle. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1861 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_server/ChangeLog | 11 +- pandora_server/lib/PandoraFMS/Core.pm | 1 + pandora_server/lib/PandoraFMS/DataServer.pm | 10 +- pandora_server/pandora_server | 2 +- pandora_server/pandora_server.spec | 143 ++++++++------------ pandora_server/util/tentacle_serverd | 2 +- 6 files changed, 74 insertions(+), 95 deletions(-) diff --git a/pandora_server/ChangeLog b/pandora_server/ChangeLog index 69f0f39716..a274dfaa1e 100644 --- a/pandora_server/ChangeLog +++ b/pandora_server/ChangeLog @@ -1,5 +1,14 @@ +2009-08-19 Sancho lerena -2009-08-15 Sancho lerena + * pandora_server.spec: Updated some dependencies. Also included the + install of pandora_db maintance script in cron.daily. + + * pandora_server, tentacle_serverd: Added short description to able + yast visualizate correctly the description in software selection screen. + + * lib/PandoraFMS/Core.pm: Fixed problem with OS Detection at creation. Added + support for AUTOTIME (time of data is given by the server instead by data + coming from the agent) and autoimport of agent description. * util/tentacle_serverd: Call to umask to let tentacle_server create files with mask 0007, because Enterprise version need to write files diff --git a/pandora_server/lib/PandoraFMS/Core.pm b/pandora_server/lib/PandoraFMS/Core.pm index 85924b0210..8113aba5d5 100644 --- a/pandora_server/lib/PandoraFMS/Core.pm +++ b/pandora_server/lib/PandoraFMS/Core.pm @@ -736,6 +736,7 @@ sub pandora_create_agent ($$$$$$$$$$) { logger ($pa_config, "$server_name: Creating agent $agent_name ($address)", 1); $description = "Created by $server_name" unless ($description ne ''); + my $agent_id = db_insert ($dbh, 'INSERT INTO tagente (`nombre`, `direccion`, `comentarios`, `id_grupo`, `id_os`, `server_name`, `intervalo`, `id_parent`, `modo`) VALUES (?, ?, ?, ?, ?, ?, 300, ?, 1)', $agent_name, $address, $description, $group_id, $os_id, $server_name, $parent_id); diff --git a/pandora_server/lib/PandoraFMS/DataServer.pm b/pandora_server/lib/PandoraFMS/DataServer.pm index f583725992..64e17fa64a 100644 --- a/pandora_server/lib/PandoraFMS/DataServer.pm +++ b/pandora_server/lib/PandoraFMS/DataServer.pm @@ -26,6 +26,7 @@ use Thread::Semaphore; use Time::Local; use XML::Simple; +use POSIX qw(setsid strftime); use PandoraFMS::Tools; use PandoraFMS::DB; @@ -157,10 +158,15 @@ sub process_xml_data ($$$$) { # Unknown agent! if (! defined ($agent_name) || $agent_name eq '') { - logger($pa_config, 'ERROR: Received data from an unknown agent', 2); + logger($pa_config, 'ERROR: Received data from an unnamed agent', 2); return; } + # Get current datetime from system if value AUTO is coming in the XML + if ( $data->{'timestamp'} =~ /AUTO/ ){ + $timestamp = strftime ("%Y/%m/%d %H:%M:%S", localtime()); + } + # Check some variables $interval = 300 unless defined ($interval); $os_version = 'N/A' if (! defined ($os_version) || $os_version eq ''); @@ -174,7 +180,7 @@ sub process_xml_data ($$$$) { } # Get OS, group and description - my $os = pandora_get_os ($data->{'os'}); + my $os = pandora_get_os ($data->{'os_name'}); my $group_id = undef; $group_id = get_db_value ($dbh, 'SELECT id_grupo FROM tgrupo WHERE nombre = ?', $data->{'group'}) if (defined ($data->{'group'})); $group_id = $pa_config->{'autocreate_group'} unless defined ($group_id); diff --git a/pandora_server/pandora_server b/pandora_server/pandora_server index d50540cae7..84daa67d0b 100755 --- a/pandora_server/pandora_server +++ b/pandora_server/pandora_server @@ -13,7 +13,7 @@ # Default-Stop: 0 1 2 3 5 # Required-Start: $network # Required-Stop: $network -# Description: Pandora FMS Server startup script +# Short-Description: Pandora FMS Server startup script ### END INIT INFO PANDORA_HOME="/etc/pandora/pandora_server.conf" diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index f7c3e18fa8..2ba6c27879 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -1,7 +1,7 @@ # # Pandora FMS Server # -%define name PandoraFMS_Server +%define name pandorafms_server %define version 3.0.0 %define release 1 @@ -10,27 +10,22 @@ Name: %{name} Version: %{version} Release: %{release} License: GPL -Vendor: Sancho Lerena +Vendor: ArticaST Source0: %{name}-%{version}.tar.gz URL: http://www.pandorafms.com Group: System/Monitoring -Packager: Manuel Arostegui +Packager: Manuel Arostegui Prefix: /usr/share BuildRoot: %{_tmppath}/%{name}-buildroot BuildArchitectures: noarch -%if "%{_vendor}" == "suse" -Requires: perl-XML-Simple perl-DateManip perl-Net-SNMP -%endif -%if "%{_vendor}" == "redhat" -Requires: perl-XML-Simple net-snmp-perl perl-DateManip perl-Mail-Sendmail xprobe2 net-snmp-utils Requires(pre): /usr/sbin/useradd -%endif AutoReq: 0 Provides: %{name}-%{version} -Requires: mysql, mysql-server perl-NetAddr-IP +Requires: perl-mail-sendmail perl-DBI perl-DBD-mysql perl-time-format perl-mail-sendmail perl-netaddr-ip wmic perl-SNMP net-snmp +#Requires: xprobe2 %description -Pandora watchs your systems and applications, and allows to know the status of any element of that systems. Pandora could detect a network interface down, a defacementin your website, memory leak in one of your server app, or the movement of any value of the NASDAQ new technology market. If you want, Pandora could sent a SMS messagewhen your systems fails... or when Google value low below US$ 33 +Pandora FMS is a monitoring system for big IT environments. It uses remote tests, or local agents to grab information. Pandora supports all standard OS (Linux, AIX, HP-UX, Solaris and Windows XP,2000/2003), and support multiple setups in HA enviroments. %prep rm -rf $RPM_BUILD_ROOT @@ -40,105 +35,71 @@ rm -rf $RPM_BUILD_ROOT %build %install -%define perl_version %(rpm -q --queryformat='%{VERSION}' perl) -export perl_version=`rpm -q --queryformat='%{VERSION}' perl` +#%define perl_version %(rpm -q --queryformat='%{VERSION}' perl) +#export perl_version=`rpm -q --queryformat='%{VERSION}' perl` +# Temporal hack for For SLES 11 only, warning +export perl_version=5.10.0 +%define perl_version 5.10.0 + rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/usr/bin/ mkdir -p $RPM_BUILD_ROOT/usr/local mkdir -p $RPM_BUILD_ROOT/usr/local/bin mkdir -p $RPM_BUILD_ROOT/usr/sbin/ -%if "%{_vendor}" == "redhat" -mkdir -p $RPM_BUILD_ROOT/usr/sbin/ -%endif mkdir -p $RPM_BUILD_ROOT/etc/init.d/ mkdir -p $RPM_BUILD_ROOT/etc/pandora/ mkdir -p $RPM_BUILD_ROOT/var/spool/pandora/data_in mkdir -p $RPM_BUILD_ROOT/var/log/pandora/ mkdir -p $RPM_BUILD_ROOT%{prefix}/pandora_server/conf/ -mkdir -p $RPM_BUILD_ROOT/var/run/pandora/ mkdir -p $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/$perl_version/ -mkdir -p $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/$perl_version/Net -%if "%{_vendor}" == "redhat" -cp -aRf bin/pandora_* $RPM_BUILD_ROOT/usr/local/bin/ +cp -aRf bin/pandora_server $RPM_BUILD_ROOT/usr/local/bin/ cp -aRf util/pandora_exec $RPM_BUILD_ROOT/usr/local/bin/ cp -aRf bin/tentacle_server $RPM_BUILD_ROOT/usr/local/bin/ -%else -cp -aRf bin/pandora_* $RPM_BUILD_ROOT/usr/local/bin/ -cp -aRf util/pandora_exec $RPM_BUILD_ROOT/usr/local/bin/ -cp -aRf bin/tentacle_server $RPM_BUILD_ROOT/usr/local/bin/ -%endif -cp -aRf util/wmic $RPM_BUILD_ROOT/usr/bin/ +#cp -aRf util/wmic $RPM_BUILD_ROOT/usr/bin/ cp -aRf conf/* $RPM_BUILD_ROOT%{prefix}/pandora_server/conf/ cp -aRf util $RPM_BUILD_ROOT%{prefix}/pandora_server/ cp -aRf lib/* $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/$perl_version/ -cp -aRf util/Time/ $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/$perl_version/ -cp -aRf util/Traceroute/ $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/$perl_version/Net -cp -aRf util/Traceroute.pm $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/$perl_version/Net +#cp -aRf util/Time/ $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/$perl_version/ +#cp -aRf util/Traceroute/ $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/$perl_version/Net +#cp -aRf util/Traceroute.pm $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/$perl_version/Net cp -aRf AUTHORS COPYING ChangeLog README $RPM_BUILD_ROOT%{prefix}/pandora_server/ -#%if "%{_vendor}" == "suse" -# cp -aRf util/SLES10/pandora_* $RPM_BUILD_ROOT/etc/init.d/ -#%else -#%if "%{_vendor}" == "redhat" -# cp -aRf util/RHEL/* $RPM_BUILD_ROOT/etc/init.d/ -#%else - cp -aRf pandora_* $RPM_BUILD_ROOT/etc/init.d/ - cp -aRf util/tentacle_serverd $RPM_BUILD_ROOT/etc/init.d/ - rm -fr $RPM_BUILD_ROOT/etc/init.d/*_installer $RPM_BUILD_ROOT/etc/init.d/*.spec -#%endif -#%endif +cp -aRf pandora_server $RPM_BUILD_ROOT/etc/init.d/ +cp -aRf util/tentacle_serverd $RPM_BUILD_ROOT/etc/init.d/ %clean rm -fr $RPM_BUILD_ROOT %pre -%if "%{_vendor}" == "redhat" - /usr/sbin/useradd -d %{prefix}/pandora -s /sbin/nologin -M -r pandora 2>/dev/null -%endif +/usr/sbin/useradd -d %{prefix}/pandora -s /bin/false -M -g 0 pandora exit 0 %post -%if "%{_vendor}" == "suse" - ln -s /etc/init.d/pandora_server /etc/rc.d/rc3.d/S99pandora_server - ln -s /etc/init.d/pandora_server /etc/rc.d/rc2.d/S99pandora_server - ln -s /etc/init.d/pandora_server /etc/rc.d/rc0.d/K99pandora_server - ln -s /etc/init.d/pandora_server /etc/rc.d/rc6.d/K99pandora_server - ln -s /etc/init.d/tentacle_serverd /etc/rc.d/rc3.d/S99tentacle_serverd - ln -s /etc/init.d/tentacle_serverd /etc/rc.d/rc2.d/S99tentacle_serverd - ln -s /etc/init.d/tentacle_serverd /etc/rc.d/rc0.d/K99tentacle_serverd - ln -s /etc/init.d/tentacle_serverd /etc/rc.d/rc6.d/K99tentacle_serverd -%else - ln -s /etc/init.d/pandora_server /etc/rc3.d/S99pandora_server - ln -s /etc/init.d/pandora_server /etc/rc2.d/S99pandora_server - ln -s /etc/init.d/pandora_server /etc/rc0.d/K99pandora_server - ln -s /etc/init.d/pandora_server /etc/rc6.d/K99pandora_server - ln -s /etc/init.d/tentacle_serverd /etc/rc3.d/S99tentacle_serverd - ln -s /etc/init.d/tentacle_serverd /etc/rc2.d/S99tentacle_serverd - ln -s /etc/init.d/tentacle_serverd /etc/rc0.d/K99tentacle_serverd - ln -s /etc/init.d/tentacle_serverd /etc/rc6.d/K99tentacle_serverd -%endif +ln -s /etc/init.d/pandora_server /etc/rc.d/rc5.d/S99pandora_server +ln -s /etc/init.d/pandora_server /etc/rc.d/rc3.d/S99pandora_server +ln -s /etc/init.d/pandora_server /etc/rc.d/rc2.d/S99pandora_server +ln -s /etc/init.d/pandora_server /etc/rc.d/rc0.d/K99pandora_server +ln -s /etc/init.d/tentacle_serverd /etc/rc.d/rc5.d/S99tentacle_serverd +ln -s /etc/init.d/tentacle_serverd /etc/rc.d/rc3.d/S99tentacle_serverd +ln -s /etc/init.d/tentacle_serverd /etc/rc.d/rc2.d/S99tentacle_serverd +ln -s /etc/init.d/tentacle_serverd /etc/rc.d/rc0.d/K99tentacle_serverd +echo "/usr/share/pandora_server/util/pandora_db /etc/pandora/pandora_server.conf" > /etc/cron.daily/pandora_db +chmod 750 /etc/cron.daily/pandora_db if [ ! -d /etc/pandora ] ; then mkdir -p /etc/pandora fi -if [ ! -L /etc/pandora/pandora_server.conf ] ; then - ln -s /usr/share/pandora_server/conf/pandora_server.conf /etc/pandora/ - echo "Pandora Server configuration is /etc/pandora/pandora_server.conf" - echo "Pandora Server data has been placed under /var/spool/pandora/data_in/" - echo "Pandora Server logs has been placed under /var/log/" - echo "Pandora Server main directory is %{prefix}/pandora_server/" - echo "To start all PandoraFMS servers: pandora_server start" - echo "The manual can be reached at: man pandora or man pandora_server" - echo "Pandora Documentation is in: http://openideas.info/wiki/index.php?title=Pandora_2.0:Documentation" -fi -/etc/init.d/tentacle_serverd start - echo "Pandora Server configuration is /etc/pandora/pandora_server.conf" - echo "Pandora Server data has been placed under /var/spool/pandora/data_in/" - echo "Pandora Server logs has been placed under /var/log/" - echo "Pandora Server main directory is %{prefix}/pandora_server/" - echo "To start all PandoraFMS servers: /etc/init.d/pandora_server start" - echo "Make sure you have the correct dbuser and dbpass in /etc/pandora/pandora_server.conf" - echo "The manual can be reached at: man pandora or man pandora_server" - echo "Pandora Documentation is in: http://openideas.info/wiki/index.php?title=Pandora_2.0:Documentation" +if [ ! -e /etc/pandora/pandora_server.conf ] ; then + ln -s /usr/share/pandora_server/conf/pandora_server.conf /etc/pandora/ + echo "Pandora FMS Server configuration is /etc/pandora/pandora_server.conf" +# echo "Pandora FMS Server data has been placed under /var/spool/pandora/data_in/" +# echo "Pandora FMS Server logs has been placed under /var/log/" + echo "Pandora FMS Server main directory is %{prefix}/pandora_server/" + echo "The manual can be reached at: man pandora or man pandora_server" + echo "Pandora FMS Documentation is in: http://pandorafms.org" + echo " " +fi + +/etc/init.d/tentacle_serverd start %preun if [ "$1" = 0 ]; then @@ -147,27 +108,29 @@ if [ "$1" = 0 ]; then %if "%{_vendor}" == "redhat" /sbin/chkconfig --del pandora_server %endif + rm -Rf /etc/init.d/pandora_server + rm -Rf /etc/init.d/tentacle_serverd + rm -Rf /etc/pandora/pandora_server.conf + rm -Rf /usr/share/pandora_server fi %files -%defattr(700,pandora,pandora) +%defattr(750,pandora,root) /etc/init.d/pandora_server /etc/init.d/tentacle_serverd -/usr/bin/wmic /usr/local/bin/pandora_exec /usr/local/bin/pandora_server /usr/local/bin/tentacle_server - -%defattr(755,pandora,pandora) +%defattr(755,pandora,root) /usr/lib/perl5/site_perl/%{perl_version}/PandoraFMS/ -/usr/lib/perl5/site_perl/%{perl_version}/Net/Traceroute/ -/usr/lib/perl5/site_perl/%{perl_version}/Net/Traceroute.pm -/usr/lib/perl5/site_perl/%{perl_version}/Time/ %{prefix}/pandora_server /var/log/pandora -/var/spool/pandora/ -#/var/spool/pandora/data_in +%defattr(770,pandora,www) +/var/spool/pandora + +%defattr(750,pandora,root) +/etc/pandora diff --git a/pandora_server/util/tentacle_serverd b/pandora_server/util/tentacle_serverd index 83b6ac408e..9510885810 100755 --- a/pandora_server/util/tentacle_serverd +++ b/pandora_server/util/tentacle_serverd @@ -11,7 +11,7 @@ # Default-Stop: 0 1 2 3 5 # Required-Start: $network # Required-Stop: $network -# Description: Tentacle Server startup script +# Short-Description: Tentacle Server startup script ### END INIT INFO # Pandora server settings