App-MonM

 view release on metacpan or  search on metacpan

bin/monmd  view on Meta::CPAN

use App::MonM::Const;

my $options = {};
Getopt::Long::Configure ("bundling");
GetOptions($options,
    # NoUsed keys map:
    #
    # a A b B   C   D e E
    # f F g G     i I j J
    #   K l L m M n N o O
    # p P q Q r R   S   T
    # u U     w W x X y Y
    # z Z

    # Information and debug
    "help|usage|h",         # Show help page
    "longhelp|H|?",         # Show long help page
    "version|vers|ver|V",   # Print VERSION of the project
    "verbose|v",            # Verbose mode
    "safemode|s",           # Safe mode (saferun)

    # CTK Application
    "config|conf|c=s",      # Config file
    "datadir|dir|d=s",      # DataDir
    "kill|k=s",             # Kill (signal name)

) || pod2usage(-exitval => 1, -verbose => 0, -output => \*STDERR);
pod2usage(-exitval => 0, -verbose => 1) if $options->{help};
pod2usage(-exitval => 0, -verbose => 2) if $options->{longhelp};
printf("Daemon version: %s\n", App::MonM::Daemon->VERSION) && exit(0) if $options->{version};
my @arguments = @ARGV ? @ARGV : ();
my $exitval = 0;

# Dash k - is daemon mode!
my $dash_k = $options->{kill};
pod2usage(-exitval => 1, -verbose => 0, -output => \*STDERR)
	unless ($dash_k && grep {$_ eq $dash_k} @{(CTK::Daemon::LSB_COMMANDS())});

# CTK Singleton instance
my $ctk = CTK::App->new(
        project => PROJECTNAME,
        prefix  => PREFIX,
        options => $options,
        verbose => $options->{verbose},
        logfacility => Sys::Syslog::LOG_DAEMON,
        ident   => DAEMONMAME,
        datadir => $options->{datadir} || File::Spec->catdir(sharedstatedir(), PREFIX), # /var/lib/monm
        $options->{config} ? (configfile => $options->{config}) : (),
    );

# Prepare work directory
my $ddir = $ctk->datadir;
exit 1 unless CTK::Util::preparedir( $ddir );

# User and Group
my $usr = lvalue($ctk->config("daemonuser")) || USERNAME;
my $grp = lvalue($ctk->config("daemongroup")) || GROUPNAME;

# Set permisions (GID and UID) for work directory
my $uid = getpwnam($usr) || die "getpwnam failed - $!\n";
if ((stat($ddir))[4] != $uid) {
    my $gid = getgrnam($grp) || die "getgrnam failed - $!\n";
    chown($uid, $gid, $ddir);
}

# Daemon
my $daemon = App::MonM::Daemon->new(DAEMONMAME,
        ctk     => $ctk,
        forks   => lvalue($ctk->config("workers")) || App::MonM::Daemon::DAEMONFORKS,
        uid     => $usr,
        gid     => $grp,
        saferun => $options->{safemode},
    );
$exitval = $daemon->ctrl($dash_k); # For exiting
exit $exitval;

__END__



( run in 2.989 seconds using v1.01-cache-2.11-cpan-75ffa21a3d4 )