EmbedIT-WebIT
view release on metacpan or search on metacpan
lib/EmbedIT/WebIT.pm view on Meta::CPAN
my ($self) = @_;
my $conf = $self->{CONF};
my $logging = $conf->{"DEBLOG_METHOD"};
my $scr = $self->__load_file($conf->{"STARTUP"});
if (not defined $scr) {
&$logging("Startup file cannot be loaded");
return 0;
}
my $errs = '';
my $res = '';
# save all STD files
open OLDERR, ">&STDERR";
open OLDOUT, ">&STDOUT";
# reopen STDERR to $errs string
close STDERR;
open STDERR, ">", \$errs;
# reopen STDOUT to $res string
close STDOUT;
open STDOUT, ">", \$res;
binmode STDOUT;
my $evalerr;
eval {
eval($scr);
$evalerr = $@;
};
close STDOUT;
open STDOUT, ">&OLDOUT";
close OLDOUT;
close STDERR;
open STDERR, ">&OLDERR";
close OLDERR;
$errs .= $evalerr;
if (length($errs) > 0) {
&$logging("(" . $conf->{"STARTUP"} . ") \n$errs");
}
if ($evalerr ne '') { return 0; }
return 1;
}
# --------------------------------------------------------------------------------------
# get user id from given id or name
#
sub __get_uid {
my ($i_id) = @_;
my ($n, $p, $uid, $gid, $quota, $comment, $gcos, $dir, $shell, $expire) = getpwnam($i_id);
if (not defined $uid) {
($n, $p, $uid, $gid, $quota, $comment, $gcos, $dir, $shell, $expire) = getpwuid($i_id);
if (not defined $uid) {
return 0;
}
}
return $uid;
}
# --------------------------------------------------------------------------------------
# get group id from given id or name
#
sub __get_gid {
my ($i_id) = @_;
my ($n, $p, $gid, $members) = getgrnam($i_id);
if (not defined $gid) {
($n, $p, $gid, $members) = getgrgid($i_id);
if (not defined $gid) {
return 0;
}
}
return $gid;
}
# --------------------------------------------------------------------------------------
# Empty logger
#
sub __no_logging {
}
# --------------------------------------------------------------------------------------
# Elementary log
#
sub __logging {
my ($self, $str) = @_;
if (ref($self) eq '') {
print STDERR time2iso(time) . " - $self\n";
} else {
print STDERR time2iso(time) . " - $str\n";
}
}
# --------------------------------------------------------------------------------------
1;
=head1 NAME
EmbedIT::WebIT - A small yet very effective embeded web server for any perl application
=head1 Synopsis
use EmbedIT::WebIT;
$server = new EmbedIT::WebIT( SERVER_NAME => 'www.my.org',
SERVER_IP => '127.0.0.1',
SERVER_PORT => 8080,
( run in 2.306 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )