From: Christian Schmidt Date: Mon, 12 May 2008 14:02:23 +0000 (+0200) Subject: Forgotten half of the files :D X-Git-Tag: v2.3-beta1~74 X-Git-Url: http://git.ipfire.org/?p=people%2Fpmueller%2Fipfire-2.x.git;a=commitdiff_plain;h=e5a63a6f60fee9ea8b06617e6d15c8e909afb41a Forgotten half of the files :D --- diff --git a/config/rootfiles/core/13/update.sh b/config/rootfiles/core/13/update.sh index 943ece3ec7..35cbba98ee 100644 --- a/config/rootfiles/core/13/update.sh +++ b/config/rootfiles/core/13/update.sh @@ -3,3 +3,4 @@ /usr/local/bin/backupctrl exclude >/dev/null 2>&1 extract_files /var/ipfire/urlfilter/bin/prebuild.pl +/etc/init.d/squid restart diff --git a/config/rootfiles/core/14/files b/config/rootfiles/core/14/files index bfced96b62..d82d48dc8f 100644 --- a/config/rootfiles/core/14/files +++ b/config/rootfiles/core/14/files @@ -258,9 +258,27 @@ lib/modules/2.6.16.57-ipfire-smp/kernel/drivers/media/video/saa7115.ko lib/modules/2.6.16.57-ipfire-smp/kernel/drivers/media/video/tda7432.ko lib/modules/2.6.16.57-ipfire-smp/kernel/drivers/media/video/bt8xx/bttv.ko lib/modules/2.6.16.57-ipfire-smp/kernel/drivers/media/video/tveeprom.ko +var/ipfire/langs etc/squid usr/lib/squid usr/sbin/squid srv/web/ipfire/cgi-bin/updatexlrator.cgi srv/web/ipfire/html/images/updxl-src-avg.gif usr/sbin/updxlrator +srv/web/ipfire/html/images/audio-volume-high.png +srv/web/ipfire/html/images/audio-volume-low.png +srv/web/ipfire/html/images/audio-x-generic.png +srv/web/ipfire/html/images/audio-volume-high-red.png +srv/web/ipfire/html/images/audio-volume-low-red.png +srv/web/ipfire/html/images/audio-x-generic-red.png +srv/web/ipfire/html/images/media-flash.png +srv/web/ipfire/html/images/media-playback-start-all.png +srv/web/ipfire/html/images/media-repeat.png +srv/web/ipfire/html/images/media-skip-backward.png +srv/web/ipfire/html/images/media-floppy.png +srv/web/ipfire/html/images/media-playback-start.png +srv/web/ipfire/html/images/media-resume.png +srv/web/ipfire/html/images/media-skip-forward.png +srv/web/ipfire/html/images/media-optical.png +srv/web/ipfire/html/images/media-playback-stop.png +srv/web/ipfire/html/images/media-shuffle.png diff --git a/config/rootfiles/core/14/update.sh b/config/rootfiles/core/14/update.sh index 9cce251427..dafea5700b 100644 --- a/config/rootfiles/core/14/update.sh +++ b/config/rootfiles/core/14/update.sh @@ -7,6 +7,7 @@ rm /lib/modules/2.6.16.57-ipfire-smp/kernel/drivers/media/video/video-buf.ko rm /lib/modules/2.6.16.57-ipfire-smp/kernel/drivers/media/dvb/frontends/dib3000-common.ko /etc/init.d/squid stop extract_files +perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" /etc/init.d/squid start depmod -a 2.6.16.57-ipfire depmod -a 2.6.16.57-ipfire-smp diff --git a/config/rootfiles/packages/mpfire b/config/rootfiles/packages/mpfire index 7c6f01bf72..4a66212601 100644 --- a/config/rootfiles/packages/mpfire +++ b/config/rootfiles/packages/mpfire @@ -1,5 +1,11 @@ +usr/lib/perl5/site_perl/5.8.8/Audio/MPD +usr/lib/perl5/site_perl/5.8.8/Audio/MPD.pm +usr/lib/perl5/5.8.8/Readonly.pm +usr/lib/perl5/5.8.8/Class/Accessor +usr/lib/perl5/5.8.8/Class/Accessor.pm usr/local/bin/mpfirectrl srv/web/ipfire/cgi-bin/mpfire.cgi +srv/web/ipfire/html/images/mpfire var/ipfire/backup/addons/includes/mpfire var/ipfire/menu.d/EX-mpfire.menu var/ipfire/mpfire diff --git a/config/urlfilter/redirect_wrapper b/config/urlfilter/redirect_wrapper index aee7015b5b..7f66cd89dc 100644 --- a/config/urlfilter/redirect_wrapper +++ b/config/urlfilter/redirect_wrapper @@ -31,6 +31,9 @@ my $redirectors = [ '/usr/bin/squidGuard', '/usr/sbin/updxlrator' ]; require '/var/ipfire/general-functions.pl'; my %proxysettings=(); +$proxysettings{'ENABLE_FILTER'} = 'off'; +$proxysettings{'ENABLE_CLAMAV'} = 'off'; +$proxysettings{'ENABLE_UPDXLRATOR'} = 'off'; &General::readhash("${General::swroot}/proxy/settings", \%proxysettings); # define here your redirectors (use a comma sperated list) diff --git a/html/cgi-bin/mpfire.cgi b/html/cgi-bin/mpfire.cgi index 7d75f0b451..2f883a910e 100644 --- a/html/cgi-bin/mpfire.cgi +++ b/html/cgi-bin/mpfire.cgi @@ -20,10 +20,20 @@ ############################################################################### use strict; + # enable only the following on debugging purpose #use warnings; #use CGI::Carp 'fatalsToBrowser'; +# use the special mpd POD and the encode POD to handle the utf8 scalars +use Audio::MPD; +use Encode; + +# initiate the connector for the mpd POD, mpd must be running on locahost +# port 6600 without authentication +my $mpd = Audio::MPD->new('localhost',6600,'','$REUSE'); +my $work = $mpd->status()->updating_db(); + require '/var/ipfire/general-functions.pl'; require "${General::swroot}/lang.pl"; require "${General::swroot}/header.pl"; @@ -34,70 +44,158 @@ my %mpfiresettings = (); my %checked = (); my $message = '0'; my $errormessage = ""; +my @songs; &General::readhash("${General::swroot}/main/settings", \%mainsettings); &General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color); -if ( $ENV{'QUERY_STRING'} =~ /title/){ -my $song = `/usr/local/bin/mpfirectrl song 2>/dev/null`; -if ( $song eq "" ){$song = "None";} &Header::showhttpheaders(); -print <status()->song()+1; + my $volume = $mpd->status()->volume(); + my $random = $mpd->status()->random(); + + if ($random eq "0" ){ + $random="off"; + }else{ + $random="on"; + } + + my $repeat = $mpd->status()->repeat(); + if ($repeat eq "0" ){ + $repeat="off"; + }else{ + $repeat="on"; + } + + my $song = ""; + if ( $mpd->current() ) + { + $song = substr("-= ".$mpd->current()->Artist()." | ".$mpd->current()->Title(),0,90)." =-
"; + if ( $song eq "-= | =-
" ){ + $song = "None
" + }; + $song .= $mpd->current()->Track()."# ".substr($mpd->current()->Album(),0,90)."
"; + }else{ + $song = "None

"; + } + + if ( $song eq "None
#
" ){ + $song = "None
".substr($mpd->current()->file(),0,90)."
" + }; + $song .= "Playlist: ".$number."-".$mpd->status()->playlistlength()." Time: ".$mpd->status()->time()->sofar."/"; + $song .= $mpd->status()->time()->total." (".$mpd->status()->time()->percent()."%) Status: "; + $song .= $mpd->status()->state()." Volume: ".$volume." % Repeat: ".$repeat." Random: ".$random; + + print < -Song + - - -
-= $song =-
- + END ; -} -else{ -&Header::showhttpheaders(); + print"

".encode('utf-8', $song)."

"; + exit; +}elsif ( $ENV{'QUERY_STRING'} =~ /control/){ -sub refreshpage{&Header::openbox( 'Waiting', 1, "" );print "

$Lang::tr{'pagerefresh'}
";&Header::closebox();} +################################################################################ +# $ENV{'QUERY_STRING'} =~ /control/ is used to handle the inline iframe used to +# display the control button ( prev play skip stop toggle aso ) +# the cgi call´s itself with a parameter and only the iframe is reloaded on click +################################################################################ -$mpfiresettings{'PAGE'} = "1"; - -open(DATEI, "<${General::swroot}/mpfire/db/mpd.db") || die "No Database found"; -my @songdb = ; -close(DATEI); - -my @artist; my @album; my @genre; my @year; my $linecount = 0; my %songs; -my $key;my $file;my $Time;my $Artist;my $Title;my $Album;my $Track;my $Date;my $Genre; -foreach (@songdb){ - if ( $_ =~ /mtime: / ){ - $songs{$key}="$file|$Time|$Artist|$Title|$Album|$Track|$Date|$Genre"; - push(@artist,$Artist);push(@album,$Album);push(@year,$Date);push(@genre,$Genre); - $key="";$file="";$Time="";$Artist="";$Title="";$Album="";$Track="";$Date="";$Genre=""; + &Header::getcgihash(\%mpfiresettings); + if ( $mpfiresettings{'ACTION'} eq "playall" ){ + $mpd->playlist->clear(); + foreach ($mpd->collection->all_pathes){ + $mpd->playlist->add($_); } - elsif ( $_ =~ /key: / ){my @temp = split(/: /,$_);$key=$temp[1];} - elsif ( $_ =~ /file: / ){my @temp = split(/: /,$_);$file=$temp[1];} - elsif ( $_ =~ /Time: / ){my @temp = split(/: /,$_);$Time=$temp[1];} - elsif ( $_ =~ /Artist: / ){my @temp = split(/: /,$_);$Artist=$temp[1];} - elsif ( $_ =~ /Title: / ){my @temp = split(/: /,$_);$Title=$temp[1];} - elsif ( $_ =~ /Album: / ){my @temp = split(/: /,$_);$Album=$temp[1];} - elsif ( $_ =~ /Track: / ){my @temp = split(/: /,$_);$Track=$temp[1];} - elsif ( $_ =~ /Date: / ){my @temp = split(/: /,$_);$Date=$temp[1];} - elsif ( $_ =~ /Genre: / ){my @temp = split(/: /,$_);$Genre=$temp[1];} - else {next;} + $mpd->play(); + }elsif ($mpfiresettings{'ACTION'} eq "x" ){ + $mpd->stop(); + }elsif ( $mpfiresettings{'ACTION'} eq "|>" ){ + $mpd->pause(); + }elsif ( $mpfiresettings{'ACTION'} eq "<<" ){ + $mpd->prev(); + }elsif ( $mpfiresettings{'ACTION'} eq ">>" ){ + $mpd->next(); + }elsif ( $mpfiresettings{'ACTION'} eq "+" ){ + $mpd->volume('+5'); + }elsif ( $mpfiresettings{'ACTION'} eq "-" ){ + $mpd->volume('-5'); + }elsif ( $mpfiresettings{'ACTION'} eq "++" ){ + $mpd->volume('+10'); + }elsif ( $mpfiresettings{'ACTION'} eq "--" ){ + $mpd->volume('-10'); + }elsif ( $mpfiresettings{'ACTION'} eq ">" ){ + $mpd->play(); + }elsif ( $mpfiresettings{'ACTION'} eq "repeat" ){ + $mpd->repeat(); + }elsif ( $mpfiresettings{'ACTION'} eq "shuffle" ){ + $mpd->random(); } + print < + + + + + + + + + + + +END +; + print < + + + + + + + +
+ +END +; + exit; +} - my %hash = map{ $_, 1 }@artist; - @artist = sort keys %hash; - my %hash = map{ $_, 1 }@album; - @album = sort keys %hash; - my %hash = map{ $_, 1 }@year; - @year = sort keys %hash; - my %hash = map{ $_, 1 }@genre; - @genre = sort keys %hash; +# just a little subpage to handle automatic page refresh on demand ( 1 sec ) +sub refreshpage{ + &Header::openbox( 'Waiting', 1, "" ); + print "

$Lang::tr{'pagerefresh'}
"; + &Header::closebox(); +} + +# if the mpd is updating his database because of user interaction then the cgi +# should display that the mpd is unavailable, and refresh the status every 5 seconds +if ($work ne ""){ + &Header::openpage($Lang::tr{'mpfire'}, 1,); + &Header::openbigbox('100%', 'left', '', $errormessage); + &Header::openbox( 'Waiting', 5, "" ); + print "

Database is updating, please be patient.
"; + &Header::closebox(); + &Header::closebigbox(); + &Header::closepage(); + exit; +} - my $artistcount = $#artist+1; - my $albumcount = $#album+1; - my $yearcount = $#year+1; - my $genrecount = $#genre+1; +if ( $mpfiresettings{'PAGE'} eq "" ){$mpfiresettings{'PAGE'} = "1";} &Header::getcgihash(\%mpfiresettings); &Header::openpage($Lang::tr{'mpfire'}, 1,); @@ -106,131 +204,116 @@ foreach (@songdb){ ############################################################################################################################ ######################################## Scanne Verzeichnisse nach Mp3 Dateien ############################################# -if ( $mpfiresettings{'ACTION'} eq "scan" ) -{ -&General::readhash("${General::swroot}/mpfire/settings", \%mpfiresettings); -&Header::getcgihash(\%mpfiresettings); -delete $mpfiresettings{'__CGI__'};delete $mpfiresettings{'x'};delete $mpfiresettings{'y'};delete $mpfiresettings{'PAGE'}; -&General::writehash("${General::swroot}/mpfire/settings", \%mpfiresettings); -open(DATEI, "<${General::swroot}/mpfire/mpd.conf") || die "Datei nicht gefunden"; -my @Zeilen = ; -close(DATEI); -open(DATEI, ">${General::swroot}/mpfire/mpd.conf") || die "Datei nicht gefunden"; -foreach (@Zeilen){ -if ( $_ =~ /music_directory/){print DATEI "music_directory \"".$mpfiresettings{'MUSICDIR'}."\"\n";} -else {print DATEI $_;} -} -close(DATEI); +if ( $mpfiresettings{'ACTION'} eq "scan" ){ -$message=system("/usr/local/bin/mpfirectrl scan 2>/dev/null"); -refreshpage(); -} -elsif ( $mpfiresettings{'ACTION'} eq ">" ){$message=system("/usr/local/bin/mpfirectrl","play","\"$mpfiresettings{'FILE'}\"","2>/dev/null");} -elsif ( $mpfiresettings{'ACTION'} eq "x" ){$message=system("/usr/local/bin/mpfirectrl stop 2>/dev/null");} -elsif ( $mpfiresettings{'ACTION'} eq "|>" ){$message=system("/usr/local/bin/mpfirectrl toggle 2>/dev/null");} -elsif ( $mpfiresettings{'ACTION'} eq "<<" ){$message=system("/usr/local/bin/mpfirectrl prev 2>/dev/null");} -elsif ( $mpfiresettings{'ACTION'} eq ">>" ){$message=system("/usr/local/bin/mpfirectrl next 2>/dev/null");} -elsif ( $mpfiresettings{'ACTION'} eq "+" ){$message=system("/usr/local/bin/mpfirectrl volup 5 2>/dev/null");} -elsif ( $mpfiresettings{'ACTION'} eq "-" ){$message=system("/usr/local/bin/mpfirectrl voldown 5 2>/dev/null");} -elsif ( $mpfiresettings{'ACTION'} eq "++" ){$message=system("/usr/local/bin/mpfirectrl volup 10 2>/dev/null");} -elsif ( $mpfiresettings{'ACTION'} eq "--" ){$message=system("/usr/local/bin/mpfirectrl voldown 10 2>/dev/null");} -elsif ( $mpfiresettings{'ACTION'} eq "playweb" ){$message=system("/usr/local/bin/mpfirectrl","playweb","\"$mpfiresettings{'FILE'}\"","2>/dev/null");} -elsif ( $mpfiresettings{'ACTION'} eq "playlist" ){$message=system("/usr/local/bin/mpfirectrl playlist 2>/dev/null");} -elsif ( $mpfiresettings{'ACTION'} eq "emptyplaylist" ){$message=system("/usr/local/bin/mpfirectrl clearplaylist 2>/dev/null");} -elsif ( $mpfiresettings{'ACTION'} eq "addtoplaylist" ){$message=system("/usr/local/bin/mpfirectrl","playadd","\"$mpfiresettings{'FILE'}\"","2>/dev/null");} -elsif ( $mpfiresettings{'ACTION'} eq "playall" ){ -my @temp = ""; my @song = ""; - -foreach (keys(%songs)){ - @song = split(/\|/,$songs{$_});push(@temp,$song[0]) +# on keypress scan the given directory and store the path to the mpd config + &General::readhash("${General::swroot}/mpfire/settings", \%mpfiresettings); + &Header::getcgihash(\%mpfiresettings); + delete $mpfiresettings{'__CGI__'};delete $mpfiresettings{'x'};delete $mpfiresettings{'y'}; + &General::writehash("${General::swroot}/mpfire/settings", \%mpfiresettings); + + open(DATEI, "<${General::swroot}/mpfire/mpd.conf") || die "Datei nicht gefunden"; + my @Zeilen = ; + close(DATEI); + + open(DATEI, ">${General::swroot}/mpfire/mpd.conf") || die "Datei nicht gefunden"; + foreach (@Zeilen){ + if ( $_ =~ /music_directory/){ + print DATEI "music_directory \"".$mpfiresettings{'MUSICDIR'}."\"\n"; + }else { + print DATEI $_; + } } -open(DATEI, ">${General::swroot}/mpfire/playlist.m3u") || die "Could not add playlist"; -print DATEI @temp; -close(DATEI); - -$message=system("/usr/local/bin/mpfirectrl playlist 2>/dev/null"); -} -elsif ( $mpfiresettings{'ACTION'} eq "playalbum" ) -{ -my @temp = ""; my @song = ""; my @select = split(/\|/,$mpfiresettings{'album'}); - -foreach (keys(%songs)){ - @song = split(/\|/,$songs{$_});$song[4] =~ s/\W/ /g; - + close(DATEI); + + $mpd->updatedb(); + refreshpage(); +}elsif ( $mpfiresettings{'ACTION'} eq "playweb" ){ + $message=system("/usr/local/bin/mpfirectrl","playweb","\"$mpfiresettings{'FILE'}\"","2>/dev/null"); +}elsif ( $mpfiresettings{'ACTION'} eq "playlist" ){ +# on keypress play the playlist + $message=system("/usr/local/bin/mpfirectrl playlist 2>/dev/null"); +}elsif ( $mpfiresettings{'ACTION'} eq "emptyplaylist" ){ +# on keypress clear the playlist + $mpd->playlist->clear(); +}elsif ( $mpfiresettings{'ACTION'} eq "addtoplaylist" ){ + $mpd->playlist->add($mpfiresettings{'FILE'}); +}elsif ( $mpfiresettings{'ACTION'} eq "playalbum" ){ +# on keypress play the selected albums + my @select = split(/\|/,$mpfiresettings{'album'}); + $mpd->playlist->clear(); foreach (@select){ - $_ =~ s/\W/ /g; - if ( $song[4] =~ /$_/ ){push(@temp,$song[0]);} + foreach ($mpd->collection->filenames_by_album($_)){ + if ( $_ ne "" ){ + $mpd->playlist->add($_); + } + } } -} - -open(DATEI, ">${General::swroot}/mpfire/playlist.m3u") || die "Could not add playlist"; -print DATEI @temp; -close(DATEI); -$message=system("/usr/local/bin/mpfirectrl playlist 2>/dev/null"); -} -elsif ( $mpfiresettings{'ACTION'} eq "playartist" ) -{ -my @temp = ""; my @song = ""; my @select = split(/\|/,$mpfiresettings{'artist'}); - -foreach (keys(%songs)){ - @song = split(/\|/,$songs{$_});$song[2] =~ s/\W/ /g; - + $mpd->play(); +}elsif ( $mpfiresettings{'ACTION'} eq "playartist" ){ +# on keypress play the selected artist + my @select = split(/\|/,$mpfiresettings{'artist'}); + $mpd->playlist->clear(); foreach (@select){ - $_ =~ s/\W/ /g; - if ( $song[2] =~ /$_/ ){push(@temp,$song[0]);} + foreach ($mpd->collection->filenames_by_artist($_)){ + if ( $_ ne "" ){ + $mpd->playlist->add($_); + } + } } -} - -open(DATEI, ">${General::swroot}/mpfire/playlist.m3u") || die "Could not add playlist"; -print DATEI @temp; -close(DATEI); -$message=system("/usr/local/bin/mpfirectrl playlist 2>/dev/null"); -} -elsif ( $mpfiresettings{'ACTION'} eq "playyear" ) -{ -my @temp = ""; my @song = ""; my @select = split(/\|/,$mpfiresettings{'year'}); - -foreach (keys(%songs)){ - @song = split(/\|/,$songs{$_});$song[6] =~ s/\W/ /g; - + $mpd->play(); +}elsif ( $mpfiresettings{'ACTION'} eq "playyear" ){ +# on keypress play the selected year + my @select = split(/\|/,$mpfiresettings{'year'}); + $mpd->playlist->clear(); foreach (@select){ - $_ =~ s/\W/ /g; - if ( $song[6] =~ /$_/ ){push(@temp,$song[0]);} + foreach ($mpd->collection->filenames_by_year($_)){ + if ( $_ ne "" ){ + $mpd->playlist->add($_); + } + } } + $mpd->play(); +}elsif ( $mpfiresettings{'ACTION'} eq "playgenre" ){ +# on keypress play the selected genre + my @select = split(/\|/,$mpfiresettings{'genre'}); + $mpd->playlist->clear(); + foreach (@select){ + foreach ($mpd->collection->filenames_by_genre($_)){ + if ( $_ ne "" ){ + $mpd->playlist->add($_); + } + } + } + $mpd->play(); +}elsif ( $mpfiresettings{'ACTION'} eq ">" ){ + $mpd->playlist->clear(); + $mpd->playlist->add($mpfiresettings{'FILE'}); + $mpd->play(); } -open(DATEI, ">${General::swroot}/mpfire/playlist.m3u") || die "Could not add playlist"; -print DATEI @temp; -close(DATEI); -$message=system("/usr/local/bin/mpfirectrl playlist 2>/dev/null"); -} -elsif ( $mpfiresettings{'ACTION'} eq "playgenre" ) -{ -my @temp = ""; my @song = ""; my @select = split(/\|/,$mpfiresettings{'genre'}); - -foreach (keys(%songs)){ - @song = split(/\|/,$songs{$_});$song[7] =~ s/\W/ /g; - - foreach (@select){ - $_ =~ s/\W/ /g; - if ( $song[7] =~ /$_/ ){push(@temp,$song[0]);} - } -} - -open(DATEI, ">${General::swroot}/mpfire/playlist.m3u") || die "Could not add playlist"; -print DATEI @temp; -close(DATEI); -$message=system("/usr/local/bin/mpfirectrl playlist 2>/dev/null"); -} -elsif ( $mpfiresettings{'SHOWLIST'} ){ - &General::readhash("${General::swroot}/mpfire/settings", \%mpfiresettings); - &Header::getcgihash(\%mpfiresettings); - delete $mpfiresettings{'__CGI__'}; - delete $mpfiresettings{'x'}; - delete $mpfiresettings{'y'}; - delete $mpfiresettings{'PAGE'}; - &General::writehash("${General::swroot}/mpfire/settings", \%mpfiresettings);refreshpage(); -} + if ( $mpfiresettings{'SEARCH'} eq "artist" && $mpfiresettings{'SEARCHITEM'} ne "" ){ + foreach ($mpd->collection->songs_with_artist_partial_filename($mpfiresettings{'SEARCHITEM'})){ + if ( $_ ne "" ){ + push(@songs,$_); + } + } + }elsif ( $mpfiresettings{'SEARCH'} eq "title" && $mpfiresettings{'SEARCHITEM'} ne "" ){ + foreach ($mpd->collection->songs_with_title_partial_filename($mpfiresettings{'SEARCHITEM'})){ + if ( $_ ne "" ){ + push(@songs,$_); + } + } + }elsif ( $mpfiresettings{'SEARCH'} eq "album" && $mpfiresettings{'SEARCHITEM'} ne "" ){ + foreach ($mpd->collection->songs_with_album_partial_filename($mpfiresettings{'SEARCHITEM'})){ + if ( $_ ne "" ){ + push(@songs,$_); + } + } + }else{ + @songs = $mpd->collection->all_items_simple(); + shift(@songs); + } ############################################################################################################################ ################################### Aufbau der HTML Seite fr globale Sambaeinstellungen #################################### @@ -241,186 +324,227 @@ $mpfiresettings{'MUSICDIR'} = "/"; ############################################################################################################################ ########################################### rekursiv nach neuen Mp3s Scannen ##############################################ä -if ( $message ne '0' ) { print "An Error occured while launching the command"; } -elsif ( $message ne "" && $message ne '0' ) { print "$message"; } +if ( $message ne '0' ){ + print "An Error occured while launching the command"; +}elsif ( $message ne "" && $message ne '0' ){ + print "$message"; +} &Header::openbox('100%', 'center', $Lang::tr{'mpfire scanning'}); - +# box to enter the music directory and initiate the scan process print < - +
$Lang::tr{'Scan for Files'}
$Lang::tr{'Scan from Directory'}
-
END ; &Header::closebox(); -my $Volume = `/usr/local/bin/mpfirectrl volume 2>/dev/null`; -$Volume=~s//
/g; -my $stats = `mpc stats | tail -4 2>/dev/null`; -$stats=~s/\\/
/g - &Header::openbox('100%', 'center', $Lang::tr{'mpfire controls'}); +# box for the two iframes showing the current playbar and the control buttons print < - -END -; -my $countsongs=`/usr/local/bin/mpfirectrl stats 2>/dev/null`; -print ""; -print < - - - - - - -END -; -if ( $mpfiresettings{'SHOWLIST'} eq "on" ){print"";} -else { print"";} -print <
-
- - - - - -
".$countsongs."
$Volume

$stats
+ + END ; +print "Songs:".$mpd->stats()->songs()."
"; + &Header::closebox(); &Header::openbox('100%', 'center', $Lang::tr{'quick playlist'}); - +# box to quickly select artist, album, year or genre and play the selection print ""; -if ( $#songdb eq '-1' ) {print "";} -else {print "";} +print ""; + print < - + - +
+ + + + + +";} -else {print "";} + +foreach ($mpd->collection->all_years()){ + if ( $_ ne '' ){ + print "\n"; + } +} + print < + - +
$Lang::tr{'artist'}$Lang::tr{'album'}
$Lang::tr{'artist'} - ".$artistcount."$Lang::tr{'album'} - ".$albumcount."
$Lang::tr{'artist'} - ".$mpd->stats()->artists()."$Lang::tr{'album'} - ".$mpd->stats()->albums()."
-
-
+ + - - -
-
+ + +
+
+ - -
$Lang::tr{'year'}$Lang::tr{'genre'}
+
+
$Lang::tr{'year'}$Lang::tr{'genre'}
$Lang::tr{'year'} - ".$yearcount."$Lang::tr{'genre'} - ".$genrecount."
- -
+ + +
+
+ - -
-
-
+ + +
END ; - foreach (@genre){if ( $_ ne '' ){print "";}} + +&Header::closebox(); + +&Header::openbox('100%', 'center', $Lang::tr{'mpfire search'}); +# box to quickly search artist, album or title print <
- - - - +
+ + + + + + + + + + + + + + + + + +
$Lang::tr{'artist'}$Lang::tr{'title'}$Lang::tr{'album'}
+
END ; &Header::closebox(); -if ( $mpfiresettings{'SHOWLIST'} eq "on" ){ - &Header::openbox('100%', 'center', $Lang::tr{'mpfire songs'}); print < - - -
$Lang::tr{'Existing Files'}

$Lang::tr{'Pages'}

+ + + END ; -my $pages =(int(keys(%songs)/100)+1); -for(my $i = 1; $i <= $pages; $i++) { -print ""; -if (!($i % 205)){print"
";} +if ( $#songs > 100 ){ + print ""; } print < - - - - - - + + + END ; + my $lines=0;my $i=0;my $begin;my $end; if ( $mpfiresettings{'PAGE'} eq 'all' ){ $begin=0; - $end=keys(%songs); -} -else{ + $end=$#songs; +}else{ $begin=(($mpfiresettings{'PAGE'}-1) * 100); $end=(($mpfiresettings{'PAGE'} * 100)-1); } -foreach (sort(keys(%songs))){ + foreach (@songs){ if (!($i >= $begin && $i <= $end)){ -# print $begin."->".$i."<-".$end."\n"; - $i++;next;} - my @song = split(/\|/,$songs{$_}); - my $minutes = sprintf ("%.0f", $song[1] / 60 ); - my $seconds = sprintf("%02d", ($song[1] % 60) ); + #print $begin."->".$i."<-".$end."\n"; + $i++;next; + } + my @song = split(/\=/,$mpd->collection->song($_)); + @song = reverse @song; - if ($lines % 2) {print "";} else {print "";} + if ($lines % 2) { + print ""; + }else{ + print ""; + } print <
-
- - - - - + END ; + print ""; + print ""; + print ""; $lines++; $i++; - } +} + print "
$Lang::tr{'Existing Files'}

$Lang::tr{'Pages'}

"; + my $pages =(int($#songs/100)+1); + for(my $i = 1; $i <= $pages; $i++){ + print ""; + if (!($i % 205)){ + print"
"; + } + } + + print "
$Lang::tr{'artist'}
$Lang::tr{'title'}
$Lang::tr{'number'}$Lang::tr{'album'}$Lang::tr{'year'}$Lang::tr{'genre'}$Lang::tr{'length'}
$Lang::tr{'artist'}
$Lang::tr{'title'}
$Lang::tr{'number'}$Lang::tr{'album'}
$song[2]
$song[3]
$song[5]$song[4]$song[6]$song[7]$minutes:$seconds
+
+ + + + + + +
+
+ + + + + + +
+
".encode('utf-8', $song[0])."
".encode('utf-8', $song[1])."
".encode('utf-8', $song[2])."".encode('utf-8', $song[3])."
"; &Header::closebox(); -} &Header::openbox('100%', 'center', $Lang::tr{'mpfire playlist'}); - +# box to show the current playlist given from mpc system command my @playlist = `mpc playlist 2>/dev/null`; print <
-
- - -
+
+ + +
-
- - -
+
+ + +
END ; + &Header::closebox(); &Header::openbox('100%', 'center', $Lang::tr{'mpfire webradio'}); - +# box to select some webradio´s to be played by one click open(DATEI, "<${General::swroot}/mpfire/webradio") || die "Could not open playlist"; my @webradio = ; close(DATEI); @@ -461,30 +590,40 @@ print <Stream END ; + my $lines=0; foreach (@webradio){ my @stream = split(/\|/,$_); $lines++; chomp($stream[2]); - if ($lines % 2) {print "";} else {print "";} -print <$stream[1] -
+ if ($lines % 2) { + print ""; + }else{ + print ""; + } + chomp $stream[1];chop $stream[2]; + print <$stream[1] +
END ; - } - $lines++; - if ($lines % 2) {print "";} else {print "";} +} + +$lines++; +if ($lines % 2){ + print ""; +}else{ + print ""; +} + print <

http:// -
+

http:// +
END ; print ""; &Header::closebox(); - &Header::closebigbox(); &Header::closepage(); -} diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index afbae1e8dd..b7cdc80c00 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -1106,6 +1106,9 @@ 'mpfire playlist' => 'MPFire Playlist', 'mpfire scanning' => 'Nach neuen Dateien suchen', 'mpfire songs' => 'MPFire Songliste', +'mpfire search' => 'MPFire Suche', +'repeat' => 'Wiederholen', +'shuffle' => 'Zufall', 'mpfire webradio' => 'MPFire Webradio', 'mtu QoS' => 'Diese Einstellung aendert die MTU nicht global sondern nur fuer das QoS.', 'my new share' => 'Meine neue Freigabe', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index b99b0c3e14..b5708d8e82 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -37,6 +37,9 @@ 'OpenVPN' => 'OpenVPN', 'Pages' => 'Pages', 'Ping' => 'Ping :', +'mpfire search' => 'MPFire Search', +'repeat' => 'Repeat', +'shuffle' => 'Shuffle', 'Port Rule' => 'Port-Rule', 'QoS not enabled' => 'QoS is not enabled!', 'Queuelenght' => 'Queuelenght', diff --git a/lfs/mpfire b/lfs/mpfire index 316b8acd61..54d0ae037d 100644 --- a/lfs/mpfire +++ b/lfs/mpfire @@ -30,7 +30,7 @@ THISAPP = mpfire-$(VER) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = mpfire -PAK_VER = 2 +PAK_VER = 3 DEPS = "mpd mpc alsa libshout libogg libmad libid3tag libvorbis" @@ -67,5 +67,11 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) chown nobody.nobody /var/ipfire/mpfire/{settings,webradio} chown root.nobody /var/ipfire/mpfire/db/mpd.db chmod 664 /var/ipfire/mpfire/playlist.m3u + chmod 755 /srv/web/ipfire/html/images/mpfire install -v -m 644 $(DIR_SRC)/config/backup/includes/mpfire /var/ipfire/backup/addons/includes/mpfire + -mkdir -p /usr/lib/perl5/site_perl/5.8.8/Audio/ + -mkdir -p /usr/lib/perl5/site_perl/5.8.8/Audio/ + cp -vrf $(DIR_SRC)/config/mpfire/perl/Audio/MPD* /usr/lib/perl5/site_perl/5.8.8/Audio/ + cp -vrf $(DIR_SRC)/config/mpfire/perl/Accessor* /usr/lib/perl5/5.8.8/Class/ + cp -vrf $(DIR_SRC)/config/mpfire/perl/Readonly.pm /usr/lib/perl5/5.8.8/Readonly.pm @$(POSTBUILD) diff --git a/src/paks/mpfire/install.sh b/src/paks/mpfire/install.sh index 5bc12ba733..e09fca4254 100644 --- a/src/paks/mpfire/install.sh +++ b/src/paks/mpfire/install.sh @@ -27,7 +27,8 @@ ln -svf /etc/init.d/mpd /etc/rc.d/rc3.d/S65mpd ln -svf /etc/init.d/mpd /etc/rc.d/rc0.d/K35mpd ln -svf /etc/init.d/mpd /etc/rc.d/rc6.d/K35mpd ln -svf /var/ipfire/mpfire/mpd.conf /etc/mpd.conf +chmod 755 /srv/web/ipfire/html/images/mpfire touch /var/log/mpd.error.log touch /var/log/mpd.log restore_backup ${NAME} -start_service --delay 60 --background ${NAME} +/etc/init.d/mpd start diff --git a/src/paks/mpfire/uninstall.sh b/src/paks/mpfire/uninstall.sh index 242b822a14..e729cb1ff2 100644 --- a/src/paks/mpfire/uninstall.sh +++ b/src/paks/mpfire/uninstall.sh @@ -22,7 +22,7 @@ ############################################################################ # . /opt/pakfire/lib/functions.sh -stop_service ${NAME} +/etc/init.d/mpd stop make_backup ${NAME} remove_files rm -f /etc/rc.d/rc*.d/*mpd /var/log/mpd.error.log /var/log/mpd.log /etc/mpd.conf