summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2008-11-09 12:48:09 +0000
committerAndreas Brachold <vdr07@deltab.de>2008-11-09 12:48:09 +0000
commitdd4bfdc1adf6cf36330687d7268ab44900fc77cb (patch)
tree6db26d3ec86df443142fa601b1ebeab5814368eb /lib
parent9eced4dff64e35a0135ce98609ad8f3f1c9c96a9 (diff)
downloadxxv-dd4bfdc1adf6cf36330687d7268ab44900fc77cb.tar.gz
xxv-dd4bfdc1adf6cf36330687d7268ab44900fc77cb.tar.bz2
* SVDRP: Rewrite communication functions, no more depends to NET:TELNET
* SVDRP: split queue_cmds into queue_add,queue_count,queue_flush * SVDRP: remove double error handling * COMMON: remove unused variable * VTX: Warn, if missing base directory * VTX: Fixed inserted page links, if more then two links inside one line * Console: Fix usage message
Diffstat (limited to 'lib')
-rw-r--r--lib/Bundle/Xxv.pm3
-rw-r--r--lib/XXV/MODULES/AUTOTIMER.pm39
-rw-r--r--lib/XXV/MODULES/CHANNELS.pm60
-rw-r--r--lib/XXV/MODULES/CHRONICLE.pm3
-rw-r--r--lib/XXV/MODULES/CONFIG.pm20
-rw-r--r--lib/XXV/MODULES/EPG.pm60
-rw-r--r--lib/XXV/MODULES/EVENTS.pm2
-rw-r--r--lib/XXV/MODULES/GRAB.pm19
-rw-r--r--lib/XXV/MODULES/HTTPD.pm12
-rw-r--r--lib/XXV/MODULES/INTERFACE.pm6
-rw-r--r--lib/XXV/MODULES/KEYWORDS.pm11
-rw-r--r--lib/XXV/MODULES/LOGREAD.pm1
-rw-r--r--lib/XXV/MODULES/MEDIALIB.pm21
-rw-r--r--lib/XXV/MODULES/MOVETIMER.pm34
-rw-r--r--lib/XXV/MODULES/MUSIC.pm16
-rw-r--r--lib/XXV/MODULES/RECORDS.pm58
-rw-r--r--lib/XXV/MODULES/REMOTE.pm17
-rw-r--r--lib/XXV/MODULES/REPORT.pm3
-rw-r--r--lib/XXV/MODULES/ROBOT.pm2
-rw-r--r--lib/XXV/MODULES/SHARE.pm1
-rw-r--r--lib/XXV/MODULES/STATUS.pm17
-rw-r--r--lib/XXV/MODULES/STREAM.pm2
-rw-r--r--lib/XXV/MODULES/SVDRP.pm274
-rw-r--r--lib/XXV/MODULES/TELNET.pm7
-rw-r--r--lib/XXV/MODULES/TIMERS.pm90
-rw-r--r--lib/XXV/MODULES/USER.pm14
-rw-r--r--lib/XXV/MODULES/VTX.pm113
-rw-r--r--lib/XXV/MODULES/WAPD.pm9
-rw-r--r--lib/XXV/MODULES/XMLTV.pm32
29 files changed, 433 insertions, 513 deletions
diff --git a/lib/Bundle/Xxv.pm b/lib/Bundle/Xxv.pm
index aa1be5c..3a8794a 100644
--- a/lib/Bundle/Xxv.pm
+++ b/lib/Bundle/Xxv.pm
@@ -2,7 +2,7 @@ package Bundle::Xxv;
use strict;
use warnings;
-$VERSION = '1.0';
+$VERSION = '1.0'.((split(/ /, '$Revision'))[1]);
1;
@@ -44,7 +44,6 @@ MIME::Base64
MP3::Info
Net::Amazon
Net::Amazon::Request::Artist
-Net::Telnet
Net::XMPP
Proc::Killfam
Proc::ProcessTable
diff --git a/lib/XXV/MODULES/AUTOTIMER.pm b/lib/XXV/MODULES/AUTOTIMER.pm
index 30df67a..01b89bd 100644
--- a/lib/XXV/MODULES/AUTOTIMER.pm
+++ b/lib/XXV/MODULES/AUTOTIMER.pm
@@ -151,11 +151,10 @@ sub module {
# ------------------
# Name: status
# Descr: Standardsubroutine to report statistical data for Report Plugin.
-# Usage: my $report = $obj->status([$watcher, $console]);
+# Usage: my $report = $obj->status($console);
# ------------------
sub status {
my $obj = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $lastReportTime = shift || 0;
@@ -306,14 +305,13 @@ sub _init {
my $modE = main::getModule('EPG');
$modE->updated(
sub{
- my $watcher = shift;
my $console = shift;
my $waiter = shift;
return 0 if($obj->{active} ne 'y');
lg 'Start autotimer callback to find new events!';
- return $obj->_autotimerLookup($watcher,$console,$waiter);
+ return $obj->_autotimerLookup($console,$waiter);
},"AUTOTIMER: Callback to compare epg data ...");
return 1;
@@ -331,7 +329,6 @@ sub _init {
# ------------------
sub autotimer {
my $obj = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $autotimerid = shift;
@@ -340,7 +337,7 @@ sub autotimer {
$waiter = $console->wait(gettext("Searching for autotimer ..."),0,1000,'no');
}
- my ($log,$C,$M) = $obj->_autotimerLookup($watcher,$console,$waiter,$autotimerid);
+ my ($log,$C,$M) = $obj->_autotimerLookup($console,$waiter,$autotimerid);
# last call of waiter
$waiter->end() if(ref $waiter);
@@ -360,7 +357,6 @@ sub autotimer {
}
sub _autotimerLookup {
my $obj = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $waiter = shift;
my $autotimerid = shift;
@@ -528,17 +524,10 @@ sub _autotimerLookup {
}
}
- my $error = 0;
-
if($timerID) {
($event->{vid},$event->{pos}) = $modT->getPos($timerID);
}
- my $erg = $modT->saveTimer($event);
- foreach my $zeile (@$erg) {
- if($zeile =~ /^(\d{3})\s+(.+)/) {
- $error = $2 if(int($1) >= 500);
- }
- }
+ my ($erg,$error) = $modT->saveTimer($event);
if($error) {
$console->err(sprintf(gettext("Could not save timer for '%s' : %s"), $event->{file}, $error))
if(ref $console && $autotimerid);
@@ -593,26 +582,24 @@ sub _autotimerLookup {
# ------------------
# Name: autotimerCreate
# Descr: Routine to display the create form for Autotimer.
-# Usage: $obj->autotimerCreate($watcher, $console, [$userdata]);
+# Usage: $obj->autotimerCreate($console, [$userdata]);
# ------------------
sub autotimerCreate {
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $timerid = shift || 0;
my $data = shift || 0;
- $obj->autotimerEdit($watcher, $console, $timerid, $data);
+ $obj->autotimerEdit($console, $timerid, $data);
}
# ------------------
# Name: autotimerEdit
# Descr: Routine to display the edit form for Autotimer.
-# Usage: $obj->autotimerEdit($watcher, $console, [$atid], [$userdata]);
+# Usage: $obj->autotimerEdit($console, [$atid], [$userdata]);
# ------------------
sub autotimerEdit {
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $timerid = shift || 0;
my $data = shift || 0;
@@ -1024,7 +1011,7 @@ You can also fine tune your search :
$data->{Search},
( $console->{USER} && $console->{USER}->{Name} ? sprintf(' from user: %s', $console->{USER}->{Name}) : "" )
);
- $obj->autotimer($watcher, $console, $data->{Id});
+ $obj->autotimer($console, $data->{Id});
}
return 1;
}
@@ -1032,11 +1019,10 @@ You can also fine tune your search :
# ------------------
# Name: autotimerDelete
# Descr: Routine to display the delete form for Autotimer.
-# Usage: $obj->autotimerDelete($watcher, $console, $atid);
+# Usage: $obj->autotimerDelete($console, $atid);
# ------------------
sub autotimerDelete {
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $timerid = shift || return $console->err(gettext("No autotimer defined for deletion! Please use adelete 'aid'!")); # If timerid the edittimer
@@ -1063,11 +1049,10 @@ sub autotimerDelete {
# ------------------
# Name: autotimerToogle
# Descr: Switch Autotimer on or off.
-# Usage: $obj->autotimerToogle($watcher, $console, $atid);
+# Usage: $obj->autotimerToogle($console, $atid);
# ------------------
sub autotimerToggle {
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $timerid = shift || return $console->err(gettext("No autotimer defined to toggle! Please use atoggle 'aid'!"));
@@ -1132,11 +1117,10 @@ sub autotimerToggle {
# ------------------
# Name: list
# Descr: List Autotimers in a table display.
-# Usage: $obj->list($watcher, $console, [$atid], [$params]);
+# Usage: $obj->list($console, [$atid], [$params]);
# ------------------
sub list {
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $text = shift || '';
my $params = shift;
@@ -1613,7 +1597,6 @@ sub _placeholder {
sub suggest {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $search = shift;
my $params = shift;
diff --git a/lib/XXV/MODULES/CHANNELS.pm b/lib/XXV/MODULES/CHANNELS.pm
index f55660b..b8d55de 100644
--- a/lib/XXV/MODULES/CHANNELS.pm
+++ b/lib/XXV/MODULES/CHANNELS.pm
@@ -116,7 +116,6 @@ sub module {
sub status {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $lastReportTime = shift || 0;
@@ -392,10 +391,9 @@ sub _insertGrp {
sub readData {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
- if($self->_readData($watcher,$console)) {
+ if($self->_readData($console)) {
$console->redirect({url => '?cmd=clist', wait => 1})
if($console->typ eq 'HTML');
}
@@ -404,7 +402,6 @@ sub readData {
sub _readData {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $deleteData = 0;
@@ -417,23 +414,24 @@ sub _readData {
my $hostlist = $self->{svdrp}->list_hosts();
# read from svdrp
foreach my $vid (@$hostlist) {
- my $lstc = $self->{svdrp}->command('lstc :groups',$vid);
+ my ($lstc,$error) = $self->{svdrp}->command('lstc :groups',$vid);
+
my $vdrData = [ grep(/^250/, @$lstc) ];
my $grpText;
- unless(scalar @$vdrData) {
+ if($error || (scalar @$vdrData) <= 0) {
# Delete any channels from this video disk recorder
my $csth = $self->{dbh}->prepare('DELETE FROM CHANNELS where vid = ?');
$csth->execute($vid)
- or return error sprintf("Couldn't execute query: %s.",$csth->errstr);
+ or return error sprintf("Couldn't execute query: %s.",$csth->errstr);
my $dsth = $self->{dbh}->prepare('DELETE FROM CHANNELGROUPS where vid = ?');
$dsth->execute($vid)
- or return error sprintf("Couldn't execute query: %s.",$dsth->errstr);
+ or return error sprintf("Couldn't execute query: %s.",$dsth->errstr);
- my $msg = sprintf(gettext("No channels on '%s' available!"),$self->{svdrp}->hostname($vid));
- con_err($console,$msg);
+ my $msg = [ sprintf(gettext("No channels on '%s' available!"),$self->{svdrp}->hostname($vid)), $error ];
+ $console->err($msg);
next;
}
@@ -594,7 +592,6 @@ sub is_numeric { defined getnum($_[0]) }
sub list {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || '';
my $params = shift;
@@ -1025,19 +1022,17 @@ sub getChannelType {
sub newChannel {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || 0;
my $default = shift || 0;
- $self->editChannel($watcher, $console, 0, $default);
+ $self->editChannel($console, 0, $default);
}
# ------------------
sub editChannel {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $cid = shift || 0; # If channelid then edit channel
my $data = shift || 0; # Data for defaults
@@ -1270,14 +1265,8 @@ sub editChannel {
: gettext('New channel')), $questions, $data);
if(ref $datasave eq 'HASH') {
- my $erg = $self->saveChannel($datasave, $datasave->{pos});
+ my ($erg,$error) = $self->saveChannel($datasave, $datasave->{pos});
- my $error;
- foreach my $zeile (@$erg) {
- if($zeile =~ /^(\d{3})\s+(.+)/) {
- $error = $2 if(int($1) >= 500);
- }
- }
unless($error) {
debug sprintf('%s channel with name "%s" is saved%s',
($cid ? 'Changed' : 'New'),
@@ -1286,15 +1275,15 @@ sub editChannel {
);
$console->message($erg);
} else {
- error sprintf('%s channel with name "%s" does\'nt saved : %s',
+ my $msg = sprintf('%s channel with name "%s" does\'nt saved : %s',
($cid ? 'Changed' : 'New'),
$data->{Name},
$error
);
- con_err($console, $erg);
+ $console->err($msg);
}
sleep(1);
- $self->_readData($watcher,$console);
+ $self->_readData($console);
$console->redirect({url => '?cmd=clist', wait => 1})
if($console->typ eq 'HTML');
@@ -1308,21 +1297,21 @@ sub saveChannel {
my $data = shift || return error('No data defined!');
my $pos = shift || 0;
- my $erg;
+ my ($erg,$error);
if($pos
&& defined $data->{NEWPOS}
&& $pos != $data->{NEWPOS} ) {
- $erg = $self->{svdrp}->command(
+ ($erg,$error) = $self->{svdrp}->command(
sprintf("movc %s %s",
$pos,
$data->{NEWPOS}
));
$pos = $data->{NEWPOS};
- push(@{$erg},"\r\n");
- }
+ return ($erg,$error) if($error);
+ }
- $erg = $self->{svdrp}->command(
+ ($erg,$error) = $self->{svdrp}->command(
sprintf("%s %s:%s:%s:%s:%s:%s:%s:%s:%s:%s:%s:%s:%s",
$pos ? "modc $pos" : "newc",
$data->{name},
@@ -1340,14 +1329,13 @@ sub saveChannel {
int($data->{RID})
)
);
- return $erg;
+ return ($erg,$error);
}
# ------------------
sub deleteChannel {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $channelid = shift || return con_err($console, gettext("No channel defined for deletion! Please use cdelete 'pos'!"));
my $answer = shift || 0;
@@ -1391,7 +1379,7 @@ sub deleteChannel {
( $console->{USER} && $console->{USER}->{Name} ? sprintf(' from user: %s', $console->{USER}->{Name}) : "" )
);
- $self->{svdrp}->queue_cmds(sprintf("delc %d", $c->{pos}), $c->{vid});
+ $self->{svdrp}->queue_add(sprintf("delc %d", $c->{pos}), $c->{vid});
# remove channel from request, if found inside database
my $i = 0;
@@ -1409,14 +1397,14 @@ sub deleteChannel {
join('\',\'',@ch)))
if(scalar @ch);
- if($self->{svdrp}->queue_cmds('COUNT')) {
- my $erg = $self->{svdrp}->queue_cmds("CALL"); # Aufrufen der Kommandos
- $console->msg($erg, $self->{svdrp}->err)
+ if($self->{svdrp}->queue_count()) {
+ my ($erg,$error) = $self->{svdrp}->queue_flush(); # Aufrufen der Kommandos
+ $console->msg($erg, $error)
if(ref $console);
sleep(1);
- if($self->_readData($watcher,$console)) {
+ if($self->_readData($console)) {
$console->redirect({url => '?cmd=clist', wait => 1})
if(ref $console and $console->typ eq 'HTML');
}
diff --git a/lib/XXV/MODULES/CHRONICLE.pm b/lib/XXV/MODULES/CHRONICLE.pm
index c833fd8..79d8b8e 100644
--- a/lib/XXV/MODULES/CHRONICLE.pm
+++ b/lib/XXV/MODULES/CHRONICLE.pm
@@ -165,7 +165,6 @@ INSERT IGNORE INTO CHRONICLE
sub list {
# ------------------
my $self = shift;
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $data = shift;
my $params = shift;
@@ -244,7 +243,6 @@ ORDER BY starttime
sub search {
# ------------------
my $self = shift;
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $text = shift || return $console->err(gettext("No 'string' to search for! Please use chrsearch 'text'."));
my $params = shift;
@@ -327,7 +325,6 @@ FROM CHRONICLE
sub delete {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $items = shift || return $console->err(gettext("No ID to delete! Please use chrdelete 'id'"));
diff --git a/lib/XXV/MODULES/CONFIG.pm b/lib/XXV/MODULES/CONFIG.pm
index b1277b6..426be49 100644
--- a/lib/XXV/MODULES/CONFIG.pm
+++ b/lib/XXV/MODULES/CONFIG.pm
@@ -43,7 +43,7 @@ sub module {
description => gettext("Restart all modules."),
short => 'rel',
callback => sub{
- my ($w, $c, $l) = @_;
+ my ($console, $l) = @_;
$Module::Reload::Debug = CORE::int(($Tools::VERBOSE+.5)/2);
# my %Status = %Module::Reload->Stat;
my $cnt = Module::Reload->check();
@@ -53,9 +53,9 @@ sub module {
# if($Module::Reload::Stat{$file} ne $Status{$file});
# }
if($cnt) {
- $c->message(sprintf(gettext("Reload %d modules."),$cnt));
+ $console->message(sprintf(gettext("Reload %d modules."),$cnt));
} else {
- $c->message(gettext("There none module reloaded."));
+ $console->message(gettext("There none module reloaded."));
}
},
Level => 'admin'
@@ -102,7 +102,6 @@ sub new {
sub menu {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $sector = shift || 0;
@@ -129,12 +128,11 @@ sub menu {
sub edit {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $sector = shift || 0;
my $data = shift || 0;
- $obj->menu( $watcher, $console, $sector )
+ $obj->menu( $console, $sector )
if($console->{TYP} eq 'HTML' or ($console->{TYP} ne 'HTML' and not $sector));
return unless $sector;
@@ -175,7 +173,7 @@ sub edit {
if(ref $cfg eq 'HASH') {
$obj->{config}->{$sector} = $cfg;
con_msg($console, sprintf(gettext("Section: '%s' saving ... please wait."), $sector));
- my $success = $obj->write($watcher, $console);
+ my $success = $obj->write($console);
$console->redirect({url => '?cmd=configedit', wait => 1})
if($success eq 'ok'
@@ -187,10 +185,9 @@ sub edit {
sub write {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
- my $success = $obj->reconfigure($watcher, $console);
+ my $success = $obj->reconfigure($console);
my $configfile = main::getUsrConfigFile;
if($success eq 'ok'
@@ -206,7 +203,6 @@ sub write {
sub get {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $modname = shift || 0;
@@ -231,7 +227,6 @@ sub get {
sub reconfigure {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $success = 'ok';
@@ -296,7 +291,6 @@ sub realModNames {
sub usage {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $modulename = shift || 0;
my $hint = shift || '';
@@ -313,7 +307,7 @@ sub usage {
}
my $ret;
- if($console->typ ne 'AJAX') {
+ if($console->typ eq 'HTML') {
push(@$ret, sprintf(gettext("%sThis is the xxv %s server.\nPlease use the following commands:\n"),
($hint ? "$hint\n\n" : ''), $console->typ));
}
diff --git a/lib/XXV/MODULES/EPG.pm b/lib/XXV/MODULES/EPG.pm
index 4aef09e..3fcd683 100644
--- a/lib/XXV/MODULES/EPG.pm
+++ b/lib/XXV/MODULES/EPG.pm
@@ -80,14 +80,13 @@ sub module {
description => gettext('Update EPG data.'),
short => 'er',
callback => sub{
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
debug sprintf('Start reload EPG data%s',
( $console->{USER} && $console->{USER}->{Name} ? sprintf(' from user: %s', $console->{USER}->{Name}) : "" )
);
- $self->startReadEpgData($watcher,$console);
+ $self->startReadEpgData($console);
},
Level => 'admin',
},
@@ -120,7 +119,6 @@ sub module {
sub status {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $lastReportTime = shift || 0;
@@ -256,7 +254,7 @@ sub _init {
$self->startReadEpgData();
- # Restart watcher every x hours
+ # Restart interval every x hours
Event->timer(
interval => $self->{interval},
prio => 6, # -1 very hard ... 6 very low
@@ -275,7 +273,6 @@ sub _init {
sub startReadEpgData {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
debug sprintf('The read on epg data start now!');
@@ -285,7 +282,7 @@ sub startReadEpgData {
$waiter = $console->wait(gettext("Read EPG data ..."),0,1000,'no');
}
my $updated = 0;
- $self->_before_updated($watcher,$console,$waiter);
+ $self->_before_updated($console,$waiter);
$self->moveOldEPGEntrys();
@@ -293,23 +290,25 @@ sub startReadEpgData {
my $hostlist = $self->{svdrp}->list_hosts();
# read from svdrp
foreach my $vid (@$hostlist) {
- my $vdata = $self->{svdrp}->command('LSTE',$vid);
- map {
- $_ =~ s/^\d{3}.//;
- # $_ =~ s/[\r|\n]$//;
- } @$vdata;
+ my ($vdata,$error) = $self->{svdrp}->command('LSTE',$vid);
+ unless($error) {
+ map {
+ $_ =~ s/^\d{3}.//;
+ # $_ =~ s/[\r|\n]$//;
+ } @$vdata;
- # Adjust waiter max value now.
- $waiter->max(scalar @$vdata)
- if(ref $console && ref $waiter);
+ # Adjust waiter max value now.
+ $waiter->max(scalar @$vdata)
+ if(ref $console && ref $waiter);
- # Read file row by row
- $updated |= $self->compareEpgData($vdata,$vid,$watcher,$console,$waiter);
+ # Read file row by row
+ $updated |= $self->compareEpgData($vdata,$vid,$console,$waiter);
+ }
}
$self->deleteDoubleEPGEntrys();
- $self->_updated($watcher,$console,$waiter) if($updated);
+ $self->_updated($console,$waiter) if($updated);
# last call of waiter
$waiter->end() if(ref $waiter);
@@ -340,7 +339,6 @@ sub before_updated {
sub _before_updated {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $waiter = shift;
@@ -348,7 +346,7 @@ sub _before_updated {
next unless(ref $CB eq 'ARRAY');
lg $CB->[1]
if($CB->[1]);
- &{$CB->[0]}($watcher,$console,$waiter)
+ &{$CB->[0]}($console,$waiter)
if(ref $CB->[0] eq 'CODE');
}
}
@@ -370,7 +368,6 @@ sub updated {
sub _updated {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $waiter = shift;
@@ -378,7 +375,7 @@ sub _updated {
next unless(ref $CB eq 'ARRAY');
lg $CB->[1]
if($CB->[1]);
- &{$CB->[0]}($watcher,$console,$waiter)
+ &{$CB->[0]}($console,$waiter)
if(ref $CB->[0] eq 'CODE');
}
}
@@ -390,7 +387,6 @@ sub compareEpgData {
my $self = shift || return error('No object defined!');
my $vdata = shift || return error('No data defined!');
my $vid = shift;
- my $watcher = shift;
my $console = shift;
my $waiter = shift;
@@ -637,7 +633,6 @@ sub readEpgData {
sub search {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $data = shift;
my $params = shift;
@@ -788,7 +783,6 @@ sub search {
sub program {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $cid = shift;
unless($cid) {
@@ -911,7 +905,6 @@ order by
sub display {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $eventid = shift;
@@ -1002,7 +995,6 @@ where
sub runningNext {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $data = shift;
my $param = shift || {};
@@ -1172,7 +1164,6 @@ ORDER BY c.vid, c.pos
sub runningNow {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $zeit = shift || time;
my $param = shift || {};
@@ -1322,7 +1313,6 @@ ORDER BY c.vid, c.pos
sub NowOnChannel {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $channel = shift;
my $vid = shift || $self->{svdrp}->primary_hosts();
@@ -1393,16 +1383,19 @@ sub _actualChannel {
my $self = shift || return error('No object defined!');
my $vid = shift;
- my $erg = $self->{svdrp}->command('chan', $vid);
- my ($chanpos, $channame) = $erg->[1] =~ /^250\s+(\d+)\s+(\S+)/sig;
- return $chanpos;
+ my ($erg,$error) = $self->{svdrp}->command('chan', $vid);
+ unless($error) {
+ my ($chanpos, $channame) = $erg->[1] =~ /^250\s+(\d+)\s+(\S+)/sig;
+ return $chanpos;
+ } else {
+ return undef;
+ }
}
# ------------------
sub schema {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $zeit = shift || time;
my $param = shift || {};
@@ -1535,7 +1528,6 @@ WHERE
sub checkOnTimer {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $eid = shift || return con_err($console, gettext('No event id defined!'));
@@ -1577,7 +1569,6 @@ WHERE
sub getDescription {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $eid = shift || 0;
@@ -1626,7 +1617,6 @@ sub getId {
sub suggest {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $search = shift;
my $params = shift;
diff --git a/lib/XXV/MODULES/EVENTS.pm b/lib/XXV/MODULES/EVENTS.pm
index 77ffbc4..f3ac7e1 100644
--- a/lib/XXV/MODULES/EVENTS.pm
+++ b/lib/XXV/MODULES/EVENTS.pm
@@ -340,7 +340,6 @@ q|
sub list {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $data = shift || 1;
@@ -388,7 +387,6 @@ LIMIT 0,50
sub request {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
# To this time you can set on
# cmd=request&data=rss&ver=2 or
diff --git a/lib/XXV/MODULES/GRAB.pm b/lib/XXV/MODULES/GRAB.pm
index a8fbefe..580c784 100644
--- a/lib/XXV/MODULES/GRAB.pm
+++ b/lib/XXV/MODULES/GRAB.pm
@@ -108,7 +108,7 @@ sub module {
},
Commands => {
gdisplay => {
- description => gettext('Display current picture of video output.'),
+ hidden => 'yes',
short => 'gd',
callback => sub{ $self->display(@_) },
Level => 'user',
@@ -193,14 +193,16 @@ sub _grab {
# command for get inline data (JPEG BASE64 coded)
my $cmd = sprintf('grab - %d %d %d', $self->{imgquality}, $width, $height);
- my $data = $self->{svdrp}->command($cmd, $vid);
+ my ($data,$error) = $self->{svdrp}->command($cmd, $vid);
my $binary;
- foreach my $l (@{$data}) {
- if($l =~ /^216-/sg) {
- $l =~ s/^216-//g;
- $binary .= MIME::Base64::decode_base64($l);
- }
+ unless($error) {
+ foreach my $l (@{$data}) {
+ if($l =~ /^216-/sg) {
+ $l =~ s/^216-//g;
+ $binary .= MIME::Base64::decode_base64($l);
+ }
+ }
}
# create noised image as failback.
$binary = $self->_noise($width,$height)
@@ -218,7 +220,6 @@ sub _grab {
sub display {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $data = shift;
my $params = shift;
@@ -281,7 +282,7 @@ sub makeImgText {
my $vpos = CORE::int(($height / $self->{ysize}) * $self->{vpos});
my $imgfontsize = CORE::int(($height / $self->{ysize}) * $self->{imgfontsize});
- lg sprintf("height: %d vpos: %d imgfontsize: %d",$height,$vpos,$imgfontsize);
+ #lg sprintf("height: %d vpos: %d imgfontsize: %d",$height,$vpos,$imgfontsize);
my $font = sprintf("%s/%s",$self->{paths}->{FONTPATH},$self->{font});
if($self->{paths}->{FONTPATH} and $self->{font} and -r $font) {
diff --git a/lib/XXV/MODULES/HTTPD.pm b/lib/XXV/MODULES/HTTPD.pm
index 947eefa..ef6bc54 100644
--- a/lib/XXV/MODULES/HTTPD.pm
+++ b/lib/XXV/MODULES/HTTPD.pm
@@ -314,7 +314,7 @@ sub communicator {
$console->datei($htmlRootDir . $request, $typ);
}
} else {
- $self->handleInput($watcher, $console, $cgi);
+ $self->handleInput($console, $cgi);
}
} else {
@@ -441,7 +441,6 @@ sub ModulNotLoaded {
sub handleInput {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $cgi = shift || return error('No CGI object defined!');
@@ -478,11 +477,11 @@ sub handleInput {
$console->{nocache} = 1
if($cmdobj->{binary} eq 'nocache');
}
- $cmdobj->{callback}($watcher, $console, $udata, $result );
+ $cmdobj->{callback}($console, $udata, $result );
} elsif($shorterr eq 'noperm' or $shorterr eq 'noactive') {
$console->status403($err);
} else {
- $self->usage($watcher, $console, undef, $err);
+ $self->usage($console, undef, $err);
}
} else {
$self->ModulNotLoaded($console,'USER');
@@ -493,14 +492,13 @@ sub handleInput {
sub usage {
# ------------------
my $self = shift || return error('No object defined!');
- 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);
+ return $m->usage($console,$modulename,$hint);
} else {
$self->ModulNotLoaded($console,'CONFIG');
}
@@ -511,7 +509,6 @@ sub usage {
sub status {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift || return;
my $lastReportTime = shift || 0;
@@ -594,7 +591,6 @@ sub unzip {
sub checkvalue {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $data = shift || return error('No data defined!');
diff --git a/lib/XXV/MODULES/INTERFACE.pm b/lib/XXV/MODULES/INTERFACE.pm
index 84d3dca..3e3b2ab 100644
--- a/lib/XXV/MODULES/INTERFACE.pm
+++ b/lib/XXV/MODULES/INTERFACE.pm
@@ -154,8 +154,6 @@ BEGIN {
my $ucmd = shift || return error('No command defined!');
my $udata = shift;
- my $watcher = $obj;
-
my $console = XXV::OUTPUT::Dump->new();
$console->{USER}->{Name} = undef;
$console->{USER}->{Level} = 'admin';
@@ -166,12 +164,12 @@ BEGIN {
my ($cmdobj, $cmdname, $shorterr, $err) = $u->checkCommand($console, $ucmd);
$console->{call} = $cmdname;
if($cmdobj and not $shorterr) {
- my @ret = $cmdobj->{callback}($watcher, $console, $udata);
+ my @ret = $cmdobj->{callback}($console, $udata);
return \@ret;
} elsif($shorterr eq 'noperm' or $shorterr eq 'noactive') {
return $console->err($err);
} else {
- return $obj->usage($watcher, $console, undef, $err);
+ return $obj->usage($console, undef, $err);
}
}
diff --git a/lib/XXV/MODULES/KEYWORDS.pm b/lib/XXV/MODULES/KEYWORDS.pm
index de71d04..27c16c8 100644
--- a/lib/XXV/MODULES/KEYWORDS.pm
+++ b/lib/XXV/MODULES/KEYWORDS.pm
@@ -199,7 +199,6 @@ sub suggest {
# ------------------
my $self = shift || return error('No object defined!');
my $type = shift || return error('No type defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $search = shift;
my $params = shift;
@@ -280,14 +279,13 @@ sub _list {
sub timer_keywords {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $text = shift;
my $params = shift;
my $tmod = main::getModule('TIMERS');
unless($text) {
- return $tmod->list($watcher,$console);
+ return $tmod->list($console);
}
my $term;
@@ -296,25 +294,24 @@ sub timer_keywords {
$search = sprintf('AND ( %s ) AND ( t.id = k.hash )', $query->{query});
foreach(@{$query->{term}}) { push(@{$term},$_); }
- return $tmod->_list($watcher,$console,$search,$term,$params,', KEYWORDS as k');
+ return $tmod->_list($console,$search,$term,$params,', KEYWORDS as k');
}
# ------------------
sub recording_keywords {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $text = shift;
my $params = shift;
my $rmod = main::getModule('RECORDS');
unless($text) {
- return $rmod->list($watcher,$console);
+ return $rmod->list($console);
}
my $query = buildsearch("k.keyword",$text);
- return $rmod->_search($watcher,$console,$query->{query}.' ) AND ( r.RecordMD5 = k.hash ',$query->{term},$params,', KEYWORDS as k');
+ return $rmod->_search($console,$query->{query}.' ) AND ( r.RecordMD5 = k.hash ',$query->{term},$params,', KEYWORDS as k');
}
# ------------------
diff --git a/lib/XXV/MODULES/LOGREAD.pm b/lib/XXV/MODULES/LOGREAD.pm
index 4665c55..a8862e5 100644
--- a/lib/XXV/MODULES/LOGREAD.pm
+++ b/lib/XXV/MODULES/LOGREAD.pm
@@ -100,7 +100,6 @@ sub new {
sub logger {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $logname = shift || 'standard';
my $params = shift || {};
diff --git a/lib/XXV/MODULES/MEDIALIB.pm b/lib/XXV/MODULES/MEDIALIB.pm
index 794c9fb..da41794 100644
--- a/lib/XXV/MODULES/MEDIALIB.pm
+++ b/lib/XXV/MODULES/MEDIALIB.pm
@@ -290,11 +290,10 @@ sub _init {
# ------------------
# Name: status
# Descr: Standardsubroutine to report statistical data for Report Plugin.
-# Usage: my $report = $obj->status([$watcher, $console]);
+# Usage: my $report = $obj->status($console);
# ------------------
sub status {
my $obj = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $sql = qq|
@@ -315,7 +314,6 @@ FROM
sub researchMedia {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || 0;
my $params = shift || {};
@@ -345,19 +343,17 @@ sub researchMedia {
sub createMedia {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || 0;
my $params = shift || 0;
- $obj->editMedia($watcher, $console, 0, $params);
+ $obj->editMedia($console, 0, $params);
}
# ------------------
sub copyMedia {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || 0;
my $params = shift || 0;
@@ -377,14 +373,13 @@ WHERE
delete $erg->{id};
$erg->{range} = $params->{range} if($params && $params->{range});
- $obj->editMedia($watcher, $console, 0, $erg);
+ $obj->editMedia($console, 0, $erg);
}
# ------------------
sub importMedia {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || 0;
my $params = shift || {};
@@ -460,7 +455,6 @@ sub importMedia {
sub searchMedia {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || 0;
my $params = shift || {};
@@ -547,7 +541,6 @@ ORDER BY title
sub editMedia {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || 0;
my $params = shift || {};
@@ -594,7 +587,6 @@ WHERE
sub listMedia {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || "";
my $params = shift;
@@ -654,7 +646,6 @@ ORDER BY title
sub displayMedia {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || "";
my $params = shift;
@@ -700,7 +691,6 @@ WHERE id = ?
sub saveMedia {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || "";
my $params = shift;
@@ -715,7 +705,7 @@ sub saveMedia {
$params->{$key} =~ s/\r\n/\n/g;
}
- $obj->_saveActors($console, $watcher, $params->{actors});
+ $obj->_saveActors($console, $params->{actors});
my $genres = delete $params->{genres};
$obj->_saveMedia($params);
@@ -744,7 +734,6 @@ sub saveMedia {
sub deleteMedia {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || "";
my $params = shift;
@@ -784,7 +773,6 @@ sub deleteMedia {
sub _saveActors {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $input = shift || '';
@@ -995,7 +983,6 @@ sub _nocover {
sub mediacache {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || 0;
my $params = shift || '';
diff --git a/lib/XXV/MODULES/MOVETIMER.pm b/lib/XXV/MODULES/MOVETIMER.pm
index fed2f89..d2b050a 100644
--- a/lib/XXV/MODULES/MOVETIMER.pm
+++ b/lib/XXV/MODULES/MOVETIMER.pm
@@ -168,11 +168,10 @@ sub _init {
sub movetimermanual {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $id = shift;
- return 0 unless($self->_movetimer($watcher,$console,$id));
+ return 0 unless($self->_movetimer($console,$id));
$console->redirect({url => '?cmd=movetimerlist', wait => 1})
if($console->typ eq 'HTML');
@@ -184,7 +183,6 @@ sub movetimermanual {
sub _movetimer {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $id = shift;
@@ -307,18 +305,18 @@ q|
}
if($todel) {
foreach my $d (reverse sort{ $a->[1] <=> $b->[1] } @$todel) {
- $self->{svdrp}->queue_cmds(sprintf("modt %d off", $d->[1]), $d->[0])
+ $self->{svdrp}->queue_add(sprintf("modt %d off", $d->[1]), $d->[0])
if($d->[2]);
- $self->{svdrp}->queue_cmds(sprintf("delt %d", $d->[1]), $d->[0]);
+ $self->{svdrp}->queue_add(sprintf("delt %d", $d->[1]), $d->[0]);
}
}
- if($self->{svdrp}->queue_cmds('COUNT')) {
- my $erg = $self->{svdrp}->queue_cmds("CALL"); # deqeue commands
- $console->msg($erg, $self->{svdrp}->err)
+ if($self->{svdrp}->queue_count()) {
+ my ($erg,$error) = $self->{svdrp}->queue_flush(); # deqeue commands
+ $console->msg($erg, $error)
if(ref $console);
- $modT->readData($watcher, $console)
+ $modT->readData($console)
} else {
$console->msg(gettext("There none timer to move."))
if(ref $console);
@@ -339,7 +337,7 @@ sub modifyTimer {
$data->{file} =~ s/:/|/g;
$data->{file} =~ s/(\r|\n)//sig;
- $self->{svdrp}->queue_cmds(
+ $self->{svdrp}->queue_add(
sprintf("%s %s:%s:%s:%s:%s:%s:%s:%s:%s",
$data->{pos} ? "modt $data->{pos}" : "newt",
$flags,
@@ -359,26 +357,24 @@ sub modifyTimer {
# ------------------
# Name: movetimercreate
# Descr: create rule to move timer.
-# Usage: $self->movetimercreate($watcher, $console, [$userdata]);
+# Usage: $self->movetimercreate($console, [$userdata]);
# ------------------
sub movetimercreate {
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || 0;
my $data = shift || 0;
- $self->movetimeredit($watcher, $console, $id, $data);
+ $self->movetimeredit($console, $id, $data);
}
# ------------------
# Name: movetimeredit
# Descr: edit rule to move timer.
-# Usage: $self->movetimeredit($watcher, $console, [$id], [$userdata]);
+# Usage: $self->movetimeredit($console, [$id], [$userdata]);
# ------------------
sub movetimeredit {
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || 0;
my $data = shift || 0;
@@ -488,7 +484,7 @@ sub movetimeredit {
( $console->{USER} && $console->{USER}->{Name} ? sprintf(' from user: %s', $console->{USER}->{Name}) : "" )
);
- $self->_movetimer($watcher, $console, $data->{id});
+ $self->_movetimer($console, $data->{id});
$console->redirect({url => '?cmd=movetimerlist', wait => 1})
if($console->typ eq 'HTML');
@@ -536,11 +532,10 @@ sub _insert {
# ------------------
# Name: movetimerdelete
# Descr: Routine to delete move timer rule.
-# Usage: $self->movetimerdelete($watcher, $console, $id);
+# Usage: $self->movetimerdelete($console, $id);
# ------------------
sub movetimerdelete {
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || return $console->err(gettext("Missing ID to select rules for deletion! Please use movetimerdelete 'id'"));
@@ -566,11 +561,10 @@ sub movetimerdelete {
# ------------------
# Name: movetimerlist
# Descr: List Rules to move timer in a table display.
-# Usage: $self->movetimerlist($watcher, $console);
+# Usage: $self->movetimerlist($console);
# ------------------
sub movetimerlist {
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my %f = (
diff --git a/lib/XXV/MODULES/MUSIC.pm b/lib/XXV/MODULES/MUSIC.pm
index 7bee9c2..e32f60f 100644
--- a/lib/XXV/MODULES/MUSIC.pm
+++ b/lib/XXV/MODULES/MUSIC.pm
@@ -335,7 +335,6 @@ sub _init {
sub refresh {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $dbh = ($obj->{mdbh} ? $obj->{mdbh} : $obj->{dbh});
@@ -454,7 +453,6 @@ sub refresh {
sub play {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $data = shift || return error('No data defined!');
@@ -469,7 +467,6 @@ sub play {
sub playlist {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $data = shift || return error('No data defined!');
@@ -523,15 +520,14 @@ sub playlist {
sub search {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $text = shift;
unless($text) {
error("No text to search defined! Please use msearch 'text'");
- return $obj->list($watcher,$console);
+ return $obj->list($console);
} else {
- return $obj->list($watcher,$console,"search:".$text);
+ return $obj->list($console,"search:".$text);
}
}
@@ -539,7 +535,6 @@ sub search {
sub list {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $param = shift;
@@ -910,7 +905,6 @@ sub GenreArray {
sub status {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $lastReportTime = shift || 0;
@@ -967,7 +961,6 @@ sub _storecover {
sub getcovers {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $force = shift;
@@ -1104,7 +1097,7 @@ sub getcovers {
}
# Start Robots
- $rob->start( 'coverimage', $watcher, $console, sub{ $waiter->end if(ref $waiter and $current); } );
+ $rob->start( 'coverimage', $console, sub{ $waiter->end if(ref $waiter and $current); } );
return $erg;
}
@@ -1296,7 +1289,6 @@ sub _findcover {
sub coverimage {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $data = shift || return error('No data defined!');
@@ -1367,7 +1359,6 @@ sub coverimage {
sub getfile {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $data = shift || return error('No data defined!');
@@ -1406,7 +1397,6 @@ sub getfile {
sub suggest {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $search = shift;
my $params = shift;
diff --git a/lib/XXV/MODULES/RECORDS.pm b/lib/XXV/MODULES/RECORDS.pm
index 57b933f..b0b8bf8 100644
--- a/lib/XXV/MODULES/RECORDS.pm
+++ b/lib/XXV/MODULES/RECORDS.pm
@@ -449,7 +449,7 @@ sub parseData {
}
unless($id) {
- error sprintf("Couldn't parse svdrp data : '%s'",$record);
+ error sprintf("Couldn't parse data from video disk recorder : '%s'",$record);
next;
}
@@ -536,14 +536,13 @@ sub scandirectory {
sub readData {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $waiter = shift;
# Read manual or Once at day, make full scan
my $forceUpdate = shift;
# Read recording over SVDRP
- my $lstr = $self->{svdrp}->command('lstr');
+ my ($lstr,$error) = $self->{svdrp}->command('lstr');
my $vdata = [ grep(/^250/, @$lstr) ];
unless(scalar @$vdata) {
@@ -551,18 +550,18 @@ sub readData {
$self->{dbh}->do('DELETE FROM RECORDS');
$self->{keywords}->removesource('recording');
- my $msg = gettext('No recordings available!');
- con_err($console,$msg);
+ my $msg = [gettext('No recordings available!'), $error ];
+ $console->err($msg) if($console);
return;
}
# Get state from used harddrive (/video)
- my $disk = $self->{svdrp}->command('stat disk');
+ my ($disk,$error2) = $self->{svdrp}->command('stat disk');
my ($total, $totalUnit, $free, $freeUnit, $percent);
my $totalDuration = 0;
my $totalSpace = 0;
- if($disk->[1] and $disk->[1] =~ /^250/s) {
+ if(!$error2 and $disk->[1] and $disk->[1] =~ /^250/s) {
#250 473807MB 98028MB 79%
($total, $totalUnit, $free, $freeUnit, $percent)
= $disk->[1] =~ /^250[\-|\s](\d+)(\S+)\s+(\d+)(\S+)\s+(\S+)/s;
@@ -834,7 +833,6 @@ sub updated {
sub refresh {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $waiter;
@@ -844,7 +842,7 @@ sub refresh {
con_msg($console,gettext("Get information on recordings ..."));
}
- if($self->readData($watcher,$console,$waiter,'force')) {
+ if($self->readData($console,$waiter,'force')) {
$console->redirect({url => '?cmd=rlist', wait => 1})
if(ref $console and $console->typ eq 'HTML');
@@ -1478,7 +1476,6 @@ q|REPLACE INTO OLDEPG(eventid, title, subtitle, description, channel_id,
sub display {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $recordid = shift;
@@ -1548,7 +1545,6 @@ where
sub play {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $recordid = shift || return con_err($console,gettext("No recording defined for playback! Please use rplay 'rid'."));
my $params = shift;
@@ -1578,7 +1574,7 @@ sub play {
my $cmd = sprintf('PLAY %d %s', $rec->{RecordID}, $start);
- if($self->{svdrp}->scommand($watcher, $console, $cmd)) {
+ if($self->{svdrp}->scommand($console, $cmd)) {
$console->redirect({url => sprintf('?cmd=rdisplay&data=%s',$rec->{RecordMD5}), wait => 1})
if(ref $console and $console->typ eq 'HTML');
@@ -1592,7 +1588,6 @@ sub play {
sub cut {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $recordid = shift || return con_err($console,gettext("No recording defined for playback! Please use rplay 'rid'."));
@@ -1605,7 +1600,7 @@ sub cut {
}
my $cmd = sprintf('EDIT %d', $rec->{RecordID});
- if($self->{svdrp}->scommand($watcher, $console, $cmd)) {
+ if($self->{svdrp}->scommand($console, $cmd)) {
$console->redirect({url => sprintf('?cmd=rdisplay&data=%s',$rec->{RecordMD5}), wait => 1})
if(ref $console and $console->typ eq 'HTML');
@@ -1619,7 +1614,6 @@ sub cut {
sub list {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $text = shift || "";
my $params = shift;
@@ -1762,20 +1756,18 @@ ORDER BY __IsRecording asc,
sub search {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
- my $text = shift || return $self->list($watcher,$console);
+ my $text = shift || return $self->list($console);
my $params = shift;
my $query = buildsearch("e.title,e.subtitle,e.description",$text);
- return $self->_search($watcher,$console,$query->{query},$query->{term},$params);
+ return $self->_search($console,$query->{query},$query->{term},$params);
}
# ------------------
sub _search {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $search = shift;
my $term = shift;
@@ -1899,7 +1891,6 @@ ORDER BY
sub delete {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $record = shift || return con_err($console,gettext("No recording defined for deletion! Please use rdelete 'id'."));
my $answer = shift || 0;
@@ -1952,7 +1943,7 @@ sub delete {
);
- $self->{svdrp}->queue_cmds(sprintf("delr %s",$r->{Id}));
+ $self->{svdrp}->queue_add(sprintf("delr %s",$r->{Id}));
push(@{$todelete},$r->{Title}); # Remember title
push(@{$md5delete},$r->{MD5}); # Remember hash
@@ -1972,15 +1963,15 @@ sub delete {
join('\',\'',@recordings)))
if(scalar @recordings);
- if($self->{svdrp}->queue_cmds('COUNT')) {
+ if($self->{svdrp}->queue_count()) {
my $msg = sprintf(gettext("Recording '%s' to delete"),join('\',\'',@{$todelete}));
- my $erg = $self->{svdrp}->queue_cmds("CALL"); # Aufrufen der Kommandos
+ my ($erg,$error) = $self->{svdrp}->queue_flush(); # Aufrufen der Kommandos
my $waiter;
- if($self->{svdrp}->err) {
- con_err($console,$erg);
+ if($error) {
+ $console->err([$msg, $error]) if($console);
} else {
if(ref $console && $console->typ eq 'HTML' && !$self->{inotify}) {
@@ -1997,7 +1988,7 @@ sub delete {
$self->{keywords}->remove('recording',$md5delete);
}
- $self->readData($watcher,$console,$waiter)
+ $self->readData($console,$waiter)
unless($self->{inotify});
if(ref $console && $console->typ eq 'HTML') {
@@ -2034,7 +2025,6 @@ sub is_empty_dir {
sub redit {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $recordid = shift || return con_err($console,gettext("No recording defined for editing!"));
my $data = shift || 0;
@@ -2278,7 +2268,7 @@ WHERE
}
sleep(1);
- $self->readData($watcher,$console,$waiter)
+ $self->readData($console,$waiter)
unless($self->{inotify});
} else {
@@ -2314,7 +2304,6 @@ sub _loadreccmds {
sub conv {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $data = shift || 0;
@@ -2333,7 +2322,7 @@ sub conv {
gettext('Command')
]);
$console->table($self->{reccmds});
- $self->list($watcher, $console);
+ $self->list($console);
}
my ($cmdid, $recid) = split(/[\s_]/, $data);
@@ -2372,7 +2361,6 @@ sub conv {
sub status {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $lastReportTime = shift;
@@ -2585,7 +2573,8 @@ sub _recordingCapacity {
$size -= $sizeMB * $mb;
$FileSize += $sizeMB;
}
- $size += stat($f)->size;
+ my $stat = stat($f);
+ $size += $stat->size if($stat);
}
if($size > 0) {
$sizeMB = int($size / $mb);
@@ -2599,7 +2588,6 @@ sub _recordingCapacity {
sub suggest {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $search = shift;
my $params = shift;
@@ -2644,7 +2632,6 @@ LIMIT 25
sub recover {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $recordid = shift || 0;
my $data = shift || 0;
@@ -2715,7 +2702,7 @@ sub recover {
}
sleep(1);
- $self->readData($watcher,$console,$waiter)
+ $self->readData($console,$waiter)
unless($self->{inotify});
} else {
@@ -2784,7 +2771,6 @@ sub frametofile {
sub image {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $data = shift;
diff --git a/lib/XXV/MODULES/REMOTE.pm b/lib/XXV/MODULES/REMOTE.pm
index 758aa99..a3ff243 100644
--- a/lib/XXV/MODULES/REMOTE.pm
+++ b/lib/XXV/MODULES/REMOTE.pm
@@ -160,7 +160,6 @@ sub parse {
sub list {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $cmds = $self->parse();
@@ -176,7 +175,6 @@ sub list {
sub command {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $command = shift || return error('No command defined!');
my $cmds = $self->parse();
@@ -208,7 +206,6 @@ sub command {
sub remote {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $command = shift;
my $params = shift;
@@ -254,9 +251,9 @@ sub remote {
);
# fire hit key command via svdrp
- my $erg = $self->{svdrp}->command(sprintf('hitk %s', $command), $vdr);
+ my ($erg,$error) = $self->{svdrp}->command(sprintf('hitk %s', $command), $vdr);
- $console->msg($erg, $self->{svdrp}->err)
+ $console->msg($erg, $error)
if(ref $console);
}
return 1;
@@ -266,7 +263,6 @@ sub remote {
sub switch {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $cid = shift || '';
my $params = shift;
@@ -288,15 +284,16 @@ sub switch {
);
# fire change channel command via svdrp
- my $erg = $self->{svdrp}->command(sprintf('chan %s', $channel->{pos}),$channel->{vid});
+ my ($erg,$error) = $self->{svdrp}->command(sprintf('chan %s', $channel->{pos}),$channel->{vid});
- my ($ret) = $erg->[1] =~ /^\d{3}\s*(.+)/s;
-
- $console->msg($erg, $self->{svdrp}->err)
+ $console->msg($erg, $error)
if(ref $console);
+ return undef if($error);
+
$console->redirect({url => sprintf('?cmd=program&amp;data=%s',$channel->{hash}), wait => 1})
if(ref $console and $console->typ eq 'HTML');
+ my ($ret) = $erg->[1] =~ /^\d{3}\s*(.+)/s;
return $ret;
}
diff --git a/lib/XXV/MODULES/REPORT.pm b/lib/XXV/MODULES/REPORT.pm
index 8652425..1b42657 100644
--- a/lib/XXV/MODULES/REPORT.pm
+++ b/lib/XXV/MODULES/REPORT.pm
@@ -113,7 +113,6 @@ sub init {
sub report {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $modulename = shift || '';
@@ -127,7 +126,7 @@ sub report {
next if($modulename and uc($modulename) ne $modCfg->{Name});
next if(exists $mods->{$modName}->{active} and $cfg->{$modCfg->{Name}}->{active} eq 'n');
if(exists $modCfg->{Status} and ref $modCfg->{Status} eq 'CODE') {
- $result->{$modCfg->{Name}} = $modCfg->{Status}($watcher, $console, $self->{LastReportTime});
+ $result->{$modCfg->{Name}} = $modCfg->{Status}($console, $self->{LastReportTime});
}
}
diff --git a/lib/XXV/MODULES/ROBOT.pm b/lib/XXV/MODULES/ROBOT.pm
index e030abe..d6bab6b 100644
--- a/lib/XXV/MODULES/ROBOT.pm
+++ b/lib/XXV/MODULES/ROBOT.pm
@@ -111,7 +111,6 @@ sub start {
# ------------------
my $obj = shift || return error('No object defined!');
my $rname = shift || return error('No robot name defined!');
- my $watcher = shift;
my $console = shift;
my $endcb = shift;
@@ -170,7 +169,6 @@ sub result {
sub status {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $rname = shift;
diff --git a/lib/XXV/MODULES/SHARE.pm b/lib/XXV/MODULES/SHARE.pm
index e6cd93c..c4bb6d4 100644
--- a/lib/XXV/MODULES/SHARE.pm
+++ b/lib/XXV/MODULES/SHARE.pm
@@ -344,7 +344,6 @@ sub StoreEventLevel {
sub TopTen {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $anzahl = shift || 10;
diff --git a/lib/XXV/MODULES/STATUS.pm b/lib/XXV/MODULES/STATUS.pm
index c5bf172..a2875f0 100644
--- a/lib/XXV/MODULES/STATUS.pm
+++ b/lib/XXV/MODULES/STATUS.pm
@@ -75,21 +75,21 @@ sub module {
description => gettext('Display all relevant informations about this system'),
short => 'sa',
callback => sub{
- my ($watcher, $console) = @_;
+ my $console = shift;
$console->setCall('vitals');
- $obj->vitals(@_);
+ $obj->vitals($console);
$console->setCall('filesys');
- $obj->filesys(@_);
+ $obj->filesys($console);
$console->setCall('memory');
- $obj->memory(@_);
+ $obj->memory($console);
$console->setCall('network');
- $obj->network(@_);
+ $obj->network($console);
$console->setCall('hardware');
- $obj->hardware(@_);
+ $obj->hardware($console);
},
},
vitals => {
@@ -200,7 +200,6 @@ sub remember {
sub vitals {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $output = {
@@ -227,7 +226,6 @@ sub vitals {
sub network {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $interfaces = $obj->netDevs();
@@ -245,7 +243,6 @@ sub network {
sub hardware {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my ($number, $model, $speed, $cache, $bogomips) = $obj->CPU();
@@ -273,7 +270,6 @@ sub hardware {
sub memory {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $ret = $obj->meminfo(undef,$console->typ eq 'HTML');
@@ -291,7 +287,6 @@ sub memory {
sub filesys {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $ret = $obj->mounts(undef,$obj->{graphic} eq 'y' && $console->typ eq 'HTML');
diff --git a/lib/XXV/MODULES/STREAM.pm b/lib/XXV/MODULES/STREAM.pm
index 9ce7ecd..e693bf3 100644
--- a/lib/XXV/MODULES/STREAM.pm
+++ b/lib/XXV/MODULES/STREAM.pm
@@ -188,7 +188,6 @@ sub init {
sub livestream {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $cid = shift || return con_err($console,gettext("No channel defined for streaming!"));
my $params = shift;
@@ -268,7 +267,6 @@ sub livestream {
sub playrecord {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $recid = shift || return $console->err(gettext("No recording defined for streaming!"));
my $params = shift;
diff --git a/lib/XXV/MODULES/SVDRP.pm b/lib/XXV/MODULES/SVDRP.pm
index 5507f61..fc9a10a 100644
--- a/lib/XXV/MODULES/SVDRP.pm
+++ b/lib/XXV/MODULES/SVDRP.pm
@@ -2,7 +2,7 @@ package XXV::MODULES::SVDRP;
use Tools;
use strict;
-
+use Encode;
$|++;
@@ -14,7 +14,7 @@ sub module {
my $args = {
Name => 'SVDRP',
Prereq => {
- 'Net::Telnet' => 'Net::Telnet allows you to make client connections to a TCP port and do network I/O',
+ 'IO::Socket::INET' => 'Object interface for AF_INET domain sockets ',
},
Description => gettext('This module module manages connection to video disk recorder.'),
Version => (split(/ /, '$Revision$'))[1],
@@ -178,17 +178,15 @@ sub _insert {
sub create {
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || 0;
my $data = shift || 0;
- $self->edit($watcher, $console, $id, $data);
+ $self->edit($console, $id, $data);
}
sub edit {
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || 0;
my $data = shift || 0;
@@ -273,7 +271,6 @@ sub edit {
sub delete {
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || return $console->err(gettext("No definition of video disk recorder for deletion! Please use sdelete 'id'."));
@@ -311,7 +308,6 @@ sub _deletevdrdata {
sub list {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my %f = (
@@ -467,43 +463,62 @@ SELECT SQL_CACHE id FROM RECORDER WHERE host = ?
}
# ------------------
-sub queue_cmds {
+sub queue_add {
# ------------------
my $self = shift || return error('No object defined!');
- my $cmd = shift || 'CALL';
+ my $cmd = shift;
my $vdrid = shift;
- if($cmd eq 'CALL') {
- my $erg;
- my $result;
- my $queue = delete $self->{Queue};
- $self->{Queue} = undef;
- foreach my $id (keys %$queue) {
- if($id eq 'master') {
- $erg = $self->command($queue->{'master'},undef);
- } else {
- $erg = $self->command($queue->{$id},$id);
- }
- if($erg) {
- if($result) {
- @$result = (@$result, @$erg);
- } else {
- $result = $erg;
- }
- }
+ return error('No command defined!') unless($cmd);
+
+ push(@{$self->{Queue}->{$vdrid || 'master'}}, $cmd);
+}
+
+# ------------------
+sub queue_count {
+# ------------------
+ my $self = shift || return error('No object defined!');
+ my $vdrid = shift;
+
+ my $count = 0;
+ foreach my $id (keys %{$self->{Queue}}) {
+ next if($vdrid && $id ne $vdrid);
+ $count += scalar @{$self->{Queue}->{$id}};
+ }
+ return $count;
+}
+
+# ------------------
+sub queue_flush {
+# ------------------
+ my $self = shift || return error('No object defined!');
+ my $vdrid = shift;
+
+ my ($erg,$result,$err,$error);
+ my $queue = delete $self->{Queue};
+ $self->{Queue} = undef;
+ foreach my $id (keys %$queue) {
+ if($id eq 'master') {
+ ($erg,$err) = $self->command($queue->{'master'},undef);
+ } else {
+ ($erg,$err) = $self->command($queue->{$id},$id);
+ }
+ if($erg) {
+ if($result) {
+ @$result = (@$result, @$erg);
+ } else {
+ $result = $erg;
}
- return $result;
- } elsif($cmd eq 'COUNT') {
- my $count = 0;
- foreach my $id (keys %{$self->{Queue}}) {
- next if($vdrid && $id ne $vdrid);
- $count += scalar @{$self->{Queue}->{$id}};
+ }
+ if($err) {
+ if($error) {
+ @$error = (@$error, @$err);
+ } else {
+ $error = $err;
}
- return $count;
- } else {
- push(@{$self->{Queue}->{$vdrid || 'master'}}, $cmd);
+ }
}
- return undef;
+ return ($result,$error);
}
# ------------------
@@ -513,110 +528,146 @@ sub command {
my $cmd = shift;
my $vdrid = shift;
+ my $error;
my $vdr = $self->_gethost($vdrid);
unless($vdr && defined $vdr->{host} && defined $vdr->{port}) {
- $self->{ERROR} = gettext("None video disk recorder defined in the database.");
- return undef;
+ $error = gettext("None video disk recorder defined in the database.");
+ return (undef, $error);
}
$vdrid = $vdr->{id};
my $data;
my $line;
- my @commands = ();
+ my @commands;
push(@commands, (ref $cmd eq 'ARRAY' ? @$cmd : $cmd));
unless(scalar @commands > 0) {
- error ('No Commands!');
- return undef;
+ $error = 'No commands defined!';
+ error ($error);
+ return (undef, $error);
}
push(@commands, "quit");
- $self->{ERROR} = 0;
- # Put Command follow quit and read Output
- my $telnet = Net::Telnet->new ( Telnetmode => 0,
- Timeout => $self->{timeout},
- Errmode => 'return');
-
- if(!$telnet or !$telnet->open(Host => $vdr->{host}, Port => $vdr->{port})){
- error sprintf("Couldn't connect to svdrp-socket %s:%s! %s",$vdr->{host},$vdr->{port},$telnet ? $telnet->errmsg : $!);
+ # Open connection
+ my $so = IO::Socket::INET->new(PeerAddr => $vdr->{host}, PeerPort => $vdr->{port} , Proto => 'tcp' );
+ if(!(defined $so)){
+ $error = sprintf("Couldn't connect to svdrp-socket %s:%s! %s",$vdr->{host},$vdr->{port}, $!);
$self->{Cache}->{$vdrid}->{online} = 'no';
- return undef;
+ error($error);
+ return (undef, $error);
}
-
- #binmode $telnet, ":encoding(utf8)" if($self->{charset} eq 'UTF-8');
-
- # read first line
- do {
- $line = $telnet->getline;
- chomp($line) if($line);
- if($line) {
- push(@$data, $line);
+ eval {
+ local $SIG{ALRM} = sub { die "Timeout expired\n"};
+ alarm $self->{timeout};
+ my $encoding = $self->{charset};
+ #binmode $so, ":encoding(utf8)" if($self->{charset} eq 'UTF-8');
+ $so->autoflush;
+
+ # read first line
+ do {
+ $line = $so->getline;
+ $line =~ s/\r?\n// if($line);
+ if($line) {
+ push(@$data, $line);
+ }
+ } while($line && $line =~ /^\d\d\d\-/);
+
+ unless($data && scalar @$data){
+ $error = sprintf("Couldn't read data from svdrp-socket %s:%s! %s",$vdr->{host},$vdr->{port}, $!);
+ $self->{Cache}->{$vdrid}->{online} = 'no';
+ $so->close();
+ alarm 0;
+ error($error);
+ return (undef, $error);
}
- } while($line && $line =~ /^\d\d\d\-/);
-
- unless($data && scalar @$data){
- error sprintf("Couldn't read data from svdrp-socket %s:%s! %s",$vdr->{host},$vdr->{port},$telnet ? $telnet->errmsg : $!);
- $self->{Cache}->{$vdrid}->{online} = 'no';
- return undef;
- }
-
- main::getVdrVersion($1)
- if($data->[0] =~ /SVDRP\s+VideoDiskRecorder\s+(\d\.\d\.\d+)[\;|\-]/);
-
- # send commando queue
- foreach my $command (@commands) {
- $telnet->buffer_empty; #clear buffer
- # send command
- if(!$telnet->print($command)) {
- error sprintf("Couldn't send command '%s' to %s:%s! %s",$command,$vdr->{host},$vdr->{port},$telnet ? $telnet->errmsg : $!);
- $self->{Cache}->{$vdrid}->{online} = 'no';
- return undef;
+
+ # parse header like 220 video SVDRP VideoDiskRecorder 1.7.1; Fri May 2 16:17:10 2008; ISO-8859-1
+ my @header = split (/\;/, $data->[0]);
+ main::getVdrVersion($1)
+ if($header[0] =~ /SVDRP\s+VideoDiskRecorder\s+(\d\.\d\.\d+)/);
+
+ if(scalar @header > 2) {
+ if($header[2] =~ /\s+ISO\-(.*)/) {
+ $encoding = 'iso-' . $1;
+ } elsif($header[2] =~ /\s+UTF\-(.*)/) {
+ $encoding = 'utf' . $1;
}
- # read response
- do {
- $line = $telnet->getline;
- chomp($line) if($line);
- if($line) {
-
- if($line =~ /^(\d{3})\s+(.+)/ && (int($1) >= 500)) {
- my $msg = sprintf("Error at command '%s' to %s:%s! %s", $command,$vdr->{host},$vdr->{port}, $2);
- error($msg);
- $self->{ERROR} .= $msg . "\n";
- }
- #if( $self->{charset} eq 'UTF-8') {
- # utf8::upgrade($line) if(!utf8::is_utf8($line));
- #}
- push(@$data, $line);
+ }
+ #my $enc = find_encoding($encoding);
+
+ # send commando queue
+ foreach my $command (@commands) {
+ $command =~ s/\r?\n//;
+ #if($encoding ne $self->{charset}) {
+ # $command = $enc->encode($command);
+ #}
+
+ # send command
+ if(!($so->print($command . "\n"))) {
+ $error = sprintf("Couldn't send command '%s' to %s:%s! %s",$command,$vdr->{host},$vdr->{port}, $!);
+ $self->{Cache}->{$vdrid}->{online} = 'no';
+ $so->close();
+ alarm 0;
+ error($error);
+ return (undef, $error);
}
- } while($line && $line =~ /^\d\d\d\-/);
- }
+ # read response
+ do {
+ $line = $so->getline;
+ $line =~ s/\r?\n// if($line);
+
+ if($line) {
+ #if($encoding ne $self->{charset}) {
+ # $line = $enc->decode($line);
+ #}
+
+ if($line =~ /^(\d{3})\s+(.+)/ && (int($1) >= 500)) {
+ my $msg = sprintf(gettext("Error at command '%s' to %s:%s! %s"), $command,$vdr->{host},$vdr->{port}, $2);
+ error($msg);
+ $error .= $msg . "\n";
+ }
+ #if( $self->{charset} eq 'UTF-8') {
+ # utf8::upgrade($line) if(!utf8::is_utf8($line));
+ #}
+ push(@$data, $line);
+ }
+ } while($line && $line =~ /^\d\d\d\-/);
+ }
+ alarm 0;
+ };
+ if ($@) {
+ $error = $@;
+ $self->{Cache}->{$vdrid}->{online} = 'no';
+ error($error);
+ return (undef, $error);
+ }
# close socket
- $telnet->close();
+ $so->close();
$self->{Cache}->{$vdrid}->{online} = 'yes';
foreach my $command (@commands) {
my @lines = (split(/[\r\n]/, $command));
- event(sprintf('Call command "%s" on %s %s.', $lines[0], $vdr->{host}, $self->{ERROR} ? " failed" : "successful"))
+ event(sprintf('Call command "%s" on %s %s.', $lines[0], $vdr->{host}, $error ? " failed" : "successful"))
if($command ne "quit");
}
- return \@$data;
+ return (\@$data, $error);
}
# ------------------
sub status {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return;
+ my $vdrid = shift;
- my $erg = $self->command('stat disk');
- $console->msg($erg, $self->{ERROR})
+ my ($erg,$error) = $self->command('stat disk', $vdrid);
+ $console->msg($erg, $error)
if(ref $console);
return 1
- unless($self->{ERROR});
+ unless($error);
return 0;
}
@@ -624,27 +675,20 @@ sub status {
sub scommand {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $text = shift || return $console->err(gettext("No command defined! Please use scommand 'cmd'."));
+ my $vdrid = shift;
- my $erg = $self->command($text);
+ my ($erg,$error) = $self->command($text);
return 0
- unless($erg || $self->{ERROR});
+ if(!($erg) || $error);
- $console->msg($erg, $self->{ERROR});
+ $console->msg($erg, $error);
return 1
- unless($self->{ERROR});
+ unless($error);
return 0;
}
-# ------------------
-sub err {
-# ------------------
- my $self = shift || return error('No object defined!');
- return $self->{ERROR};
-}
-
1;
diff --git a/lib/XXV/MODULES/TELNET.pm b/lib/XXV/MODULES/TELNET.pm
index 47b4585..a1829e8 100644
--- a/lib/XXV/MODULES/TELNET.pm
+++ b/lib/XXV/MODULES/TELNET.pm
@@ -188,7 +188,7 @@ sub init {
$line =~ s/[\r|\n]//sig
if(defined $line);
- $obj->handleInput($watcher, $console, $line);
+ $obj->handleInput($console, $line);
if(defined $obj->{LOGOUT} && $obj->{LOGOUT} == 1) {
undef $obj->{LOGOUT};
$watcher->w->cancel;
@@ -239,7 +239,6 @@ sub init {
sub handleInput {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $line = shift || return;
my $user = shift || $console->{USER};
@@ -251,11 +250,11 @@ sub handleInput {
my ($cmdobj, $cmdname, $shorterr, $err) = $u->checkCommand($console, $ucmd);
$console->{call} = $cmdname;
if($cmdobj and not $shorterr) {
- $cmdobj->{callback}($watcher, $console, $udata);
+ $cmdobj->{callback}($console, $udata);
} elsif($shorterr eq 'noperm' or $shorterr eq 'noactive') {
return $console->err($err);
} else {
- return $obj->usage($watcher, $console, undef, $err);
+ return $obj->usage($console, undef, $err);
}
}
diff --git a/lib/XXV/MODULES/TIMERS.pm b/lib/XXV/MODULES/TIMERS.pm
index f99a741..9de2d81 100644
--- a/lib/XXV/MODULES/TIMERS.pm
+++ b/lib/XXV/MODULES/TIMERS.pm
@@ -219,7 +219,6 @@ sub module {
sub status {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $lastReportTime = shift || 0;
@@ -366,8 +365,8 @@ sub saveTimer {
my $store = shift || 0;
$self->_saveTimer($data);
- if($self->{svdrp}->queue_cmds('COUNT')) {
- my $erg = $self->{svdrp}->queue_cmds("CALL"); # Aufrufen der Kommandos
+ if($self->{svdrp}->queue_count()) {
+ my ($erg,$error) = $self->{svdrp}->queue_flush(); # Aufrufen der Kommandos
if(!(exists $data->{vid})) {
$data->{vid} = $self->{svdrp}->primary_hosts();
@@ -387,9 +386,9 @@ sub saveTimer {
$self->{changedTimer} = 1;
- return $erg;
+ return ($erg,$error);
}
- return 0;
+ return (undef,undef);
}
# ------------------
@@ -409,7 +408,7 @@ sub _saveTimer {
my $file = $data->{file};
$file =~ s/:/|/g;
- $self->{svdrp}->queue_cmds(
+ $self->{svdrp}->queue_add(
sprintf("%s %s:%s:%s:%s:%s:%s:%s:%s:%s",
$data->{pos} ? "modt $data->{pos}" : "newt",
$data->{flags},
@@ -434,7 +433,7 @@ sub _newTimerdefaults {
$timer->{priority} = $self->{Priority};
$timer->{lifetime} = $self->{Lifetime};
- if($timer->{vpsstart} && $self->{usevpstime} eq 'y') {
+ if($timer->{vpsstart} && $self->{usevpstime} eq 'y' && $timer->{vpsstart} > time ) {
$timer->{vps} = 'y';
$timer->{day} = $timer->{vpsday};
$timer->{start} = $timer->{vpsstart};
@@ -447,7 +446,6 @@ sub _newTimerdefaults {
sub newTimer {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $epgid = shift || 0;
my $epg = shift || 0;
@@ -485,7 +483,7 @@ WHERE|;
$epg = $data->{$eventid};
$self->_newTimerdefaults($epg);
$epg->{action} = 'save' if(scalar keys %{$data} > 1 || $fast );
- $self->_editTimer($watcher, $console, 0, $epg) if($count < scalar keys %{$data});
+ $self->_editTimer($console, 0, $epg) if($count < scalar keys %{$data});
$count += 1;
}
}
@@ -496,18 +494,17 @@ WHERE|;
file => gettext('New timer'),
day => my_strftime("%Y-%m-%d",$t),
start => my_strftime("%H%M",$t),
- stop => my_strftime("%H%M",$t)
+ stop => my_strftime("%H%M",$t + 3600)
};
$self->_newTimerdefaults($epg);
}
- $self->editTimer($watcher, $console, 0, $epg);
+ $self->editTimer($console, 0, $epg);
}
# ------------------
sub _editTimer {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $timerid = shift || 0; # If timerid the edittimer
my $data = shift || 0; # Data for defaults
@@ -752,9 +749,9 @@ WHERE
$self->_saveTimer($datasave);
# Remove timer from old video disk recorder
if($pos && $oldvid) {
- $self->{svdrp}->queue_cmds(sprintf("modt %d off", $pos), $oldvid)
+ $self->{svdrp}->queue_add(sprintf("modt %d off", $pos), $oldvid)
if($data->{running});
- $self->{svdrp}->queue_cmds(sprintf("delt %d", $pos), $oldvid)
+ $self->{svdrp}->queue_add(sprintf("delt %d", $pos), $oldvid)
}
return 1;
}
@@ -764,20 +761,13 @@ WHERE
sub editTimer {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $timerid = shift; # id of present timer, then edit this timer
my $data = shift; # Data for defaults
- if($self->_editTimer($watcher,$console,$timerid,$data)
- && $self->{svdrp}->queue_cmds('COUNT')) {
- my $erg = $self->{svdrp}->queue_cmds("CALL"); # Aufrufen der Kommandos
- my $error;
- foreach my $zeile (@$erg) {
- if($zeile =~ /^(\d{3})\s+(.+)/) {
- $error = $2 if(int($1) >= 500);
- }
- }
+ if($self->_editTimer($console,$timerid,$data)
+ && $self->{svdrp}->queue_count()) {
+ my ($erg,$error) = $self->{svdrp}->queue_flush(); # Aufrufen der Kommandos
unless($error) {
debug sprintf('%s timer with title "%s" is saved%s',
@@ -788,16 +778,16 @@ sub editTimer {
$console->message($erg);
} else {
- error sprintf('%s timer with title "%s" does\'nt saved : %s',
+ my $msg = sprintf('%s timer with title "%s" does\'nt saved : %s',
($timerid ? 'Changed' : 'New'),
$data->{file},
$error
);
- $console->err($erg);
+ $console->err($msg);
}
$self->{changedTimer} = 1;
- if($self->_readData($watcher,$console)) {
+ if($self->_readData($console)) {
$console->redirect({url => '?cmd=tlist', wait => 1})
if(!$error && $console->typ eq 'HTML');
}
@@ -808,7 +798,6 @@ sub editTimer {
sub deleteTimer {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $timerid = shift || return $console->err(gettext("No timer defined for deletion! Please use tdelete 'tid'.")); # If timerid the edittimer
my $answer = shift || 0;
@@ -852,9 +841,9 @@ sub deleteTimer {
( $console->{USER} && $console->{USER}->{Name} ? sprintf(' from user: %s', $console->{USER}->{Name}) : "" )
);
- $self->{svdrp}->queue_cmds(sprintf("modt %d off", $t->{pos}), $t->{vid})
+ $self->{svdrp}->queue_add(sprintf("modt %d off", $t->{pos}), $t->{vid})
if($t->{running});
- $self->{svdrp}->queue_cmds(sprintf("delt %d", $t->{pos}), $t->{vid});
+ $self->{svdrp}->queue_add(sprintf("delt %d", $t->{pos}), $t->{vid});
# Delete timer from request, if found in database
my $i = 0;
@@ -872,14 +861,14 @@ sub deleteTimer {
join('\',\'',@timers)))
if(scalar @timers);
- if($self->{svdrp}->queue_cmds('COUNT')) {
- my $erg = $self->{svdrp}->queue_cmds("CALL"); # Aufrufen der Kommandos
- $console->msg($erg, $self->{svdrp}->err)
+ if($self->{svdrp}->queue_count()) {
+ my ($erg,$error) = $self->{svdrp}->queue_flush(); # Aufrufen der Kommandos
+ $console->msg($erg, $error)
if(ref $console);
sleep(1);
- if($self->_readData($watcher,$console)) {
+ if($self->_readData($console)) {
$console->redirect({url => '?cmd=tlist', wait => 1})
if(ref $console and $console->typ eq 'HTML');
}
@@ -894,7 +883,6 @@ sub deleteTimer {
sub toggleTimer {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $timerid = shift || return $console->err(gettext("No timer defined to toggle! Please use ttoggle 'id'.")); # If timerid the edittimer
@@ -932,7 +920,7 @@ sub toggleTimer {
( $console->{USER} && $console->{USER}->{Name} ? sprintf(' from user: %s', $console->{USER}->{Name}) : "" )
);
- $self->{svdrp}->queue_cmds("modt $t->{pos} $status",$t->{vid}); # Sammeln der Kommandos
+ $self->{svdrp}->queue_add("modt $t->{pos} $status",$t->{vid}); # Sammeln der Kommandos
# Delete timer from request, if found in database
my $i = 0;
@@ -951,13 +939,12 @@ sub toggleTimer {
join('\',\'',@timers)))
if(scalar @timers);
- if($self->{svdrp}->queue_cmds('COUNT')) {
-
- my $erg = $self->{svdrp}->queue_cmds("CALL"); # Aufrufen der Kommandos
- $console->msg($erg, $self->{svdrp}->err)
+ if($self->{svdrp}->queue_count()) {
+ my ($erg,$error) = $self->{svdrp}->queue_flush(); # Aufrufen der Kommandos
+ $console->msg($erg, $error)
if(ref $console and $console->typ ne 'AJAX');
- if($self->_readData($watcher, $console)) {
+ if($self->_readData($console)) {
$console->redirect({url => '?cmd=tlist', wait => 1})
if(ref $console and $console->typ eq 'HTML');
}
@@ -1058,7 +1045,6 @@ q|REPLACE INTO TIMERS VALUES
sub _readData {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
# Search for correct times
@@ -1075,9 +1061,9 @@ sub _readData {
my $hostlist = $self->{svdrp}->list_hosts();
# read from svdrp
foreach my $vid (@$hostlist) {
- my $tlist = $self->{svdrp}->command('lstt',$vid);
-
- foreach my $line (@$tlist) {
+ my ($tlist,$error) = $self->{svdrp}->command('lstt',$vid);
+ unless($error) {
+ foreach my $line (@$tlist) {
next unless($line and $line =~ /^250[- ](\d+)/s);
my $pos = $1;
$line =~ s/^\d+[- ]+\d+\s//sig;
@@ -1100,6 +1086,7 @@ sub _readData {
$c++;
}
}
+ }
}
}
# Search for overlapping Timers
@@ -1135,10 +1122,9 @@ sub _readData {
sub readData {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
- if($self->_readData($watcher,$console)) {
+ if($self->_readData($console)) {
$console->redirect({url => '?cmd=tlist', wait => 1})
if(ref $console and $console->typ eq 'HTML');
}
@@ -1170,7 +1156,6 @@ sub updated {
sub list {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift;
my $params = shift;
@@ -1183,16 +1168,15 @@ sub list {
foreach(@timers) { push(@{$term},$_); }
}
- return $self->_list($watcher,$console,$search,$term,$params);
+ return $self->_list($console,$search,$term,$params);
}
# ------------------
sub search {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
- my $text = shift || return $self->list($watcher,$console);
+ my $text = shift || return $self->list($console);
my $params = shift;
my $term;
@@ -1201,14 +1185,13 @@ sub search {
$search = sprintf('AND ( %s )', $query->{query});
foreach(@{$query->{term}}) { push(@{$term},$_); }
- return $self->_list($watcher,$console,$search,$term,$params);
+ return $self->_list($console,$search,$term,$params);
}
# ------------------
sub _list {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $search = shift || '';
my $term = shift;
@@ -1982,7 +1965,6 @@ sub my_strftime {
sub suggest {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $search = shift;
my $params = shift;
diff --git a/lib/XXV/MODULES/USER.pm b/lib/XXV/MODULES/USER.pm
index 76eebe6..e4a355e 100644
--- a/lib/XXV/MODULES/USER.pm
+++ b/lib/XXV/MODULES/USER.pm
@@ -102,7 +102,6 @@ or the same parameter is set for each function."),
description => gettext("Log out from current session."),
short => 'exit',
callback => sub{
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
if($obj->{active} eq 'y') {
@@ -234,16 +233,15 @@ sub _init {
# ------------------
# Name: create
# Descr: Save a new User in the Usertable.
-# Usage: my $ok = $obj->create($watcher, $console, 0, {name => 'user', ...});
+# Usage: my $ok = $obj->create($console, 0, {name => 'user', ...});
# ------------------
sub create {
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || 0;
my $data = shift || 0;
- $obj->edit($watcher, $console, $id, $data);
+ $obj->edit($console, $id, $data);
}
@@ -251,7 +249,6 @@ sub create {
sub userprefs {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || $obj->{USER}->{Id};
my $data = shift || 0;
@@ -330,11 +327,10 @@ sub userprefs {
# ------------------
# Name: edit
# Descr: Edit an existing User in the Usertable.
-# Usage: my $ok = $obj->edit($watcher, $console, $id, [$data]);
+# Usage: my $ok = $obj->edit($console, $id, [$data]);
# ------------------
sub edit {
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || 0;
my $data = shift || 0;
@@ -497,11 +493,10 @@ sub edit {
# ------------------
# Name: delete
# Descr: Delete an existing User in the Usertable with Id.
-# Usage: my $ok = $obj->delete($watcher, $console, $id);
+# Usage: my $ok = $obj->delete($console, $id);
# ------------------
sub delete {
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || return $console->err(gettext("No user account defined for deletion! Please use udelete 'uid'."));
@@ -525,7 +520,6 @@ sub delete {
sub list {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my %f = (
diff --git a/lib/XXV/MODULES/VTX.pm b/lib/XXV/MODULES/VTX.pm
index ffb5173..18deaa6 100644
--- a/lib/XXV/MODULES/VTX.pm
+++ b/lib/XXV/MODULES/VTX.pm
@@ -57,7 +57,7 @@ sub module {
callback => sub{ $self->search(@_) },
},
vtximage => {
- description => gettext("Display teletext image from block graphic font 'image'"),
+ hidden => 'yes',
short => 'vi',
callback => sub{ $self->image(@_) },
binary => 'cache'
@@ -107,13 +107,14 @@ sub new {
################################################################################
# Find first usable channel
sub findfirst {
-
- my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
+ my $self = shift || return error('No object defined!');
my $console = shift || return error('No console defined!');
- my $basedir = $self->{dir}
- || return $self->pagedump($console,gettext("There none base directory is defined!"),"");
+ my $basedir = $self->{dir};
+ unless($basedir and -d $basedir) {
+ $console->err(gettext("None channel selected, missing base directory!"));
+ return undef;
+ }
my $mod = main::getModule ('CHANNELS');
my $channels =[];
@@ -122,30 +123,38 @@ sub findfirst {
if ($cache ne 'packed') {
foreach my $ch (@{$mod->ChannelArray ('Name')}) {
if (-d $basedir.'/'.$ch->[1]) {
- return $self->channel ($watcher, $console,$ch->[1]);
+ return $self->channel ($console,$ch->[1]);
}
}
} else {
foreach my $ch (@{$mod->ChannelArray ('Id')}) {
if (-d $basedir.'/'.$ch->[0]) {
- return $self->channel ($watcher,$console,$ch->[1]);
+ return $self->channel ($console,$ch->[1]);
}
}
}
+ $console->err(gettext("None channel selected, empty base directory!"));
}
################################################################################
# Callback "Channel choice"
-sub channel
-{
+sub channel {
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
- my $channel = shift || return $self->findfirst ($watcher, $console);
+ my $channel = shift;
- my $basedir = $self->{dir} || return error ('No base directory defined!');
+ my $basedir = $self->{dir};
my $cache = $self->{cache} || 'packed';
+ unless($basedir and -d $basedir) {
+ $console->err(gettext("None channel selected, missing base directory!"));
+ return undef;
+ }
+
+ unless($channel) {
+ return $self->findfirst ($console);
+ }
+
my $mod = main::getModule ('CHANNELS');
my $chandir = "";
@@ -235,17 +244,16 @@ sub channel
return;
}
my $fpage = @{$self->{INDEX}}[0];# First Page on Index
- return $self->page ($watcher, $console,sprintf ("%03d_%02d", $fpage->[0],$fpage->[1]->[0]));
+ return $self->page ($console,sprintf ("%03d_%02d", $fpage->[0],$fpage->[1]->[0]));
}
################################################################################
# Callback "Teletextpage choice"
sub page {
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $page = shift || "";
- my $channel = $self->{CHANNEL} || return $self->findfirst ($watcher, $console);
+ my $channel = $self->{CHANNEL} || return $self->findfirst ($console);
my $basedir = $self->{dir} || return error('No base directory defined!');
my $chandir = $self->{CHANNELDIR} || return error('No channel defined!');
my $cache = $self->{cache} || 'packed';
@@ -332,44 +340,71 @@ sub pagedump {
################################################################################
# Insert for HTML Pages, Link for other Pages
sub InsertPageLink {
-
my $self = shift;
my $result = shift;
+
my @lines;
+ my $index;
+ my $pagelist;
+ # Colect all page numbers from page
+ foreach my $line (split('\n',$result)) {
+ my $laenge=length($line);
+ for (my $c=0; $c < $laenge; ) {
+ my $token=substr($line, $c, 5);
+ my ($page1) = $token =~ /\D([1-8]\d{2})\D/s;
+ if($page1) {
+ push(@$index,hex($page1));
+ $c += 4;
+ } else {
+ $c++;
+ }
+ }
+ }
+ if($index && scalar @$index) {
+ foreach my $x (@$index) {
+ foreach my $p (@{$self->{INDEX}}) {
+ if($x eq $p->[0]) {
+ push(@$pagelist,$x);
+ last;
+ }
+ }
+ }
+ }
# Replace XXX => <a href="?cmd=vt&amp;data=XXX">XXX</a>
my $ua = "<a class='vtx' href='?cmd=vt&amp;data=";
my $ub = "'>";
my $uc = "</a>";
foreach my $line (split('\n',$result)) {
- my ($page1,$page2) = $line =~ /\D+([1-8]\d{2})\D+([1-8]\d{2})\D+/s;
- if($page1 and $page2) {
- foreach my $p (@{$self->{INDEX}}) {
- if($p->[0] == $page1) {
- $line =~ s/$page1/$ua.$page1.$ub.$page1.$uc/eg;
- } elsif($p->[0] == $page2) {
- $line =~ s/$page2/$ua.$page2.$ub.$page2.$uc/eg;
- last;
+ my $out = "";
+ if($pagelist) {
+ my $laenge=length($line);
+ for (my $c=0; $c < $laenge; ) {
+ my $token=substr($line, $c, 5);
+ my ($page1) = $token =~ /\D([1-8]\d{2})\D/s;
+ if($page1) {
+ chop($token) if(length($token) > 4);
+ if(grep {$_->[0] == $page1;} @$pagelist) {
+ $token =~ s/$page1/$ua.$page1.$ub.$page1.$uc/eg;
+ }
+ $out .= $token;
+ $c += 4;
+ } else {
+ $out .= substr($line, $c, 1);
+ $c++;
}
}
} else {
- my ($page1) = $line =~ /\D+([1-8]\d{2})\D+/s;
- if($page1) {
- foreach my $p (@{$self->{INDEX}}) {
- if($p->[0] == $page1) {
- $line =~ s/$page1/$ua.$page1.$ub.$page1.$uc/eg;
- last;
- }
- }
- }
+ $out = $line;
}
-
# Make anchor for external URLs
- $line =~ s/((www)\.[a-z0-9\.\/\-]+)/<a target=\"blank\" class=\"vtx\" href=\"http:\/\/$1\">$1<\/a>/gi;
- push (@lines, $line);
+ $out =~ s/((www)\.[a-z0-9\.\/\-]+)/<a target=\"blank\" class=\"vtx\" href=\"http:\/\/$1\">$1<\/a>/gi;
+ # /
+
+ push (@lines, $out);
}
- return @lines;
+ return \@lines;
}
################################################################################
@@ -1346,7 +1381,6 @@ sub HighLight {
# Callback "Teletext search"
sub search {
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $search = shift;
@@ -1412,7 +1446,6 @@ sub search {
sub image {
# ------------------
my $obj = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $data = shift;
diff --git a/lib/XXV/MODULES/WAPD.pm b/lib/XXV/MODULES/WAPD.pm
index 4ff424f..6005202 100644
--- a/lib/XXV/MODULES/WAPD.pm
+++ b/lib/XXV/MODULES/WAPD.pm
@@ -229,10 +229,10 @@ sub init {
$console->image(sprintf('%s%s', $WMLRootDir, $data->{Request}), $typ);
} elsif( $cgi->param('binary') ) {
# Send multimedia files (if param binary)
- $self->handleInput($watcher, $console, $cgi);
+ $self->handleInput($console, $cgi);
} else {
$console->start();
- $self->handleInput($watcher, $console, $cgi);
+ $self->handleInput($console, $cgi);
$console->footer();
}
}
@@ -291,7 +291,6 @@ sub parseRequest {
sub handleInput {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $cgi = shift || return error ('No CGI Object');
@@ -322,11 +321,11 @@ sub handleInput {
my ($cmdobj, $cmdname, $shorterr, $err) = $u->checkCommand($console, $ucmd);
$console->{call} = $cmdname;
if($cmdobj and not $shorterr) {
- $cmdobj->{callback}($watcher, $console, $udata, $result );
+ $cmdobj->{callback}($console, $udata, $result );
} elsif($shorterr eq 'noperm' or $shorterr eq 'noactive') {
return $console->status403($err);
} else {
- return $self->usage($watcher, $console, undef, $err);
+ return $self->usage($console, undef, $err);
}
}
diff --git a/lib/XXV/MODULES/XMLTV.pm b/lib/XXV/MODULES/XMLTV.pm
index 62516b7..b53d31a 100644
--- a/lib/XXV/MODULES/XMLTV.pm
+++ b/lib/XXV/MODULES/XMLTV.pm
@@ -175,13 +175,12 @@ sub _init {
my $m = main::getModule('EPG');
$m->before_updated(
sub{
- my $watcher = shift;
my $console = shift;
my $waiter = shift;
return 0 if($self->{active} ne 'y');
lg 'Start callback to import xmltv epg data!';
- $self->_XMLTV($watcher,$console,$waiter);
+ $self->_XMLTV($console,$waiter);
}
);
return 1;
@@ -194,7 +193,6 @@ sub _init {
sub manual {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $id = shift;
@@ -203,7 +201,7 @@ sub manual {
$waiter = $console->wait(gettext("Import epg data from xmltv sources ..."),0,1000,'no');
}
- my ($msg, $error) = $self->_XMLTV($watcher,$console,$waiter,$id);
+ my ($msg, $error) = $self->_XMLTV($console,$waiter,$id);
$waiter->end() if(ref $waiter);
$console->start() if(ref $waiter);
@@ -221,7 +219,6 @@ sub manual {
sub _XMLTV {
# ------------------
my $self = shift || return error('No object defined!');
- my $watcher = shift;
my $console = shift;
my $waiter = shift;
my $id = shift;
@@ -293,14 +290,7 @@ sub _XMLTV {
if($output and length $output) {
$waiter->next(undef,undef,gettext('Transmit data.'))
if(ref $waiter);
- my $erg = $self->{svdrp}->command(sprintf("PUTE\n%s\n.\n",$output));
- my $error;
- foreach my $zeile (@$erg) {
- if($zeile =~ /^(\d{3})\s+(.+)/) {
- $error = $2 if(int($1) >= 500);
- }
- }
-
+ my ($erg,$error) = $self->{svdrp}->command(sprintf("PUTE\n%s\n.\n",$output));
unless($error) {
debug 'Data import complete';
return ($erg, undef);
@@ -452,26 +442,24 @@ sub _parse_template {
# ------------------
# Name: create
# Descr: create rule to import epg data from xmltv sources.
-# Usage: $self->create($watcher, $console, [$userdata]);
+# Usage: $self->create($console, [$userdata]);
# ------------------
sub create {
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || 0;
my $data = shift || 0;
- $self->edit($watcher, $console, $id, $data);
+ $self->edit($console, $id, $data);
}
# ------------------
# Name: edit
# Descr: edit rule to import epg data from xmltv sources.
-# Usage: $self->edit($watcher, $console, [$id], [$userdata]);
+# Usage: $self->edit($console, [$id], [$userdata]);
# ------------------
sub edit {
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || 0;
my $data = shift || 0;
@@ -572,7 +560,7 @@ sub edit {
( $console->{USER} && $console->{USER}->{Name} ? sprintf(' from user: %s', $console->{USER}->{Name}) : "" )
);
- my ($msg, $error) = $self->_XMLTV($watcher,$console,undef,$data->{id});
+ my ($msg, $error) = $self->_XMLTV($console,undef,$data->{id});
if($error) { $console->err($error); }
elsif($msg) {
@@ -635,11 +623,10 @@ sub _updateTime {
# ------------------
# Name: remove
# Descr: Routine to delete rule to import epg data from xmltv sources.
-# Usage: $self->remove($watcher, $console, $id);
+# Usage: $self->remove($console, $id);
# ------------------
sub remove {
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $id = shift || return $console->err(gettext("Missing ID to select rules for deletion! Please use xmltvremove 'id'"));
@@ -665,11 +652,10 @@ sub remove {
# ------------------
# Name: list
# Descr: List Rules to import epg data from xmltv sources in a table display.
-# Usage: $self->list($watcher, $console);
+# Usage: $self->list($console);
# ------------------
sub list {
my $self = shift || return error('No object defined!');
- my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my %f = (