# HG changeset patch # User arnold # Date 1228397741 0 # Node ID 8c08150c2371d9829abd0b422ee3c2f3b72ab0d6 # Parent 66c2f237551428ce8399dab5a465dac50537131d debianisiert diff -r 66c2f2375514 -r 8c08150c2371 check_cert.pl --- a/check_cert.pl Thu Dec 04 13:24:57 2008 +0000 +++ b/check_cert.pl Thu Dec 04 13:35:41 2008 +0000 @@ -1,4 +1,6 @@ #!/usr/bin/perl -w +# $Id$ +# $URL$ use strict; use warnings; diff -r 66c2f2375514 -r 8c08150c2371 debian/README.Debian --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/README.Debian Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,6 @@ +nagios-plugin-cert for Debian +----------------------------- + + + + -- Christian Arnold Thu, 4 Dec 2008 14:28:26 +0100 diff -r 66c2f2375514 -r 8c08150c2371 debian/changelog --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/changelog Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,6 @@ +nagios-plugin-cert (1.0-1) stable; urgency=low + + * Initial release + + -- Christian Arnold Thu, 4 Dec 2008 14:28:26 +0100 + diff -r 66c2f2375514 -r 8c08150c2371 debian/compat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/compat Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,1 @@ +5 diff -r 66c2f2375514 -r 8c08150c2371 debian/control --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/control Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,12 @@ +Source: nagios-plugin-cert +Section: unknown +Priority: extra +Maintainer: Christian Arnold +Build-Depends: debhelper (>= 5), autotools-dev +Standards-Version: 3.7.2 + +Package: nagios-plugin-cert +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, perl, libdate-manip-perl, openssl +Description: nagios plugin to check openssl certificates + This plugin checks the expire date of x509 and pkcs12 certificates. diff -r 66c2f2375514 -r 8c08150c2371 debian/copyright --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/copyright Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,35 @@ +This package was debianized by Christian Arnold on +Thu, 4 Dec 2008 14:28:26 +0100. + +It was downloaded from + +Upstream Author: + +Copyright: + +License: + + This package 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, or + (at your option) any later version. + + This package 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 package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. + +The Debian packaging is (C) 2008, Christian Arnold and +is licensed under the GPL, see above. + + +# Please also look if there are files or directories which have a +# different copyright/license attached and list them here. diff -r 66c2f2375514 -r 8c08150c2371 debian/cron.d.ex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/cron.d.ex Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,4 @@ +# +# Regular cron jobs for the nagios-plugin-cert package +# +0 4 * * * root nagios-plugin-cert_maintenance diff -r 66c2f2375514 -r 8c08150c2371 debian/dirs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/dirs Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,2 @@ +usr/bin +usr/sbin diff -r 66c2f2375514 -r 8c08150c2371 debian/docs diff -r 66c2f2375514 -r 8c08150c2371 debian/emacsen-install.ex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/emacsen-install.ex Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,45 @@ +#! /bin/sh -e +# /usr/lib/emacsen-common/packages/install/nagios-plugin-cert + +# Written by Jim Van Zandt , borrowing heavily +# from the install scripts for gettext by Santiago Vila +# and octave by Dirk Eddelbuettel . + +FLAVOR=$1 +PACKAGE=nagios-plugin-cert + +if [ ${FLAVOR} = emacs ]; then exit 0; fi + +echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR} + +#FLAVORTEST=`echo $FLAVOR | cut -c-6` +#if [ ${FLAVORTEST} = xemacs ] ; then +# SITEFLAG="-no-site-file" +#else +# SITEFLAG="--no-site-file" +#fi +FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile" + +ELDIR=/usr/share/emacs/site-lisp/${PACKAGE} +ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE} + +# Install-info-altdir does not actually exist. +# Maybe somebody will write it. +if test -x /usr/sbin/install-info-altdir; then + echo install/${PACKAGE}: install Info links for ${FLAVOR} + install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/info/${PACKAGE}.info.gz +fi + +install -m 755 -d ${ELCDIR} +cd ${ELDIR} +FILES=`echo *.el` +cp ${FILES} ${ELCDIR} +cd ${ELCDIR} + +cat << EOF > path.el +(setq load-path (cons "." load-path) byte-compile-warnings nil) +EOF +${FLAVOR} ${FLAGS} ${FILES} +rm -f *.el path.el + +exit 0 diff -r 66c2f2375514 -r 8c08150c2371 debian/emacsen-remove.ex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/emacsen-remove.ex Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,15 @@ +#!/bin/sh -e +# /usr/lib/emacsen-common/packages/remove/nagios-plugin-cert + +FLAVOR=$1 +PACKAGE=nagios-plugin-cert + +if [ ${FLAVOR} != emacs ]; then + if test -x /usr/sbin/install-info-altdir; then + echo remove/${PACKAGE}: removing Info links for ${FLAVOR} + install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/info/nagios-plugin-cert.info.gz + fi + + echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR} + rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE} +fi diff -r 66c2f2375514 -r 8c08150c2371 debian/emacsen-startup.ex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/emacsen-startup.ex Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,25 @@ +;; -*-emacs-lisp-*- +;; +;; Emacs startup file, e.g. /etc/emacs/site-start.d/50nagios-plugin-cert.el +;; for the Debian nagios-plugin-cert package +;; +;; Originally contributed by Nils Naumann +;; Modified by Dirk Eddelbuettel +;; Adapted for dh-make by Jim Van Zandt + +;; The nagios-plugin-cert package follows the Debian/GNU Linux 'emacsen' policy and +;; byte-compiles its elisp files for each 'emacs flavor' (emacs19, +;; xemacs19, emacs20, xemacs20...). The compiled code is then +;; installed in a subdirectory of the respective site-lisp directory. +;; We have to add this to the load-path: +(let ((package-dir (concat "/usr/share/" + (symbol-name flavor) + "/site-lisp/nagios-plugin-cert"))) +;; If package-dir does not exist, the nagios-plugin-cert package must have +;; removed but not purged, and we should skip the setup. + (when (file-directory-p package-dir) + (setq load-path (cons package-dir load-path)) + (autoload 'nagios-plugin-cert-mode "nagios-plugin-cert-mode" + "Major mode for editing nagios-plugin-cert files." t) + (add-to-list 'auto-mode-alist '("\\.nagios-plugin-cert$" . nagios-plugin-cert-mode)))) + diff -r 66c2f2375514 -r 8c08150c2371 debian/files --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/files Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,1 @@ +nagios-plugin-cert_1.0-1_i386.deb unknown extra diff -r 66c2f2375514 -r 8c08150c2371 debian/init.d.ex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/init.d.ex Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,81 @@ +#! /bin/sh +# +# skeleton example file to build /etc/init.d/ scripts. +# This file should be used to construct scripts for /etc/init.d. +# +# Written by Miquel van Smoorenburg . +# Modified for Debian +# by Ian Murdock . +# +# Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl +# + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/sbin/nagios-plugin-cert +NAME=nagios-plugin-cert +DESC=nagios-plugin-cert + +test -x $DAEMON || exit 0 + +# Include nagios-plugin-cert defaults if available +if [ -f /etc/default/nagios-plugin-cert ] ; then + . /etc/default/nagios-plugin-cert +fi + +set -e + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ + --exec $DAEMON -- $DAEMON_OPTS + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \ + --exec $DAEMON + echo "$NAME." + ;; + #reload) + # + # If the daemon can reload its config files on the fly + # for example by sending it SIGHUP, do it here. + # + # If the daemon responds to changes in its config file + # directly anyway, make this a do-nothing entry. + # + # echo "Reloading $DESC configuration files." + # start-stop-daemon --stop --signal 1 --quiet --pidfile \ + # /var/run/$NAME.pid --exec $DAEMON + #;; + force-reload) + # + # If the "reload" option is implemented, move the "force-reload" + # option to the "reload" entry above. If not, "force-reload" is + # just the same as "restart" except that it does nothing if the + # daemon isn't already running. + # check wether $DAEMON is running. If so, restart + start-stop-daemon --stop --test --quiet --pidfile \ + /var/run/$NAME.pid --exec $DAEMON \ + && $0 restart \ + || exit 0 + ;; + restart) + echo -n "Restarting $DESC: " + start-stop-daemon --stop --quiet --pidfile \ + /var/run/$NAME.pid --exec $DAEMON + sleep 1 + start-stop-daemon --start --quiet --pidfile \ + /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS + echo "$NAME." + ;; + *) + N=/etc/init.d/$NAME + # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 + echo "Usage: $N {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff -r 66c2f2375514 -r 8c08150c2371 debian/manpage.1.ex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/manpage.1.ex Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,59 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH NAGIOS-PLUGIN-CERT SECTION "Dezember 4, 2008" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +nagios-plugin-cert \- program to do something +.SH SYNOPSIS +.B nagios-plugin-cert +.RI [ options ] " files" ... +.br +.B bar +.RI [ options ] " files" ... +.SH DESCRIPTION +This manual page documents briefly the +.B nagios-plugin-cert +and +.B bar +commands. +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +\fBnagios-plugin-cert\fP is a program that... +.SH OPTIONS +These programs follow the usual GNU command line syntax, with long +options starting with two dashes (`-'). +A summary of options is included below. +For a complete description, see the Info files. +.TP +.B \-h, \-\-help +Show summary of options. +.TP +.B \-v, \-\-version +Show version of program. +.SH SEE ALSO +.BR bar (1), +.BR baz (1). +.br +The programs are documented fully by +.IR "The Rise and Fall of a Fooish Bar" , +available via the Info system. +.SH AUTHOR +nagios-plugin-cert was written by . +.PP +This manual page was written by Christian Arnold , +for the Debian project (but may be used by others). diff -r 66c2f2375514 -r 8c08150c2371 debian/manpage.sgml.ex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/manpage.sgml.ex Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,156 @@ + manpage.1'. You may view + the manual page with: `docbook-to-man manpage.sgml | nroff -man | + less'. A typical entry in a Makefile or Makefile.am is: + +manpage.1: manpage.sgml + docbook-to-man $< > $@ + + + The docbook-to-man binary is found in the docbook-to-man package. + Please remember that if you create the nroff version in one of the + debian/rules file targets (such as build), you will need to include + docbook-to-man in your Build-Depends control field. + + --> + + + FIRSTNAME"> + SURNAME"> + + Dezember 4, 2008"> + + SECTION"> + arnold@schlittermann.de"> + + NAGIOS-PLUGIN-CERT"> + + + Debian"> + GNU"> + GPL"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2003 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + program to do something + + + + &dhpackage; + + + + + + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; and bar + commands. + + This manual page was written for the &debian; distribution + because the original program does not have a manual page. + Instead, it has documentation in the &gnu; + Info format; see below. + + &dhpackage; is a program that... + + + + OPTIONS + + These programs follow the usual &gnu; command line syntax, + with long options starting with two dashes (`-'). A summary of + options is included below. For a complete description, see the + Info files. + + + + + + + + Show summary of options. + + + + + + + + Show version of program. + + + + + + SEE ALSO + + bar (1), baz (1). + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + Info system. + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (but may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the &gnu; General Public License, Version 2 any + later version published by the Free Software Foundation. + + + On Debian systems, the complete text of the GNU General Public + License can be found in /usr/share/common-licenses/GPL. + + + +
+ + + + diff -r 66c2f2375514 -r 8c08150c2371 debian/manpage.xml.ex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/manpage.xml.ex Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,148 @@ + +.
will be generated. You may view the +manual page with: nroff -man .
| less'. A +typical entry in a Makefile or Makefile.am is: + +DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\ +manpages/docbook.xsl +XP=xsltproc -''-nonet + +manpage.1: manpage.dbk + $(XP) $(DB2MAN) $< + +The xsltproc binary is found in the xsltproc package. The +XSL files are in docbook-xsl. Please remember that if you +create the nroff version in one of the debian/rules file +targets (such as build), you will need to include xsltproc +and docbook-xsl in your Build-Depends control field. + +--> + + + FIRSTNAME"> + SURNAME"> + + Dezember 4, 2008"> + + SECTION"> + arnold@schlittermann.de"> + + NAGIOS-PLUGIN-CERT"> + + + Debian"> + GNU"> + GPL"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2003 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + program to do something + + + + &dhpackage; + + + + + + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; and bar + commands. + + This manual page was written for the &debian; distribution + because the original program does not have a manual page. + Instead, it has documentation in the &gnu; + Info format; see below. + + &dhpackage; is a program that... + + + + OPTIONS + + These programs follow the usual &gnu; command line syntax, + with long options starting with two dashes (`-'). A summary of + options is included below. For a complete description, see the + Info files. + + + + + + + + Show summary of options. + + + + + + + + Show version of program. + + + + + + SEE ALSO + + bar (1), baz (1). + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + Info system. + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (but may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the &gnu; General Public License, Version 2 any + later version published by the Free Software Foundation. + + + On Debian systems, the complete text of the GNU General Public + License can be found in /usr/share/common-licenses/GPL. + + + +
+ diff -r 66c2f2375514 -r 8c08150c2371 debian/menu.ex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/menu.ex Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,2 @@ +?package(nagios-plugin-cert):needs="X11|text|vc|wm" section="Apps/see-menu-manual"\ + title="nagios-plugin-cert" command="/usr/bin/nagios-plugin-cert" diff -r 66c2f2375514 -r 8c08150c2371 debian/nagios-plugin-cert-default.ex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/nagios-plugin-cert-default.ex Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,10 @@ +# Defaults for nagios-plugin-cert initscript +# sourced by /etc/init.d/nagios-plugin-cert +# installed at /etc/default/nagios-plugin-cert by the maintainer scripts + +# +# This is a POSIX shell fragment +# + +# Additional options that are passed to the Daemon. +DAEMON_OPTS="" diff -r 66c2f2375514 -r 8c08150c2371 debian/nagios-plugin-cert.doc-base.EX --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/nagios-plugin-cert.doc-base.EX Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,22 @@ +Document: nagios-plugin-cert +Title: Debian nagios-plugin-cert Manual +Author: +Abstract: This manual describes what nagios-plugin-cert is + and how it can be used to + manage online manuals on Debian systems. +Section: unknown + +Format: debiandoc-sgml +Files: /usr/share/doc/nagios-plugin-cert/nagios-plugin-cert.sgml.gz + +Format: postscript +Files: /usr/share/doc/nagios-plugin-cert/nagios-plugin-cert.ps.gz + +Format: text +Files: /usr/share/doc/nagios-plugin-cert/nagios-plugin-cert.text.gz + +Format: HTML +Index: /usr/share/doc/nagios-plugin-cert/html/index.html +Files: /usr/share/doc/nagios-plugin-cert/html/*.html + + diff -r 66c2f2375514 -r 8c08150c2371 debian/nagios-plugin-cert/DEBIAN/control --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/nagios-plugin-cert/DEBIAN/control Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,10 @@ +Package: nagios-plugin-cert +Version: 1.0-1 +Section: unknown +Priority: extra +Architecture: i386 +Depends: perl, libdate-manip-perl, openssl +Installed-Size: 68 +Maintainer: Christian Arnold +Description: nagios plugin to check openssl certificates + This plugin checks the expire date of x509 and pkcs12 certificates. diff -r 66c2f2375514 -r 8c08150c2371 debian/nagios-plugin-cert/DEBIAN/md5sums --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/nagios-plugin-cert/DEBIAN/md5sums Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,4 @@ +2a7a64ca94e12b1b7f672d3dc62fdd48 usr/share/doc/nagios-plugin-cert/copyright +61d6b2df68417be9f3a74e0a9bfc1bcb usr/share/doc/nagios-plugin-cert/changelog.Debian.gz +5bee9abf19f361eafbf96d0d117cfd2c usr/share/doc/nagios-plugin-cert/README.Debian +3b5d81661336c513cd4b0ded0dcdf36f usr/lib/nagios/plugins/ius/check_cert diff -r 66c2f2375514 -r 8c08150c2371 debian/nagios-plugin-cert/usr/lib/nagios/plugins/ius/check_cert --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/debian/nagios-plugin-cert/usr/lib/nagios/plugins/ius/check_cert Thu Dec 04 13:35:41 2008 +0000 @@ -0,0 +1,180 @@ +#!/usr/bin/perl -w +# $Id$ +# $URL$ + +use strict; +use warnings; +use File::Basename; +use Getopt::Long; +use Date::Manip; +use IPC::Open2; +use lib "/usr/lib/nagios/plugins"; +use utils qw (%ERRORS &print_revision &support); + +sub print_help(); +sub print_usage(); + +my $ME = basename $0; +my ($opt_w, $opt_c, $opt_V, $opt_h, $opt_b, @opt_certfiles); +my ($w_time, $c_time, $result, $message, %certs); +my (@critical, @warning); + +$opt_w = "1month"; +$opt_c = "1week"; +$opt_b = "/usr/bin/openssl"; + +Getopt::Long::Configure('bundling'); +GetOptions( + "V" => \$opt_V, "version" => \$opt_V, + "h" => \$opt_h, "help" => \$opt_h, + "b=s" => \$opt_b, "binary" => \$opt_b, + "w=s" => \$opt_w, "warning=s" => \$opt_w, + "c=s" => \$opt_c, "critical=s" => \$opt_c, + "f=s" => \@opt_certfiles, "certfile=s" => \@opt_certfiles); + +if ($opt_V) { + print_revision($ME, "0.1"); + exit $ERRORS{"OK"}; +} + +if ($opt_h) { + print_help(); + exit $ERRORS{"OK"}; +} + +# check openssl binary +unless (-x $opt_b) { + print "CERT CRITICAL: OpenSSL not found or not executable - $opt_b\n"; + exit $ERRORS{"CRITICAL"}; +} + +unless(@opt_certfiles) { + print "CERT WARNING: Not defined any certificate files\n"; + exit $ERRORS{"WARNING"}; +} + +@opt_certfiles = split(/,/, join(',', @opt_certfiles)); + +# extract certificate data +foreach my $file (@opt_certfiles) { + unless (-r $file) { + print "CERT CRITICAL: $file - not exists or not read permission is granted\n"; + exit $ERRORS{"CRITICAL"}; + } + my @cmd_x509 = ($opt_b, "x509", "-in", $file, "-noout", "-subject", "-enddate"); + my @cmd_pkcs12 = ($opt_b, "pkcs12", "-in", $file, "-clcerts", "-nokeys", "-nomacver", "-passin", "pass:"); + my @cmd_pipe = ($opt_b, "x509", "-noout", "-subject", "-enddate"); + my ($temp, $cn, $enddate, $rc); + open(CERT, "-|") or do { + open(STDERR, ">&STDOUT"); + exec(@cmd_x509); + }; + + # check x509 certificates + while() { + /unable to load certificate/ and $rc = 1 and last; + /^subject=\s.*CN=(.*)\s+$/ and $cn = $1; + /^notAfter=(.*)\s+$/ and $enddate = $1; + } + close(CERT); + + # check pkcs12 certificates + if ($rc) { + open(PKCS12, "@cmd_pkcs12 |"); + + while() { + $temp .= $_; + } + close(PKCS12); + + local (*READ, *WRITE); + open2(\*READ, \*WRITE, @cmd_pipe) or die "Can't fork: $!\n"; + print WRITE $temp; + close(WRITE); + + while() { + /unable to load certificate/ and print "CERT CRITICAL: unable to load certificate\n" and exit $ERRORS{"CRITICAL"}; + /^subject=\s.*CN=(.*)\s+$/ and $cn = $1; + /^notAfter=(.*)\s+$/ and $enddate = $1; + } + close(READ); + } + # fill the hash + push ( @{$certs{$file}}, ($cn, $enddate) ); +} + +# calculate the time +$w_time = DateCalc("today", "+ $opt_w"); +$c_time = DateCalc("today", "+ $opt_c"); + +# check expire date +foreach (sort keys %certs) { + my $enddate; + if (@{$certs{$_}}[1] =~ /(\w+\s+\d+\s+\d+:\d+:\d+\s+\d+)/) { $enddate = $1; } + $enddate = ParseDate($enddate); + unless ($enddate) { + print "CERT CRITICAL: Can't parse enddate\n"; + exit $ERRORS{"CRITICAL"}; + } + + &Date_Cmp($enddate, $w_time) > 0 and push (@{$certs{$_}}, "OK"), next; + &Date_Cmp($enddate, $c_time) > 0 and push (@{$certs{$_}}, "WARNING"), next; + push (@{$certs{$_}}, "CRITICAL"); +} + +# looking for stats +foreach (sort keys %certs) { + if (@{$certs{$_}}[2] eq "WARNING") { + push (@warning, "file: $_, CN=@{$certs{$_}}[0] expires @{$certs{$_}}[1]"); + } elsif (@{$certs{$_}}[2] eq "CRITICAL") { + push (@critical, "file: $_, CN=@{$certs{$_}}[0] expires @{$certs{$_}}[1]"); + } +} + +# return the state +if (@critical) { + print "CERT CRITICAL: @critical\n"; + exit $ERRORS{"CRITICAL"}; +} elsif (@warning) { + print "CERT WARNING: @warning\n"; + exit $ERRORS{"WARNING"}; +} else { + print "CERT OK: all certificates in limit\n"; + exit $ERRORS{"OK"}; +} + +sub print_usage() { + print "Usage:\n"; + print " $ME [-b ] [-w