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 )