diff options
| author | Andreas Brachold <vdr07@deltab.de> | 2008-11-09 12:48:09 +0000 |
|---|---|---|
| committer | Andreas Brachold <vdr07@deltab.de> | 2008-11-09 12:48:09 +0000 |
| commit | dd4bfdc1adf6cf36330687d7268ab44900fc77cb (patch) | |
| tree | 6db26d3ec86df443142fa601b1ebeab5814368eb /lib | |
| parent | 9eced4dff64e35a0135ce98609ad8f3f1c9c96a9 (diff) | |
| download | xxv-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')
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&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&data=XXX">XXX</a> my $ua = "<a class='vtx' href='?cmd=vt&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 = ( |
