summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2011-03-17 08:10:11 +0000
committerPaul Buetow <paul@buetow.org>2011-03-17 08:10:11 +0000
commit450b84bb62277df46fb9c2e0f745c4868c393ce2 (patch)
tree6fef966b11e238b14f8d910a6f5da47dc655cd6e /lib
parent6406b729d443d8ea133a4a92495b1256e57a8f4d (diff)
renamed due module name
Diffstat (limited to 'lib')
-rw-r--r--lib/Logger.pm40
-rw-r--r--lib/PerlDaemon.pl164
-rw-r--r--lib/RunModule.pm17
3 files changed, 0 insertions, 221 deletions
diff --git a/lib/Logger.pm b/lib/Logger.pm
deleted file mode 100644
index fccc274..0000000
--- a/lib/Logger.pm
+++ /dev/null
@@ -1,40 +0,0 @@
-package PerlDaemon::Logger;
-
-use Shell qw(mv);
-use POSIX qw(strftime);
-
-$| = 1;
-
-sub new ($$) {
- my ($class, $conf) = @_;
- return bless { conf => $conf }, $class;
-}
-
-sub logmsg ($$) {
- my ($self, $msg) = @_;
- my $conf = $self->{conf};
- my $logfile = $conf->{'daemon.logfile'};
-
- open my $fh, ">>$logfile" or die "Can't write logfile $logfile: $!\n";
- print $fh localtime()." (PID $$): $msg\n";
- close $fh;
-}
-
-sub err ($$) {
- my ($self, $msg) = @_;
- $self->logmsg($msg);
- die "$msg\n";
-}
-
-sub rotatelog ($) {
- my $self = shift;
- my $conf = $self->{conf};
- my $logfile = $conf->{'daemon.logfile'};
-
- $self->logmsg('Rotating logfile');
-
- my $timestr = strftime "%Y%m%d-%H%M%S", localtime();
- mv($logfile, "$logfile.$timestr");
-}
-
-1;
diff --git a/lib/PerlDaemon.pl b/lib/PerlDaemon.pl
deleted file mode 100644
index eb31c7c..0000000
--- a/lib/PerlDaemon.pl
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/perl
-
-# Minimal PerlDaemon (c) 2011 Paul Buetow
-
-use strict;
-use warnings;
-
-use Shell qw(mv);
-use POSIX qw(setsid strftime);
-
-use PerlDaemon::Logger;
-use PerlDaemon::RunModule;
-
-$| = 1;
-
-sub trimstr (@) {
- my @str =
- @_;
-
- for (@str) {
- chomp;
- s/^[\t\s]+//;
- s/[\t\s]+$//;
- }
-
- return @str;
-}
-
-sub trunc ($) {
- my $file = shift;
- open my $fh, ">$file" or die "Can't write $file: $!\n";
- print $fh '';
- close $fh;
-}
-
-sub checkpid ($) {
- my $conf = shift;
- my $pidfile = $conf->{'daemon.pidfile'};
- my $logger = $conf->{logger};
-
- trunc $pidfile unless -f $pidfile;
-
- open my $fh, $pidfile or $logger->err("Can't read pidfile $pidfile: $!");
- my ($pid) = <$fh>;
- close $fh;
-
- if (defined $pid) {
- chomp $pid;
- $logger->err("Process with pid $pid already running") if 0 < int $pid && kill 0, $pid;
- }
-}
-
-sub writepid ($) {
- my $conf = shift;
- my $logger = $conf->{logger};
-
- my $pidfile = $conf->{'daemon.pidfile'};
-
- open my $fh, ">$pidfile" or $logger->err("Can't write pidfile: $!");
- print $fh "$$\n";
- close $fh;
-}
-
-
-sub readconf ($) {
- my $conffile = shift;
-
- open my $fh, $conffile or die "Can't read $conffile\n";
- my %conf;
-
- while (<$fh>) {
- next if /^[\t\w]+#/;
- s/#.*//;
-
- my ($key, $val) = trimstr split '=', $_, 2;
- next unless defined $val;
-
- $conf{$key} = $val;
- }
-
- close $fh;
-
- # Check
- my $msg = 'Missing property:';
-
- foreach (qw(wd loopinterval alivefile pidfile logfile)) {
- my $key = "daemon.$_";
- die "$msg $key\n" unless exists $conf{$key};
- }
-
- return \%conf;
-}
-
-sub daemonize ($) {
- my $conf = shift;
- my $logger = $conf->{logger};
- $logger->logmsg('Daemonizing...');
-
- chdir $conf->{'daemon.wd'} or $logger->err("Can't chdir to wd: $!");
-
- my $msg = 'Can\'t read /dev/null:';
-
- open STDIN, '>/dev/null' or $logger->err("$msg $!");
- open STDOUT, '>/dev/null' or $logger->err("$msg $!");
- open STDERR, '>/dev/null' or $logger->err("$msg $!");
-
- defined (my $pid = fork) or $logger->err("Can't fork: $!");
- exit if $pid;
-
- setsid or $logger->err("Can't start a new session: $!");
-
- writepid $conf;
- $logger->logmsg('Daemonizing completed');
-}
-
-sub sighandlers ($) {
- my $conf = shift;
- my $logger = $conf->{logger};
-
- $SIG{TERM} = sub {
- # On shutdown
- $logger->logmsg('Received SIGTERM. Shutting down....');
- unlink $conf->{'daemon.pidfile'};
- exit 0;
- };
-
- $SIG{HUP} = sub {
- # On logrotate
- $logger->logmsg('Received SIGHUP.');
- $logger->rotatelog();
- };
-}
-
-sub prestartup ($) {
- my $conf = shift;
- checkpid $conf;
-}
-
-sub alive ($) {
- my $conf = shift;
-}
-
-sub daemonloop ($) {
- my $conf = shift;
- my $rmodule = RunModule->new($conf);
- my $loopinterval = $conf->{'daemon.loopinterval'};
-
- my $loop = shift;
- for (my $i = 1;;++$i) {
- $rmodule->do();
- sleep $loopinterval;
- alive $conf;
- }
-}
-
-my $conf = readconf shift;
-$conf->{logger} = Logger->new($conf);
-
-prestartup $conf;
-daemonize $conf;
-sighandlers $conf;
-daemonloop $conf;
-
-
diff --git a/lib/RunModule.pm b/lib/RunModule.pm
deleted file mode 100644
index 4f2c492..0000000
--- a/lib/RunModule.pm
+++ /dev/null
@@ -1,17 +0,0 @@
-package PerlDaemon::RunModule;
-
-sub new ($$$) {
- my ($class, $conf) = @_;
-
- return bless { conf => $conf }, $class;
-}
-
-sub do ($) {
- my $self = shift;
- my $conf = $self->{conf};
- my $logger = $conf->{logger};
-
- $logger->logmsg('Test');
-}
-
-1;