summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2007-12-02 07:02:43 +0000
committerAndreas Brachold <vdr07@deltab.de>2007-12-02 07:02:43 +0000
commit06ca688c86ff96d96fd4346f7f20efb60ab769cc (patch)
tree29dd440524c05f2d75faf9fea79bb430ca8f1f18
parent1fa6b8846c9dee8bf249bcb12f425d4c712a412f (diff)
downloadxxv-06ca688c86ff96d96fd4346f7f20efb60ab769cc.tar.gz
xxv-06ca688c86ff96d96fd4346f7f20efb60ab769cc.tar.bz2
* Fix: display 'panic' message
* Fix: Warn if requested modul is'nt loaded * HTTPD: Show 'Internal Server Error' if requested modul is'nt loaded
-rwxr-xr-xbin/xxvd8
-rw-r--r--lib/Tools.pm8
-rw-r--r--lib/XXV/MODULES/HTTPD.pm87
3 files changed, 75 insertions, 28 deletions
diff --git a/bin/xxvd b/bin/xxvd
index 87291c6..15b84b8 100755
--- a/bin/xxvd
+++ b/bin/xxvd
@@ -280,11 +280,13 @@ sub init {
# make an object for the module
eval "use $moduleName";
error $@ if $@;
- $MODULES->{$moduleName} = $moduleName->new(
+ my $modul = $moduleName->new(
-config => $Config,
-dbh => $DBH,
-paths => $PATHS,
);
+
+ $MODULES->{$moduleName} = $modul if(ref $modul);
debug sprintf("Load modul %s(%s)",
$moduleName,
(ref $MODULES->{$moduleName})
@@ -422,7 +424,9 @@ sub getModule {
my $name = shift || return error('No requested modul defined!');
my ($modname) = grep(/${name}$/, keys %$MODULES);
- unless ($modname && $MODULES->{$modname}) {
+ unless ($modname
+ && $MODULES->{$modname}
+ && ref $MODULES->{$modname}) {
panic sprintf("Requested modul '%s' is'nt loaded!",$name);
return undef;
}
diff --git a/lib/Tools.pm b/lib/Tools.pm
index 155de0a..97a483d 100644
--- a/lib/Tools.pm
+++ b/lib/Tools.pm
@@ -132,7 +132,7 @@ sub lg {
sub debug {
# ------------------
my $msg = shift;
- &_msg(250,$msg, 3);
+ &_msg(250,$msg, 4);
return undef;
}
@@ -144,7 +144,7 @@ sub event {
my ($package, $filename, $line, $subroutine) = caller(1);
&{$LOGCALLB}($module, $subroutine, $msg);
- &_msg(270,$msg, 2);
+ &_msg(270,$msg, 3);
return undef;
}
@@ -153,7 +153,7 @@ sub error {
# ------------------
my $msg = shift;
- &_msg(501,$msg, 1);
+ &_msg(501,$msg, 2);
return undef;
}
@@ -163,7 +163,7 @@ sub panic {
# ------------------
my $msg = shift;
- &_msg(550,$msg, 0);
+ &_msg(550,$msg, 1);
return undef;
}
diff --git a/lib/XXV/MODULES/HTTPD.pm b/lib/XXV/MODULES/HTTPD.pm
index 914bcd7..19a04c0 100644
--- a/lib/XXV/MODULES/HTTPD.pm
+++ b/lib/XXV/MODULES/HTTPD.pm
@@ -285,20 +285,36 @@ sub communicator
my $request = $data->{Request};
if($request =~ /epgimages\//) {
my $epgMod = main::getModule('EPG');
- $request =~ s/.*epgimages\//$epgMod->{epgimages}\//;
- $console->datei($request, $typ);
+ if($epgMod) {
+ $request =~ s/.*epgimages\//$epgMod->{epgimages}\//;
+ $console->datei($request, $typ);
+ } else {
+ $obj->ModulNotLoaded($console,'EPG');
+ }
} elsif($request =~ /previewimages\//) {
my $recMod = main::getModule('RECORDS');
- $request =~ s/.*previewimages\//$recMod->{previewimages}\//;
- $console->datei($request, $typ);
+ if($recMod) {
+ $request =~ s/.*previewimages\//$recMod->{previewimages}\//;
+ $console->datei($request, $typ);
+ } else {
+ $obj->ModulNotLoaded($console,'RECORDS');
+ }
} elsif($request =~ /coverimages\//) {
my $musicMod = main::getModule('MUSIC');
- $request =~ s/.*coverimages\//$musicMod->{coverimages}\//;
- $console->datei($request, $typ);
+ if($musicMod) {
+ $request =~ s/.*coverimages\//$musicMod->{coverimages}\//;
+ $console->datei($request, $typ);
+ } else {
+ $obj->ModulNotLoaded($console,'MUSIC');
+ }
} elsif($request =~ /vtximages\//) {
my $vtxMod = main::getModule('VTX');
- $request =~ s/.*vtximages\//$obj->{paths}->{VTXPATH}\//;
- $console->datei($request, $typ);
+ if($vtxMod) {
+ $request =~ s/.*vtximages\//$obj->{paths}->{VTXPATH}\//;
+ $console->datei($request, $typ);
+ } else {
+ $obj->ModulNotLoaded($console,'VTX');
+ }
} elsif($request =~ /tempimages\//) {
my $tmp = $userMod->userTmp;
$request =~ s/.*tempimages\//$tmp\//;
@@ -314,6 +330,8 @@ sub communicator
$console->footer() unless($console->typ eq 'AJAX' or $console->{noFooter});
}
+ } else {
+ $obj->ModulNotLoaded($console,'USER');
}
$console->printout();
@@ -421,6 +439,17 @@ sub parseRequest {
}
}
+# ------------------
+sub ModulNotLoaded {
+# ------------------
+ my $obj = shift || return error('No object defined!');
+ my $console = shift || return error('No console defined!');
+ my $modul = shift || return error('No modul defined!');
+
+ $console->statusmsg(500,
+ ,sprintf(gettext("Modul '%s' is'nt loaded!"),$modul),
+ ,gettext("Internal Server Error"));
+}
# ------------------
sub handleInput {
@@ -454,16 +483,18 @@ sub handleInput {
# Test the command on exists, permissions and so on
my $u = main::getModule('USER');
- my ($cmdobj, $cmdname, $shorterr, $err) = $u->checkCommand($console, $ucmd);
- $console->{call} = $cmdname;
- if($cmdobj and not $shorterr) {
- $console->{CMDSTAT} = $cmdobj->{callback}($watcher, $console, $udata, $result );
- } elsif($shorterr eq 'noperm' or $shorterr eq 'noactive') {
- $console->status403($err);
- $console->{CMDSTAT} = undef;
+ if($u) {
+ my ($cmdobj, $cmdname, $shorterr, $err) = $u->checkCommand($console, $ucmd);
+ $console->{call} = $cmdname;
+ if($cmdobj and not $shorterr) {
+ $cmdobj->{callback}($watcher, $console, $udata, $result );
+ } elsif($shorterr eq 'noperm' or $shorterr eq 'noactive') {
+ $console->status403($err);
+ } else {
+ $obj->usage($watcher, $console, undef, $err);
+ }
} else {
- $obj->usage($watcher, $console, undef, $err);
- $console->{CMDSTAT} = undef;
+ $obj->ModulNotLoaded($console,'USER');
}
}
@@ -471,7 +502,18 @@ sub handleInput {
sub usage {
# ------------------
my $obj = shift || return error('No object defined!');
- return main::getModule('CONFIG')->usage(@_);
+ my $watcher = shift || return error('No watcher defined!');
+ my $console = shift || return error('No console defined!');
+ my $modulename = shift;
+ my $hint = shift;
+
+ my $m = main::getModule('CONFIG');
+ if ($m){
+ return $m->usage($watcher,$console,$modulename,$hint);
+ } else {
+ $obj->ModulNotLoaded($console,'CONFIG');
+ }
+
}
# ------------------
@@ -537,10 +579,11 @@ sub unzip {
}
$gz->gzclose();
-
- my $tmpfile = sprintf('%s/gz_%d.tmp', main::getModule('USER')->userTmp, time);
-
- return save_file($tmpfile, $text);
+ my $u = main::getModule('USER');
+ if($u) {
+ my $tmpfile = sprintf('%s/gz_%d.tmp', $u->userTmp, time);
+ return save_file($tmpfile, $text);
+ }
}