From mboxrd@z Thu Jan 1 00:00:00 1970 From: Adolf Belka <adolf.belka@ipfire.org> To: development@lists.ipfire.org Subject: [PATCH] mpfire: removal as discussed in Conf call 7th Oct Date: Tue, 08 Oct 2024 18:45:59 +0200 Message-ID: <20241008164607.2632738-1-adolf.belka@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2581222176252568866==" List-Id: <development.lists.ipfire.org> --===============2581222176252568866== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable - removal of lfs, rootfile, backup, paks, misc-progs, mpfire perl, language f= ile content, mpfire.cgi, mpfire menu references and files, mpfire specific ima= ge, web-user-interface references and references in manualpages. Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org> --- config/backup/includes/mpfire | 2 - config/cfgroot/manualpages | 1 - config/menu/EX-mpfire.menu | 5 - config/mpfire/mpfire.pl | 108 --- config/mpfire/perl/Accessor.pm | 675 ------------- config/mpfire/perl/Accessor/Fast.pm | 94 -- config/mpfire/perl/Accessor/Faster.pm | 105 -- config/mpfire/perl/Audio/MPD.pm | 897 ------------------ config/mpfire/perl/Audio/MPD/Collection.pm | 594 ------------ config/mpfire/perl/Audio/MPD/Common.pm | 88 -- config/mpfire/perl/Audio/MPD/Common/Item.pm | 100 -- .../perl/Audio/MPD/Common/Item/Directory.pm | 72 -- .../perl/Audio/MPD/Common/Item/Playlist.pm | 72 -- .../mpfire/perl/Audio/MPD/Common/Item/Song.pm | 133 --- config/mpfire/perl/Audio/MPD/Common/Stats.pm | 135 --- config/mpfire/perl/Audio/MPD/Common/Status.pm | 192 ---- config/mpfire/perl/Audio/MPD/Common/Time.pm | 186 ---- config/mpfire/perl/Audio/MPD/Playlist.pm | 427 --------- config/mpfire/perl/Audio/MPD/Test.pm | 217 ----- config/mpfire/perl/Readonly.pm | 803 ---------------- config/mpfire/webradio | 14 - config/rootfiles/common/configroot | 1 - config/rootfiles/common/web-user-interface | 3 - config/rootfiles/packages/mpfire | 35 - doc/language_issues.de | 23 + doc/language_issues.en | 30 - doc/language_issues.es | 23 +- doc/language_issues.fr | 23 + doc/language_issues.it | 23 +- doc/language_issues.nl | 23 +- doc/language_issues.pl | 23 +- doc/language_issues.ru | 23 +- doc/language_issues.tr | 23 +- html/cgi-bin/mpfire.cgi | 673 ------------- html/html/images/mpfire/box.png | Bin 4562 -> 0 bytes langs/de/cgi-bin/de.pl | 7 - langs/en/cgi-bin/en.pl | 7 - langs/es/cgi-bin/es.pl | 7 - langs/fr/cgi-bin/fr.pl | 7 - langs/it/cgi-bin/it.pl | 7 - langs/nl/cgi-bin/nl.pl | 7 - langs/pl/cgi-bin/pl.pl | 7 - langs/ru/cgi-bin/ru.pl | 7 - langs/tr/cgi-bin/tr.pl | 7 - lfs/mpfire | 75 -- make.sh | 1 - src/misc-progs/Makefile | 2 +- src/misc-progs/mpfirectrl.c | 15 - src/paks/mpfire/install.sh | 27 - src/paks/mpfire/uninstall.sh | 26 - src/paks/mpfire/update.sh | 27 - 51 files changed, 179 insertions(+), 5903 deletions(-) delete mode 100644 config/backup/includes/mpfire delete mode 100644 config/menu/EX-mpfire.menu delete mode 100644 config/mpfire/mpfire.pl delete mode 100755 config/mpfire/perl/Accessor.pm delete mode 100755 config/mpfire/perl/Accessor/Fast.pm delete mode 100755 config/mpfire/perl/Accessor/Faster.pm delete mode 100644 config/mpfire/perl/Audio/MPD.pm delete mode 100644 config/mpfire/perl/Audio/MPD/Collection.pm delete mode 100644 config/mpfire/perl/Audio/MPD/Common.pm delete mode 100644 config/mpfire/perl/Audio/MPD/Common/Item.pm delete mode 100644 config/mpfire/perl/Audio/MPD/Common/Item/Directory.pm delete mode 100644 config/mpfire/perl/Audio/MPD/Common/Item/Playlist.pm delete mode 100644 config/mpfire/perl/Audio/MPD/Common/Item/Song.pm delete mode 100644 config/mpfire/perl/Audio/MPD/Common/Stats.pm delete mode 100644 config/mpfire/perl/Audio/MPD/Common/Status.pm delete mode 100644 config/mpfire/perl/Audio/MPD/Common/Time.pm delete mode 100644 config/mpfire/perl/Audio/MPD/Playlist.pm delete mode 100644 config/mpfire/perl/Audio/MPD/Test.pm delete mode 100644 config/mpfire/perl/Readonly.pm delete mode 100644 config/mpfire/webradio delete mode 100644 config/rootfiles/packages/mpfire delete mode 100644 html/cgi-bin/mpfire.cgi delete mode 100644 html/html/images/mpfire/box.png delete mode 100644 lfs/mpfire delete mode 100644 src/misc-progs/mpfirectrl.c delete mode 100644 src/paks/mpfire/install.sh delete mode 100644 src/paks/mpfire/uninstall.sh delete mode 100644 src/paks/mpfire/update.sh diff --git a/config/backup/includes/mpfire b/config/backup/includes/mpfire deleted file mode 100644 index a21e77a6f..000000000 --- a/config/backup/includes/mpfire +++ /dev/null @@ -1,2 +0,0 @@ -/var/ipfire/mpfire/settings -/var/ipfire/mpfire/webradio diff --git a/config/cfgroot/manualpages b/config/cfgroot/manualpages index f70381f12..1f7e01efc 100644 --- a/config/cfgroot/manualpages +++ b/config/cfgroot/manualpages @@ -69,7 +69,6 @@ iptables.cgi=3Dconfiguration/firewall/iptables pakfire.cgi=3Dconfiguration/ipfire/pakfire wlanap.cgi=3Daddons/wireless tor.cgi=3Daddons/tor -mpfire.cgi=3Daddons/mpfire samba.cgi=3Daddons/samba =20 # Logs menu diff --git a/config/menu/EX-mpfire.menu b/config/menu/EX-mpfire.menu deleted file mode 100644 index afba4dbde..000000000 --- a/config/menu/EX-mpfire.menu +++ /dev/null @@ -1,5 +0,0 @@ - $subipfire->{'40.mpfire'} =3D {'caption' =3D> $Lang::tr{'mpfire'}, - 'uri' =3D> '/cgi-bin/mpfire.cgi', - 'title' =3D> $Lang::tr{'mpfire'}, - 'enabled' =3D> 1, - }; diff --git a/config/mpfire/mpfire.pl b/config/mpfire/mpfire.pl deleted file mode 100644 index 15abd7893..000000000 --- a/config/mpfire/mpfire.pl +++ /dev/null @@ -1,108 +0,0 @@ -#!/usr/bin/perl - -require '/var/ipfire/general-functions.pl'; -require "${General::swroot}/lang.pl"; -require "${General::swroot}/header.pl"; - -my $filename =3D ""; -my $debug =3D 0;=20 - -if ( `/etc/init.d/mpd status` =3D~/not running/ ){ -system("/etc/init.d/mpd start >/dev/null"); -} - -if ($ARGV[0] eq 'scan') { - if ($debug){print "Creating Database\n";} - system("mpd --create-db >/dev/null"); - system("/etc/init.d/mpd restart >/dev/null"); -} -elsif ($ARGV[0] eq 'play') { - &checkmute(); - &clearplaylist(); - if ($debug){print "Yes we are called and we will play $ARGV[1]\n";} - system("mpc add \"$ARGV[1]\" >/dev/null && mpc play >/dev/null"); - } -elsif ($ARGV[0] eq 'playadd') { - if ($debug){print "Yes we are called and we will add $ARGV[1]\n";} - system("mpc add \"$ARGV[1]\" >/dev/null && mpc play >/dev/null"); - } -elsif ($ARGV[0] eq 'clearplaylist') { - if ($debug){print "Deleting playlist\n";} - &clearplaylist(); - } -elsif ($ARGV[0] eq 'stop') { - my $PID =3D 'cat /var/run/mpd.pid'; - if ($debug){print "Killing Process $PID\n";} - system("mpc stop >/dev/null"); - } -elsif ($ARGV[0] eq 'volup') { - if ($debug){print "Increasing Volume\n";} - system("/usr/bin/amixer set Master $ARGV[1]%+ 2>/dev/null >/dev/null"); - system("/usr/bin/amixer set PCM $ARGV[1]%+ 2>/dev/null >/dev/null"); - } -elsif ($ARGV[0] eq 'voldown') { - if ($debug){print "Decreasing Volume\n";} - system("/usr/bin/amixer set Master $ARGV[1]%- 2>/dev/null >/dev/null"); - system("/usr/bin/amixer set PCM $ARGV[1]%- 2>/dev/null >/dev/null"); - } -elsif ($ARGV[0] eq 'toggle') { - system("mpc toggle >/dev/null"); - } -elsif ($ARGV[0] eq 'next') { - if ($debug){print "Next Song\n";} - system("mpc next >/dev/null["); - } -elsif ( $ARGV[0] eq 'prev' ) { - if ($debug){print "Previous Song\n";} - system("mpc prev >/dev/null"); =20 - } -elsif ($ARGV[0] eq 'song') { - my $song =3D `mpc \| head -2 | grep -v volume`; - print $song; - } -elsif ($ARGV[0] eq 'stats') { - my $song =3D `mpc stats | grep Songs`; - print $song; - } -elsif ($ARGV[0] eq 'playweb') { - &checkmute(); - &clearplaylist(); - if ($debug){print "Playing webstream $ARGV[1] \n";} - system("mpc add http://$ARGV[1] >/dev/null && mpc play >/dev/null && sl= eep 1"); - } -elsif ($ARGV[0] eq 'volume') { - $temp =3D "Master - "; - $temp .=3D `amixer get Master \| tail -2 \| awk '{ print \$2" "\$5 }'`; - $temp .=3D "<break>PCM -"; - $temp .=3D `amixer get PCM \| tail -2 \| awk '{ print \$2" "\$5 }'`; - print $temp; -} - -sub clearplaylist(){ - system("mpc clear >/dev/null"); =20 - } - -sub shuffle(){ - system("mpc random >/dev/null"); =20 - } - -sub checkplaylist(){ - my $Datei =3D "/var/ipfire/mpd/playlist.m3u"; - my @Info =3D stat($Datei); - if ( $Info[7] eq '' || $Info[7] eq '0' ){print "There is no playlist";exit(= 1);} -} - -sub checkmute(){ - $temp =3D `amixer get Master \| tail -2`; - my @Master =3D split(/ /,$temp); - $temp =3D `amixer get PCM \| tail -2`; - my @PCM =3D split(/ /,$temp); - if ( $PCM[7] =3D~ /off/ ){ - if ($debug){print "PCM was muted - umuting.\n";} - system("amixer set PCM toggle >/dev/null"); - } - if ( $Master[7] =3D~ /off/ ){ - if ($debug){print "Master was muted - umuting.\n";} - system("amixer set Master toggle >/dev/null"); - }=20 -} diff --git a/config/mpfire/perl/Accessor.pm b/config/mpfire/perl/Accessor.pm deleted file mode 100755 index 7dcd00ea8..000000000 --- a/config/mpfire/perl/Accessor.pm +++ /dev/null @@ -1,675 +0,0 @@ -package Class::Accessor; -require 5.00502; -use strict; -$Class::Accessor::VERSION =3D '0.31'; - -=3Dhead1 NAME - - Class::Accessor - Automated accessor generation - -=3Dhead1 SYNOPSIS - - package Employee; - use base qw(Class::Accessor); - Employee->mk_accessors(qw(name role salary)); - - # Meanwhile, in a nearby piece of code! - # Class::Accessor provides new(). - my $mp =3D Foo->new({ name =3D> "Marty", role =3D> "JAPH" }); - - my $job =3D $mp->role; # gets $mp->{role} - $mp->salary(400000); # sets $mp->{salary} =3D 400000 (I wish) - =20 - # like my @info =3D @{$mp}{qw(name role)} - my @info =3D $mp->get(qw(name role)); - =20 - # $mp->{salary} =3D 400000 - $mp->set('salary', 400000); - - -=3Dhead1 DESCRIPTION - -This module automagically generates accessors/mutators for your class. - -Most of the time, writing accessors is an exercise in cutting and -pasting. You usually wind up with a series of methods like this: - - sub name { - my $self =3D shift; - if(@_) { - $self->{name} =3D $_[0]; - } - return $self->{name}; - } - - sub salary { - my $self =3D shift; - if(@_) { - $self->{salary} =3D $_[0]; - } - return $self->{salary}; - } - - # etc... - -One for each piece of data in your object. While some will be unique, -doing value checks and special storage tricks, most will simply be -exercises in repetition. Not only is it Bad Style to have a bunch of -repetitious code, but its also simply not lazy, which is the real -tragedy. - -If you make your module a subclass of Class::Accessor and declare your -accessor fields with mk_accessors() then you'll find yourself with a -set of automatically generated accessors which can even be -customized! - -The basic set up is very simple: - - package My::Class; - use base qw(Class::Accessor); - My::Class->mk_accessors( qw(foo bar car) ); - -Done. My::Class now has simple foo(), bar() and car() accessors -defined. - -=3Dhead2 What Makes This Different? - -What makes this module special compared to all the other method -generating modules (L<"SEE ALSO">)? By overriding the get() and set() -methods you can alter the behavior of the accessors class-wide. Also, -the accessors are implemented as closures which should cost a bit less -memory than most other solutions which generate a new method for each -accessor. - - -=3Dhead1 METHODS - -=3Dhead2 new - - my $obj =3D Class->new; - my $obj =3D $other_obj->new; - - my $obj =3D Class->new(\%fields); - my $obj =3D $other_obj->new(\%fields); - -Class::Accessor provides a basic constructor. It generates a -hash-based object and can be called as either a class method or an -object method. =20 - -It takes an optional %fields hash which is used to initialize the -object (handy if you use read-only accessors). The fields of the hash -correspond to the names of your accessors, so... - - package Foo; - use base qw(Class::Accessor); - Foo->mk_accessors('foo'); - - my $obj =3D Class->new({ foo =3D> 42 }); - print $obj->foo; # 42 - -however %fields can contain anything, new() will shove them all into -your object. Don't like it? Override it. - -=3Dcut - -sub new { - my($proto, $fields) =3D @_; - my($class) =3D ref $proto || $proto; - - $fields =3D {} unless defined $fields; - - # make a copy of $fields. - bless {%$fields}, $class; -} - -=3Dhead2 mk_accessors - - Class->mk_accessors(@fields); - -This creates accessor/mutator methods for each named field given in -(a)fields. Foreach field in @fields it will generate two accessors. -One called "field()" and the other called "_field_accessor()". For -example: - - # Generates foo(), _foo_accessor(), bar() and _bar_accessor(). - Class->mk_accessors(qw(foo bar)); - -See L<CAVEATS AND TRICKS/"Overriding autogenerated accessors"> -for details. - -=3Dcut - -sub mk_accessors { - my($self, @fields) =3D @_; - - $self->_mk_accessors('rw', @fields); -} - - -{ - no strict 'refs'; - - sub _mk_accessors { - my($self, $access, @fields) =3D @_; - my $class =3D ref $self || $self; - my $ra =3D $access eq 'rw' || $access eq 'ro'; - my $wa =3D $access eq 'rw' || $access eq 'wo'; - - foreach my $field (@fields) { - my $accessor_name =3D $self->accessor_name_for($field); - my $mutator_name =3D $self->mutator_name_for($field); - if( $accessor_name eq 'DESTROY' or $mutator_name eq 'DESTROY' ) { - $self->_carp("Having a data accessor named DESTROY in '$cla= ss' is unwise."); - } - if ($accessor_name eq $mutator_name) { - my $accessor; - if ($ra && $wa) { - $accessor =3D $self->make_accessor($field); - } elsif ($ra) { - $accessor =3D $self->make_ro_accessor($field); - } else { - $accessor =3D $self->make_wo_accessor($field); - } - unless (defined &{"${class}::$accessor_name"}) { - *{"${class}::$accessor_name"} =3D $accessor; - } - if ($accessor_name eq $field) { - # the old behaviour - my $alias =3D "_${field}_accessor"; - *{"${class}::$alias"} =3D $accessor unless defined &{"${= class}::$alias"}; - } - } else { - if ($ra and not defined &{"${class}::$accessor_name"}) { - *{"${class}::$accessor_name"} =3D $self->make_ro_accesso= r($field); - } - if ($wa and not defined &{"${class}::$mutator_name"}) { - *{"${class}::$mutator_name"} =3D $self->make_wo_accessor= ($field); - } - } - } - } - - sub follow_best_practice { - my($self) =3D @_; - my $class =3D ref $self || $self; - *{"${class}::accessor_name_for"} =3D \&best_practice_accessor_name_= for; - *{"${class}::mutator_name_for"} =3D \&best_practice_mutator_name_fo= r; - } - -} - -=3Dhead2 mk_ro_accessors - - Class->mk_ro_accessors(@read_only_fields); - -Same as mk_accessors() except it will generate read-only accessors -(ie. true accessors). If you attempt to set a value with these -accessors it will throw an exception. It only uses get() and not -set(). - - package Foo; - use base qw(Class::Accessor); - Class->mk_ro_accessors(qw(foo bar)); - - # Let's assume we have an object $foo of class Foo... - print $foo->foo; # ok, prints whatever the value of $foo->{foo} is - $foo->foo(42); # BOOM! Naughty you. - - -=3Dcut - -sub mk_ro_accessors { - my($self, @fields) =3D @_; - - $self->_mk_accessors('ro', @fields); -} - -=3Dhead2 mk_wo_accessors - - Class->mk_wo_accessors(@write_only_fields); - -Same as mk_accessors() except it will generate write-only accessors -(ie. mutators). If you attempt to read a value with these accessors -it will throw an exception. It only uses set() and not get(). - -B<NOTE> I'm not entirely sure why this is useful, but I'm sure someone -will need it. If you've found a use, let me know. Right now its here -for orthoginality and because its easy to implement. - - package Foo; - use base qw(Class::Accessor); - Class->mk_wo_accessors(qw(foo bar)); - - # Let's assume we have an object $foo of class Foo... - $foo->foo(42); # OK. Sets $self->{foo} =3D 42 - print $foo->foo; # BOOM! Can't read from this accessor. - -=3Dcut - -sub mk_wo_accessors { - my($self, @fields) =3D @_; - - $self->_mk_accessors('wo', @fields); -} - -=3Dhead1 DETAILS - -An accessor generated by Class::Accessor looks something like -this: - - # Your foo may vary. - sub foo { - my($self) =3D shift; - if(@_) { # set - return $self->set('foo', @_); - } - else { - return $self->get('foo'); - } - } - -Very simple. All it does is determine if you're wanting to set a -value or get a value and calls the appropriate method. -Class::Accessor provides default get() and set() methods which -your class can override. They're detailed later. - -=3Dhead2 follow_best_practice - -In Damian's Perl Best Practices book he recommends separate get and set meth= ods -with the prefix set_ and get_ to make it explicit what you intend to do. If= you -want to create those accessor methods instead of the default ones, call: - - __PACKAGE__->follow_best_practice - -=3Dhead2 accessor_name_for / mutator_name_for - -You may have your own crazy ideas for the names of the accessors, so you can -make those happen by overriding C<accessor_name_for> and C<mutator_name_for>= in -your subclass. (I copied that idea from Class::DBI.) - -=3Dcut - -sub best_practice_accessor_name_for { - my ($class, $field) =3D @_; - return "get_$field"; -} - -sub best_practice_mutator_name_for { - my ($class, $field) =3D @_; - return "set_$field"; -} - -sub accessor_name_for { - my ($class, $field) =3D @_; - return $field; -} - -sub mutator_name_for { - my ($class, $field) =3D @_; - return $field; -} - -=3Dhead2 Modifying the behavior of the accessor - -Rather than actually modifying the accessor itself, it is much more -sensible to simply override the two key methods which the accessor -calls. Namely set() and get(). - -If you -really- want to, you can override make_accessor(). - -=3Dhead2 set - - $obj->set($key, $value); - $obj->set($key, @values); - -set() defines how generally one stores data in the object. - -override this method to change how data is stored by your accessors. - -=3Dcut - -sub set { - my($self, $key) =3D splice(@_, 0, 2); - - if(@_ =3D=3D 1) { - $self->{$key} =3D $_[0]; - } - elsif(@_ > 1) { - $self->{$key} =3D [@_]; - } - else { - $self->_croak("Wrong number of arguments received"); - } -} - -=3Dhead2 get - - $value =3D $obj->get($key); - @values =3D $obj->get(@keys); - -get() defines how data is retreived from your objects. - -override this method to change how it is retreived. - -=3Dcut - -sub get { - my $self =3D shift; - - if(@_ =3D=3D 1) { - return $self->{$_[0]}; - } - elsif( @_ > 1 ) { - return @{$self}{@_}; - } - else { - $self->_croak("Wrong number of arguments received"); - } -} - -=3Dhead2 make_accessor - - $accessor =3D Class->make_accessor($field); - -Generates a subroutine reference which acts as an accessor for the given -$field. It calls get() and set(). - -If you wish to change the behavior of your accessors, try overriding -get() and set() before you start mucking with make_accessor(). - -=3Dcut - -sub make_accessor { - my ($class, $field) =3D @_; - - # Build a closure around $field. - return sub { - my $self =3D shift; - - if(@_) { - return $self->set($field, @_); - } - else { - return $self->get($field); - } - }; -} - -=3Dhead2 make_ro_accessor - - $read_only_accessor =3D Class->make_ro_accessor($field); - -Generates a subroutine refrence which acts as a read-only accessor for -the given $field. It only calls get(). - -Override get() to change the behavior of your accessors. - -=3Dcut - -sub make_ro_accessor { - my($class, $field) =3D @_; - - return sub { - my $self =3D shift; - - if (@_) { - my $caller =3D caller; - $self->_croak("'$caller' cannot alter the value of '$field' on o= bjects of class '$class'"); - } - else { - return $self->get($field); - } - }; -} - -=3Dhead2 make_wo_accessor - - $read_only_accessor =3D Class->make_wo_accessor($field); - -Generates a subroutine refrence which acts as a write-only accessor -(mutator) for the given $field. It only calls set(). - -Override set() to change the behavior of your accessors. - -=3Dcut - -sub make_wo_accessor { - my($class, $field) =3D @_; - - return sub { - my $self =3D shift; - - unless (@_) { - my $caller =3D caller; - $self->_croak("'$caller' cannot access the value of '$field' on = objects of class '$class'"); - } - else { - return $self->set($field, @_); - } - }; -} - -=3Dhead1 EXCEPTIONS - -If something goes wrong Class::Accessor will warn or die by calling Carp::ca= rp -or Carp::croak. If you don't like this you can override _carp() and _croak(= ) in -your subclass and do whatever else you want. - -=3Dcut - -use Carp (); - -sub _carp { - my ($self, $msg) =3D @_; - Carp::carp($msg || $self); - return; -} - -sub _croak { - my ($self, $msg) =3D @_; - Carp::croak($msg || $self); - return; -} - -=3Dhead1 EFFICIENCY - -Class::Accessor does not employ an autoloader, thus it is much faster -than you'd think. Its generated methods incur no special penalty over -ones you'd write yourself. - - accessors: - Rate Basic Average Fast Faster Direct - Basic 189150/s -- -42% -51% -55% -89% - Average 327679/s 73% -- -16% -22% -82% - Fast 389212/s 106% 19% -- -8% -78% - Faster 421646/s 123% 29% 8% -- -76% - Direct 1771243/s 836% 441% 355% 320% -- - - mutators: - Rate Basic Average Fast Faster Direct - Basic 173769/s -- -34% -53% -59% -90% - Average 263046/s 51% -- -29% -38% -85% - Fast 371158/s 114% 41% -- -13% -78% - Faster 425821/s 145% 62% 15% -- -75% - Direct 1699081/s 878% 546% 358% 299% -- - -Class::Accessor::Fast is faster than methods written by an average programmer -(where "average" is based on Schwern's example code). - -Class::Accessor is slower than average, but more flexible. - -Class::Accessor::Faster is even faster than Class::Accessor::Fast. It uses = an -array internally, not a hash. This could be a good or bad feature depending= on -your point of view. - -Direct hash access is, of course, much faster than all of these, but it -provides no encapsulation. - -Of course, its not as simple as saying "Class::Accessor is slower than -average". These are benchmarks for a simple accessor. If your accessors do -any sort of complicated work (such as talking to a database or writing to a -file) the time spent doing that work will quickly swamp the time spend just -calling the accessor. In that case, Class::Accessor and the ones you write -will be roughly the same speed. - - -=3Dhead1 EXAMPLES - -Here's an example of generating an accessor for every public field of -your class. - - package Altoids; - =20 - use base qw(Class::Accessor Class::Fields); - use fields qw(curiously strong mints); - Altoids->mk_accessors( Altoids->show_fields('Public') ); - - sub new { - my $proto =3D shift; - my $class =3D ref $proto || $proto; - return fields::new($class); - } - - my Altoids $tin =3D Altoids->new; - - $tin->curiously('Curiouser and curiouser'); - print $tin->{curiously}; # prints 'Curiouser and curiouser' - - =20 - # Subclassing works, too. - package Mint::Snuff; - use base qw(Altoids); - - my Mint::Snuff $pouch =3D Mint::Snuff->new; - $pouch->strong('Blow your head off!'); - print $pouch->{strong}; # prints 'Blow your head off!' - - -Here's a simple example of altering the behavior of your accessors. - - package Foo; - use base qw(Class::Accessor); - Foo->mk_accessor(qw(this that up down)); - - sub get { - my $self =3D shift; - - # Note every time someone gets some data. - print STDERR "Getting @_\n"; - - $self->SUPER::get(@_); - } - - sub set { - my ($self, $key) =3D splice(@_, 0, 2); - - # Note every time someone sets some data. - print STDERR "Setting $key to @_\n"; - - $self->SUPER::set($key, @_); - } - - -=3Dhead1 CAVEATS AND TRICKS - -Class::Accessor has to do some internal wackiness to get its -job done quickly and efficiently. Because of this, there's a few -tricks and traps one must know about. - -Hey, nothing's perfect. - -=3Dhead2 Don't make a field called DESTROY - -This is bad. Since DESTROY is a magical method it would be bad for us -to define an accessor using that name. Class::Accessor will -carp if you try to use it with a field named "DESTROY". - -=3Dhead2 Overriding autogenerated accessors - -You may want to override the autogenerated accessor with your own, yet -have your custom accessor call the default one. For instance, maybe -you want to have an accessor which checks its input. Normally, one -would expect this to work: - - package Foo; - use base qw(Class::Accessor); - Foo->mk_accessors(qw(email this that whatever)); - - # Only accept addresses which look valid. - sub email { - my($self) =3D shift; - my($email) =3D @_; - - if( @_ ) { # Setting - require Email::Valid; - unless( Email::Valid->address($email) ) { - carp("$email doesn't look like a valid address."); - return; - } - } - - return $self->SUPER::email(@_); - } - -There's a subtle problem in the last example, and its in this line: - - return $self->SUPER::email(@_); - -If we look at how Foo was defined, it called mk_accessors() which -stuck email() right into Foo's namespace. There *is* no -SUPER::email() to delegate to! Two ways around this... first is to -make a "pure" base class for Foo. This pure class will generate the -accessors and provide the necessary super class for Foo to use: - - package Pure::Organic::Foo; - use base qw(Class::Accessor); - Pure::Organic::Foo->mk_accessors(qw(email this that whatever)); - - package Foo; - use base qw(Pure::Organic::Foo); - -And now Foo::email() can override the generated -Pure::Organic::Foo::email() and use it as SUPER::email(). - -This is probably the most obvious solution to everyone but me. -Instead, what first made sense to me was for mk_accessors() to define -an alias of email(), _email_accessor(). Using this solution, -Foo::email() would be written with: - - return $self->_email_accessor(@_); - -instead of the expected SUPER::email(). - - -=3Dhead1 AUTHORS - -Copyright 2007 Marty Pauley <marty+perl(a)kasei.com> - -This program is free software; you can redistribute it and/or modify it under -the same terms as Perl itself. That means either (a) the GNU General Public -License or (b) the Artistic License. - -=3Dhead2 ORIGINAL AUTHOR - -Michael G Schwern <schwern(a)pobox.com> - -=3Dhead2 THANKS - -Liz and RUZ for performance tweaks. - -Tels, for his big feature request/bug report. - - -=3Dhead1 SEE ALSO - -L<Class::Accessor::Fast> - -These are some modules which do similar things in different ways -L<Class::Struct>, L<Class::Methodmaker>, L<Class::Generate>, -L<Class::Class>, L<Class::Contract> - -L<Class::DBI> for an example of this module in use. - -=3Dcut - -1; diff --git a/config/mpfire/perl/Accessor/Fast.pm b/config/mpfire/perl/Accesso= r/Fast.pm deleted file mode 100755 index 6522923f5..000000000 --- a/config/mpfire/perl/Accessor/Fast.pm +++ /dev/null @@ -1,94 +0,0 @@ -package Class::Accessor::Fast; -use base 'Class::Accessor'; -use strict; -$Class::Accessor::Fast::VERSION =3D '0.31'; - -=3Dhead1 NAME - -Class::Accessor::Fast - Faster, but less expandable, accessors - -=3Dhead1 SYNOPSIS - - package Foo; - use base qw(Class::Accessor::Fast); - - # The rest is the same as Class::Accessor but without set() and get(). - -=3Dhead1 DESCRIPTION - -This is a faster but less expandable version of Class::Accessor. -Class::Accessor's generated accessors require two method calls to accompish -their task (one for the accessor, another for get() or set()). -Class::Accessor::Fast eliminates calling set()/get() and does the access its= elf, -resulting in a somewhat faster accessor. - -The downside is that you can't easily alter the behavior of your -accessors, nor can your subclasses. Of course, should you need this -later, you can always swap out Class::Accessor::Fast for -Class::Accessor. - -Read the documentation for Class::Accessor for more info. - -=3Dcut - -sub make_accessor { - my($class, $field) =3D @_; - - return sub { - return $_[0]->{$field} if @_ =3D=3D 1; - return $_[0]->{$field} =3D $_[1] if @_ =3D=3D 2; - return (shift)->{$field} =3D \@_; - }; -} - - -sub make_ro_accessor { - my($class, $field) =3D @_; - - return sub { - return $_[0]->{$field} if @_ =3D=3D 1; - my $caller =3D caller; - $_[0]->_croak("'$caller' cannot alter the value of '$field' on objec= ts of class '$class'"); - }; -} - - -sub make_wo_accessor { - my($class, $field) =3D @_; - - return sub { - if (@_ =3D=3D 1) { - my $caller =3D caller; - $_[0]->_croak("'$caller' cannot access the value of '$field' on = objects of class '$class'"); - } - else { - return $_[0]->{$field} =3D $_[1] if @_ =3D=3D 2; - return (shift)->{$field} =3D \@_; - } - }; -} - - -=3Dhead1 EFFICIENCY - -L<Class::Accessor/EFFICIENCY> for an efficiency comparison. - -=3Dhead1 AUTHORS - -Copyright 2007 Marty Pauley <marty+perl(a)kasei.com> - -This program is free software; you can redistribute it and/or modify it under -the same terms as Perl itself. That means either (a) the GNU General Public -License or (b) the Artistic License. - -=3Dhead2 ORIGINAL AUTHOR - -Michael G Schwern <schwern(a)pobox.com> - -=3Dhead1 SEE ALSO - -L<Class::Accessor> - -=3Dcut - -1; diff --git a/config/mpfire/perl/Accessor/Faster.pm b/config/mpfire/perl/Acces= sor/Faster.pm deleted file mode 100755 index 8f81ff9d0..000000000 --- a/config/mpfire/perl/Accessor/Faster.pm +++ /dev/null @@ -1,105 +0,0 @@ -package Class::Accessor::Faster; -use base 'Class::Accessor'; -use strict; -$Class::Accessor::Faster::VERSION =3D '0.31'; - -=3Dhead1 NAME - -Class::Accessor::Faster - Even faster, but less expandable, accessors - -=3Dhead1 SYNOPSIS - - package Foo; - use base qw(Class::Accessor::Faster); - -=3Dhead1 DESCRIPTION - -This is a faster but less expandable version of Class::Accessor::Fast. - -Class::Accessor's generated accessors require two method calls to accompish -their task (one for the accessor, another for get() or set()). - -Class::Accessor::Fast eliminates calling set()/get() and does the access its= elf, -resulting in a somewhat faster accessor. - -Class::Accessor::Faster uses an array reference underneath to be faster. - -Read the documentation for Class::Accessor for more info. - -=3Dcut - -my %slot; -sub _slot { - my($class, $field) =3D @_; - my $n =3D $slot{$class}->{$field}; - return $n if defined $n; - $n =3D keys %{$slot{$class}}; - $slot{$class}->{$field} =3D $n; - return $n; -} - -sub new { - my($proto, $fields) =3D @_; - my($class) =3D ref $proto || $proto; - my $self =3D bless [], $class; - - $fields =3D {} unless defined $fields; - for my $k (keys %$fields) { - my $n =3D $class->_slot($k); - $self->[$n] =3D $fields->{$k}; - } - return $self; -} - -sub make_accessor { - my($class, $field) =3D @_; - my $n =3D $class->_slot($field); - return sub { - return $_[0]->[$n] if @_ =3D=3D 1; - return $_[0]->[$n] =3D $_[1] if @_ =3D=3D 2; - return (shift)->[$n] =3D \@_; - }; -} - - -sub make_ro_accessor { - my($class, $field) =3D @_; - my $n =3D $class->_slot($field); - return sub { - return $_[0]->[$n] if @_ =3D=3D 1; - my $caller =3D caller; - $_[0]->_croak("'$caller' cannot alter the value of '$field' on objec= ts of class '$class'"); - }; -} - - -sub make_wo_accessor { - my($class, $field) =3D @_; - my $n =3D $class->_slot($field); - return sub { - if (@_ =3D=3D 1) { - my $caller =3D caller; - $_[0]->_croak("'$caller' cannot access the value of '$field' on = objects of class '$class'"); - } else { - return $_[0]->[$n] =3D $_[1] if @_ =3D=3D 2; - return (shift)->[$n] =3D \@_; - } - }; -} - - -=3Dhead1 AUTHORS - -Copyright 2007 Marty Pauley <marty+perl(a)kasei.com> - -This program is free software; you can redistribute it and/or modify it under -the same terms as Perl itself. That means either (a) the GNU General Public -License or (b) the Artistic License. - -=3Dhead1 SEE ALSO - -L<Class::Accessor> - -=3Dcut - -1; diff --git a/config/mpfire/perl/Audio/MPD.pm b/config/mpfire/perl/Audio/MPD.pm deleted file mode 100644 index 0bfbc485e..000000000 --- a/config/mpfire/perl/Audio/MPD.pm +++ /dev/null @@ -1,897 +0,0 @@ -# -# This file is part of Audio::MPD -# Copyright (c) 2007 Jerome Quelin, all rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# - -package Audio::MPD; - -use warnings; -use strict; - -use Audio::MPD::Collection; -use Audio::MPD::Common::Item; -use Audio::MPD::Common::Stats; -use Audio::MPD::Common::Status; -use Audio::MPD::Playlist; -use Encode; -use IO::Socket; -use Readonly; - - -use base qw[ Class::Accessor::Fast Exporter ]; -__PACKAGE__->mk_accessors( - qw[ _conntype _host _password _port _socket - collection playlist version ] ); - - -our $VERSION =3D '0.19.1'; - -Readonly our $REUSE =3D> 0; -Readonly our $ONCE =3D> 1; - -our @EXPORT =3D qw[ $REUSE $ONCE ]; - - -#-- -# Constructor - -# -# my $mpd =3D Audio::MPD->new( [%opts] ) -# -# This is the constructor for Audio::MPD. One can specify the following -# options: -# - hostname =3D> $hostname : defaults to environment var MPD_HOST, then t= o 'localhost' -# - port =3D> $port : defaults to env var MPD_PORT, then to 6600 -# - password =3D> $password : defaults to env var MPD_PASSWORD, then to '' -# - conntype =3D> $type : how the connection to mpd server is handled.= it can be -# either $REUSE: reuse the same connection -# or $ONCE: open a new connection per command (default) -# -sub new { - my ($class, %opts) =3D @_; - - # use mpd defaults. - my ($default_password, $default_host) =3D split( '@', $ENV{MPD_HOST} ) - if exists $ENV{MPD_HOST} && $ENV{MPD_HOST} =3D~ /@/; - my $host =3D $opts{host} || $default_host || $ENV{MPD_HOST}= || 'localhost'; - my $port =3D $opts{port} || $ENV{MPD_PORT} || '6600'; - my $password =3D $opts{password} || $ENV{MPD_PASSWORD} || $default_passw= ord || ''; - - # create & bless the object. - my $self =3D { - _host =3D> $host, - _port =3D> $port, - _password =3D> $password, - _conntype =3D> exists $opts{conntype} ? $opts{conntype} : $REUSE, - }; - bless $self, $class; - - # create the connection if conntype is set to $REUSE - $self->_connect_to_mpd_server if $self->_conntype =3D=3D $REUSE; - - - # create the helper objects and store them. - $self->collection( Audio::MPD::Collection->new($self) ); - $self->playlist ( Audio::MPD::Playlist->new($self) ); - - # try to issue a ping to test connection - this can die. - $self->ping; - - return $self; -} - - -#-- -# Private methods - - -# -# $mpd->_connect_to_mpd_server; -# -# This method connects to the mpd server. It can die on several conditions: -# - if the server cannot be reached, -# - if it's not an mpd server, -# - or if the password is incorrect, -# -sub _connect_to_mpd_server { - my ($self) =3D @_; - - # try to connect to mpd. - my $socket =3D IO::Socket::INET->new( - PeerAddr =3D> $self->_host, - PeerPort =3D> $self->_port, - ) - or die "Could not create socket: $!\n"; - - # parse version information. - my $line =3D $socket->getline; - chomp $line; - die "Not a mpd server - welcome string was: [$line]\n" - if $line !~ /^OK MPD (.+)$/; - $self->version($1); - - # send password. - if ( $self->_password ) { - $socket->print( 'password ' . encode('utf-8', $self->_password) . "\= n" ); - $line =3D $socket->getline; - die $line if $line =3D~ s/^ACK //; - } - - # save socket - $self->_socket($socket); -} - - -# -# my @result =3D $mpd->_send_command( $command ); -# -# This method is central to the module. It is responsible for interacting wi= th -# mpd by sending the $command and reading output - that will be returned as = an -# array of chomped lines (status line will not be returned). -# -# This method can die on several conditions: -# - if the server cannot be reached, -# - if it's not an mpd server, -# - if the password is incorrect, -# - or if the command is an invalid mpd command. -# In the latter case, the mpd error message will be returned. -# -sub _send_command { - my ($self, $command) =3D @_; - - $self->_connect_to_mpd_server if $self->_conntype =3D=3D $ONCE; - my $socket =3D $self->_socket; - - # ok, now we're connected - let's issue the command. - $socket->print( encode('utf-8', $command) ); - my @output; - while (defined ( my $line =3D $socket->getline ) ) { - chomp $line; - die $line if $line =3D~ s/^ACK //; # oops - error. - last if $line =3D~ /^OK/; # end of output. - push @output, decode('utf-8', $line); - } - - # close the socket. - $socket->close if $self->_conntype =3D=3D $ONCE; - - return @output; -} - - -# -# my @items =3D $mpd->_cooked_command_as_items( $command ); -# -# Lots of Audio::MPD methods are using _send_command() and then parse the -# output as a collection of AMC::Item. This method is meant to factorize -# this code, and will parse the raw output of _send_command() in a cooked -# list of items. -# -sub _cooked_command_as_items { - my ($self, $command) =3D @_; - - my @lines =3D $self->_send_command($command); - my (@items, %param); - - # parse lines in reverse order since "file:" or "directory:" lines - # come first. therefore, let's first store every other parameter, - # and the last line will trigger the object creation. - # of course, since we want to preserve the playlist order, this means - # that we're going to unshift the objects instead of push. - foreach my $line (reverse @lines) { - my ($k,$v) =3D split /:\s/, $line, 2; - $param{$k} =3D $v; - next unless $k eq 'file' || $k eq 'directory' || $k eq 'playlist'; #= last param of item - unshift @items, Audio::MPD::Common::Item->new(%param); - %param =3D (); - } - - return @items; -} - - -sub _cooked_command_as_filename { - my ($self, $command) =3D @_; - - my @lines =3D $self->_send_command($command); - my (@items, %param); - - # parse lines in reverse order since "file:" or "directory:" lines - # come first. therefore, let's first store every other parameter, - # and the last line will trigger the object creation. - # of course, since we want to preserve the playlist order, this means - # that we're going to unshift the objects instead of push. - foreach my $line (@lines) { - my ($k,$v) =3D split /:\s/, $line, 2; - if ( $k eq 'file'){$param{$k} =3D $v;} - unshift @items, $param{'file'}; - %param =3D (); - } - - return @items; -} - -# -# my %hash =3D $mpd->_cooked_command_as_kv( $command ); -# -# Lots of Audio::MPD methods are using _send_command() and then parse the -# output to get a list of key / value (with the colon ":" acting as separato= r). -# This method is meant to factorize this code, and will parse the raw output -# of _send_command() in a cooked hash. -# -sub _cooked_command_as_kv { - my ($self, $command) =3D @_; - my %hash =3D - map { split(/:\s/, $_, 2) } - $self->_send_command($command); - return %hash; -} - -# -# my @list =3D $mpd->_cooked_command_strip_first_field( $command ); -# -# Lots of Audio::MPD methods are using _send_command() and then parse the -# output to remove the first field (with the colon ":" acting as separator). -# This method is meant to factorize this code, and will parse the raw output -# of _send_command() in a cooked list of strings. -# -sub _cooked_command_strip_first_field { - my ($self, $command) =3D @_; - - my @list =3D - map { ( split(/:\s+/, $_, 2) )[1] } - $self->_send_command($command); - return @list; -} - - -#-- -# Public methods - -# -- MPD interaction: general commands - -# -# $mpd->ping; -# -# Sends a ping command to the mpd server. -# -sub ping { - my ($self) =3D @_; - $self->_send_command( "ping\n" ); -} - - -# -# my $version =3D $mpd->version; -# -# Return version of MPD server's connected. -# -# sub version {} # implemented as an accessor. -# - - -# -# $mpd->kill; -# -# Send a message to the MPD server telling it to shut down. -# -sub kill { - my ($self) =3D @_; - $self->_send_command("kill\n"); -} - - -# -# $mpd->password( [$password] ) -# -# Change password used to communicate with MPD server to $password. -# Empty string is assumed if $password is not supplied. -# -sub password { - my ($self, $passwd) =3D @_; - $passwd ||=3D ''; - $self->_password($passwd); - $self->ping; # ping sends a command, and thus the password is sent -} - - -# -# $mpd->updatedb( [$path] ); -# -# Force mpd to rescan its collection. If $path (relative to MPD's music -# directory) is supplied, MPD will only scan it - otherwise, MPD will rescan -# its whole collection. -# -sub updatedb { - my ($self, $path) =3D @_; - $path ||=3D ''; - $self->_send_command("update $path\n"); -} - - -# -# my @handlers =3D $mpd->urlhandlers; -# -# Return an array of supported URL schemes. -# -sub urlhandlers { - my ($self) =3D @_; - return $self->_cooked_command_strip_first_field("urlhandlers\n"); -} - - -# -- MPD interaction: handling volume & output - -# -# $mpd->volume( [+][-]$volume ); -# -# Sets the audio output volume percentage to absolute $volume. -# If $volume is prefixed by '+' or '-' then the volume is changed relatively -# by that value. -# -sub volume { - my ($self, $volume) =3D @_; - - if ($volume =3D~ /^(-|\+)(\d+)/ ) { - my $current =3D $self->status->volume; - $volume =3D $1 eq '+' ? $current + $2 : $current - $2; - } - $self->_send_command("setvol $volume\n"); -} - - -# -# $mpd->output_enable( $output ); -# -# Enable the specified audio output. $output is the ID of the audio output. -# -sub output_enable { - my ($self, $output) =3D @_; - $self->_send_command("enableoutput $output\n"); -} - - -# -# $mpd->output_disable( $output ); -# -# Disable the specified audio output. $output is the ID of the audio output. -# -sub output_disable { - my ($self, $output) =3D @_; - $self->_send_command("disableoutput $output\n"); -} - - - -# -- MPD interaction: retrieving info from current state - -# -# $mpd->stats; -# -# Return an AMC::Stats object with the current statistics of MPD. -# -sub stats { - my ($self) =3D @_; - my %kv =3D $self->_cooked_command_as_kv( "stats\n" ); - return Audio::MPD::Common::Stats->new(\%kv); -} - - -# -# my $status =3D $mpd->status; -# -# Return an AMC::Status object with various information on current -# MPD server settings. Check the embedded pod for more information on the -# available accessors. -# -sub status { - my ($self) =3D @_; - my %kv =3D $self->_cooked_command_as_kv( "status\n" ); - my $status =3D Audio::MPD::Common::Status->new( \%kv ); - return $status; -} - - -# -# my $song =3D $mpd->current; -# -# Return an AMC::Item::Song representing the song currently playing. -# -sub current { - my ($self) =3D @_; - my ($item) =3D $self->_cooked_command_as_items("currentsong\n"); - return $item; -} - - -# -# my $song =3D $mpd->song( [$song] ) -# -# Return an AMC::Item::Song representing the song number $song. -# If $song is not supplied, returns the current song. -# -sub song { - my ($self, $song) =3D @_; - return $self->current unless defined $song; - my ($item) =3D $self->_cooked_command_as_items("playlistinfo $song\n"); - return $item; -} - - -# -# my $song =3D $mpd->songid( [$songid] ) -# -# Return an AMC::Item::Song representing the song with id $songid. -# If $songid is not supplied, returns the current song. -# -sub songid { - my ($self, $songid) =3D @_; - return $self->current unless defined $songid; - my ($item) =3D $self->_cooked_command_as_items("playlistid $songid\n"); - return $item; -} - - -# -- MPD interaction: altering settings - -# -# $mpd->repeat( [$repeat] ); -# -# Set the repeat mode to $repeat (1 or 0). If $repeat is not specified then -# the repeat mode is toggled. -# -sub repeat { - my ($self, $mode) =3D @_; - - $mode =3D not $self->status->repeat - unless defined $mode; # toggle if no param - $mode =3D $mode ? 1 : 0; # force integer - $self->_send_command("repeat $mode\n"); -} - - -# -# $mpd->random( [$random] ); -# -# Set the random mode to $random (1 or 0). If $random is not specified then -# the random mode is toggled. -# -sub random { - my ($self, $mode) =3D @_; - - $mode =3D not $self->status->random - unless defined $mode; # toggle if no param - $mode =3D $mode ? 1 : 0; # force integer - $self->_send_command("random $mode\n"); -} - - -# -# $mpd->fade( [$seconds] ); -# -# Enable crossfading and set the duration of crossfade between songs. If -# $seconds is not specified or $seconds is 0, then crossfading is disabled. -# -sub fade { - my ($self, $value) =3D @_; - $value ||=3D 0; - $self->_send_command("crossfade $value\n"); -} - - -# -- MPD interaction: controlling playback - -# -# $mpd->play( [$song] ); -# -# Begin playing playlist at song number $song. If no argument supplied, -# resume playing. -# -sub play { - my ($self, $number) =3D @_; - $number =3D '' unless defined $number; - $self->_send_command("play $number\n"); -} - -# -# $mpd->playid( [$songid] ); -# -# Begin playing playlist at song ID $songid. If no argument supplied, -# resume playing. -# -sub playid { - my ($self, $number) =3D @_; - $number ||=3D ''; - $self->_send_command("playid $number\n"); -} - - -# -# $mpd->pause( [$sate] ); -# -# Pause playback. If $state is 0 then the current track is unpaused, if -# $state is 1 then the current track is paused. -# -# Note that if $state is not given, pause state will be toggled. -# -sub pause { - my ($self, $state) =3D @_; - $state ||=3D ''; # default is to toggle - $self->_send_command("pause $state\n"); -} - - -# -# $mpd->stop; -# -# Stop playback. -# -sub stop { - my ($self) =3D @_; - $self->_send_command("stop\n"); -} - - -# -# $mpd->next; -# -# Play next song in playlist. -# -sub next { - my ($self) =3D @_; - $self->_send_command("next\n"); -} - -# -# $mpd->prev; -# -# Play previous song in playlist. -# -sub prev { - my($self) =3D shift; - $self->_send_command("previous\n"); -} - - -# -# $mpd->seek( $time, [$song] ); -# -# Seek to $time seconds in song number $song. If $song number is not specifi= ed -# then the perl module will try and seek to $time in the current song. -# -sub seek { - my ($self, $time, $song) =3D @_; - $time ||=3D 0; $time =3D int $time; - $song =3D $self->status->song if not defined $song; # seek in current so= ng - $self->_send_command( "seek $song $time\n" ); -} - - -# -# $mpd->seekid( $time, [$songid] ); -# -# Seek to $time seconds in song ID $songid. If $songid number is not specifi= ed -# then the perl module will try and seek to $time in the current song. -# -sub seekid { - my ($self, $time, $song) =3D @_; - $time ||=3D 0; $time =3D int $time; - $song =3D $self->status->songid if not defined $song; # seek in current = song - $self->_send_command( "seekid $song $time\n" ); -} - - -1; - - - -__END__ - -=3Dpod - -=3Dhead1 NAME - -Audio::MPD - class to talk to MPD (Music Player Daemon) servers - - -=3Dhead1 SYNOPSIS - - use Audio::MPD; - - my $mpd =3D Audio::MPD->new(); - $mpd->play(); - sleep 10; - $mpd->next(); - - -=3Dhead1 DESCRIPTION - -Audio::MPD gives a clear object-oriented interface for talking to and -controlling MPD (Music Player Daemon) servers. A connection to the MPD -server is established as soon as a new Audio::MPD object is created. - -Note that the module will by default connect to mpd before sending any -command, and will disconnect after the command has been issued. This scheme -is far from optimal, but allows us not to care about timeout disconnections. - -B</!\> Note that Audio::MPD is using high-level, blocking sockets. This -means that if the mpd server is slow, or hangs for whatever reason, or -even crash abruptly, the program will be hung forever in this sub. The -POE::Component::Client::MPD module is way safer - you're advised to use -it instead of Audio::MPD. Or you can try to set C<conntype> to C<$REUSE> -(see Audio::MPD constructor for more details), but you would be then on -your own to deal with disconnections. - - -=3Dhead1 METHODS - -=3Dhead2 Constructor - -=3Dover 4 - -=3Ditem new( [%opts] ) - -This is the constructor for Audio::MPD. One can specify the following -options: - -=3Dover 4 - -=3Ditem hostname =3D> C<$hostname> - -defaults to environment var MPD_HOST, then to 'localhost'. Note that -MPD_HOST can be of the form password(a)host. - -=3Ditem port =3D> C<$port> - -defaults to environment var MPD_PORT, then to 6600. - -=3Ditem password =3D> $password - -defaults to environment var MPD_PASSWORD, then to ''. - -=3Ditem conntype =3D> $type - -change how the connection to mpd server is handled. It can be either -C<$REUSE> to reuse the same connection or C<$ONCE> to open a new -connection per command (default) - -=3Dback - - -=3Dback - - -=3Dhead2 Controlling the server - -=3Dover 4 - -=3Ditem $mpd->ping() - -Sends a ping command to the mpd server. - - -=3Ditem $mpd->version() - -Return the version number for the server we are connected to. - - -=3Ditem $mpd->kill() - -Send a message to the MPD server telling it to shut down. - - -=3Ditem $mpd->password( [$password] ) - -Change password used to communicate with MPD server to $password. -Empty string is assumed if $password is not supplied. - - -=3Ditem $mpd->updatedb( [$path] ) - -Force mpd to recan its collection. If $path (relative to MPD's music directo= ry) -is supplied, MPD will only scan it - otherwise, MPD will rescan its whole -collection. - - -=3Ditem $mpd->urlhandlers() - -Return an array of supported URL schemes. - - -=3Dback - - -=3Dhead2 Handling volume & output - -=3Dover 4 - -=3Ditem $mpd->volume( [+][-]$volume ) - -Sets the audio output volume percentage to absolute $volume. -If $volume is prefixed by '+' or '-' then the volume is changed relatively -by that value. - - -=3Ditem $mpd->output_enable( $output ) - -Enable the specified audio output. $output is the ID of the audio output. - - -=3Ditem $mpd->output_disable( $output ) - -Disable the specified audio output. $output is the ID of the audio output. - -=3Dback - - -=3Dhead2 Retrieving info from current state - -=3Dover 4 - -=3Ditem $mpd->stats() - -Return an C<Audio::MPD::Common::Stats> object with the current statistics -of MPD. See the associated pod for more information. - - -=3Ditem $mpd->status() - -Return an C<Audio::MPD::Common::Status> object with various information on -current MPD server settings. Check the embedded pod for more information on -the available accessors. - - -=3Ditem $mpd->current() - -Return an C<Audio::MPD::Common::Item::Song> representing the song currently -playing. - - -=3Ditem $mpd->song( [$song] ) - -Return an C<Audio::MPD::Common::Item::Song> representing the song number -C<$song>. If C<$song> is not supplied, returns the current song. - - -=3Ditem $mpd->songid( [$songid] ) - -Return an C<Audio::MPD::Common::Item::Song> representing the song with id -C<$songid>. If C<$songid> is not supplied, returns the current song. - -=3Dback - - -=3Dhead2 Altering MPD settings - -=3Dover 4 - -=3Ditem $mpd->repeat( [$repeat] ) - -Set the repeat mode to $repeat (1 or 0). If $repeat is not specified then -the repeat mode is toggled. - - -=3Ditem $mpd->random( [$random] ) - -Set the random mode to $random (1 or 0). If $random is not specified then -the random mode is toggled. - - -=3Ditem $mpd->fade( [$seconds] ) - -Enable crossfading and set the duration of crossfade between songs. -If $seconds is not specified or $seconds is 0, then crossfading is disabled. - -=3Dback - - -=3Dhead2 Controlling playback - -=3Dover 4 - -=3Ditem $mpd->play( [$song] ) - -Begin playing playlist at song number $song. If no argument supplied, -resume playing. - - -=3Ditem $mpd->playid( [$songid] ) - -Begin playing playlist at song ID $songid. If no argument supplied, -resume playing. - - -=3Ditem $mpd->pause( [$state] ) - -Pause playback. If C<$state> is 0 then the current track is unpaused, -if $state is 1 then the current track is paused. - -Note that if C<$state> is not given, pause state will be toggled. - - -=3Ditem $mpd->stop() - -Stop playback. - - -=3Ditem $mpd->next() - -Play next song in playlist. - - -=3Ditem $mpd->prev() - -Play previous song in playlist. - - -=3Ditem $mpd->seek( $time, [$song]) - -Seek to $time seconds in song number $song. If $song number is not specified -then the perl module will try and seek to $time in the current song. - - -=3Ditem $mpd->seekid( $time, $songid ) - -Seek to $time seconds in song ID $songid. If $song number is not specified -then the perl module will try and seek to $time in the current song. - -=3Dback - - -=3Dhead2 Searching the collection - -To search the collection, use the C<collection()> accessor, returning the -associated C<Audio::MPD::Collection> object. You will then be able to call: - - $mpd->collection->random_song(); - -See C<Audio::MPD::Collection> documentation for more details on available -methods. - - -=3Dhead2 Handling the playlist - -To update the playlist, use the C<playlist()> accessor, returning the -associated C<Audio::MPD::Playlist> object. You will then be able to call: - - $mpd->playlist->clear; - -See C<Audio::MPD::Playlist> documentation for more details on available -methods. - - -=3Dhead1 SEE ALSO - -You can find more information on the mpd project on its homepage at -L<http://www.musicpd.org>, or its wiki L<http://mpd.wikia.com>. - -Regarding this Perl module, you can report bugs on CPAN via -L<http://rt.cpan.org/Public/Bug/Report.html?Queue=3DAudio-MPD>. - -Audio::MPD development takes place on <audio-mpd(a)googlegroups.com>: feel f= ree -to join us. (use L<http://groups.google.com/group/audio-mpd> to sign in). Our -subversion repository is located at L<https://svn.musicpd.org>. - - -=3Dhead1 AUTHOR - -Jerome Quelin, C<< <jquelin at cpan.org> >> - -Original code by Tue Abrahamsen C<< <tue.abrahamsen at gmail.com> >>, -documented by Nicholas J. Humfrey C<< <njh at aelius.com> >>. - - -=3Dhead1 COPYRIGHT & LICENSE - -Copyright (c) 2005 Tue Abrahamsen, all rights reserved. -Copyright (c) 2006 Nicolas J. Humfrey, all rights reserved. -Copyright (c) 2007 Jerome Quelin, all rights reserved. - -This program is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=3Dcut diff --git a/config/mpfire/perl/Audio/MPD/Collection.pm b/config/mpfire/perl/= Audio/MPD/Collection.pm deleted file mode 100644 index 727512808..000000000 --- a/config/mpfire/perl/Audio/MPD/Collection.pm +++ /dev/null @@ -1,594 +0,0 @@ -# -# This file is part of Audio::MPD -# Copyright (c) 2007 Jerome Quelin, all rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# - -package Audio::MPD::Collection; - -use strict; -use warnings; -use Scalar::Util qw[ weaken ]; - -use base qw[ Class::Accessor::Fast ]; -__PACKAGE__->mk_accessors( qw[ _mpd ] ); - - -#our ($VERSION) =3D '$Rev: 5284 $' =3D~ /(\d+)/; - - -#-- -# Constructor - -# -# my $collection =3D Audio::MPD::Collection->new( $mpd ); -# -# This will create the object, holding a back-reference to the Audio::MPD -# object itself (for communication purposes). But in order to play safe and -# to free the memory in time, this reference is weakened. -# -# Note that you're not supposed to call this constructor yourself, an -# Audio::MPD::Collection is automatically created for you during the creation -# of an Audio::MPD object. -# -sub new { - my ($pkg, $mpd) =3D @_; - - my $self =3D { _mpd =3D> $mpd }; - weaken( $self->{_mpd} ); - bless $self, $pkg; - return $self; -} - - -#-- -# Public methods - -# -- Collection: retrieving songs & directories - -# -# my @items =3D $collection->all_items( [$path] ); -# -# Return *all* AMC::Items (both songs & directories) currently known -# by mpd. -# -# If $path is supplied (relative to mpd root), restrict the retrieval to -# songs and dirs in this directory. -# -sub all_items { - my ($self, $path) =3D @_; - $path ||=3D ''; - $path =3D~ s/"/\\"/g; - - return $self->_mpd->_cooked_command_as_items( qq[listallinfo "$path"\n] = ); -} - - -# -# my @items =3D $collection->all_items_simple( [$path] ); -# -# Return *all* AMC::Items (both songs & directories) currently known -# by mpd. -# -# If $path is supplied (relative to mpd root), restrict the retrieval to -# songs and dirs in this directory. -# -# /!\ Warning: the AMC::Item::Song objects will only have their tag -# file filled. Any other tag will be empty, so don't use this sub for any -# other thing than a quick scan! -# -sub all_items_simple { - my ($self, $path) =3D @_; - $path ||=3D ''; - $path =3D~ s/"/\\"/g; - - return $self->_mpd->_cooked_command_as_items( qq[listall "$path"\n] ); -} - - -# -# my @items =3D $collection->items_in_dir( [$path] ); -# -# Return the items in the given $path. If no $path supplied, do it on mpd's -# root directory. -# -# Note that this sub does not work recusrively on all directories. -# -sub items_in_dir { - my ($self, $path) =3D @_; - $path ||=3D ''; - $path =3D~ s/"/\\"/g; - - return $self->_mpd->_cooked_command_as_items( qq[lsinfo "$path"\n] ); -} - - - -# -- Collection: retrieving the whole collection - -# -# my @songs =3D $collection->all_songs( [$path] ); -# -# Return *all* AMC::Item::Songs currently known by mpd. -# -# If $path is supplied (relative to mpd root), restrict the retrieval to -# songs and dirs in this directory. -# -sub all_songs { - my ($self, $path) =3D @_; - return grep { $_->isa('Audio::MPD::Common::Item::Song') } $self->all_ite= ms($path); -} - - -# -# my @albums =3D $collection->all_albums; -# -# Return the list of all albums (strings) currently known by mpd. -# -sub all_albums { - my ($self) =3D @_; - return $self->_mpd->_cooked_command_strip_first_field( "list album\n" ); -} - - -# -# my @artists =3D $collection->all_artists; -# -# Return the list of all artists (strings) currently known by mpd. -# -sub all_artists { - my ($self) =3D @_; - return $self->_mpd->_cooked_command_strip_first_field( "list artist\n" ); -} - - -# -# my @titles =3D $collection->all_titles; -# -# Return the list of all titles (strings) currently known by mpd. -# -sub all_titles { - my ($self) =3D @_; - return $self->_mpd->_cooked_command_strip_first_field( "list title\n" ); -} - - -# -# my @genre =3D $collection->all_genre; -# -# Return the list of all genres (strings) currently known by mpd. -# -sub all_genre { - my ($self) =3D @_; - return $self->_mpd->_cooked_command_strip_first_field( "list genre\n" ); -} - - -# -# my @yers =3D $collection->all_years; -# -# Return the list of all years (strings) currently known by mpd. -# -sub all_years { - my ($self) =3D @_; - return $self->_mpd->_cooked_command_strip_first_field( "list date\n" ); -} - - -# -# my @pathes =3D $collection->all_pathes; -# -# Return the list of all pathes (strings) currently known by mpd. -# -sub all_pathes { - my ($self) =3D @_; - return $self->_mpd->_cooked_command_strip_first_field( "list filename\n"= ); -} - - -# -# my @items =3D $collection->all_playlists; -# -# Return the list of playlists (strings) currently known by mpd. -# -sub all_playlists { - my ($self) =3D @_; - - return - map { /^playlist: (.*)$/ ? ($1) : () } - $self->_mpd->_send_command( "lsinfo\n" ); -} - - - -# -- Collection: picking songs - -# -# my $song =3D $collection->song( $path ); -# -# Return the AMC::Item::Song which correspond to $path. -# -sub song { - my ($self, $what) =3D @_; - $what =3D~ s/"/\\"/g; - - my ($item) =3D $self->_mpd->_cooked_command_as_items( qq[find filename "= $what"\n] ); - return $item; -} - - -# -# my $song =3D $collection->songs_with_filename_partial( $path ); -# -# Return the AMC::Item::Songs containing $string in their path. -# -sub songs_with_filename_partial { - my ($self, $what) =3D @_; - $what =3D~ s/"/\\"/g; - - return $self->_mpd->_cooked_command_as_items( qq[search filename "$what"= \n] ); -} - - -# -- Collection: songs, albums & artists relations - -# -# my @albums =3D $collection->albums_by_artist($artist); -# -# Return all albums (strings) performed by $artist or where $artist -# participated. -# -sub albums_by_artist { - my ($self, $artist) =3D @_; - $artist =3D~ s/"/\\"/g; - return $self->_mpd->_cooked_command_strip_first_field( qq[list album "$a= rtist"\n] ); -} - - -# -# my @songs =3D $collection->songs_by_artist( $genre ); -# -# Return all AMC::Item::Songs performed in $genre. -# - -sub songs_by_genre { - my ($self, $what) =3D @_; - $what =3D~ s/"/\\"/g; - - return $self->_mpd->_cooked_command_as_items( qq[find genre "$what"\n] ); -} - - -sub filenames_by_artist { - my ($self, $what) =3D @_; - $what =3D~ s/"/\\"/g; - - return $self->_mpd->_cooked_command_as_filename( qq[find artist "$what"\= n] ); -} - - -sub filenames_by_year { - my ($self, $what) =3D @_; - $what =3D~ s/"/\\"/g; - - return $self->_mpd->_cooked_command_as_filename( qq[find date "$what"\n]= ); -} - -sub filenames_by_genre { - my ($self, $what) =3D @_; - $what =3D~ s/"/\\"/g; - - return $self->_mpd->_cooked_command_as_filename( qq[find genre "$what"\n= ] ); -} - - -sub filenames_by_album { - my ($self, $what) =3D @_; - $what =3D~ s/"/\\"/g; - - return $self->_mpd->_cooked_command_as_filename( qq[find album "$what"\n= ] ); -} - - -# -# my @songs =3D $collection->songs_by_artist_partial( $string ); -# -# Return all AMC::Item::Songs performed by an artist with $string -# in her name. -# -sub songs_by_artist_partial { - my ($self, $what) =3D @_; - $what =3D~ s/"/\\"/g; - - return $self->_mpd->_cooked_command_as_items( qq[search artist "$what"\n= ] ); -} - - -# -# my @songs =3D $collection->songs_from_album( $album ); -# -# Return all AMC::Item::Songs appearing in $album. -# -sub songs_from_album { - my ($self, $what) =3D @_; - $what =3D~ s/"/\\"/g; - - return $self->_mpd->_cooked_command_as_items( qq[find album "$what"\n] ); -} - - -# -# my @songs =3D $collection->songs_from_album_partial( $string ); -# -# Return all AMC::Item::Songs appearing in album containing $string. -# -sub songs_from_album_partial { - my ($self, $what) =3D @_; - $what =3D~ s/"/\\"/g; - - return $self->_mpd->_cooked_command_as_items( qq[search album "$what"\n]= ); -} - - -# -# my @songs =3D $collection->songs_with_title( $title ); -# -# Return all AMC::Item::Songs which title is exactly $title. -# -sub songs_with_title { - my ($self, $what) =3D @_; - $what =3D~ s/"/\\"/g; - - return $self->_mpd->_cooked_command_as_items( qq[find title "$what"\n] ); -} - - -# -# my @songs =3D $collection->songs_with_title_partial( $string ); -# -# Return all AMC::Item::Songs where $string is part of the title. -# -sub songs_with_title_partial { - my ($self, $what) =3D @_; - $what =3D~ s/"/\\"/g; - - return $self->_mpd->_cooked_command_as_items( qq[search title "$what"\n]= ); -} - - -# my @songs =3D $collection->songs_with_title_partial_filename( $string ); -# -# Return all AMC::Item::Songs where $string is part of the title. -# -sub songs_with_title_partial_filename { - my ($self, $what) =3D @_; - $what =3D~ s/"/\\"/g; - - - return $self->_mpd->_cooked_command_as_filename( qq[search title "$what"= \n] ); -} - -# my @songs =3D $collection->songs_with_artist_partial_filename( $string ); -# -# Return all AMC::Item::Songs where $string is part of the artist. -# -sub songs_with_artist_partial_filename { - my ($self, $what) =3D @_; - $what =3D~ s/"/\\"/g; - - return $self->_mpd->_cooked_command_as_filename( qq[search artist "$what= "\n] ); -} - - -# my @songs =3D $collection->songs_with_album_partial_filename( $string ); -# -# Return all AMC::Item::Songs where $string is part of the album. -# -sub songs_with_album_partial_filename { - my ($self, $what) =3D @_; - $what =3D~ s/"/\\"/g; - - return $self->_mpd->_cooked_command_as_filename( qq[search album "$what"= \n] ); -} - - -1; - -__END__ - - -=3Dhead1 NAME - -Audio::MPD::Collection - an object to query MPD's collection - - -=3Dhead1 SYNOPSIS - - my $song =3D $mpd->collection->random_song; - - -=3Dhead1 DESCRIPTION - -C<Audio::MPD::Collection> is a class meant to access & query MPD's -collection. You will be able to use those high-level methods instead -of using the low-level methods provided by mpd itself. - - -=3Dhead1 PUBLIC METHODS - -=3Dhead2 Constructor - -=3Dover 4 - -=3Ditem new( $mpd ) - -This will create the object, holding a back-reference to the C<Audio::MPD> -object itself (for communication purposes). But in order to play safe and -to free the memory in time, this reference is weakened. - -Note that you're not supposed to call this constructor yourself, an -C<Audio::MPD::Collection> is automatically created for you during the creati= on -of an C<Audio::MPD> object. - -=3Dback - - -=3Dhead2 Retrieving songs & directories - -=3Dover 4 - -=3Ditem $coll->all_items( [$path] ) - -Return B<all> C<Audio::MPD::Common::Item>s (both songs & directories) -currently known by mpd. - -If C<$path> is supplied (relative to mpd root), restrict the retrieval to -songs and dirs in this directory. - - -=3Ditem $coll->all_items_simple( [$path] ) - -Return B<all> C<Audio::MPD::Common::Item>s (both songs & directories) -currently known by mpd. - -If C<$path> is supplied (relative to mpd root), restrict the retrieval to -songs and dirs in this directory. - -B</!\ Warning>: the C<Audio::MPD::Common::Item::Song> objects will only have -their tag file filled. Any other tag will be empty, so don't use this sub for -any other thing than a quick scan! - - -=3Ditem $coll->items_in_dir( [$path] ) - -Return the items in the given C<$path>. If no C<$path> supplied, do it on -mpd's root directory. - -Note that this sub does not work recusrively on all directories. - - -=3Dback - - -=3Dhead2 Retrieving the whole collection - -=3Dover 4 - -=3Ditem $coll->all_songs( [$path] ) - -Return B<all> C<Audio::MPD::Common::Item::Song>s currently known by mpd. - -If C<$path> is supplied (relative to mpd root), restrict the retrieval to -songs and dirs in this directory. - - -=3Ditem $coll->all_albums() - -Return the list of all albums (strings) currently known by mpd. - - -=3Ditem $coll->all_artists() - -Return the list of all artists (strings) currently known by mpd. - - -=3Ditem $coll->all_titles() - -Return the list of all song titles (strings) currently known by mpd. - - -=3Ditem $coll->all_pathes() - -Return the list of all pathes (strings) currently known by mpd. - - -=3Ditem $coll->all_playlists() - -Return the list of all playlists (strings) currently known by mpd. - - -=3Dback - - -=3Dhead2 Picking a song - -=3Dover 4 - -=3Ditem $coll->song( $path ) - -Return the C<Audio::MPD::Common::Item::Song> which correspond to C<$path>. - - -=3Ditem $coll->songs_with_filename_partial( $path ) - -Return the C<Audio::MPD::Common::Item::Song>s containing $string in their pa= th. - - -=3Dback - - -=3Dhead2 Songs, albums & artists relations - -=3Dover 4 - -=3Ditem $coll->albums_by_artist( $artist ) - -Return all albums (strings) performed by C<$artist> or where C<$artist> -participated. - - -=3Ditem $coll->songs_by_artist( $artist ) - -Return all C<Audio::MPD::Common::Item::Song>s performed by C<$artist>. - - -=3Ditem $coll->songs_by_artist_partial( $string ) - -Return all C<Audio::MPD::Common::Item::Song>s performed by an artist with -C<$string> in her name. - - -=3Ditem $coll->songs_from_album( $album ) - -Return all C<Audio::MPD::Common::Item::Song>s appearing in C<$album>. - - -=3Ditem $coll->songs_from_album_partial( $string ) - -Return all C<Audio::MPD::Common::Item::Song>s appearing in album containing = C<$string>. - - -=3Ditem $coll->songs_with_title( $title ) - -Return all C<Audio::MPD::Common::Item::Song>s which title is exactly C<$titl= e>. - - -=3Ditem $coll->songs_with_title_partial( $string ) - -Return all C<Audio::MPD::Common::Item::Song>s where C<$string> is part of th= e title. - - -=3Dback - - -=3Dhead1 SEE ALSO - -L<Audio::MPD> - - -=3Dhead1 AUTHOR - -Jerome Quelin, C<< <jquelin at cpan.org> >> - - -=3Dhead1 COPYRIGHT & LICENSE - -Copyright (c) 2007 Jerome Quelin, all rights reserved. - -This program is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=3Dcut diff --git a/config/mpfire/perl/Audio/MPD/Common.pm b/config/mpfire/perl/Audi= o/MPD/Common.pm deleted file mode 100644 index 07de83c20..000000000 --- a/config/mpfire/perl/Audio/MPD/Common.pm +++ /dev/null @@ -1,88 +0,0 @@ -# -# This file is part of Audio::MPD::Common -# Copyright (c) 2007 Jerome Quelin, all rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# - -package Audio::MPD::Common; - -use warnings; -use strict; -our $VERSION =3D '0.1.2'; - -1; - -__END__ - - -=3Dhead1 NAME - -Audio::MPD::Common - a bunch of common helper classes for mpd - - -=3Dhead1 DESCRIPTION - -Depending on whether you're using a POE-aware environment or not, people -wanting to tinker with mpd (Music Player Daemon) will use either -L<POE::Component::Client::MPD> or L<Audio::MPD>. - -But even if the run-cores of those two modules differ completely, they -are using the exact same common classes to represent the various mpd -states and information. - -Therefore, those common classes have been outsourced to -L<Audio::MPD::Common>. - -This module does not export any methods, but the dist provides the -following classes that you can query with perldoc: - -=3Dover 4 - -=3Ditem o L<Audio::MPD::Common::Item> - -=3Ditem o L<Audio::MPD::Common::Item::Directory> - -=3Ditem o L<Audio::MPD::Common::Item::Playlist> - -=3Ditem o L<Audio::MPD::Common::Item::Song> - -=3Ditem o L<Audio::MPD::Common::Stats> - -=3Ditem o L<Audio::MPD::Common::Status> - -=3Ditem o L<Audio::MPD::Common::Time> - -=3Dback - - -Note that those modules should not be of any use outside the two mpd -modules afore-mentioned. - - -=3Dhead1 SEE ALSO - -=3Dover 4 - -=3Ditem L<Audio::MPD> - -=3Ditem L<POE::Component::Client::MPD> - -=3Dback - - -=3Dhead1 AUTHOR - -Jerome Quelin, C<< <jquelin at cpan.org> >> - - -=3Dhead1 COPYRIGHT & LICENSE - -Copyright (c) 2007 Jerome Quelin, all rights reserved. - -This program is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=3Dcut diff --git a/config/mpfire/perl/Audio/MPD/Common/Item.pm b/config/mpfire/perl= /Audio/MPD/Common/Item.pm deleted file mode 100644 index e1d4fa84d..000000000 --- a/config/mpfire/perl/Audio/MPD/Common/Item.pm +++ /dev/null @@ -1,100 +0,0 @@ -# -# This file is part of Audio::MPD::Common -# Copyright (c) 2007 Jerome Quelin, all rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# - -package Audio::MPD::Common::Item; - -use strict; -use warnings; -use Audio::MPD::Common::Item::Directory; -use Audio::MPD::Common::Item::Playlist; -use Audio::MPD::Common::Item::Song; - -#our ($VERSION) =3D '$Rev: 5645 $' =3D~ /(\d+)/; - -# -# constructor. -# -sub new { - my ($pkg, %params) =3D @_; - - # transform keys in lowercase. - my %lowcase; - @lowcase{ keys %params } =3D values %params; - - return Audio::MPD::Common::Item::Song->new(\%lowcase) if exists $pa= rams{file}; - return Audio::MPD::Common::Item::Directory->new(\%lowcase) if exists $pa= rams{directory}; - return Audio::MPD::Common::Item::Playlist->new(\%lowcase) if exists $pa= rams{playlist}; -} - -1; - -__END__ - - -=3Dhead1 NAME - -Audio::MPD::Common::Item - a generic collection item - - -=3Dhead1 SYNOPSIS - - my $item =3D Audio::MPD::Common::Item->new( %params ); - - -=3Dhead1 DESCRIPTION - -C<Audio::MPD::Common::Item> is a virtual class representing a generic -item of mpd's collection. It can be either a song, a directory or a playlist. - -Depending on the params given to C<new>, it will create and return an -C<Audio::MPD::Common::Item::Song>, an C<Audio::MPD::Common::Item::Directory> -or an C<Audio::MPD::Common::Playlist> object. Currently, the -discrimination is done on the existence of the C<file> key of C<%params>. - - -=3Dhead1 PUBLIC METHODS - -Note that the only sub worth it in this class is the constructor: - -=3Dover 4 - -=3Ditem new( key =3D> val [, key =3D> val [, ...] ] ) - -Create and return either an C<Audio::MPD::Common::Item::Song>, an -C<Audio::MPD::Common::Item::Directory> or an C<Audio::MPD::Common::Playlist> -object, depending on the existence of a key C<file>, C<directory> or -C<playlist> (respectively). - -=3Dback - - -=3Dhead1 SEE ALSO - -=3Dover 4 - -=3Ditem L<Audio::MPD> - -=3Ditem L<POE::Component::Client::MPD> - -=3Dback - - -=3Dhead1 AUTHOR - -Jerome Quelin, C<< <jquelin at cpan.org> >> - - -=3Dhead1 COPYRIGHT & LICENSE - -Copyright (c) 2007 Jerome Quelin, all rights reserved. - -This program is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=3Dcut diff --git a/config/mpfire/perl/Audio/MPD/Common/Item/Directory.pm b/config/m= pfire/perl/Audio/MPD/Common/Item/Directory.pm deleted file mode 100644 index cd9076dc1..000000000 --- a/config/mpfire/perl/Audio/MPD/Common/Item/Directory.pm +++ /dev/null @@ -1,72 +0,0 @@ -# -# This file is part of Audio::MPD::Common -# Copyright (c) 2007 Jerome Quelin, all rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# - -package Audio::MPD::Common::Item::Directory; - -use strict; -use warnings; - -use base qw[ Class::Accessor::Fast Audio::MPD::Common::Item ]; -__PACKAGE__->mk_accessors( qw[ directory ] ); - -#our ($VERSION) =3D '$Rev: 5645 $' =3D~ /(\d+)/; - -1; - -__END__ - - -=3Dhead1 NAME - -Audio::MPD::Common::Item::Directory - a directory object - - -=3Dhead1 SYNOPSIS - - print $item->directory . "\n"; - - -=3Dhead1 DESCRIPTION - -C<Audio::MPD::Common::Item::Directory> is more a placeholder for a -hash ref with one pre-defined key, namely the directory name. - - -=3Dhead1 PUBLIC METHODS - -This module only has a C<new()> constructor, which should only be called by -C<Audio::MPD::Common::Item>'s constructor. - -The only other public method is an accessor: directory(). - - -=3Dhead1 SEE ALSO - -=3Dover 4 - -=3Ditem L<Audio::MPD> - -=3Ditem L<POE::Component::Client::MPD> - -=3Dback - - -=3Dhead1 AUTHOR - -Jerome Quelin, C<< <jquelin at cpan.org> >> - - -=3Dhead1 COPYRIGHT & LICENSE - -Copyright (c) 2007 Jerome Quelin, all rights reserved. - -This program is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=3Dcut diff --git a/config/mpfire/perl/Audio/MPD/Common/Item/Playlist.pm b/config/mp= fire/perl/Audio/MPD/Common/Item/Playlist.pm deleted file mode 100644 index bfeda9853..000000000 --- a/config/mpfire/perl/Audio/MPD/Common/Item/Playlist.pm +++ /dev/null @@ -1,72 +0,0 @@ -# -# This file is part of Audio::MPD::Common -# Copyright (c) 2007 Jerome Quelin, all rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# - -package Audio::MPD::Common::Item::Playlist; - -use strict; -use warnings; - -use base qw[ Class::Accessor::Fast Audio::MPD::Common::Item ]; -__PACKAGE__->mk_accessors( qw[ playlist ] ); - -#our ($VERSION) =3D '$Rev: 5645 $' =3D~ /(\d+)/; - -1; - -__END__ - - -=3Dhead1 NAME - -Audio::MPD::Common::Item::Playlist - a playlist object - - -=3Dhead1 SYNOPSIS - - print $item->playlist . "\n"; - - -=3Dhead1 DESCRIPTION - -C<Audio::MPD::Common::Item::Playlist> is more a placeholder for a hash ref -with one pre-defined key, namely the playlist name. - - -=3Dhead1 PUBLIC METHODS - -This module only has a C<new()> constructor, which should only be called by -C<Audio::MPD::Common::Item>'s constructor. - -The only other public method is an accessor: playlist(). - - -=3Dhead1 SEE ALSO - -=3Dover 4 - -=3Ditem L<Audio::MPD> - -=3Ditem L<POE::Component::Client::MPD> - -=3Dback - - -=3Dhead1 AUTHOR - -Jerome Quelin, C<< <jquelin at cpan.org> >> - - -=3Dhead1 COPYRIGHT & LICENSE - -Copyright (c) 2007 Jerome Quelin, all rights reserved. - -This program is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=3Dcut diff --git a/config/mpfire/perl/Audio/MPD/Common/Item/Song.pm b/config/mpfire= /perl/Audio/MPD/Common/Item/Song.pm deleted file mode 100644 index 4ce8d6da3..000000000 --- a/config/mpfire/perl/Audio/MPD/Common/Item/Song.pm +++ /dev/null @@ -1,133 +0,0 @@ -# -# This file is part of Audio::MPD::Common -# Copyright (c) 2007 Jerome Quelin, all rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# - -package Audio::MPD::Common::Item::Song; - -use strict; -use warnings; - -use overload '""' =3D> \&as_string; -use Readonly; - -use base qw[ Class::Accessor::Fast Audio::MPD::Common::Item ]; -__PACKAGE__->mk_accessors( qw[ Album Artist file id pos Title Track time ] ); - -#our ($VERSION) =3D '$Rev: 5645 $' =3D~ /(\d+)/; - -Readonly my $SEP =3D> ' =3D '; - - -# -# my $str =3D $song->as_string; -# -# Return a string representing $song. This string will be; -# - either "Album =3D Track =3D Artist =3D Title" -# - or "Artist =3D Title" -# - or "Title" -# - or "file" -# (in this order), depending on the existing tags of the song. The last -# possibility always exist of course, since it's a path. -# -sub as_string { - my ($self) =3D @_; - - return $self->file unless defined $self->Title; - my $str =3D $self->Title; - return $str unless defined $self->Artist; - $str =3D $self->Artist . $SEP . $str; - return $str unless defined $self->Album && defined $self->Track; - return join $SEP, - $self->Album, - $self->Track, - $str; -} - -1; - -__END__ - - -=3Dhead1 NAME - -Audio::MPD::Common::Item::Song - a song object with some audio tags - - -=3Dhead1 DESCRIPTION - -C<Audio::MPD::Common::Item::Song> is more a placeholder for a -hash ref with some pre-defined keys, namely some audio tags. - - -=3Dhead1 PUBLIC METHODS - -This module has a C<new()> constructor, which should only be called by -C<Audio::MPD::Common::Item>'s constructor. - -The only other public methods are the accessors - see below. - - -=3Dhead2 Accessors - -The following methods are the accessors to their respective named fields: -C<Album()>, C<Artist()>, C<file()>, C<id>, C<pos>, C<Title()>, CTTrack()>, -C<time()>. You can call them either with no arg to get the value, or with -an arg to replace the current value. - - -=3Dhead2 Methods - - -=3Dover 4 - -=3Ditem $song->as_string() - -Return a string representing $song. This string will be: - -=3Dover 4 - -=3Ditem either "Album =3D Track =3D Artist =3D Title" - -=3Ditem or "Artist =3D Title" - -=3Ditem or "Title" - -=3Ditem or "file" - -=3Dback - -(in this order), depending on the existing tags of the song. The last -possibility always exist of course, since it's a path. - -=3Dback - - -=3Dhead1 SEE ALSO - -=3Dover 4 - -=3Ditem L<Audio::MPD> - -=3Ditem L<POE::Component::Client::MPD> - -=3Dback - - -=3Dhead1 AUTHOR - -Jerome Quelin, C<< <jquelin at cpan.org> >> - - -=3Dhead1 COPYRIGHT & LICENSE - -Copyright (c) 2007 Jerome Quelin, all rights reserved. - -This program is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=3Dcut diff --git a/config/mpfire/perl/Audio/MPD/Common/Stats.pm b/config/mpfire/per= l/Audio/MPD/Common/Stats.pm deleted file mode 100644 index 06749072e..000000000 --- a/config/mpfire/perl/Audio/MPD/Common/Stats.pm +++ /dev/null @@ -1,135 +0,0 @@ -# -# This file is part of Audio::MPD::Common -# Copyright (c) 2007 Jerome Quelin, all rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# - -package Audio::MPD::Common::Stats; - -use warnings; -use strict; - -use base qw[ Class::Accessor::Fast ]; -__PACKAGE__->mk_accessors - ( qw[ artists albums songs uptime playtime db_playtime db_update ] ); - -#our ($VERSION) =3D '$Rev$' =3D~ /(\d+)/; - -1; - -__END__ - - -=3Dhead1 NAME - -Audio::MPD::Common::Stats - class representing MPD stats - - -=3Dhead1 SYNOPSIS - - print $stats->artists; - - -=3Dhead1 DESCRIPTION - -The MPD server maintains some general information. Those information can be -queried with the mpd modules. Some of those information are served to you as -an C<Audio::MPD::Common::Status> object. - -Note that an C<Audio::MPD::Common::Stats> object does B<not> update itself -regularly, and thus should be used immediately. - - -=3Dhead1 METHODS - -=3Dhead2 Constructor - -=3Dover 4 - -=3Ditem new( %kv ) - -The C<new()> method is the constructor for the C<Audio::MPD::Common::Stats> -class. - -Note: one should B<never> ever instantiate an C<Audio::MPD::Common::Stats> -object directly - use the mpd modules instead. - -=3Dback - - -=3Dhead2 Accessors - -Once created, one can access to the following members of the object: - -=3Dover 4 - -=3Ditem $stats->artists() - -Number of artists in the music database. - - -=3Ditem $stats->albums() - -Number of albums in the music database. - - -=3Ditem $stats->songs() - -Number of songs in the music database. - - -=3Ditem $stats->uptime() - -Daemon uptime (time since last startup) in seconds. - - -=3Ditem $stats->playtime() - -Time length of music played. - - -=3Ditem $stats->db_playtime() - -Sum of all song times in the music database. - - -=3Ditem $stats->db_update() - -Last database update in UNIX time. - - -=3Dback - - -Please note that those accessors are read-only: changing a value will B<not> -change the current settings of MPD server. Use the mpd modules to alter the -settings. - - -=3Dhead1 SEE ALSO - -=3Dover 4 - -=3Ditem L<Audio::MPD> - -=3Ditem L<POE::Component::Client::MPD> - -=3Dback - - -=3Dhead1 AUTHOR - -Jerome Quelin, C<< <jquelin at cpan.org> >> - - -=3Dhead1 COPYRIGHT & LICENSE - -Copyright (c) 2007 Jerome Quelin, all rights reserved. - -This program is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=3Dcut diff --git a/config/mpfire/perl/Audio/MPD/Common/Status.pm b/config/mpfire/pe= rl/Audio/MPD/Common/Status.pm deleted file mode 100644 index f9c98e2f6..000000000 --- a/config/mpfire/perl/Audio/MPD/Common/Status.pm +++ /dev/null @@ -1,192 +0,0 @@ -# -# This file is part of Audio::MPD::Common -# Copyright (c) 2007 Jerome Quelin, all rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# - -package Audio::MPD::Common::Status; - -use warnings; -use strict; - -use Audio::MPD::Common::Time; - -use base qw[ Class::Accessor::Fast ]; -__PACKAGE__->mk_accessors - ( qw[ audio bitrate error playlist playlistlength random - repeat song songid state time volume updating_db xfade ] ); - -#our ($VERSION) =3D '$Rev: 5865 $' =3D~ /(\d+)/; - - -#-- -# Constructor - -# -# my $status =3D Audio::MPD::Common::Status->new( \%kv ) -# -# The constructor for the class Audio::MPD::Common::Status. %kv is -# a cooked output of what MPD server returns to the status command. -# -sub new { - my ($class, $kv) =3D @_; - my %kv =3D %$kv; - $kv{time} =3D Audio::MPD::Common::Time->new( delete $kv{time} ); - bless \%kv, $class; - return \%kv; -} - -1; - -__END__ - - -=3Dhead1 NAME - -Audio::MPD::Common::Status - class representing MPD status - - -=3Dhead1 SYNOPSIS - - print $status->bitrate; - - -=3Dhead1 DESCRIPTION - -The MPD server maintains some information on its current state. Those -information can be queried with mpd modules. Some of those information -are served to you as an C<Audio::MPD::Common::Status> object. - -Note that an C<Audio::MPD::Common::Status> object does B<not> update -itself regularly, and thus should be used immediately. - - -=3Dhead1 METHODS - -=3Dhead2 Constructor - -=3Dover 4 - -=3Ditem new( \%kv ) - -The C<new()> method is the constructor for the C<Audio::MPD::Common::Status> -class. - -Note: one should B<never> ever instantiate an C<Audio::MPD::Common::Status> -object directly - use the mpd modules instead. - -=3Dback - - -=3Dhead2 Accessors - -Once created, one can access to the following members of the object: - -=3Dover 4 - -=3Ditem $status->audio() - -A string with the sample rate of the song currently playing, number of bits -of the output and number of channels (2 for stereo) - separated by a colon. - - -=3Ditem $status->bitrate() - -The instantaneous bitrate in kbps. - - -=3Ditem $status->error() - -May appear in special error cases, such as when disabling output. - - -=3Ditem $status->playlist() - -The playlist version number, that changes every time the playlist is updated. - - -=3Ditem $status->playlistlength() - -The number of songs in the playlist. - - -=3Ditem $status->random() - -Whether the playlist is read randomly or not. - - -=3Ditem $status->repeat() - -Whether the song is repeated or not. - - -=3Ditem $status->song() - -The offset of the song currently played in the playlist. - - -=3Ditem $status->songid() - -The song id (MPD id) of the song currently played. - - -=3Ditem $status->state() - -The state of MPD server. Either C<play>, C<stop> or C<pause>. - - -=3Ditem $status->time() - -An C<Audio::MPD::Common::Time> object, representing the time elapsed / -remainging and total. See the associated pod for more details. - - -=3Ditem $status->updating_db() - -An integer, representing the current update job. - - -=3Ditem $status->volume() - -The current MPD volume - an integer between 0 and 100. - - -=3Ditem $status->xfade() - -The crossfade in seconds. - - -=3Dback - -Please note that those accessors are read-only: changing a value will B<not> -change the current settings of MPD server. Use the mpd modules to alter the -settings. - - -=3Dhead1 SEE ALSO - -=3Dover 4 - -=3Ditem L<Audio::MPD> - -=3Ditem L<POE::Component::Client::MPD> - -=3Dback - - -=3Dhead1 AUTHOR - -Jerome Quelin, C<< <jquelin at cpan.org> >> - - -=3Dhead1 COPYRIGHT & LICENSE - -Copyright (c) 2007 Jerome Quelin, all rights reserved. - -This program is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=3Dcut diff --git a/config/mpfire/perl/Audio/MPD/Common/Time.pm b/config/mpfire/perl= /Audio/MPD/Common/Time.pm deleted file mode 100644 index 77b6c7dd3..000000000 --- a/config/mpfire/perl/Audio/MPD/Common/Time.pm +++ /dev/null @@ -1,186 +0,0 @@ -# -# This file is part of Audio::MPD::Common -# Copyright (c) 2007 Jerome Quelin, all rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# - -package Audio::MPD::Common::Time; - -use warnings; -use strict; - -use base qw[ Class::Accessor::Fast ]; -__PACKAGE__->mk_accessors - ( qw[ percent sofar left total - sofar_secs sofar_mins seconds_sofar - total_secs total_mins seconds_total - left_secs left_mins seconds_left - ] ); - -#our ($VERSION) =3D '$Rev$' =3D~ /(\d+)/; - - -#-- -# Constructor - -# -# my $status =3D Audio::MPD::Common::Time->new( $time ) -# -# The constructor for the class Audio::MPD::Common::Time. $time is -# the time value (on the "time" line) of what the output MPD server -# returns to the status command. -# -sub new { - my ($class, $time) =3D @_; - $time ||=3D '0:0'; - my ($seconds_sofar, $seconds_total) =3D split /:/, $time; - my $seconds_left =3D $seconds_total - $seconds_sofar; - my $percent =3D $seconds_total ? 100*$seconds_sofar/$seconds_total = : 0; - - # Parse the time so far - my $sofar_mins =3D int( $seconds_sofar / 60 ); - my $sofar_secs =3D $seconds_sofar % 60; - my $sofar =3D sprintf "%d:%02d", $sofar_mins, $sofar_secs; - - # Parse the total time - my $total_mins =3D int( $seconds_total / 60 ); - my $total_secs =3D $seconds_total % 60; - my $total =3D sprintf "%d:%02d", $total_mins, $total_secs; - - # Parse the time left - my $left_mins =3D int( $seconds_left / 60 ); - my $left_secs =3D $seconds_left % 60; - my $left =3D sprintf "%d:%02d", $left_mins, $left_secs; - - - # create object - my $self =3D { - # time elapsed in seconds - seconds_sofar =3D> $seconds_sofar, - seconds_left =3D> $seconds_left, - seconds_total =3D> $seconds_total, - - # cooked values - sofar =3D> $sofar, - left =3D> $left, - total =3D> $total, - percent =3D> sprintf("%.1f", $percent), # 1 decimal - - # details - sofar_secs =3D> $sofar_secs, - sofar_mins =3D> $sofar_mins, - total_secs =3D> $total_secs, - total_mins =3D> $total_mins, - left_secs =3D> $left_secs, - left_mins =3D> $left_mins, - }; - bless $self, $class; - return $self; -} - - -1; - -__END__ - -=3Dhead1 NAME - -Audio::MPD::Common::Time - class representing time of current song - - -=3Dhead1 SYNOPSIS - - my $time =3D $status->time; - print $time->sofar; - - -=3Dhead1 DESCRIPTION - -C<Audio::MPD::Common::Status> returns some time information with the C<time(= )> -accessor. This information relates to the elapsed time of the current song, -as well as the remaining and total time. This information is encapsulated -in an C<Audio::MPD::Common::Time> object. - -Note that an C<Audio::MPD::Common::Time> object does B<not> update itself -regularly, and thus should be used immediately. - - -=3Dhead1 METHODS - -=3Dhead2 Constructor - -=3Dover 4 - -=3Ditem new( $time ) - -The C<new()> method is the constructor for the C<Audio::MPD::Common::Time> -class. - -Note: one should B<never> ever instantiate an C<Audio::MPD::Common::Time> -object directly - use the mpd modules instead. - -=3Dback - - -=3Dhead2 Accessors - -Once created, one can access the following members of the object: - -=3Dover 4 - -=3Ditem cooked values: - -The C<sofar()>, C<left()> and C<total()> methods return the according values -under the form C<minutes:seconds>. Note the existence of a C<percent()> -method returning a percentage complete. (one decimal) - - -=3Ditem values in seconds: - -The C<seconds_sofar()>, C<seconds_left()> and C<seconds_total()> return the -according values in seconds. - - -=3Ditem detailled values: - -If you want to cook your own value, then the following methods can help: -C<sofar_secs()> and C<sofar_mins()> return the seconds and minutes elapsed. -Same for C<left_secs()> and C<left_mins()> (time remaining), C<total_secs()> -and C<total_mins()>. (total song length) - - -=3Dback - - -Please note that those accessors are read-only: changing a value will B<not> -change the current settings of MPD server. Use the mpd modules to alter the -settings. - - -=3Dhead1 SEE ALSO - -=3Dover 4 - -=3Ditem L<Audio::MPD> - -=3Ditem L<POE::Component::Client::MPD> - -=3Dback - - -=3Dhead1 AUTHOR - -Jerome Quelin, C<< <jquelin at cpan.org> >> - - -=3Dhead1 COPYRIGHT & LICENSE - -Copyright (c) 2007 Jerome Quelin, all rights reserved. - -This program is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=3Dcut diff --git a/config/mpfire/perl/Audio/MPD/Playlist.pm b/config/mpfire/perl/Au= dio/MPD/Playlist.pm deleted file mode 100644 index b59499d02..000000000 --- a/config/mpfire/perl/Audio/MPD/Playlist.pm +++ /dev/null @@ -1,427 +0,0 @@ -# -# This file is part of Audio::MPD -# Copyright (c) 2007 Jerome Quelin, all rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# - -package Audio::MPD::Playlist; - -use strict; -use warnings; -use Scalar::Util qw[ weaken ]; - -use base qw[ Class::Accessor::Fast ]; -__PACKAGE__->mk_accessors( qw[ _mpd ] ); - - -#our ($VERSION) =3D '$Rev$' =3D~ /(\d+)/; - - -#-- -# Constructor - -# -# my $collection =3D Audio::MPD::Playlist->new( $mpd ); -# -# This will create the object, holding a back-reference to the Audio::MPD -# object itself (for communication purposes). But in order to play safe and -# to free the memory in time, this reference is weakened. -# -# Note that you're not supposed to call this constructor yourself, an -# Audio::MPD::Playlist is automatically created for you during the creation -# of an Audio::MPD object. -# -sub new { - my ($pkg, $mpd) =3D @_; - - my $self =3D { _mpd =3D> $mpd }; - weaken( $self->{_mpd} ); - bless $self, $pkg; - return $self; -} - - -#-- -# Public methods - -# -- Playlist: retrieving information - -# -# my @items =3D $pl->as_items; -# -# Return an array of AMC::Item::Songs, one for each of the -# songs in the current playlist. -# -sub as_items { - my ($self) =3D @_; - - my @list =3D $self->_mpd->_cooked_command_as_items("playlistinfo\n"); - return @list; -} - - -# -# my @items =3D $pl->items_changed_since( $plversion ); -# -# Return a list with all the songs (as API::Song objects) added to -# the playlist since playlist $plversion. -# -sub items_changed_since { - my ($self, $plid) =3D @_; - return $self->_mpd->_cooked_command_as_items("plchanges $plid\n"); -} - - - -# -- Playlist: adding / removing songs - -# -# $pl->add( $path [, $path [...] ] ); -# -# Add the songs identified by $path (relative to MPD's music directory) to -# the current playlist. No return value. -# -sub add { - my ($self, @pathes) =3D @_; - my $command =3D - "command_list_begin\n" - . join( '', map { s/"/\\"/g; qq[add "$_"\n] } @pathes ) - . "command_list_end\n"; - $self->_mpd->_send_command( $command ); -} - - -# -# $pl->delete( $song [, $song [...] ] ); -# -# Remove song number $song (starting from 0) from the current playlist. No -# return value. -# -sub delete { - my ($self, @songs) =3D @_; - my $command =3D - "command_list_begin\n" - . join( '', map { s/"/\\"/g; "delete $_\n" } @songs ) - . "command_list_end\n"; - $self->_mpd->_send_command( $command ); -} - - -# -# $pl->deleteid( $songid [, $songid [...] ]); -# -# Remove the specified $songid (as assigned by mpd when inserted in playlist) -# from the current playlist. No return value. -# -sub deleteid { - my ($self, @songs) =3D @_; - my $command =3D - "command_list_begin\n" - . join( '', map { "deleteid $_\n" } @songs ) - . "command_list_end\n"; - $self->_mpd->_send_command( $command ); -} - - -# -# $pl->clear; -# -# Remove all the songs from the current playlist. No return value. -# -sub clear { - my ($self) =3D @_; - $self->_mpd->_send_command("clear\n"); -} - - -# -# $pl->crop; -# -# Remove all of the songs from the current playlist *except* the current on= e. -# -sub crop { - my ($self) =3D @_; - - my $status =3D $self->_mpd->status; - my $cur =3D $status->song; - my $len =3D $status->playlistlength - 1; - - my $command =3D - "command_list_begin\n" - . join( '', map { $_ !=3D $cur ? "delete $_\n" : '' } reverse 0..$l= en ) - . "command_list_end\n"; - $self->_mpd->_send_command( $command ); -} - - -# -- Playlist: changing playlist order - -# -# $pl->shuffle(); -# -# Shuffle the current playlist. No return value. -# -sub shuffle { - my ($self) =3D @_; - $self->_mpd->_send_command("shuffle\n"); -} - - -# -# $pl->swap( $song1, $song2 ); -# -# Swap positions of song number $song1 and $song2 in the current playlist. -# No return value. -# -sub swap { - my ($self, $from, $to) =3D @_; - $self->_mpd->_send_command("swap $from $to\n"); -} - - -# -# $pl->swapid( $songid1, $songid2 ); -# -# Swap the postions of song ID $songid1 with song ID $songid2 in the -# current playlist. No return value. -# -sub swapid { - my ($self, $from, $to) =3D @_; - $self->_mpd->_send_command("swapid $from $to\n"); -} - - -# -# $pl->move( $song, $newpos ); -# -# Move song number $song to the position $newpos. No return value. -# -sub move { - my ($self, $song, $pos) =3D @_; - $self->_mpd->_send_command("move $song $pos\n"); -} - - -# -# $pl->moveid( $songid, $newpos ); -# -# Move song ID $songid to the position $newpos. No return value. -# -sub moveid { - my ($self, $song, $pos) =3D @_; - $self->_mpd->_send_command("moveid $song $pos\n"); -} - - -# -- Playlist: managing playlists - -# -# $pl->load( $playlist ); -# -# Load list of songs from specified $playlist file. No return value. -# -sub load { - my ($self, $playlist) =3D @_; - $self->_mpd->_send_command( qq[load "$playlist"\n] ); -} - - -# -# $pl->save( $playlist ); -# -# Save the current playlist to a file called $playlist in MPD's playlist -# directory. No return value. -# -sub save { - my ($self, $playlist) =3D @_; - $self->_mpd->_send_command( qq[save "$playlist"\n] ); -} - - -# -# $pl->rm( $playlist ) -# -# Delete playlist named $playlist from MPD's playlist directory. No -# return value. -# -sub rm { - my ($self, $playlist) =3D @_; - $self->_mpd->_send_command( qq[rm "$playlist"\n] ); -} - - - -1; - -__END__ - - -=3Dhead1 NAME - -Audio::MPD::Playlist - an object to mess MPD's playlist - - -=3Dhead1 SYNOPSIS - - my $song =3D $mpd->playlist->randomize; - - -=3Dhead1 DESCRIPTION - -C<Audio::MPD::Playlist> is a class meant to access & update MPD's -playlist. - - -=3Dhead1 PUBLIC METHODS - -=3Dhead2 Constructor - -=3Dover 4 - -=3Ditem new( $mpd ) - -This will create the object, holding a back-reference to the C<Audio::MPD> -object itself (for communication purposes). But in order to play safe and -to free the memory in time, this reference is weakened. - -Note that you're not supposed to call this constructor yourself, an -C<Audio::MPD::Playlist> is automatically created for you during the creation -of an C<Audio::MPD> object. - -=3Dback - - -=3Dhead2 Retrieving information - -=3Dover 4 - -=3Ditem $pl->as_items() - -Return an array of C<Audio::MPD::Common::Item::Song>s, one for each of the -songs in the current playlist. - - -=3Ditem $pl->items_changed_since( $plversion ) - -Return a list with all the songs (as AMC::Item::Song objects) added to -the playlist since playlist $plversion. - - -=3Dback - - -=3Dhead2 Adding / removing songs - -=3Dover 4 - -=3Ditem $pl->add( $path [, $path [...] ] ) - -Add the songs identified by C<$path> (relative to MPD's music directory) to = the -current playlist. No return value. - - -=3Ditem $pl->delete( $song [, $song [...] ] ) - -Remove song number C<$song>s (starting from 0) from the current playlist. No -return value. - - -=3Ditem $pl->deleteid( $songid [, $songid [...] ] ) - -Remove the specified C<$songid>s (as assigned by mpd when inserted in playli= st) -from the current playlist. No return value. - - -=3Ditem $pl->clear() - -Remove all the songs from the current playlist. No return value. - - -=3Ditem $pl->crop() - -Remove all of the songs from the current playlist *except* the -song currently playing. - - -=3Dback - - -=3Dhead2 Changing playlist order - -=3Dover 4 - -=3Ditem $pl->shuffle() - -Shuffle the current playlist. No return value. - - -=3Ditem $pl->swap( $song1, $song2 ) - -Swap positions of song number C<$song1> and C<$song2> in the current -playlist. No return value. - - -=3Ditem $pl->swapid( $songid1, $songid2 ) - -Swap the postions of song ID C<$songid1> with song ID C<$songid2> in the -current playlist. No return value. - - -=3Ditem $pl->move( $song, $newpos ) - -Move song number C<$song> to the position C<$newpos>. No return value. - - -=3Ditem $pl->moveid( $songid, $newpos ) - -Move song ID C<$songid> to the position C<$newpos>. No return value. - - -=3Dback - - -=3Dhead2 Managing playlists - -=3Dover 4 - -=3Ditem $pl->load( $playlist ) - -Load list of songs from specified C<$playlist> file. No return value. - - -=3Ditem $pl->save( $playlist ) - -Save the current playlist to a file called C<$playlist> in MPD's playlist -directory. No return value. - - -=3Ditem $pl->rm( $playlist ) - -Delete playlist named C<$playlist> from MPD's playlist directory. No -return value. - - -=3Dback - - -=3Dhead1 SEE ALSO - -L<Audio::MPD> - - -=3Dhead1 AUTHOR - -Jerome Quelin, C<< <jquelin at cpan.org> >> - - -=3Dhead1 COPYRIGHT & LICENSE - -Copyright (c) 2007 Jerome Quelin, all rights reserved. - -This program is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=3Dcut diff --git a/config/mpfire/perl/Audio/MPD/Test.pm b/config/mpfire/perl/Audio/= MPD/Test.pm deleted file mode 100644 index 74359afd1..000000000 --- a/config/mpfire/perl/Audio/MPD/Test.pm +++ /dev/null @@ -1,217 +0,0 @@ -# -# This file is part of Audio::MPD -# Copyright (c) 2007 Jerome Quelin, all rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# - -package Audio::MPD::Test; - -use strict; -use warnings; - -use Exporter; -use FindBin qw[ $Bin ]; -use Readonly; - - -use base qw[ Exporter ]; -our @EXPORT =3D qw[ customize_test_mpd_configuration start_test_mpd stop_tes= t_mpd ]; -#our ($VERSION) =3D '$Rev: 5284 $' =3D~ /(\d+)/; - - -Readonly my $TEMPLATE =3D> "$Bin/mpd-test/mpd.conf.template"; -Readonly my $CONFIG =3D> "$Bin/mpd-test/mpd.conf"; - -{ # this will be run when Audio::MPD::Test will be use-d. - my $restart =3D 0; - my $stopit =3D 0; - - customize_test_mpd_configuration(); - $restart =3D _stop_user_mpd_if_needed(); - $stopit =3D start_test_mpd(); - - END { - stop_test_mpd() if $stopit; - return unless $restart; # no need to restart - system 'mpd 2>/dev/null'; # restart user mpd - sleep 1; # wait 1 second to let mpd start. - } -} - - -#-- -# public subs - -# -# customize_test_mpd_configuration( [$port] ) -# -# Create a fake mpd configuration file, based on the file mpd.conf.template -# located in t/mpd-test. The string PWD will be replaced by the real path - -# ie, where the tarball has been untarred. The string PORT will be replaced -# by $port if specified, 6600 otherwise (MPD default). -# -sub customize_test_mpd_configuration { - my ($port) =3D @_; - $port ||=3D 6600; - - # open template and config. - open my $in, '<', $TEMPLATE or die "can't open [$TEMPLATE]: $!\n"; - open my $out, '>', $CONFIG or die "can't open [$CONFIG]: $!\n"; - - # replace string and fill in config file. - while ( defined( my $line =3D <$in> ) ) { - $line =3D~ s!PWD!$Bin/mpd-test!; - $line =3D~ s!PORT!$port!; - print $out $line; - } - - # clean up. - close $in; - close $out; - - # create a fake mpd db. - system( "mpd --create-db $CONFIG >/dev/null 2>&1" ) =3D=3D 0 - or die "could not create fake mpd database: $?\n"; -} - - -# -# start_test_mpd() -# -# Start the fake mpd, and die if there were any error. -# -sub start_test_mpd { - my $output =3D qx[mpd $CONFIG 2>&1]; - die "could not start fake mpd: $output\n" if $output; - sleep 1; # wait 1 second to let mpd start. - return 1; -} - - -# -# stop_test_mpd() -# -# Kill the fake mpd. -# -sub stop_test_mpd { - system "mpd --kill $CONFIG 2>/dev/null"; - sleep 1; # wait 1 second to free output device. - unlink "$Bin/mpd-test/state", "$Bin/mpd-test/music.db"; -} - - -#-- -# private subs - - -# -# my $was_running =3D _stop_user_mpd_if_needed() -# -# This sub will check if mpd is currently running. If it is, force it to -# a full stop (unless MPD_TEST_OVERRIDE is not set). -# -# In any case, it will return a boolean stating whether mpd was running -# before forcing stop. -# -sub _stop_user_mpd_if_needed { - # check if mpd is running. - my $is_running =3D grep { /mpd$/ } qx[ ps -e ]; - - return 0 unless $is_running; # mpd does not run - nothing to do. - - # check force stop. - die "mpd is running\n" unless $ENV{MPD_TEST_OVERRIDE}; - system( 'mpd --kill 2>/dev/null') =3D=3D 0 or die "can't stop user mpd: = $?\n"; - sleep 1; # wait 1 second to free output device - return 1; -} - - -1; - -__END__ - -=3Dhead1 NAME - -Audio::MPD::Test - automate launching of fake mdp for testing purposes - - -=3Dhead1 SYNOPSIS - - use Audio::MPD::Test; # die if error - [...] - stop_fake_mpd(); - - -=3Dhead1 DESCRIPTION - -=3Dhead2 General usage - -This module will try to launch a new mpd server for testing purposes. This -mpd server will then be used during Audio::MPD tests. - -In order to achieve this, the module will create a fake mpd.conf file with -the correct pathes (ie, where you untarred the module tarball). It will then -check if some mpd server is already running, and stop it if the -MPD_TEST_OVERRIDE environment variable is true (die otherwise). Last it will -run the test mpd with its newly created configuration file. - -Everything described above is done automatically when the module is C<use>-d. - - -Once the tests are run, the mpd server will be shut down, and the original -one will be relaunched (if there was one). - -Note that the test mpd will listen to C<localhost>, so you are on the safe -side. Note also that the test suite comes with its own ogg files - and yes, -we can redistribute them since it's only some random voice recordings :-) - - -=3Dhead2 Advanced usage - -In case you want more control on the test mpd server, you can use the -following public methods: - -=3Dover 4 - -=3Ditem start_test_mpd() - -Start the fake mpd, and die if there were any error. - -=3Ditem stop_test_mpd() - -Kill the fake mpd. - -=3Ditem customize_test_mpd_configuration( [$port] ) - -Create a fake mpd configuration file, based on the file mpd.conf.template -located in t/mpd-test. The string PWD will be replaced by the real path - -ie, where the tarball has been untarred. The string PORT will be replaced -by $port if specified, 6600 otherwise (MPD default). - -=3Dback - -This might be useful when trying to test connections with mpd server. - - -=3Dhead1 SEE ALSO - -L<Audio::MPD> - - -=3Dhead1 AUTHOR - -Jerome Quelin, C<< <jquelin at cpan.org> >> - - -=3Dhead1 COPYRIGHT & LICENSE - -Copyright (c) 2007 Jerome Quelin, all rights reserved. - -This program is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=3Dcut diff --git a/config/mpfire/perl/Readonly.pm b/config/mpfire/perl/Readonly.pm deleted file mode 100644 index 294c759c5..000000000 --- a/config/mpfire/perl/Readonly.pm +++ /dev/null @@ -1,803 +0,0 @@ -=3Dfor gpg ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -- -----BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -=3Dhead1 NAME - -Readonly - Facility for creating read-only scalars, arrays, hashes. - -=3Dhead1 VERSION - -This documentation describes version 1.03 of Readonly.pm, April 20, 2004. - -=3Dcut - -# Rest of documentation is after __END__. - -use 5.005; -use strict; -#use warnings; -#no warnings 'uninitialized'; - -package Readonly; -$Readonly::VERSION =3D '1.03'; # Also change in the documentation! - -# Autocroak (Thanks, MJD) -# Only load Carp.pm if module is croaking. -sub croak -{ - require Carp; - goto &Carp::croak; -} - -# These functions may be overridden by Readonly::XS, if installed. -sub is_sv_readonly ($) { 0 } -sub make_sv_readonly ($) { die "make_sv_readonly called but not overridden" } -use vars qw/$XSokay/; # Set to true in Readonly::XS, if available - -# Common error messages, or portions thereof -use vars qw/$MODIFY $REASSIGN $ODDHASH/; -$MODIFY =3D 'Modification of a read-only value attempted'; -$REASSIGN =3D 'Attempt to reassign a readonly'; -$ODDHASH =3D 'May not store an odd number of values in a hash'; - -# See if we can use the XS stuff. -$Readonly::XS::MAGIC_COOKIE =3D "Do NOT use or require Readonly::XS unless y= ou're me."; -eval 'use Readonly::XS'; - - -# ---------------- -# Read-only scalars -# ---------------- -package Readonly::Scalar; - -sub TIESCALAR -{ - my $whence =3D (caller 2)[3]; # Check if naughty user is trying to ti= e directly. - Readonly::croak "Invalid tie" unless $whence && $whence =3D~ /^Readonly= ::(?:Scalar1?|Readonly)$/; - my $class =3D shift; - Readonly::croak "No value specified for readonly scalar" unless @= _; - Readonly::croak "Too many values specified for readonly scalar" unless @= _ =3D=3D 1; - - my $value =3D shift; - return bless \$value, $class; -} - -sub FETCH -{ - my $self =3D shift; - return $$self; -} - -*STORE =3D *UNTIE =3D - sub {Readonly::croak $Readonly::MODIFY}; - - -# ---------------- -# Read-only arrays -# ---------------- -package Readonly::Array; - -sub TIEARRAY -{ - my $whence =3D (caller 1)[3]; # Check if naughty user is trying to ti= e directly. - Readonly::croak "Invalid tie" unless $whence =3D~ /^Readonly::Array1?$/; - my $class =3D shift; - my @self =3D @_; - - return bless \@self, $class; -} - -sub FETCH -{ - my $self =3D shift; - my $index =3D shift; - return $self->[$index]; -} - -sub FETCHSIZE -{ - my $self =3D shift; - return scalar @$self; -} - -BEGIN { - eval q{ - sub EXISTS - { - my $self =3D shift; - my $index =3D shift; - return exists $self->[$index]; - } - } if $] >=3D 5.006; # couldn't do "exists" on arrays before then -} - -*STORE =3D *STORESIZE =3D *EXTEND =3D *PUSH =3D *POP =3D *UNSHIFT =3D *SHIFT= =3D *SPLICE =3D *CLEAR =3D *UNTIE =3D - sub {Readonly::croak $Readonly::MODIFY}; - - -# ---------------- -# Read-only hashes -# ---------------- -package Readonly::Hash; - -sub TIEHASH -{ - my $whence =3D (caller 1)[3]; # Check if naughty user is trying to ti= e directly. - Readonly::croak "Invalid tie" unless $whence =3D~ /^Readonly::Hash1?$/; - - my $class =3D shift; - # must have an even number of values - Readonly::croak $Readonly::ODDHASH unless (@_ %2 =3D=3D 0); - - my %self =3D @_; - return bless \%self, $class; -} - -sub FETCH -{ - my $self =3D shift; - my $key =3D shift; - - return $self->{$key}; -} - -sub EXISTS -{ - my $self =3D shift; - my $key =3D shift; - return exists $self->{$key}; -} - -sub FIRSTKEY -{ - my $self =3D shift; - my $dummy =3D keys %$self; - return scalar each %$self; -} - -sub NEXTKEY -{ - my $self =3D shift; - return scalar each %$self; -} - -*STORE =3D *DELETE =3D *CLEAR =3D *UNTIE =3D - sub {Readonly::croak $Readonly::MODIFY}; - - -# ---------------------------------------------------------------- -# Main package, containing convenience functions (so callers won't -# have to explicitly tie the variables themselves). -# ---------------------------------------------------------------- -package Readonly; -use Exporter; -use vars qw/@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS/; -push @ISA, 'Exporter'; -push @EXPORT, qw/Readonly/; -push @EXPORT_OK, qw/Scalar Array Hash Scalar1 Array1 Hash1/; - -# Predeclare the following, so we can use them recursively -sub Scalar ($$); -sub Array (\@;@); -sub Hash (\%;@); - -# Returns true if a string begins with "Readonly::" -# Used to prevent reassignment of Readonly variables. -sub _is_badtype -{ - my $type =3D $_[0]; - return lc $type if $type =3D~ s/^Readonly:://; - return; -} - -# Shallow Readonly scalar -sub Scalar1 ($$) -{ - croak "$REASSIGN scalar" if is_sv_readonly $_[0]; - my $badtype =3D _is_badtype (ref tied $_[0]); - croak "$REASSIGN $badtype" if $badtype; - - # xs method: flag scalar as readonly - if ($XSokay) - { - $_[0] =3D $_[1]; - make_sv_readonly $_[0]; - return; - } - - # pure-perl method: tied scalar - my $tieobj =3D eval {tie $_[0], 'Readonly::Scalar', $_[1]}; - if ($@) - { - croak "$REASSIGN scalar" if substr($@,0,43) eq $MODIFY; - die $@; # some other error? - } - return $tieobj; -} - -# Shallow Readonly array -sub Array1 (\@;@) -{ - my $badtype =3D _is_badtype (ref tied $_[0]); - croak "$REASSIGN $badtype" if $badtype; - - my $aref =3D shift; - return tie @$aref, 'Readonly::Array', @_; -} - -# Shallow Readonly hash -sub Hash1 (\%;@) -{ - my $badtype =3D _is_badtype (ref tied $_[0]); - croak "$REASSIGN $badtype" if $badtype; - - my $href =3D shift; - - # If only one value, and it's a hashref, expand it - if (@_ =3D=3D 1 && ref $_[0] eq 'HASH') - { - return tie %$href, 'Readonly::Hash', %{$_[0]}; - } - - # otherwise, must have an even number of values - croak $ODDHASH unless (@_%2 =3D=3D 0); - - return tie %$href, 'Readonly::Hash', @_; -} - -# Deep Readonly scalar -sub Scalar ($$) -{ - croak "$REASSIGN scalar" if is_sv_readonly $_[0]; - my $badtype =3D _is_badtype (ref tied $_[0]); - croak "$REASSIGN $badtype" if $badtype; - - my $value =3D $_[1]; - - # Recursively check passed element for references; if any, make them Rea= donly - foreach ($value) - { - if (ref eq 'SCALAR') {Scalar my $v =3D> $$_; $_ =3D \$v} - elsif (ref eq 'ARRAY') {Array my @v =3D> @$_; $_ =3D \@v} - elsif (ref eq 'HASH') {Hash my %v =3D> $_; $_ =3D \%v} - } - - # xs method: flag scalar as readonly - if ($XSokay) - { - $_[0] =3D $value; - make_sv_readonly $_[0]; - return; - } - - # pure-perl method: tied scalar - my $tieobj =3D eval {tie $_[0], 'Readonly::Scalar', $value}; - if ($@) - { - croak "$REASSIGN scalar" if substr($@,0,43) eq $MODIFY; - die $@; # some other error? - } - return $tieobj; -} - -# Deep Readonly array -sub Array (\@;@) -{ - my $badtype =3D _is_badtype (ref tied @{$_[0]}); - croak "$REASSIGN $badtype" if $badtype; - - my $aref =3D shift; - my @values =3D @_; - - # Recursively check passed elements for references; if any, make them Re= adonly - foreach (@values) - { - if (ref eq 'SCALAR') {Scalar my $v =3D> $$_; $_ =3D \$v} - elsif (ref eq 'ARRAY') {Array my @v =3D> @$_; $_ =3D \@v} - elsif (ref eq 'HASH') {Hash my %v =3D> $_; $_ =3D \%v} - } - # Lastly, tie the passed reference - return tie @$aref, 'Readonly::Array', @values; -} - -# Deep Readonly hash -sub Hash (\%;@) -{ - my $badtype =3D _is_badtype (ref tied %{$_[0]}); - croak "$REASSIGN $badtype" if $badtype; - - my $href =3D shift; - my @values =3D @_; - - # If only one value, and it's a hashref, expand it - if (@_ =3D=3D 1 && ref $_[0] eq 'HASH') - { - @values =3D %{$_[0]}; - } - - # otherwise, must have an even number of values - croak $ODDHASH unless (@values %2 =3D=3D 0); - - # Recursively check passed elements for references; if any, make them Re= adonly - foreach (@values) - { - if (ref eq 'SCALAR') {Scalar my $v =3D> $$_; $_ =3D \$v} - elsif (ref eq 'ARRAY') {Array my @v =3D> @$_; $_ =3D \@v} - elsif (ref eq 'HASH') {Hash my %v =3D> $_; $_ =3D \%v} - } - - return tie %$href, 'Readonly::Hash', @values; -} - - -# Common entry-point for all supported data types -eval q{sub Readonly} . ( $] < 5.008 ? '' : '(\[$@%]@)' ) . <<'SUB_READONLY'; -{ - if (ref $_[0] eq 'SCALAR') - { - croak $MODIFY if is_sv_readonly ${$_[0]}; - my $badtype =3D _is_badtype (ref tied ${$_[0]}); - croak "$REASSIGN $badtype" if $badtype; - croak "Readonly scalar must have only one value" if @_ > 2; - - my $tieobj =3D eval {tie ${$_[0]}, 'Readonly::Scalar', $_[1]}; - # Tie may have failed because user tried to tie a constant, or we sc= rewed up somehow. - if ($@) - { - croak $MODIFY if $@ =3D~ /^$MODIFY at/; # Point the finger at= the user. - die "$@\n"; # Not a modify read-only message; must be our= fault. - } - return $tieobj; - } - elsif (ref $_[0] eq 'ARRAY') - { - my $aref =3D shift; - return Array @$aref, @_; - } - elsif (ref $_[0] eq 'HASH') - { - my $href =3D shift; - croak $ODDHASH if @_%2 !=3D 0 && !(@_ =3D=3D 1 && ref $_[0] eq '= HASH'); - return Hash %$href, @_; - } - elsif (ref $_[0]) - { - croak "Readonly only supports scalar, array, and hash variables."; - } - else - { - croak "First argument to Readonly must be a reference."; - } -} -SUB_READONLY - - -1; -__END__ - -=3Dhead1 SYNOPSIS - - use Readonly; - - # Read-only scalar - Readonly::Scalar $sca =3D> $initial_value; - Readonly::Scalar my $sca =3D> $initial_value; - - # Read-only array - Readonly::Array @arr =3D> @values; - Readonly::Array my @arr =3D> @values; - - # Read-only hash - Readonly::Hash %has =3D> (key =3D> value, key =3D> value, ...); - Readonly::Hash my %has =3D> (key =3D> value, key =3D> value, ...); - # or: - Readonly::Hash %has =3D> {key =3D> value, key =3D> value, ...}; - - # You can use the read-only variables like any regular variables: - print $sca; - $something =3D $sca + $arr[2]; - next if $has{$some_key}; - - # But if you try to modify a value, your program will die: - $sca =3D 7; - push @arr, 'seven'; - delete $has{key}; - # The error message is "Modification of a read-only value -attempted" - - # Alternate form (Perl 5.8 and later) - Readonly $sca =3D> $initial_value; - Readonly my $sca =3D> $initial_value; - Readonly @arr =3D> @values; - Readonly my @arr =3D> @values; - Readonly %has =3D> (key =3D> value, key =3D> value, ...); - Readonly my %has =3D> (key =3D> value, key =3D> value, ...); - # Alternate form (for Perls earlier than v5.8) - Readonly \$sca =3D> $initial_value; - Readonly \my $sca =3D> $initial_value; - Readonly \@arr =3D> @values; - Readonly \my @arr =3D> @values; - Readonly \%has =3D> (key =3D> value, key =3D> value, ...); - Readonly \my %has =3D> (key =3D> value, key =3D> value, ...); - - -=3Dhead1 DESCRIPTION - -This is a facility for creating non-modifiable variables. This is -useful for configuration files, headers, etc. It can also be useful -as a development and debugging tool, for catching updates to variables -that should not be changed. - -If any of the values you pass to C<Scalar>, C<Array>, or C<Hash> are -references, then those functions recurse over the data structures, -marking everything as Readonly. Usually, this is what you want: the -entire structure nonmodifiable. If you want only the top level to be -Readonly, use the alternate C<Scalar1>, C<Array1> and C<Hash1> -functions. - -Please note that most users of Readonly will also want to install a -companion module Readonly::XS. See the L</CONS> section below for more -details. - -=3Dhead1 COMPARISON WITH "use constant" - -Perl provides a facility for creating constant values, via the "use -constant" pragma. There are several problems with this pragma. - -=3Dover 2 - -=3Ditem * - -The constants created have no leading $ or @ character. - -=3Ditem * - -These constants cannot be interpolated into strings. - -=3Ditem * - -Syntax can get dicey sometimes. For example: - - use constant CARRAY =3D> (2, 3, 5, 7, 11, 13); - $a_prime =3D CARRAY[2]; # wrong! - $a_prime =3D (CARRAY)[2]; # right -- MUST use parentheses - -=3Ditem * - -You have to be very careful in places where barewords are allowed. -For example: - - use constant SOME_KEY =3D> 'key'; - %hash =3D (key =3D> 'value', other_key =3D> 'other_value'); - $some_value =3D $hash{SOME_KEY}; # wrong! - $some_value =3D $hash{+SOME_KEY}; # right - -(who thinks to use a unary plus when using a hash?) - -=3Ditem * - -C<use constant> works for scalars and arrays, not hashes. - -=3Ditem * - -These constants are global ot the package in which they're declared; -cannot be lexically scoped. - -=3Ditem * - -Works only at compile time. - -=3Ditem * - -Can be overridden: - - use constant PI =3D> 3.14159; - ... - use constant PI =3D> 2.71828; - -(this does generate a warning, however, if you have warnings enabled). - -=3Ditem * - -It is very difficult to make and use deep structures (complex data -structures) with C<use constant>. - -=3Dback - -=3Dhead1 COMPARISON WITH TYPEGLOB CONSTANTS - -Another popular way to create read-only scalars is to modify the symbol -table entry for the variable by using a typeglob: - - *a =3D \'value'; - -This works fine, but it only works for global variables ("my" -variables have no symbol table entry). Also, the following similar -constructs do B<not> work: - - *a =3D [1, 2, 3]; # Does NOT create a read-only array - *a =3D { a =3D> 'A'}; # Does NOT create a read-only hash - -=3Dhead1 PROS - -Readonly.pm, on the other hand, will work with global variables and -with lexical ("my") variables. It will create scalars, arrays, or -hashes, all of which look and work like normal, read-write Perl -variables. You can use them in scalar context, in list context; you -can take references to them, pass them to functions, anything. - -Readonly.pm also works well with complex data structures, allowing you -to tag the whole structure as nonmodifiable, or just the top level. - -Also, Readonly variables may not be reassigned. The following code -will die: - - Readonly::Scalar $pi =3D> 3.14159; - ... - Readonly::Scalar $pi =3D> 2.71828; - -=3Dhead1 CONS - -Readonly.pm does impose a performance penalty. It's pretty slow. How -slow? Run the C<benchmark.pl> script that comes with Readonly. On my -test system, "use constant", typeglob constants, and regular -read/write Perl variables were all about the same speed, and -Readonly.pm constants were about 1/20 the speed. - -However, there is relief. There is a companion module available, -Readonly::XS. If it is installed on your system, Readonly.pm uses it -to make read-only scalars much faster. With Readonly::XS, Readonly -scalars are as fast as the other types of variables. Readonly arrays -and hashes will still be relatively slow. But it's likely that most -of your Readonly variables will be scalars. - -If you can't use Readonly::XS (for example, if you don't have a C -compiler, or your perl is statically linked and you don't want to -re-link it), you have to decide whether the benefits of Readonly -variables outweigh the speed issue. For most configuration variables -(and other things that Readonly is likely to be useful for), the speed -issue is probably not really a big problem. But benchmark your -program if it might be. If it turns out to be a problem, you may -still want to use Readonly.pm during development, to catch changes to -variables that should not be changed, and then remove it for -production: - - # For testing: - Readonly::Scalar $Foo_Directory =3D> '/usr/local/foo'; - Readonly::Scalar $Bar_Directory =3D> '/usr/local/bar'; - # $Foo_Directory =3D '/usr/local/foo'; - # $Bar_Directory =3D '/usr/local/bar'; - - # For production: - # Readonly::Scalar $Foo_Directory =3D> '/usr/local/foo'; - # Readonly::Scalar $Bar_Directory =3D> '/usr/local/bar'; - $Foo_Directory =3D '/usr/local/foo'; - $Bar_Directory =3D '/usr/local/bar'; - - -=3Dhead1 FUNCTIONS - -=3Dover 4 - -=3Ditem Readonly::Scalar $var =3D> $value; - -Creates a nonmodifiable scalar, C<$var>, and assigns a value of -C<$value> to it. Thereafter, its value may not be changed. Any -attempt to modify the value will cause your program to die. - -A value I<must> be supplied. If you want the variable to have -C<undef> as its value, you must specify C<undef>. - -If C<$value> is a reference to a scalar, array, or hash, then this -function will mark the scalar, array, or hash it points to as being -Readonly as well, and it will recursively traverse the structure, -marking the whole thing as Readonly. Usually, this is what you want. -However, if you want only the C<$value> marked as Readonly, use -C<Scalar1>. - -If $var is already a Readonly variable, the program will die with -an error about reassigning Readonly variables. - -=3Ditem Readonly::Array @arr =3D> (value, value, ...); - -Creates a nonmodifiable array, C<@arr>, and assigns the specified list -of values to it. Thereafter, none of its values may be changed; the -array may not be lengthened or shortened or spliced. Any attempt to -do so will cause your program to die. - -If any of the values passed is a reference to a scalar, array, or hash, -then this function will mark the scalar, array, or hash it points to as -being Readonly as well, and it will recursively traverse the structure, -marking the whole thing as Readonly. Usually, this is what you want. -However, if you want only the hash C<%@arr> itself marked as Readonly, -use C<Array1>. - -If @arr is already a Readonly variable, the program will die with -an error about reassigning Readonly variables. - -=3Ditem Readonly::Hash %h =3D> (key =3D> value, key =3D> value, ...); - -=3Ditem Readonly::Hash %h =3D> {key =3D> value, key =3D> value, ...}; - -Creates a nonmodifiable hash, C<%h>, and assigns the specified keys -and values to it. Thereafter, its keys or values may not be changed. -Any attempt to do so will cause your program to die. - -A list of keys and values may be specified (with parentheses in the -synopsis above), or a hash reference may be specified (curly braces in -the synopsis above). If a list is specified, it must have an even -number of elements, or the function will die. - -If any of the values is a reference to a scalar, array, or hash, then -this function will mark the scalar, array, or hash it points to as -being Readonly as well, and it will recursively traverse the -structure, marking the whole thing as Readonly. Usually, this is what -you want. However, if you want only the hash C<%h> itself marked as -Readonly, use C<Hash1>. - -If %h is already a Readonly variable, the program will die with -an error about reassigning Readonly variables. - -=3Ditem Readonly $var =3D> $value; - -=3Ditem Readonly @arr =3D> (value, value, ...); - -=3Ditem Readonly %h =3D> (key =3D> value, ...); - -=3Ditem Readonly %h =3D> {key =3D> value, ...}; - -The C<Readonly> function is an alternate to the C<Scalar>, C<Array>, -and C<Hash> functions. It has the advantage (if you consider it an -advantage) of being one function. That may make your program look -neater, if you're initializing a whole bunch of constants at once. -You may or may not prefer this uniform style. - -It has the disadvantage of having a slightly different syntax for -versions of Perl prior to 5.8. For earlier versions, you must supply -a backslash, because it requires a reference as the first parameter. - - Readonly \$var =3D> $value; - Readonly \@arr =3D> (value, value, ...); - Readonly \%h =3D> (key =3D> value, ...); - Readonly \%h =3D> {key =3D> value, ...}; - -You may or may not consider this ugly. - -=3Ditem Readonly::Scalar1 $var =3D> $value; - -=3Ditem Readonly::Array1 @arr =3D> (value, value, ...); - -=3Ditem Readonly::Hash1 %h =3D> (key =3D> value, key =3D> value, ...); - -=3Ditem Readonly::Hash1 %h =3D> {key =3D> value, key =3D> value, ...}; - -These alternate functions create shallow Readonly variables, instead -of deep ones. For example: - - Readonly::Array1 @shal =3D> (1, 2, {perl=3D>'Rules', java=3D>'Bites'}, 4, 5= ); - Readonly::Array @deep =3D> (1, 2, {perl=3D>'Rules', java=3D>'Bites'}, 4, 5= ); - - $shal[1] =3D 7; # error - $shal[2]{APL}=3D'Weird'; # Allowed! since the hash isn't Readonly - $deep[1] =3D 7; # error - $deep[2]{APL}=3D'Weird'; # error, since the hash is Readonly - - -=3Dback - - -=3Dhead1 EXAMPLES - - # SCALARS: - - # A plain old read-only value - Readonly::Scalar $a =3D> "A string value"; - - # The value need not be a compile-time constant: - Readonly::Scalar $a =3D> $computed_value; - - - # ARRAYS: - - # A read-only array: - Readonly::Array @a =3D> (1, 2, 3, 4); - - # The parentheses are optional: - Readonly::Array @a =3D> 1, 2, 3, 4; - - # You can use Perl's built-in array quoting syntax: - Readonly::Array @a =3D> qw/1 2 3 4/; - - # You can initialize a read-only array from a variable one: - Readonly::Array @a =3D> @computed_values; - - # A read-only array can be empty, too: - Readonly::Array @a =3D> (); - Readonly::Array @a; # equivalent - - - # HASHES - - # Typical usage: - Readonly::Hash %a =3D> (key1 =3D> 'value1', key2 =3D> 'value2'); - - # A read-only hash can be initialized from a variable one: - Readonly::Hash %a =3D> %computed_values; - - # A read-only hash can be empty: - Readonly::Hash %a =3D> (); - Readonly::Hash %a; # equivalent - - # If you pass an odd number of values, the program will die: - Readonly::Hash %a =3D> (key1 =3D> 'value1', "value2"); - --> dies with "May not store an odd number of values in a hash" - - -=3Dhead1 EXPORTS - -By default, this module exports the following symbol into the calling -program's namespace: - - Readonly - -The following symbols are available for import into your program, if -you like: - - Scalar Scalar1 - Array Array1 - Hash Hash1 - - -=3Dhead1 REQUIREMENTS - - Perl 5.000 - Carp.pm (included with Perl) - Exporter.pm (included with Perl) - - Readonly::XS is recommended but not required. - -=3Dhead1 ACKNOWLEDGEMENTS - -Thanks to Slaven Rezic for the idea of one common function -(Readonly) for all three types of variables (13 April 2002). - -Thanks to Ernest Lergon for the idea (and initial code) for -deeply-Readonly data structures (21 May 2002). - -Thanks to Damian Conway for the idea (and code) for making the -Readonly function work a lot smoother under perl 5.8+. - - -=3Dhead1 AUTHOR / COPYRIGHT - -Eric J. Roode, roode(a)cpan.org - -Copyright (c) 2001-2004 by Eric J. Roode. All Rights Reserved. This -module is free software; you can redistribute it and/or modify it under -the same terms as Perl itself. - -If you have suggestions for improvement, please drop me a line. If -you make improvements to this software, I ask that you please send me -a copy of your changes. Thanks. - -Readonly.pm is made from 100% recycled electrons. No animals were -harmed during the development and testing of this module. Not sold -in stores! Readonly::XS sold separately. Void where prohibited. - -=3Dcut - -=3Dbegin gpg - ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.2.4 (MingW32) - -iD8DBQFAhaGCY96i4h5M0egRAg++AJ0ar4ncojbOp0OOc2wo+E/1cBn5cQCg9eP9 -qTzAC87PuyKB+vrcRykrDbo=3D -=3D39Ny ------END PGP SIGNATURE----- - -=3Dcut \ No newline at end of file diff --git a/config/mpfire/webradio b/config/mpfire/webradio deleted file mode 100644 index 402c31a4c..000000000 --- a/config/mpfire/webradio +++ /dev/null @@ -1,14 +0,0 @@ -62.75.176.45/rtl-high|89.0 RTL Hitradio|http://www.89.0rtl.de -gffstream.ic.llnwd.net/stream/gffstream_stream_wdr_einslive_b|Einslive|http:= //www.einslive.de/ -213.186.41.149:8040|Deepinside Radio European|http://www.deepinside.co.uk -62.75.176.40:80/bigfm-cbr-128|BigFM|http://www.bigfm.de -stream.telvi.de:8000/radiobrocken|Hit-Radio Brocken|http://www.radiobrocken.= de -magic-island.eu:8000/listen.mp3|Magic Island|http://www.magic-island.eu -dsl.blackbeats.fm:13000|BlackBeats FM|http://www.blackbeats.fm -87.118.64.197:3100|Discofox-Radio|http://www.discofox-radio.de -rmnradio.powerstream.de:8022|RMNradio|http://www.rmnradio.de/ -relay.radio.ethz.ch:8000/kohina.ogg|Kohina|http://www.kohina.com -relay1.slayradio.org:8000|Slay Radio|http://www.slayradio.com/ -demovibes.de:8000/necta128.ogg|Nectarine Demoscene Radio|http://www.scenemus= ic.eu/ -r1.scenesat.com:8000/scenesathi|SceneSat Radio|http://www.scenesat.com -radioparadise.steadyhost.com:8060|Radio Paradise|http://www.radioparadise.co= m/ diff --git a/config/rootfiles/common/configroot b/config/rootfiles/common/con= figroot index a286a1538..9839eee45 100644 --- a/config/rootfiles/common/configroot +++ b/config/rootfiles/common/configroot @@ -119,7 +119,6 @@ var/ipfire/menu.d/60-ipfire.menu var/ipfire/menu.d/70-log.menu #var/ipfire/menu.d/EX-apcupsd.menu #var/ipfire/menu.d/EX-guardian.menu -#var/ipfire/menu.d/EX-mpfire.menu #var/ipfire/menu.d/EX-mympd.menu #var/ipfire/menu.d/EX-samba.menu #var/ipfire/menu.d/EX-tor.menu diff --git a/config/rootfiles/common/web-user-interface b/config/rootfiles/co= mmon/web-user-interface index 7678c1e5d..d779ad1c8 100644 --- a/config/rootfiles/common/web-user-interface +++ b/config/rootfiles/common/web-user-interface @@ -55,7 +55,6 @@ srv/web/ipfire/cgi-bin/media.cgi srv/web/ipfire/cgi-bin/memory.cgi srv/web/ipfire/cgi-bin/modem-status.cgi srv/web/ipfire/cgi-bin/modem.cgi -#srv/web/ipfire/cgi-bin/mpfire.cgi #srv/web/ipfire/cgi-bin/mympd.cgi srv/web/ipfire/cgi-bin/netexternal.cgi srv/web/ipfire/cgi-bin/netinternal.cgi @@ -218,8 +217,6 @@ srv/web/ipfire/html/images/media-resume.png srv/web/ipfire/html/images/media-shuffle.png srv/web/ipfire/html/images/media-skip-backward.png srv/web/ipfire/html/images/media-skip-forward.png -srv/web/ipfire/html/images/mpfire -srv/web/ipfire/html/images/mpfire/box.png srv/web/ipfire/html/images/network-error.png srv/web/ipfire/html/images/network-idle.png srv/web/ipfire/html/images/network-offline.png diff --git a/config/rootfiles/packages/mpfire b/config/rootfiles/packages/mpf= ire deleted file mode 100644 index ab12bde03..000000000 --- a/config/rootfiles/packages/mpfire +++ /dev/null @@ -1,35 +0,0 @@ -srv/web/ipfire/cgi-bin/mpfire.cgi -srv/web/ipfire/html/images/mpfire -usr/lib/perl5/5.36.0/Class/Accessor -usr/lib/perl5/5.36.0/Class/Accessor.pm -usr/lib/perl5/5.36.0/Class/Accessor/Fast.pm -usr/lib/perl5/5.36.0/Class/Accessor/Faster.pm -usr/lib/perl5/5.36.0/Readonly.pm -usr/lib/perl5/site_perl/5.36.0/Audio -usr/lib/perl5/site_perl/5.36.0/Audio/MPD -usr/lib/perl5/site_perl/5.36.0/Audio/MPD.pm -usr/lib/perl5/site_perl/5.36.0/Audio/MPD/Collection.pm -usr/lib/perl5/site_perl/5.36.0/Audio/MPD/Common -usr/lib/perl5/site_perl/5.36.0/Audio/MPD/Common.pm -usr/lib/perl5/site_perl/5.36.0/Audio/MPD/Common/Item -usr/lib/perl5/site_perl/5.36.0/Audio/MPD/Common/Item.pm -usr/lib/perl5/site_perl/5.36.0/Audio/MPD/Common/Item/Directory.pm -usr/lib/perl5/site_perl/5.36.0/Audio/MPD/Common/Item/Playlist.pm -usr/lib/perl5/site_perl/5.36.0/Audio/MPD/Common/Item/Song.pm -usr/lib/perl5/site_perl/5.36.0/Audio/MPD/Common/Stats.pm -usr/lib/perl5/site_perl/5.36.0/Audio/MPD/Common/Status.pm -usr/lib/perl5/site_perl/5.36.0/Audio/MPD/Common/Time.pm -usr/lib/perl5/site_perl/5.36.0/Audio/MPD/Playlist.pm -usr/lib/perl5/site_perl/5.36.0/Audio/MPD/Test.pm -usr/local/bin/mpfirectrl -var/ipfire/backup/addons/includes/mpfire -var/ipfire/menu.d/EX-mpfire.menu -var/ipfire/mpfire -var/ipfire/mpfire/bin -var/ipfire/mpfire/bin/mpfire.pl -var/ipfire/mpfire/settings -var/ipfire/mpfire/webradio -usr/local/bin/mpfirectrl -srv/web/ipfire/cgi-bin/mpfire.cgi -srv/web/ipfire/html/images/mpfire -var/ipfire/menu.d/EX-mpfire.menu diff --git a/doc/language_issues.de b/doc/language_issues.de index bd335de41..7883bef76 100644 --- a/doc/language_issues.de +++ b/doc/language_issues.de @@ -24,14 +24,19 @@ WARNING: translation string unused: ConnSched scheduler WARNING: translation string unused: ConnSched select profile WARNING: translation string unused: Daily WARNING: translation string unused: Disabled +WARNING: translation string unused: Existing Files WARNING: translation string unused: HDD temperature WARNING: translation string unused: Level7 rule WARNING: translation string unused: Local VPN IP +WARNING: translation string unused: Pages WARNING: translation string unused: Ping WARNING: translation string unused: Queuelenght WARNING: translation string unused: Remote IP WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv +WARNING: translation string unused: Scan for Files +WARNING: translation string unused: Scan for Songs +WARNING: translation string unused: Scan from Directory WARNING: translation string unused: Subclass WARNING: translation string unused: TOS Bits WARNING: translation string unused: Utilization on @@ -110,6 +115,7 @@ WARNING: translation string unused: age seconds WARNING: translation string unused: age shour WARNING: translation string unused: age sminute WARNING: translation string unused: age ssecond +WARNING: translation string unused: album WARNING: translation string unused: alcatelusb help WARNING: translation string unused: alcatelusb upload WARNING: translation string unused: all interfaces @@ -122,6 +128,7 @@ WARNING: translation string unused: alt vpn WARNING: translation string unused: and WARNING: translation string unused: apply WARNING: translation string unused: archive not exist +WARNING: translation string unused: artist WARNING: translation string unused: attemps WARNING: translation string unused: avoid dod WARNING: translation string unused: backup config floppy @@ -158,6 +165,7 @@ WARNING: translation string unused: check for net traffic= update WARNING: translation string unused: choose config WARNING: translation string unused: class in use WARNING: translation string unused: clear cache +WARNING: translation string unused: clear playlist WARNING: translation string unused: client WARNING: translation string unused: comment WARNING: translation string unused: community rules @@ -179,6 +187,7 @@ WARNING: translation string unused: create mask WARNING: translation string unused: create new backup WARNING: translation string unused: current media WARNING: translation string unused: current ovpn +WARNING: translation string unused: current playlist WARNING: translation string unused: current profile WARNING: translation string unused: custom networks WARNING: translation string unused: custom services @@ -375,6 +384,7 @@ WARNING: translation string unused: generatekeys WARNING: translation string unused: generatepolicy WARNING: translation string unused: generatereport WARNING: translation string unused: genkey +WARNING: translation string unused: genre WARNING: translation string unused: gpl i accept these terms and conditions WARNING: translation string unused: gpl license agreement WARNING: translation string unused: gpl please read carefully the general pu= blic license and accept it below @@ -540,6 +550,7 @@ WARNING: translation string unused: network traffic graphs WARNING: translation string unused: network updated WARNING: translation string unused: networks settings WARNING: translation string unused: new optionsfw must boot +WARNING: translation string unused: next WARNING: translation string unused: no alcatelusb firmware WARNING: translation string unused: no cfg upload WARNING: translation string unused: no eciadsl synch.bin file @@ -632,6 +643,7 @@ WARNING: translation string unused: pdc options WARNING: translation string unused: phase1 group WARNING: translation string unused: phonebook entry WARNING: translation string unused: ping disabled +WARNING: translation string unused: play WARNING: translation string unused: polfile WARNING: translation string unused: port forwarding configuration WARNING: translation string unused: ports @@ -639,6 +651,7 @@ WARNING: translation string unused: pots WARNING: translation string unused: pppoe WARNING: translation string unused: prefered master WARNING: translation string unused: present +WARNING: translation string unused: prev WARNING: translation string unused: printcap name WARNING: translation string unused: printer WARNING: translation string unused: printername @@ -652,6 +665,7 @@ WARNING: translation string unused: proxy no proxy local WARNING: translation string unused: proxy port WARNING: translation string unused: psk WARNING: translation string unused: qos add subclass +WARNING: translation string unused: quick playlist WARNING: translation string unused: read list WARNING: translation string unused: reboot ask WARNING: translation string unused: reboot question @@ -662,6 +676,7 @@ WARNING: translation string unused: registered user rules WARNING: translation string unused: released WARNING: translation string unused: reload WARNING: translation string unused: removable device advice +WARNING: translation string unused: repeat WARNING: translation string unused: reportfile WARNING: translation string unused: reportlevel WARNING: translation string unused: requested data @@ -704,6 +719,7 @@ WARNING: translation string unused: set WARNING: translation string unused: shaping list options WARNING: translation string unused: show last x lines WARNING: translation string unused: show share options +WARNING: translation string unused: shuffle WARNING: translation string unused: shutdown ask WARNING: translation string unused: shutdown sure WARNING: translation string unused: shutdown2 @@ -765,9 +781,11 @@ WARNING: translation string unused: this months volume WARNING: translation string unused: this update is already installed WARNING: translation string unused: this weeks volume WARNING: translation string unused: time date manually reset +WARNING: translation string unused: title WARNING: translation string unused: to email adr WARNING: translation string unused: to install an update WARNING: translation string unused: to warn email bad +WARNING: translation string unused: toggle WARNING: translation string unused: too long 80 char max WARNING: translation string unused: tor 0 =3D disabled WARNING: translation string unused: tor accounting period daily @@ -850,6 +868,10 @@ WARNING: translation string unused: use dov WARNING: translation string unused: use ibod WARNING: translation string unused: view log WARNING: translation string unused: visible in browselist +WARNING: translation string unused: voldown10 +WARNING: translation string unused: voldown5 +WARNING: translation string unused: volup10 +WARNING: translation string unused: volup5 WARNING: translation string unused: vpn aggrmode WARNING: translation string unused: vpn delayed start WARNING: translation string unused: vpn delayed start help @@ -862,6 +884,7 @@ WARNING: translation string unused: vpn red name WARNING: translation string unused: vpn watch WARNING: translation string unused: warn when traffic reaches WARNING: translation string unused: web proxy configuration +WARNING: translation string unused: webradio playlist WARNING: translation string unused: week WARNING: translation string unused: week-graph WARNING: translation string unused: weekly firewallhits diff --git a/doc/language_issues.en b/doc/language_issues.en index 4f8a7adc4..3f1626b68 100644 --- a/doc/language_issues.en +++ b/doc/language_issues.en @@ -59,7 +59,6 @@ WARNING: untranslated string: ConnSched up =3D Up WARNING: untranslated string: ConnSched weekdays =3D Days of the week: WARNING: untranslated string: Edit an existing route =3D Edit an existing ro= ute WARNING: untranslated string: Enter TOS =3D Activate or deactivate TOS-bits = <br /> and then press <i>Save</i>. -WARNING: untranslated string: Existing Files =3D Files in database WARNING: untranslated string: Level7 Protocol =3D Level7-Protocol WARNING: untranslated string: Level7 Rule =3D Level7-Rule WARNING: untranslated string: MB read =3D MB read @@ -71,12 +70,8 @@ WARNING: untranslated string: Number of IPs for the pie ch= art =3D Number of IPs fo WARNING: untranslated string: Number of Ports for the pie chart =3D Number o= f ports for the pie chart WARNING: untranslated string: OVPN =3D OpenVPN WARNING: untranslated string: OpenVPN =3D OpenVPN -WARNING: untranslated string: Pages =3D Pages WARNING: untranslated string: Port Rule =3D Port-Rule WARNING: untranslated string: QoS not enabled =3D QoS is not enabled! -WARNING: untranslated string: Scan for Files =3D Scan for files -WARNING: untranslated string: Scan for Songs =3D unknown string -WARNING: untranslated string: Scan from Directory =3D Scan from directory WARNING: untranslated string: Set time on boot =3D Force setting the system = clock on boot WARNING: untranslated string: TOS Rule =3D TOS-Rule WARNING: untranslated string: TOS rule =3D TOS rule @@ -307,7 +302,6 @@ WARNING: untranslated string: advproxy wpad title =3D Web= Proxy Auto-Discovery Pro WARNING: untranslated string: advproxy wpad view pac =3D Open PAC File WARNING: untranslated string: age second =3D second WARNING: untranslated string: aktiv =3D Active -WARNING: untranslated string: album =3D Album WARNING: untranslated string: alias ip =3D Alias IP WARNING: untranslated string: aliases =3D Aliases WARNING: untranslated string: aliases default interface =3D - Default Interf= ace - @@ -323,7 +317,6 @@ WARNING: untranslated string: apcupsd =3D APC-UPS status WARNING: untranslated string: april =3D April WARNING: untranslated string: are you sure =3D Are you sure? WARNING: untranslated string: arp table entries =3D ARP Table Entries -WARNING: untranslated string: artist =3D Artist WARNING: untranslated string: asn lookup failed =3D AS lookup failed WARNING: untranslated string: atm device =3D Device: WARNING: untranslated string: atm settings =3D ATM settings @@ -477,7 +470,6 @@ WARNING: untranslated string: check all =3D Check all WARNING: untranslated string: check vpn lr =3D Check WARNING: untranslated string: cipher =3D Encryption: WARNING: untranslated string: city =3D City -WARNING: untranslated string: clear playlist =3D Empty playlist WARNING: untranslated string: clenabled =3D Provide time to local network WARNING: untranslated string: click to disable =3D Enabled (click to disable) WARNING: untranslated string: click to enable =3D Disabled (click to enable) @@ -535,7 +527,6 @@ WARNING: untranslated string: current dhcp leases on blue= =3D Current DHCP leases WARNING: untranslated string: current dynamic leases =3D Current dynamic lea= ses WARNING: untranslated string: current fixed leases =3D Current fixed leases WARNING: untranslated string: current hosts =3D Current hosts -WARNING: untranslated string: current playlist =3D Current Playlist WARNING: untranslated string: current rules =3D Current rules: WARNING: untranslated string: daemon login script =3D Daemon login script WARNING: untranslated string: dangerous =3D Dangerous @@ -978,7 +969,6 @@ WARNING: untranslated string: generate iso =3D Generate I= SO WARNING: untranslated string: generate ptr =3D Generate PTR WARNING: untranslated string: generate root/host certificates =3D Generate r= oot/host certificates WARNING: untranslated string: generating the root and host certificates may = take a long time. it can take up to several minutes on older hardware. please= be patient =3D Generating the root and host certificates may take a long tim= e. It can take up to several minutes on older hardware. Please be patient. -WARNING: untranslated string: genre =3D Genre WARNING: untranslated string: global settings =3D Global Settings WARNING: untranslated string: graph =3D Graph WARNING: untranslated string: green =3D GREEN @@ -1338,13 +1328,6 @@ WARNING: untranslated string: month =3D Month WARNING: untranslated string: months =3D Months WARNING: untranslated string: most preferred =3D most preferred WARNING: untranslated string: mounted on =3D Mounted on -WARNING: untranslated string: mpfire =3D Media Player for IPFire -WARNING: untranslated string: mpfire controls =3D MPFire Control -WARNING: untranslated string: mpfire playlist =3D MPFire Playlist -WARNING: untranslated string: mpfire scanning =3D Scan for new files -WARNING: untranslated string: mpfire search =3D MPFire Search -WARNING: untranslated string: mpfire songs =3D MPFire songlist -WARNING: untranslated string: mpfire webradio =3D MPFire Webradio WARNING: untranslated string: mtu =3D MTU WARNING: untranslated string: name =3D Name WARNING: untranslated string: name is invalid =3D Name is invalid @@ -1368,7 +1351,6 @@ WARNING: untranslated string: network traffic graphs ot= hers =3D Network (others) WARNING: untranslated string: never =3D Never WARNING: untranslated string: new optionsfw later =3D Some options need a re= boot to take effect WARNING: untranslated string: newer =3D Newer -WARNING: untranslated string: next =3D next WARNING: untranslated string: no =3D No WARNING: untranslated string: no data =3D unknown string WARNING: untranslated string: no dhcp lease =3D No DHCP lease has been acqui= red @@ -1505,7 +1487,6 @@ WARNING: untranslated string: percentage =3D Percentage WARNING: untranslated string: persistent =3D Persistent WARNING: untranslated string: pfs yes no =3D Perfect Forward Secrecy (PFS) WARNING: untranslated string: pkcs12 file password =3D PKCS12 File Password -WARNING: untranslated string: play =3D Play WARNING: untranslated string: please reboot to apply your changes =3D Please= reboot to apply your changes WARNING: untranslated string: policy =3D Policy WARNING: untranslated string: port =3D Port @@ -1517,7 +1498,6 @@ WARNING: untranslated string: pptp peer =3D Peer WARNING: untranslated string: pptp route =3D PPTP Route WARNING: untranslated string: pptp settings =3D Additional PPTP settings: WARNING: untranslated string: pre-shared key is too short =3D Pre-shared key= is too short. -WARNING: untranslated string: prev =3D previous WARNING: untranslated string: primary dns =3D Primary DNS: WARNING: untranslated string: primary ntp server =3D Primary NTP server WARNING: untranslated string: primary wins server address =3D Primary WINS s= erver address @@ -1553,7 +1533,6 @@ WARNING: untranslated string: pulse dial =3D Pulse dial: WARNING: untranslated string: qos enter bandwidths =3D You will need to ente= r your downstream and upstream bandwidth! WARNING: untranslated string: qos graphs =3D Qos Graphs WARNING: untranslated string: qos warning =3D The rule <strong>must</strong>= be saved, otherwise it will be discarded! -WARNING: untranslated string: quick playlist =3D Quick Playlist WARNING: untranslated string: ram =3D RAM WARNING: untranslated string: rdns =3D rDNS WARNING: untranslated string: read bytes =3D Bytes Read @@ -1588,7 +1567,6 @@ WARNING: untranslated string: remote subnet is invalid = =3D Remote subnet is invali WARNING: untranslated string: remove =3D Remove WARNING: untranslated string: remove ca certificate =3D Remove CA certificate WARNING: untranslated string: remove x509 =3D Remove x509 -WARNING: untranslated string: repeat =3D Repeat WARNING: untranslated string: request =3D Request WARNING: untranslated string: required =3D Required WARNING: untranslated string: required field =3D Required field @@ -1651,7 +1629,6 @@ WARNING: untranslated string: show host certificate =3D= Show host certificate WARNING: untranslated string: show otp qrcode =3D Show OTP QRCode WARNING: untranslated string: show root certificate =3D Show root certificate WARNING: untranslated string: show tls-auth key =3D Show tls-auth key -WARNING: untranslated string: shuffle =3D Shuffle WARNING: untranslated string: shutdown =3D Shutdown WARNING: untranslated string: shutdown control =3D Shutdown control WARNING: untranslated string: shutting down =3D Shutting down @@ -1747,9 +1724,7 @@ WARNING: untranslated string: time =3D Time WARNING: untranslated string: time server =3D Time Server WARNING: untranslated string: timeformat =3D %Y-%m-%d at %H:%M:%S %Z WARNING: untranslated string: timeout must be a number =3D Timeout must be a= number. -WARNING: untranslated string: title =3D Title WARNING: untranslated string: to =3D To -WARNING: untranslated string: toggle =3D pause/resume WARNING: untranslated string: toggle enable disable =3D Enable or disable WARNING: untranslated string: token =3D Token: WARNING: untranslated string: token not set =3D No Token has been given. @@ -2119,10 +2094,6 @@ WARNING: untranslated string: version =3D Version WARNING: untranslated string: virtual address =3D Virtual Address WARNING: untranslated string: virtual private networking =3D Virtual Private= Networking WARNING: untranslated string: visit us at =3D Visit us at -WARNING: untranslated string: voldown10 =3D Decrease volume by 10 -WARNING: untranslated string: voldown5 =3D Decrease volume by 5 -WARNING: untranslated string: volup10 =3D Increase volume by 10 -WARNING: untranslated string: volup5 =3D Increase volume by 5 WARNING: untranslated string: vpi number =3D VPI number: WARNING: untranslated string: vpn =3D VPN WARNING: untranslated string: vpn altname syntax =3D SubjectAltName is a com= ma separated list of email, dns, uri, rid and ip objects.<br />email:an email= address. Syntax email:copy takes the email field from the cert to be used.<b= r />DNS:a valid domain name.<br />URI:any valid uri.<br />RID:registered obje= ct identifier.<br />IP:an IP address.<br />Note:charset is limited and case i= s significant.<br />Example:<br /><b>email:</b>ipfire(a)foo.org<b>,email:</b>= copy<b>,DNS:</b>www.ipfire.org<b>,IP:</b>127.0.0.1<b>,URI:</b>http://url/to/s= omething @@ -2157,7 +2128,6 @@ WARNING: untranslated string: was deleted =3D was delet= ed WARNING: untranslated string: web hits =3D Total number of websites matching= selected criteria for WARNING: untranslated string: web proxy =3D Web Proxy WARNING: untranslated string: web server =3D Web Server -WARNING: untranslated string: webradio playlist =3D Webradio Playlist WARNING: untranslated string: website =3D Website WARNING: untranslated string: wednesday =3D Wednesday WARNING: untranslated string: weeks =3D Weeks diff --git a/doc/language_issues.es b/doc/language_issues.es index b33ffa2dc..0a89279d5 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -26,14 +26,18 @@ WARNING: translation string unused: ConnSched scheduler WARNING: translation string unused: ConnSched select profile WARNING: translation string unused: Daily WARNING: translation string unused: Disabled +WARNING: translation string unused: Existing Files WARNING: translation string unused: HDD temperature WARNING: translation string unused: Level7 rule WARNING: translation string unused: Local VPN IP +WARNING: translation string unused: Pages WARNING: translation string unused: Ping WARNING: translation string unused: Queuelenght WARNING: translation string unused: Remote IP WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv +WARNING: translation string unused: Scan for Files +WARNING: translation string unused: Scan from Directory WARNING: translation string unused: Subclass WARNING: translation string unused: TOS Bits WARNING: translation string unused: Utilization on @@ -112,6 +116,7 @@ WARNING: translation string unused: age seconds WARNING: translation string unused: age shour WARNING: translation string unused: age sminute WARNING: translation string unused: age ssecond +WARNING: translation string unused: album WARNING: translation string unused: alcatelusb help WARNING: translation string unused: alcatelusb upload WARNING: translation string unused: all interfaces @@ -125,6 +130,7 @@ WARNING: translation string unused: and WARNING: translation string unused: ansi t1.483 WARNING: translation string unused: apply WARNING: translation string unused: archive not exist +WARNING: translation string unused: artist WARNING: translation string unused: attemps WARNING: translation string unused: avoid dod WARNING: translation string unused: backup archive @@ -177,6 +183,7 @@ WARNING: translation string unused: choose config WARNING: translation string unused: choose media WARNING: translation string unused: class in use WARNING: translation string unused: clear cache +WARNING: translation string unused: clear playlist WARNING: translation string unused: client WARNING: translation string unused: comment WARNING: translation string unused: community rules @@ -200,6 +207,7 @@ WARNING: translation string unused: create new backup WARNING: translation string unused: cryptographic settings WARNING: translation string unused: current media WARNING: translation string unused: current ovpn +WARNING: translation string unused: current playlist WARNING: translation string unused: current profile WARNING: translation string unused: custom networks WARNING: translation string unused: custom services @@ -414,6 +422,7 @@ WARNING: translation string unused: generatekeys WARNING: translation string unused: generatepolicy WARNING: translation string unused: generatereport WARNING: translation string unused: genkey +WARNING: translation string unused: genre WARNING: translation string unused: gpl i accept these terms and conditions WARNING: translation string unused: gpl license agreement WARNING: translation string unused: gpl please read carefully the general pu= blic license and accept it below @@ -588,6 +597,7 @@ WARNING: translation string unused: network traffic graphs WARNING: translation string unused: network updated WARNING: translation string unused: networks settings WARNING: translation string unused: new optionsfw must boot +WARNING: translation string unused: next WARNING: translation string unused: no alcatelusb firmware WARNING: translation string unused: no cfg upload WARNING: translation string unused: no eciadsl synch.bin file @@ -688,6 +698,7 @@ WARNING: translation string unused: pdc options WARNING: translation string unused: phase1 group WARNING: translation string unused: phonebook entry WARNING: translation string unused: ping disabled +WARNING: translation string unused: play WARNING: translation string unused: polfile WARNING: translation string unused: port forwarding configuration WARNING: translation string unused: ports @@ -695,6 +706,7 @@ WARNING: translation string unused: pots WARNING: translation string unused: pppoe WARNING: translation string unused: prefered master WARNING: translation string unused: present +WARNING: translation string unused: prev WARNING: translation string unused: printcap name WARNING: translation string unused: printer WARNING: translation string unused: printername @@ -709,6 +721,7 @@ WARNING: translation string unused: proxy port WARNING: translation string unused: psk WARNING: translation string unused: qos add subclass WARNING: translation string unused: quick control +WARNING: translation string unused: quick playlist WARNING: translation string unused: random number generator daemon WARNING: translation string unused: read list WARNING: translation string unused: reboot ask @@ -720,6 +733,7 @@ WARNING: translation string unused: registered user rules WARNING: translation string unused: released WARNING: translation string unused: reload WARNING: translation string unused: removable device advice +WARNING: translation string unused: repeat WARNING: translation string unused: reportfile WARNING: translation string unused: reportlevel WARNING: translation string unused: requested data @@ -765,6 +779,7 @@ WARNING: translation string unused: show areas WARNING: translation string unused: show last x lines WARNING: translation string unused: show lines WARNING: translation string unused: show share options +WARNING: translation string unused: shuffle WARNING: translation string unused: shutdown ask WARNING: translation string unused: shutdown sure WARNING: translation string unused: shutdown2 @@ -829,9 +844,11 @@ WARNING: translation string unused: this months volume WARNING: translation string unused: this update is already installed WARNING: translation string unused: this weeks volume WARNING: translation string unused: time date manually reset +WARNING: translation string unused: title WARNING: translation string unused: to email adr WARNING: translation string unused: to install an update WARNING: translation string unused: to warn email bad +WARNING: translation string unused: toggle WARNING: translation string unused: too long 80 char max WARNING: translation string unused: tor 0 =3D disabled WARNING: translation string unused: tor accounting period daily @@ -919,6 +936,10 @@ WARNING: translation string unused: use dov WARNING: translation string unused: use ibod WARNING: translation string unused: view log WARNING: translation string unused: visible in browselist +WARNING: translation string unused: voldown10 +WARNING: translation string unused: voldown5 +WARNING: translation string unused: volup10 +WARNING: translation string unused: volup5 WARNING: translation string unused: vpn aggrmode WARNING: translation string unused: vpn configuration main WARNING: translation string unused: vpn delayed start @@ -932,6 +953,7 @@ WARNING: translation string unused: vpn red name WARNING: translation string unused: vpn watch WARNING: translation string unused: warn when traffic reaches WARNING: translation string unused: web proxy configuration +WARNING: translation string unused: webradio playlist WARNING: translation string unused: week WARNING: translation string unused: week-graph WARNING: translation string unused: weekly firewallhits @@ -977,7 +999,6 @@ WARNING: translation string unused: zoneconf val vlan tag= range error WARNING: translation string unused: zoneconf val zoneslave amount error WARNING: untranslated string: Captive ACTIVATE =3D unknown string WARNING: untranslated string: Captive clients =3D unknown string -WARNING: untranslated string: Scan for Songs =3D unknown string WARNING: untranslated string: access point name =3D Access Point Name WARNING: untranslated string: access point name is invalid =3D Access Point = Name is invalid WARNING: untranslated string: access point name is required =3D Access Point= Name is required diff --git a/doc/language_issues.fr b/doc/language_issues.fr index 93466bd9e..7f9349bc0 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -28,14 +28,19 @@ WARNING: translation string unused: ConnSched scheduler WARNING: translation string unused: ConnSched select profile WARNING: translation string unused: Daily WARNING: translation string unused: Disabled +WARNING: translation string unused: Existing Files WARNING: translation string unused: HDD temperature WARNING: translation string unused: Level7 rule WARNING: translation string unused: Local VPN IP +WARNING: translation string unused: Pages WARNING: translation string unused: Ping WARNING: translation string unused: Queuelenght WARNING: translation string unused: Remote IP WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv +WARNING: translation string unused: Scan for Files +WARNING: translation string unused: Scan for Songs +WARNING: translation string unused: Scan from Directory WARNING: translation string unused: Subclass WARNING: translation string unused: TOS Bits WARNING: translation string unused: Utilization on @@ -115,6 +120,7 @@ WARNING: translation string unused: age seconds WARNING: translation string unused: age shour WARNING: translation string unused: age sminute WARNING: translation string unused: age ssecond +WARNING: translation string unused: album WARNING: translation string unused: alcatelusb help WARNING: translation string unused: alcatelusb upload WARNING: translation string unused: all interfaces @@ -127,6 +133,7 @@ WARNING: translation string unused: alt vpn WARNING: translation string unused: and WARNING: translation string unused: apply WARNING: translation string unused: archive not exist +WARNING: translation string unused: artist WARNING: translation string unused: attemps WARNING: translation string unused: avoid dod WARNING: translation string unused: backup archive @@ -179,6 +186,7 @@ WARNING: translation string unused: choose config WARNING: translation string unused: choose media WARNING: translation string unused: class in use WARNING: translation string unused: clear cache +WARNING: translation string unused: clear playlist WARNING: translation string unused: client WARNING: translation string unused: comment WARNING: translation string unused: community rules @@ -202,6 +210,7 @@ WARNING: translation string unused: create new backup WARNING: translation string unused: cryptographic settings WARNING: translation string unused: current media WARNING: translation string unused: current ovpn +WARNING: translation string unused: current playlist WARNING: translation string unused: current profile WARNING: translation string unused: custom networks WARNING: translation string unused: custom services @@ -402,6 +411,7 @@ WARNING: translation string unused: generatekeys WARNING: translation string unused: generatepolicy WARNING: translation string unused: generatereport WARNING: translation string unused: genkey +WARNING: translation string unused: genre WARNING: translation string unused: gpl i accept these terms and conditions WARNING: translation string unused: gpl license agreement WARNING: translation string unused: gpl please read carefully the general pu= blic license and accept it below @@ -568,6 +578,7 @@ WARNING: translation string unused: network traffic graphs WARNING: translation string unused: network updated WARNING: translation string unused: networks settings WARNING: translation string unused: new optionsfw must boot +WARNING: translation string unused: next WARNING: translation string unused: no alcatelusb firmware WARNING: translation string unused: no cfg upload WARNING: translation string unused: no eciadsl synch.bin file @@ -662,6 +673,7 @@ WARNING: translation string unused: pdc options WARNING: translation string unused: phase1 group WARNING: translation string unused: phonebook entry WARNING: translation string unused: ping disabled +WARNING: translation string unused: play WARNING: translation string unused: polfile WARNING: translation string unused: port forwarding configuration WARNING: translation string unused: ports @@ -669,6 +681,7 @@ WARNING: translation string unused: pots WARNING: translation string unused: pppoe WARNING: translation string unused: prefered master WARNING: translation string unused: present +WARNING: translation string unused: prev WARNING: translation string unused: printcap name WARNING: translation string unused: printer WARNING: translation string unused: printername @@ -683,6 +696,7 @@ WARNING: translation string unused: proxy port WARNING: translation string unused: psk WARNING: translation string unused: qos add subclass WARNING: translation string unused: quick control +WARNING: translation string unused: quick playlist WARNING: translation string unused: random number generator daemon WARNING: translation string unused: read list WARNING: translation string unused: reboot ask @@ -694,6 +708,7 @@ WARNING: translation string unused: registered user rules WARNING: translation string unused: released WARNING: translation string unused: reload WARNING: translation string unused: removable device advice +WARNING: translation string unused: repeat WARNING: translation string unused: reportfile WARNING: translation string unused: reportlevel WARNING: translation string unused: requested data @@ -739,6 +754,7 @@ WARNING: translation string unused: show areas WARNING: translation string unused: show last x lines WARNING: translation string unused: show lines WARNING: translation string unused: show share options +WARNING: translation string unused: shuffle WARNING: translation string unused: shutdown ask WARNING: translation string unused: shutdown sure WARNING: translation string unused: shutdown2 @@ -801,9 +817,11 @@ WARNING: translation string unused: this months volume WARNING: translation string unused: this update is already installed WARNING: translation string unused: this weeks volume WARNING: translation string unused: time date manually reset +WARNING: translation string unused: title WARNING: translation string unused: to email adr WARNING: translation string unused: to install an update WARNING: translation string unused: to warn email bad +WARNING: translation string unused: toggle WARNING: translation string unused: too long 80 char max WARNING: translation string unused: tor 0 =3D disabled WARNING: translation string unused: tor accounting period daily @@ -889,6 +907,10 @@ WARNING: translation string unused: use dov WARNING: translation string unused: use ibod WARNING: translation string unused: view log WARNING: translation string unused: visible in browselist +WARNING: translation string unused: voldown10 +WARNING: translation string unused: voldown5 +WARNING: translation string unused: volup10 +WARNING: translation string unused: volup5 WARNING: translation string unused: vpn aggrmode WARNING: translation string unused: vpn configuration main WARNING: translation string unused: vpn delayed start @@ -902,6 +924,7 @@ WARNING: translation string unused: vpn red name WARNING: translation string unused: vpn watch WARNING: translation string unused: warn when traffic reaches WARNING: translation string unused: web proxy configuration +WARNING: translation string unused: webradio playlist WARNING: translation string unused: week WARNING: translation string unused: week-graph WARNING: translation string unused: weekly firewallhits diff --git a/doc/language_issues.it b/doc/language_issues.it index 426df7759..5870e2bc7 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -2,14 +2,18 @@ WARNING: translation string unused: Async logging enabled WARNING: translation string unused: Client status and controlc WARNING: translation string unused: ConnSched scheduler WARNING: translation string unused: ConnSched select profile +WARNING: translation string unused: Existing Files WARNING: translation string unused: HDD temperature WARNING: translation string unused: Level7 rule WARNING: translation string unused: Local VPN IP +WARNING: translation string unused: Pages WARNING: translation string unused: Ping WARNING: translation string unused: Queuelenght WARNING: translation string unused: Remote IP WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv +WARNING: translation string unused: Scan for Files +WARNING: translation string unused: Scan from Directory WARNING: translation string unused: Subclass WARNING: translation string unused: TOS Bits WARNING: translation string unused: Utilization on @@ -85,6 +89,7 @@ WARNING: translation string unused: age seconds WARNING: translation string unused: age shour WARNING: translation string unused: age sminute WARNING: translation string unused: age ssecond +WARNING: translation string unused: album WARNING: translation string unused: alcatelusb help WARNING: translation string unused: alcatelusb upload WARNING: translation string unused: all interfaces @@ -98,6 +103,7 @@ WARNING: translation string unused: and WARNING: translation string unused: ansi t1.483 WARNING: translation string unused: apply WARNING: translation string unused: archive not exist +WARNING: translation string unused: artist WARNING: translation string unused: attemps WARNING: translation string unused: avoid dod WARNING: translation string unused: backup archive @@ -150,6 +156,7 @@ WARNING: translation string unused: choose config WARNING: translation string unused: choose media WARNING: translation string unused: class in use WARNING: translation string unused: clear cache +WARNING: translation string unused: clear playlist WARNING: translation string unused: client WARNING: translation string unused: comment WARNING: translation string unused: community rules @@ -172,6 +179,7 @@ WARNING: translation string unused: create mask WARNING: translation string unused: create new backup WARNING: translation string unused: current media WARNING: translation string unused: current ovpn +WARNING: translation string unused: current playlist WARNING: translation string unused: current profile WARNING: translation string unused: custom networks WARNING: translation string unused: custom services @@ -368,6 +376,7 @@ WARNING: translation string unused: generatekeys WARNING: translation string unused: generatepolicy WARNING: translation string unused: generatereport WARNING: translation string unused: genkey +WARNING: translation string unused: genre WARNING: translation string unused: gpl i accept these terms and conditions WARNING: translation string unused: gpl license agreement WARNING: translation string unused: gpl please read carefully the general pu= blic license and accept it below @@ -524,6 +533,7 @@ WARNING: translation string unused: network traffic graphs WARNING: translation string unused: network updated WARNING: translation string unused: networks settings WARNING: translation string unused: new optionsfw must boot +WARNING: translation string unused: next WARNING: translation string unused: no alcatelusb firmware WARNING: translation string unused: no cfg upload WARNING: translation string unused: no eciadsl synch.bin file @@ -616,6 +626,7 @@ WARNING: translation string unused: pdc options WARNING: translation string unused: phase1 group WARNING: translation string unused: phonebook entry WARNING: translation string unused: ping disabled +WARNING: translation string unused: play WARNING: translation string unused: polfile WARNING: translation string unused: port forwarding configuration WARNING: translation string unused: ports @@ -623,6 +634,7 @@ WARNING: translation string unused: pots WARNING: translation string unused: pppoe WARNING: translation string unused: prefered master WARNING: translation string unused: present +WARNING: translation string unused: prev WARNING: translation string unused: printcap name WARNING: translation string unused: printer WARNING: translation string unused: printername @@ -637,6 +649,7 @@ WARNING: translation string unused: proxy port WARNING: translation string unused: psk WARNING: translation string unused: qos add subclass WARNING: translation string unused: quick control +WARNING: translation string unused: quick playlist WARNING: translation string unused: read list WARNING: translation string unused: reboot ask WARNING: translation string unused: reboot question @@ -647,6 +660,7 @@ WARNING: translation string unused: registered user rules WARNING: translation string unused: released WARNING: translation string unused: reload WARNING: translation string unused: removable device advice +WARNING: translation string unused: repeat WARNING: translation string unused: reportfile WARNING: translation string unused: reportlevel WARNING: translation string unused: requested data @@ -691,6 +705,7 @@ WARNING: translation string unused: show areas WARNING: translation string unused: show last x lines WARNING: translation string unused: show lines WARNING: translation string unused: show share options +WARNING: translation string unused: shuffle WARNING: translation string unused: shutdown ask WARNING: translation string unused: shutdown sure WARNING: translation string unused: shutdown2 @@ -755,9 +770,11 @@ WARNING: translation string unused: this months volume WARNING: translation string unused: this update is already installed WARNING: translation string unused: this weeks volume WARNING: translation string unused: time date manually reset +WARNING: translation string unused: title WARNING: translation string unused: to email adr WARNING: translation string unused: to install an update WARNING: translation string unused: to warn email bad +WARNING: translation string unused: toggle WARNING: translation string unused: too long 80 char max WARNING: translation string unused: tor 0 =3D disabled WARNING: translation string unused: tor accounting period daily @@ -842,6 +859,10 @@ WARNING: translation string unused: use dov WARNING: translation string unused: use ibod WARNING: translation string unused: view log WARNING: translation string unused: visible in browselist +WARNING: translation string unused: voldown10 +WARNING: translation string unused: voldown5 +WARNING: translation string unused: volup10 +WARNING: translation string unused: volup5 WARNING: translation string unused: vpn aggrmode WARNING: translation string unused: vpn configuration main WARNING: translation string unused: vpn delayed start @@ -855,6 +876,7 @@ WARNING: translation string unused: vpn red name WARNING: translation string unused: vpn watch WARNING: translation string unused: warn when traffic reaches WARNING: translation string unused: web proxy configuration +WARNING: translation string unused: webradio playlist WARNING: translation string unused: week WARNING: translation string unused: week-graph WARNING: translation string unused: weekly firewallhits @@ -917,7 +939,6 @@ WARNING: untranslated string: Captive vouchervalid =3D Al= lowed time for this coupo WARNING: untranslated string: Captive wrong ext =3D Uploaded file has wrong = filetype WARNING: untranslated string: MTU settings =3D MTU settings: WARNING: untranslated string: Number of Countries for the pie chart =3D Numb= er of Countries for the pie chart -WARNING: untranslated string: Scan for Songs =3D unknown string WARNING: untranslated string: access point name =3D Access Point Name WARNING: untranslated string: access point name is invalid =3D Access Point = Name is invalid WARNING: untranslated string: access point name is required =3D Access Point= Name is required diff --git a/doc/language_issues.nl b/doc/language_issues.nl index 046e5943b..88493d1d9 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -2,14 +2,18 @@ WARNING: translation string unused: Async logging enabled WARNING: translation string unused: Client status and controlc WARNING: translation string unused: ConnSched scheduler WARNING: translation string unused: ConnSched select profile +WARNING: translation string unused: Existing Files WARNING: translation string unused: HDD temperature WARNING: translation string unused: Level7 rule WARNING: translation string unused: Local VPN IP +WARNING: translation string unused: Pages WARNING: translation string unused: Ping WARNING: translation string unused: Queuelenght WARNING: translation string unused: Remote IP WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv +WARNING: translation string unused: Scan for Files +WARNING: translation string unused: Scan from Directory WARNING: translation string unused: Subclass WARNING: translation string unused: TOS Bits WARNING: translation string unused: Utilization on @@ -85,6 +89,7 @@ WARNING: translation string unused: age seconds WARNING: translation string unused: age shour WARNING: translation string unused: age sminute WARNING: translation string unused: age ssecond +WARNING: translation string unused: album WARNING: translation string unused: alcatelusb help WARNING: translation string unused: alcatelusb upload WARNING: translation string unused: all interfaces @@ -98,6 +103,7 @@ WARNING: translation string unused: and WARNING: translation string unused: ansi t1.483 WARNING: translation string unused: apply WARNING: translation string unused: archive not exist +WARNING: translation string unused: artist WARNING: translation string unused: attemps WARNING: translation string unused: avoid dod WARNING: translation string unused: backup archive @@ -150,6 +156,7 @@ WARNING: translation string unused: choose config WARNING: translation string unused: choose media WARNING: translation string unused: class in use WARNING: translation string unused: clear cache +WARNING: translation string unused: clear playlist WARNING: translation string unused: client WARNING: translation string unused: comment WARNING: translation string unused: community rules @@ -172,6 +179,7 @@ WARNING: translation string unused: create mask WARNING: translation string unused: create new backup WARNING: translation string unused: current media WARNING: translation string unused: current ovpn +WARNING: translation string unused: current playlist WARNING: translation string unused: current profile WARNING: translation string unused: custom networks WARNING: translation string unused: custom services @@ -369,6 +377,7 @@ WARNING: translation string unused: generatekeys WARNING: translation string unused: generatepolicy WARNING: translation string unused: generatereport WARNING: translation string unused: genkey +WARNING: translation string unused: genre WARNING: translation string unused: gpl i accept these terms and conditions WARNING: translation string unused: gpl license agreement WARNING: translation string unused: gpl please read carefully the general pu= blic license and accept it below @@ -526,6 +535,7 @@ WARNING: translation string unused: network traffic graphs WARNING: translation string unused: network updated WARNING: translation string unused: networks settings WARNING: translation string unused: new optionsfw must boot +WARNING: translation string unused: next WARNING: translation string unused: no alcatelusb firmware WARNING: translation string unused: no cfg upload WARNING: translation string unused: no eciadsl synch.bin file @@ -616,6 +626,7 @@ WARNING: translation string unused: pdc options WARNING: translation string unused: phase1 group WARNING: translation string unused: phonebook entry WARNING: translation string unused: ping disabled +WARNING: translation string unused: play WARNING: translation string unused: polfile WARNING: translation string unused: port forwarding configuration WARNING: translation string unused: ports @@ -623,6 +634,7 @@ WARNING: translation string unused: pots WARNING: translation string unused: pppoe WARNING: translation string unused: prefered master WARNING: translation string unused: present +WARNING: translation string unused: prev WARNING: translation string unused: printcap name WARNING: translation string unused: printer WARNING: translation string unused: printername @@ -637,6 +649,7 @@ WARNING: translation string unused: proxy port WARNING: translation string unused: psk WARNING: translation string unused: qos add subclass WARNING: translation string unused: quick control +WARNING: translation string unused: quick playlist WARNING: translation string unused: read list WARNING: translation string unused: reboot ask WARNING: translation string unused: reboot question @@ -647,6 +660,7 @@ WARNING: translation string unused: registered user rules WARNING: translation string unused: released WARNING: translation string unused: reload WARNING: translation string unused: removable device advice +WARNING: translation string unused: repeat WARNING: translation string unused: reportfile WARNING: translation string unused: reportlevel WARNING: translation string unused: requested data @@ -691,6 +705,7 @@ WARNING: translation string unused: show areas WARNING: translation string unused: show last x lines WARNING: translation string unused: show lines WARNING: translation string unused: show share options +WARNING: translation string unused: shuffle WARNING: translation string unused: shutdown ask WARNING: translation string unused: shutdown sure WARNING: translation string unused: shutdown2 @@ -756,9 +771,11 @@ WARNING: translation string unused: this months volume WARNING: translation string unused: this update is already installed WARNING: translation string unused: this weeks volume WARNING: translation string unused: time date manually reset +WARNING: translation string unused: title WARNING: translation string unused: to email adr WARNING: translation string unused: to install an update WARNING: translation string unused: to warn email bad +WARNING: translation string unused: toggle WARNING: translation string unused: too long 80 char max WARNING: translation string unused: tor 0 =3D disabled WARNING: translation string unused: tor accounting period daily @@ -843,6 +860,10 @@ WARNING: translation string unused: use dov WARNING: translation string unused: use ibod WARNING: translation string unused: view log WARNING: translation string unused: visible in browselist +WARNING: translation string unused: voldown10 +WARNING: translation string unused: voldown5 +WARNING: translation string unused: volup10 +WARNING: translation string unused: volup5 WARNING: translation string unused: vpn aggrmode WARNING: translation string unused: vpn configuration main WARNING: translation string unused: vpn delayed start @@ -856,6 +877,7 @@ WARNING: translation string unused: vpn red name WARNING: translation string unused: vpn watch WARNING: translation string unused: warn when traffic reaches WARNING: translation string unused: web proxy configuration +WARNING: translation string unused: webradio playlist WARNING: translation string unused: week WARNING: translation string unused: week-graph WARNING: translation string unused: weekly firewallhits @@ -918,7 +940,6 @@ WARNING: untranslated string: Captive vouchervalid =3D Al= lowed time for this coupo WARNING: untranslated string: Captive wrong ext =3D Uploaded file has wrong = filetype WARNING: untranslated string: MTU settings =3D MTU settings: WARNING: untranslated string: Number of Countries for the pie chart =3D Numb= er of Countries for the pie chart -WARNING: untranslated string: Scan for Songs =3D unknown string WARNING: untranslated string: access point name =3D Access Point Name WARNING: untranslated string: access point name is invalid =3D Access Point = Name is invalid WARNING: untranslated string: access point name is required =3D Access Point= Name is required diff --git a/doc/language_issues.pl b/doc/language_issues.pl index f0a60ab30..5f3806102 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -2,14 +2,18 @@ WARNING: translation string unused: Async logging enabled WARNING: translation string unused: Client status and controlc WARNING: translation string unused: ConnSched scheduler WARNING: translation string unused: ConnSched select profile +WARNING: translation string unused: Existing Files WARNING: translation string unused: HDD temperature WARNING: translation string unused: Level7 rule WARNING: translation string unused: Local VPN IP +WARNING: translation string unused: Pages WARNING: translation string unused: Ping WARNING: translation string unused: Queuelenght WARNING: translation string unused: Remote IP WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv +WARNING: translation string unused: Scan for Files +WARNING: translation string unused: Scan from Directory WARNING: translation string unused: Subclass WARNING: translation string unused: TOS Bits WARNING: translation string unused: Utilization on @@ -80,6 +84,7 @@ WARNING: translation string unused: advproxy update informa= tion WARNING: translation string unused: advproxy update notification WARNING: translation string unused: advproxy web browser WARNING: translation string unused: again +WARNING: translation string unused: album WARNING: translation string unused: alcatelusb help WARNING: translation string unused: alcatelusb upload WARNING: translation string unused: all interfaces @@ -93,6 +98,7 @@ WARNING: translation string unused: and WARNING: translation string unused: ansi t1.483 WARNING: translation string unused: apply WARNING: translation string unused: archive not exist +WARNING: translation string unused: artist WARNING: translation string unused: attemps WARNING: translation string unused: avoid dod WARNING: translation string unused: backup archive @@ -143,6 +149,7 @@ WARNING: translation string unused: choose config WARNING: translation string unused: choose media WARNING: translation string unused: class in use WARNING: translation string unused: clear cache +WARNING: translation string unused: clear playlist WARNING: translation string unused: client WARNING: translation string unused: comment WARNING: translation string unused: compression @@ -164,6 +171,7 @@ WARNING: translation string unused: create mask WARNING: translation string unused: create new backup WARNING: translation string unused: current media WARNING: translation string unused: current ovpn +WARNING: translation string unused: current playlist WARNING: translation string unused: current profile WARNING: translation string unused: custom networks WARNING: translation string unused: custom services @@ -309,6 +317,7 @@ WARNING: translation string unused: generatekeys WARNING: translation string unused: generatepolicy WARNING: translation string unused: generatereport WARNING: translation string unused: genkey +WARNING: translation string unused: genre WARNING: translation string unused: gpl i accept these terms and conditions WARNING: translation string unused: gpl license agreement WARNING: translation string unused: gpl please read carefully the general pu= blic license and accept it below @@ -463,6 +472,7 @@ WARNING: translation string unused: network traffic graphs WARNING: translation string unused: network updated WARNING: translation string unused: networks settings WARNING: translation string unused: new optionsfw must boot +WARNING: translation string unused: next WARNING: translation string unused: no alcatelusb firmware WARNING: translation string unused: no cfg upload WARNING: translation string unused: no eciadsl synch.bin file @@ -541,6 +551,7 @@ WARNING: translation string unused: pdc options WARNING: translation string unused: phase1 group WARNING: translation string unused: phonebook entry WARNING: translation string unused: ping disabled +WARNING: translation string unused: play WARNING: translation string unused: polfile WARNING: translation string unused: port forwarding configuration WARNING: translation string unused: ports @@ -548,6 +559,7 @@ WARNING: translation string unused: pots WARNING: translation string unused: pppoe WARNING: translation string unused: prefered master WARNING: translation string unused: present +WARNING: translation string unused: prev WARNING: translation string unused: printcap name WARNING: translation string unused: printer WARNING: translation string unused: printername @@ -562,6 +574,7 @@ WARNING: translation string unused: proxy port WARNING: translation string unused: psk WARNING: translation string unused: qos add subclass WARNING: translation string unused: quick control +WARNING: translation string unused: quick playlist WARNING: translation string unused: read list WARNING: translation string unused: reboot ask WARNING: translation string unused: reboot question @@ -572,6 +585,7 @@ WARNING: translation string unused: registered user rules WARNING: translation string unused: released WARNING: translation string unused: reload WARNING: translation string unused: removable device advice +WARNING: translation string unused: repeat WARNING: translation string unused: reportfile WARNING: translation string unused: reportlevel WARNING: translation string unused: requested data @@ -616,6 +630,7 @@ WARNING: translation string unused: show areas WARNING: translation string unused: show last x lines WARNING: translation string unused: show lines WARNING: translation string unused: show share options +WARNING: translation string unused: shuffle WARNING: translation string unused: shutdown ask WARNING: translation string unused: shutdown sure WARNING: translation string unused: shutdown2 @@ -679,9 +694,11 @@ WARNING: translation string unused: this months volume WARNING: translation string unused: this update is already installed WARNING: translation string unused: this weeks volume WARNING: translation string unused: time date manually reset +WARNING: translation string unused: title WARNING: translation string unused: to email adr WARNING: translation string unused: to install an update WARNING: translation string unused: to warn email bad +WARNING: translation string unused: toggle WARNING: translation string unused: too long 80 char max WARNING: translation string unused: traffic back WARNING: translation string unused: traffic calc time @@ -754,6 +771,10 @@ WARNING: translation string unused: use dov WARNING: translation string unused: use ibod WARNING: translation string unused: view log WARNING: translation string unused: visible in browselist +WARNING: translation string unused: voldown10 +WARNING: translation string unused: voldown5 +WARNING: translation string unused: volup10 +WARNING: translation string unused: volup5 WARNING: translation string unused: vpn aggrmode WARNING: translation string unused: vpn configuration main WARNING: translation string unused: vpn delayed start @@ -767,6 +788,7 @@ WARNING: translation string unused: vpn red name WARNING: translation string unused: vpn watch WARNING: translation string unused: warn when traffic reaches WARNING: translation string unused: web proxy configuration +WARNING: translation string unused: webradio playlist WARNING: translation string unused: week WARNING: translation string unused: week-graph WARNING: translation string unused: weekly firewallhits @@ -834,7 +856,6 @@ WARNING: untranslated string: MB read =3D MB read WARNING: untranslated string: MB written =3D MB written WARNING: untranslated string: MTU settings =3D MTU settings: WARNING: untranslated string: Number of Countries for the pie chart =3D Numb= er of Countries for the pie chart -WARNING: untranslated string: Scan for Songs =3D unknown string WARNING: untranslated string: access point name =3D Access Point Name WARNING: untranslated string: access point name is invalid =3D Access Point = Name is invalid WARNING: untranslated string: access point name is required =3D Access Point= Name is required diff --git a/doc/language_issues.ru b/doc/language_issues.ru index a8f2c1549..8891ce20e 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -2,14 +2,18 @@ WARNING: translation string unused: Async logging enabled WARNING: translation string unused: Client status and controlc WARNING: translation string unused: ConnSched scheduler WARNING: translation string unused: ConnSched select profile +WARNING: translation string unused: Existing Files WARNING: translation string unused: HDD temperature WARNING: translation string unused: Level7 rule WARNING: translation string unused: Local VPN IP +WARNING: translation string unused: Pages WARNING: translation string unused: Ping WARNING: translation string unused: Queuelenght WARNING: translation string unused: Remote IP WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv +WARNING: translation string unused: Scan for Files +WARNING: translation string unused: Scan from Directory WARNING: translation string unused: Subclass WARNING: translation string unused: TOS Bits WARNING: translation string unused: Utilization on @@ -80,6 +84,7 @@ WARNING: translation string unused: advproxy update informa= tion WARNING: translation string unused: advproxy update notification WARNING: translation string unused: advproxy web browser WARNING: translation string unused: again +WARNING: translation string unused: album WARNING: translation string unused: alcatelusb help WARNING: translation string unused: alcatelusb upload WARNING: translation string unused: all interfaces @@ -93,6 +98,7 @@ WARNING: translation string unused: and WARNING: translation string unused: ansi t1.483 WARNING: translation string unused: apply WARNING: translation string unused: archive not exist +WARNING: translation string unused: artist WARNING: translation string unused: attemps WARNING: translation string unused: avoid dod WARNING: translation string unused: backup archive @@ -143,6 +149,7 @@ WARNING: translation string unused: choose config WARNING: translation string unused: choose media WARNING: translation string unused: class in use WARNING: translation string unused: clear cache +WARNING: translation string unused: clear playlist WARNING: translation string unused: client WARNING: translation string unused: comment WARNING: translation string unused: compression @@ -164,6 +171,7 @@ WARNING: translation string unused: create mask WARNING: translation string unused: create new backup WARNING: translation string unused: current media WARNING: translation string unused: current ovpn +WARNING: translation string unused: current playlist WARNING: translation string unused: current profile WARNING: translation string unused: custom networks WARNING: translation string unused: custom services @@ -306,6 +314,7 @@ WARNING: translation string unused: generatekeys WARNING: translation string unused: generatepolicy WARNING: translation string unused: generatereport WARNING: translation string unused: genkey +WARNING: translation string unused: genre WARNING: translation string unused: gpl i accept these terms and conditions WARNING: translation string unused: gpl license agreement WARNING: translation string unused: gpl please read carefully the general pu= blic license and accept it below @@ -458,6 +467,7 @@ WARNING: translation string unused: network traffic graphs WARNING: translation string unused: network updated WARNING: translation string unused: networks settings WARNING: translation string unused: new optionsfw must boot +WARNING: translation string unused: next WARNING: translation string unused: no alcatelusb firmware WARNING: translation string unused: no cfg upload WARNING: translation string unused: no eciadsl synch.bin file @@ -536,6 +546,7 @@ WARNING: translation string unused: pdc options WARNING: translation string unused: phase1 group WARNING: translation string unused: phonebook entry WARNING: translation string unused: ping disabled +WARNING: translation string unused: play WARNING: translation string unused: polfile WARNING: translation string unused: port forwarding configuration WARNING: translation string unused: ports @@ -543,6 +554,7 @@ WARNING: translation string unused: pots WARNING: translation string unused: pppoe WARNING: translation string unused: prefered master WARNING: translation string unused: present +WARNING: translation string unused: prev WARNING: translation string unused: printcap name WARNING: translation string unused: printer WARNING: translation string unused: printername @@ -557,6 +569,7 @@ WARNING: translation string unused: proxy port WARNING: translation string unused: psk WARNING: translation string unused: qos add subclass WARNING: translation string unused: quick control +WARNING: translation string unused: quick playlist WARNING: translation string unused: read list WARNING: translation string unused: reboot ask WARNING: translation string unused: reboot question @@ -567,6 +580,7 @@ WARNING: translation string unused: registered user rules WARNING: translation string unused: released WARNING: translation string unused: reload WARNING: translation string unused: removable device advice +WARNING: translation string unused: repeat WARNING: translation string unused: reportfile WARNING: translation string unused: reportlevel WARNING: translation string unused: requested data @@ -611,6 +625,7 @@ WARNING: translation string unused: show areas WARNING: translation string unused: show last x lines WARNING: translation string unused: show lines WARNING: translation string unused: show share options +WARNING: translation string unused: shuffle WARNING: translation string unused: shutdown ask WARNING: translation string unused: shutdown sure WARNING: translation string unused: shutdown2 @@ -674,9 +689,11 @@ WARNING: translation string unused: this months volume WARNING: translation string unused: this update is already installed WARNING: translation string unused: this weeks volume WARNING: translation string unused: time date manually reset +WARNING: translation string unused: title WARNING: translation string unused: to email adr WARNING: translation string unused: to install an update WARNING: translation string unused: to warn email bad +WARNING: translation string unused: toggle WARNING: translation string unused: too long 80 char max WARNING: translation string unused: traffic back WARNING: translation string unused: traffic calc time @@ -749,6 +766,10 @@ WARNING: translation string unused: use dov WARNING: translation string unused: use ibod WARNING: translation string unused: view log WARNING: translation string unused: visible in browselist +WARNING: translation string unused: voldown10 +WARNING: translation string unused: voldown5 +WARNING: translation string unused: volup10 +WARNING: translation string unused: volup5 WARNING: translation string unused: vpn aggrmode WARNING: translation string unused: vpn configuration main WARNING: translation string unused: vpn delayed start @@ -762,6 +783,7 @@ WARNING: translation string unused: vpn red name WARNING: translation string unused: vpn watch WARNING: translation string unused: warn when traffic reaches WARNING: translation string unused: web proxy configuration +WARNING: translation string unused: webradio playlist WARNING: translation string unused: week WARNING: translation string unused: weekly firewallhits WARNING: translation string unused: wildcards @@ -829,7 +851,6 @@ WARNING: untranslated string: MB read =3D MB read WARNING: untranslated string: MB written =3D MB written WARNING: untranslated string: MTU settings =3D MTU settings: WARNING: untranslated string: Number of Countries for the pie chart =3D Numb= er of Countries for the pie chart -WARNING: untranslated string: Scan for Songs =3D unknown string WARNING: untranslated string: access point name =3D Access Point Name WARNING: untranslated string: access point name is invalid =3D Access Point = Name is invalid WARNING: untranslated string: access point name is required =3D Access Point= Name is required diff --git a/doc/language_issues.tr b/doc/language_issues.tr index 93619c0a4..c0cb2703a 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -23,14 +23,18 @@ WARNING: translation string unused: Captive voucher WARNING: translation string unused: Captive vout WARNING: translation string unused: ConnSched scheduler WARNING: translation string unused: ConnSched select profile +WARNING: translation string unused: Existing Files WARNING: translation string unused: HDD temperature WARNING: translation string unused: Level7 rule WARNING: translation string unused: Local VPN IP +WARNING: translation string unused: Pages WARNING: translation string unused: Ping WARNING: translation string unused: Queuelenght WARNING: translation string unused: Remote IP WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv +WARNING: translation string unused: Scan for Files +WARNING: translation string unused: Scan from Directory WARNING: translation string unused: Subclass WARNING: translation string unused: TOS Bits WARNING: translation string unused: Utilization on @@ -107,6 +111,7 @@ WARNING: translation string unused: age seconds WARNING: translation string unused: age shour WARNING: translation string unused: age sminute WARNING: translation string unused: age ssecond +WARNING: translation string unused: album WARNING: translation string unused: alcatelusb help WARNING: translation string unused: alcatelusb upload WARNING: translation string unused: all interfaces @@ -120,6 +125,7 @@ WARNING: translation string unused: and WARNING: translation string unused: ansi t1.483 WARNING: translation string unused: apply WARNING: translation string unused: archive not exist +WARNING: translation string unused: artist WARNING: translation string unused: attemps WARNING: translation string unused: avoid dod WARNING: translation string unused: backup archive @@ -172,6 +178,7 @@ WARNING: translation string unused: choose config WARNING: translation string unused: choose media WARNING: translation string unused: class in use WARNING: translation string unused: clear cache +WARNING: translation string unused: clear playlist WARNING: translation string unused: client WARNING: translation string unused: comment WARNING: translation string unused: community rules @@ -194,6 +201,7 @@ WARNING: translation string unused: create mask WARNING: translation string unused: create new backup WARNING: translation string unused: current media WARNING: translation string unused: current ovpn +WARNING: translation string unused: current playlist WARNING: translation string unused: current profile WARNING: translation string unused: custom networks WARNING: translation string unused: custom services @@ -394,6 +402,7 @@ WARNING: translation string unused: generatekeys WARNING: translation string unused: generatepolicy WARNING: translation string unused: generatereport WARNING: translation string unused: genkey +WARNING: translation string unused: genre WARNING: translation string unused: gpl i accept these terms and conditions WARNING: translation string unused: gpl license agreement WARNING: translation string unused: gpl please read carefully the general pu= blic license and accept it below @@ -553,6 +562,7 @@ WARNING: translation string unused: network traffic graphs WARNING: translation string unused: network updated WARNING: translation string unused: networks settings WARNING: translation string unused: new optionsfw must boot +WARNING: translation string unused: next WARNING: translation string unused: no alcatelusb firmware WARNING: translation string unused: no cfg upload WARNING: translation string unused: no eciadsl synch.bin file @@ -646,6 +656,7 @@ WARNING: translation string unused: pdc options WARNING: translation string unused: phase1 group WARNING: translation string unused: phonebook entry WARNING: translation string unused: ping disabled +WARNING: translation string unused: play WARNING: translation string unused: polfile WARNING: translation string unused: port forwarding configuration WARNING: translation string unused: ports @@ -653,6 +664,7 @@ WARNING: translation string unused: pots WARNING: translation string unused: pppoe WARNING: translation string unused: prefered master WARNING: translation string unused: present +WARNING: translation string unused: prev WARNING: translation string unused: printcap name WARNING: translation string unused: printer WARNING: translation string unused: printername @@ -667,6 +679,7 @@ WARNING: translation string unused: proxy port WARNING: translation string unused: psk WARNING: translation string unused: qos add subclass WARNING: translation string unused: quick control +WARNING: translation string unused: quick playlist WARNING: translation string unused: read list WARNING: translation string unused: reboot ask WARNING: translation string unused: reboot question @@ -677,6 +690,7 @@ WARNING: translation string unused: registered user rules WARNING: translation string unused: released WARNING: translation string unused: reload WARNING: translation string unused: removable device advice +WARNING: translation string unused: repeat WARNING: translation string unused: reportfile WARNING: translation string unused: reportlevel WARNING: translation string unused: requested data @@ -721,6 +735,7 @@ WARNING: translation string unused: show areas WARNING: translation string unused: show last x lines WARNING: translation string unused: show lines WARNING: translation string unused: show share options +WARNING: translation string unused: shuffle WARNING: translation string unused: shutdown ask WARNING: translation string unused: shutdown sure WARNING: translation string unused: shutdown2 @@ -785,9 +800,11 @@ WARNING: translation string unused: this months volume WARNING: translation string unused: this update is already installed WARNING: translation string unused: this weeks volume WARNING: translation string unused: time date manually reset +WARNING: translation string unused: title WARNING: translation string unused: to email adr WARNING: translation string unused: to install an update WARNING: translation string unused: to warn email bad +WARNING: translation string unused: toggle WARNING: translation string unused: too long 80 char max WARNING: translation string unused: tor 0 =3D disabled WARNING: translation string unused: tor accounting period daily @@ -872,6 +889,10 @@ WARNING: translation string unused: use dov WARNING: translation string unused: use ibod WARNING: translation string unused: view log WARNING: translation string unused: visible in browselist +WARNING: translation string unused: voldown10 +WARNING: translation string unused: voldown5 +WARNING: translation string unused: volup10 +WARNING: translation string unused: volup5 WARNING: translation string unused: vpn aggrmode WARNING: translation string unused: vpn configuration main WARNING: translation string unused: vpn delayed start @@ -885,6 +906,7 @@ WARNING: translation string unused: vpn red name WARNING: translation string unused: vpn watch WARNING: translation string unused: warn when traffic reaches WARNING: translation string unused: web proxy configuration +WARNING: translation string unused: webradio playlist WARNING: translation string unused: week WARNING: translation string unused: week-graph WARNING: translation string unused: weekly firewallhits @@ -911,7 +933,6 @@ WARNING: translation string unused: year-graph WARNING: translation string unused: yearly firewallhits WARNING: untranslated string: Captive clients =3D unknown string WARNING: untranslated string: Captive delete logo =3D Delete Logo -WARNING: untranslated string: Scan for Songs =3D unknown string WARNING: untranslated string: access point name =3D Access Point Name WARNING: untranslated string: access point name is invalid =3D Access Point = Name is invalid WARNING: untranslated string: access point name is required =3D Access Point= Name is required diff --git a/html/cgi-bin/mpfire.cgi b/html/cgi-bin/mpfire.cgi deleted file mode 100644 index 5685053e6..000000000 --- a/html/cgi-bin/mpfire.cgi +++ /dev/null @@ -1,673 +0,0 @@ -#!/usr/bin/perl -############################################################################= ### -# = # -# IPFire.org - A linux based firewall = # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt = # -# = # -# This program is free software: you can redistribute it and/or modify = # -# it under the terms of the GNU General Public License as published by = # -# the Free Software Foundation, either version 3 of the License, or = # -# (at your option) any later version. = # -# = # -# This program is distributed in the hope that it will be useful, = # -# but WITHOUT ANY WARRANTY; without even the implied warranty of = # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the = # -# GNU General Public License for more details. = # -# = # -# You should have received a copy of the GNU General Public License = # -# along with this program. If not, see <http://www.gnu.org/licenses/>. = # -# = # -############################################################################= ### - -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 =3D Audio::MPD->new('localhost',6600,'','$REUSE'); -my $work =3D $mpd->status()->updating_db(); - -require '/var/ipfire/general-functions.pl'; -require "${General::swroot}/lang.pl"; -require "${General::swroot}/header.pl"; - -my %color =3D (); -my %mainsettings =3D (); -my %mpfiresettings =3D (); -my %checked =3D (); -my $message =3D '0'; -my $errormessage =3D ""; -my @songs; - -&General::readhash("${General::swroot}/main/settings", \%mainsettings); -&General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", = \%color); - -&Header::showhttpheaders(); - -if ( $ENV{'QUERY_STRING'} =3D~ /title/){ - -############################################################################= #### -# $ENV{'QUERY_STRING'} =3D~ /title/ is used to handle the inline iframe used= to -# display the current song playing ( artist - title - album aso ) -# the cgi call=C2=B4s itself with a parameter and the iframe refreshes itsel= f without -# reloading the whole page -############################################################################= #### - - my $number =3D $mpd->status()->song()+1; - my $volume =3D $mpd->status()->volume(); - my $random =3D $mpd->status()->random(); - - if ($random eq "0" ){ - $random=3D"off"; - }else{ - $random=3D"on"; - } - - my $repeat =3D $mpd->status()->repeat(); - if ($repeat eq "0" ){ - $repeat=3D"off"; - }else{ - $repeat=3D"on"; - } - - my $song =3D ""; - if ( $mpd->current() ) - { - $song =3D substr("-=3D ".$mpd->current()->Artist()." | ".$mpd->current()->= Title(),0,85)." =3D-<br /> "; - if ( $song eq "-=3D | =3D-<br /> " ){ - $song =3D "None<br />" - }; - $song .=3D $mpd->current()->Track()."# ".substr($mpd->current()->Album(),0= ,90)."<br />"; - }else{ - $song =3D "None<br /><br />"; - } - - if ( $song eq "None<br /># <br />" ){ - $song =3D "None<br />".substr($mpd->current()->file(),0,90)."<br />" - }; - $song .=3D "Playlist: ".$number."-".$mpd->status()->playlistlength()." Time= : ".$mpd->status()->time()->sofar."/"; - $song .=3D $mpd->status()->time()->total." (".$mpd->status()->time()->perce= nt()."%) Status: "; - $song .=3D $mpd->status()->state()." Volume: ".$volume." % Repeat: ".$repea= t." Random: ".$random; - - print <<END -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w= 3.org/TR/html4/loose.dtd"> -<meta http-equiv=3D'refresh' content=3D'5'> -<title></title> -<body> -<table width=3D'100%' cellspacing=3D'0' align=3D'center' style=3D"background= -image:url(/images/mpfire/box.png);background-repeat:no-repeat"> -END -; - print"<tr ><td align=3D'center'><font color=3D'red' face=3D'Verdana' size= =3D'2'><br />".encode('utf-8', $song)."<br /><br /></font></td></tr></table><= /body>"; - exit; -}elsif ( $ENV{'QUERY_STRING'} =3D~ /control/){ - -############################################################################= #### -# $ENV{'QUERY_STRING'} =3D~ /control/ is used to handle the inline iframe us= ed to -# display the control button ( prev play skip stop toggle aso ) -# the cgi call=C2=B4s itself with a parameter and only the iframe is reloade= d on click -############################################################################= #### - - &Header::getcgihash(\%mpfiresettings); - if ( $mpfiresettings{'ACTION'} eq "playall" ){ - $mpd->playlist->clear(); - foreach ($mpd->collection->all_pathes){ - $mpd->playlist->add($_); - } - $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 -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w= 3.org/TR/html4/loose.dtd"> -<title></title> -<body> -<table width=3D'95%' cellspacing=3D'0'> -<tr> -<td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}?con= trol'><input type=3D'hidden' name=3D'ACTION' value=3D'<<' /><input type=3D'im= age' alt=3D'$Lang::tr{'prev'}' title=3D'$Lang::tr{'prev'}' src=3D'/images/med= ia-skip-backward.png' /></form></td> -<td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}?con= trol'><input type=3D'hidden' name=3D'ACTION' value=3D'x' /><input type=3D'ima= ge' alt=3D'$Lang::tr{'stop'}' title=3D'$Lang::tr{'stop'}' src=3D'/images/medi= a-playback-stop.png' /></form></td> -<td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}?con= trol'><input type=3D'hidden' name=3D'ACTION' value=3D'|>' /><input type=3D'im= age' alt=3D'$Lang::tr{'toggle'}' title=3D'$Lang::tr{'toggle'}' src=3D'/images= /media-resume.png' /></form></td> -<td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}?con= trol'><input type=3D'hidden' name=3D'ACTION' value=3D'>' /><input type=3D'ima= ge' alt=3D'$Lang::tr{'play'}' title=3D'$Lang::tr{'play'}' src=3D'/images/medi= a-playback-start.png' /></form></td> -<td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}?con= trol'><input type=3D'hidden' name=3D'ACTION' value=3D'playall' /><input type= =3D'image' alt=3D'$Lang::tr{'play'} all' title=3D'$Lang::tr{'play'} all' src= =3D'/images/media-playback-start-all.png' /></form></td> -<td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}?con= trol'><input type=3D'hidden' name=3D'ACTION' value=3D'>>' /><input type=3D'im= age' alt=3D'$Lang::tr{'next'}' title=3D'$Lang::tr{'next'}' src=3D'/images/med= ia-skip-forward.png' /></form></td> -</tr> -END -; - print <<END -<tr> -<td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}?con= trol'><input type=3D'hidden' name=3D'ACTION' value=3D'repeat' /><input type= =3D'image' alt=3D'$Lang::tr{'repeat'}' title=3D'$Lang::tr{'repeat'}' src=3D'/= images/media-repeat.png' /></form></td> -<td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}?con= trol'><input type=3D'hidden' name=3D'ACTION' value=3D'--' /><input type=3D'im= age' alt=3D'$Lang::tr{'voldown10'}' title=3D'$Lang::tr{'voldown10'}' src=3D'/= images/audio-volume-low-red.png' /></form></td> -<td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}?con= trol'><input type=3D'hidden' name=3D'ACTION' value=3D'-' /><input type=3D'ima= ge' alt=3D'$Lang::tr{'voldown5'}' title=3D'$Lang::tr{'voldown5'}' src=3D'/ima= ges/audio-volume-low.png' /></form></td> -<td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}?con= trol'><input type=3D'hidden' name=3D'ACTION' value=3D'+' /><input type=3D'ima= ge' alt=3D'$Lang::tr{'volup5'}' title=3D'$Lang::tr{'volup5'}' src=3D'/images/= audio-volume-high.png' /></form></td> -<td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}?con= trol'><input type=3D'hidden' name=3D'ACTION' value=3D'++' /><input type=3D'im= age' alt=3D'$Lang::tr{'volup10'}' title=3D'$Lang::tr{'volup10'}' src=3D'/imag= es/audio-volume-high-red.png' /></form></td> -<td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}?con= trol'><input type=3D'hidden' name=3D'ACTION' value=3D'shuffle' /><input type= =3D'image' alt=3D'$Lang::tr{'shuffle'}' title=3D'$Lang::tr{'shuffle'}' src=3D= '/images/media-shuffle.png' /></form></td> -</tr> -</table> -</body> -END -; - exit; -} - -# just a little subpage to handle automatic page refresh on demand ( 1 sec ) -sub refreshpage{ - &Header::openbox( 'Waiting', 1, "<meta http-equiv=3D'refresh' content=3D'1;= ' />" ); - print "<center><img src=3D'/images/clock.gif' alt=3D'' /><br/><font color= =3D'red'>$Lang::tr{'pagerefresh'}</font></center>"; - &Header::closebox(); -} - -# if the mpd is updating his database because of user interaction then the c= gi -# 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, "<meta http-equiv=3D'refresh' content=3D'5;= ' />" ); - print "<center><img src=3D'/images/clock.gif' alt=3D'' /><br/><font color= =3D'red'>Database is updating, please be patient.</font></center>"; - &Header::closebox(); - &Header::closebigbox(); - &Header::closepage(); - exit; -} - -if ( $mpfiresettings{'PAGE'} eq "" ){ $mpfiresettings{'PAGE'} =3D "1";}; -if ( $mpfiresettings{'FRAME'} eq "" ){$mpfiresettings{'FRAME'} =3D "webradio= ";}; - -&Header::getcgihash(\%mpfiresettings); -&Header::openpage($Lang::tr{'mpfire'}, 1,); -&Header::openbigbox('100%', 'left', '', $errormessage); - -############################################################################= ################################################ -######################################## Scanne Verzeichnisse nach Mp3 Datei= en ############################################# - -if ( $mpfiresettings{'ACTION'} eq "scan" ){ - -# 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 $mpfir= esettings{'y'}; - delete $mpfiresettings{'PAGE'}; delete $mpfiresettings{'FRAME'}; - &General::writehash("${General::swroot}/mpfire/settings", \%mpfiresettings); - - open(DATEI, "<${General::swroot}/mpd/mpd.conf") || die "Datei nicht gefunde= n"; - my @Zeilen =3D <DATEI>; - close(DATEI); - - open(DATEI, ">${General::swroot}/mpd/mpd.conf") || die "Datei nicht gefunde= n"; - foreach (@Zeilen){ - if ( $_ =3D~ /music_directory/){ - print DATEI "music_directory \"".$mpfiresettings{'MUSICDIR'}."\"\n"; - }else { - print DATEI $_; - } - } - close(DATEI); - - $mpd->updatedb(); - refreshpage(); -}elsif ( $mpfiresettings{'ACTION'} eq "playweb" ){ - $message=3D &General::system_output("/usr/local/bin/mpfirectrl","playweb","= \"$mpfiresettings{'FILE'}\""); -}elsif ( $mpfiresettings{'ACTION'} eq "playlist" ){ - $mpd->play(); -}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 =3D split(/\|/,$mpfiresettings{'album'}); - $mpd->playlist->clear(); - foreach (@select){ - foreach ($mpd->collection->filenames_by_album($_)){ - if ( $_ ne "" ){ - $mpd->playlist->add($_); - } - } - } - $mpd->play(); -}elsif ( $mpfiresettings{'ACTION'} eq "playartist" ){ -# on keypress play the selected artist - my @select =3D split(/\|/,$mpfiresettings{'artist'}); - $mpd->playlist->clear(); - foreach (@select){ - foreach ($mpd->collection->filenames_by_artist($_)){ - if ( $_ ne "" ){ - $mpd->playlist->add($_); - } - } - } - $mpd->play(); -}elsif ( $mpfiresettings{'ACTION'} eq "playyear" ){ -# on keypress play the selected year - my @select =3D split(/\|/,$mpfiresettings{'year'}); - $mpd->playlist->clear(); - foreach (@select){ - 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 =3D 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(); -} - - if ( $mpfiresettings{'SEARCH'} eq "artist" && $mpfiresettings{'SEARCHITEM'}= ne "" ){ - foreach ($mpd->collection->songs_with_artist_partial_filename($mpfiresetti= ngs{'SEARCHITEM'})){ - if ( $_ ne "" ){ - push(@songs,$_); - } - } - }elsif ( $mpfiresettings{'SEARCH'} eq "title" && $mpfiresettings{'SEARCHITE= M'} ne "" ){ - foreach ($mpd->collection->songs_with_title_partial_filename($mpfiresettin= gs{'SEARCHITEM'})){ - if ( $_ ne "" ){ - push(@songs,$_); - } - } - }elsif ( $mpfiresettings{'SEARCH'} eq "album" && $mpfiresettings{'SEARCHITE= M'} ne "" ){ - foreach ($mpd->collection->songs_with_album_partial_filename($mpfiresettin= gs{'SEARCHITEM'})){ - if ( $_ ne "" ){ - push(@songs,$_); - } - } - }else{ - @songs =3D $mpd->collection->all_items_simple(); - shift(@songs); - } - -############################################################################= ################################################ -################################### Aufbau der HTML Seite fr globale Sambaei= nstellungen #################################### - -$mpfiresettings{'MUSICDIR'} =3D "/var/mp3"; -&General::readhash("${General::swroot}/mpfire/settings", \%mpfiresettings); - -############################################################################= ################################################ -########################################### rekursiv nach neuen Mp3s Scannen= ##############################################=C3=A4 - -if ( $message ne '0' ){ - print "<font color=3D'red'>An Error occured while launching the command</fo= nt>"; -}elsif ( $message ne "" && $message ne '0' ){ - print "<font color=3D'red'>$message</font>"; -} - -&Header::openbox('100%', 'center', $Lang::tr{'mpfire scanning'}); -# box to enter the music directory and initiate the scan process -print <<END -<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'> -<table width=3D'95%' cellspacing=3D'0'> -<tr bgcolor=3D'$color{'color20'}'><td colspan=3D'2' align=3D'left'><b>$Lang:= :tr{'Scan for Files'}</b></td></tr> -<tr><td align=3D'left' width=3D'40%'>$Lang::tr{'Scan from Directory'}</td><t= d align=3D'left'><input type=3D'text' name=3D'MUSICDIR' value=3D'$mpfiresetti= ngs{'MUSICDIR'}' size=3D"50" /></td></tr> -<tr><td align=3D'center' colspan=3D'2'><input type=3D'hidden' name=3D'ACTION= ' value=3D'scan' /><input type=3D'image' alt=3D'$Lang::tr{'Scan for Files'}' = title=3D'$Lang::tr{'Scan for Files'}' src=3D'/images/edit-find.png' /></td></= tr> -</table> -</form> -END -; -&Header::closebox(); - -&Header::openbox('100%', 'center', $Lang::tr{'mpfire controls'}); -# box for the two iframes showing the current playbar and the control buttons -print <<END -<iframe height=3D'85' width=3D'685' src=3D'/cgi-bin/mpfire.cgi?title' scroll= ing=3D'no' frameborder=3D'no' marginheight=3D'0'></iframe> -<iframe height=3D'50' width=3D'685' src=3D'/cgi-bin/mpfire.cgi?control' scro= lling=3D'no' frameborder=3D'no' marginheight=3D'0'></iframe> -END -; -print "<b>Songs:".$mpd->stats()->songs()."</b><br />"; - -&Header::closebox(); - -&Header::openbox('100%', 'center', ''); -print <<END -<tr><td align=3D'center' colspan=3D'4'> -<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'> -END -; -my @buttons=3D("webradio", "quick playlist","songs"); -foreach (@buttons){ - if ( $mpfiresettings{'FRAME'} eq $_ ) { - print "<input type=3D'submit' name=3D'FRAME' value=3D'$_' disabled />"; - } else { - print "<input type=3D'submit' name=3D'FRAME' value=3D'$_' />"; - } -} - -print <<END -</form></td></tr> -END -; -&Header::closebox(); - -if ( $mpfiresettings{'FRAME'} eq "quick playlist" ) -{ -&Header::openbox('100%', 'center', $Lang::tr{'quick playlist'}); -# box to quickly select artist, album, year or genre and play the selection -print "<table width=3D'95%' cellspacing=3D'0'>"; -print "<tr><td align=3D'center' bgcolor=3D'$color{'color20'}'><b>$Lang::tr{'= artist'} - ".$mpd->stats()->artists()."</b></td><td align=3D'center' bgcolor= =3D'$color{'color20'}'><b>$Lang::tr{'album'} - ".$mpd->stats()->albums()."</b= ></td></tr>"; - -print <<END -<tr><td align=3D'center'> -<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'> -<select name=3D'artist' size=3D'8' multiple=3D'multiple' style=3D'width:300p= x;'> -END -; - -foreach (sort($mpd->collection->all_artists())){ - if ( $_ ne '' ){ - print "<option>".encode('utf-8', $_)."</option>\n"; - } -} - -print <<END -</select><br/> -<input type=3D'hidden' name=3D'ACTION' value=3D'playartist' /> -<input type=3D'image' alt=3D'$Lang::tr{'play'}' title=3D'$Lang::tr{'play'}' = src=3D'/images/media-playback-start.png' /> -<input type=3D'hidden' name=3D'FRAME' value=3D'$mpfiresettings{'FRAME'}' /> -</form></td> -<td align=3D'center'> -<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'> -<select name=3D'album' size=3D'8' multiple=3D'multiple' style=3D'width:300px= ;'> -END -; - -foreach (sort($mpd->collection->all_albums())){ - if ( $_ ne '' ){ - print "<option>".encode('utf-8', $_)."</option>\n"; - } -} - -print <<END -</select><br/> -<input type=3D'hidden' name=3D'ACTION' value=3D'playalbum' /> -<input type=3D'image' alt=3D'$Lang::tr{'play'}' title=3D'$Lang::tr{'play'}' = src=3D'/images/media-playback-start.png' /> -<input type=3D'hidden' name=3D'FRAME' value=3D'$mpfiresettings{'FRAME'}' /> -</form></td> -</tr> -<tr><td align=3D'center' bgcolor=3D'$color{'color20'}'><b>$Lang::tr{'year'}<= /b></td><td align=3D'center' bgcolor=3D'$color{'color20'}'><b>$Lang::tr{'genr= e'}</b></td></tr> -<tr><td align=3D'center'> -<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'> -<select name=3D'year' size=3D'8' multiple=3D'multiple' style=3D'width:300px;= '> -END -; - -foreach (sort($mpd->collection->all_years())){ - if ( $_ ne '' ){ - print "<option>$_</option>\n"; - } -} - -print <<END -</select><br/> -<input type=3D'hidden' name=3D'ACTION' value=3D'playyear' /> -<input type=3D'image' alt=3D'$Lang::tr{'play'}' title=3D'$Lang::tr{'play'}' = src=3D'/images/media-playback-start.png' /> -<input type=3D'hidden' name=3D'FRAME' value=3D'$mpfiresettings{'FRAME'}' /> -</form></td> -<td align=3D'center'> -<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'> -<select name=3D'genre' size=3D'8' multiple=3D'multiple' style=3D'width:300px= ;'> -END -; - -foreach (sort($mpd->collection->all_genre())){ - if ( $_ ne '' ){ - print "<option>$_</option>\n"; - } -} - -print <<END -</select><br/> -<input type=3D'hidden' name=3D'ACTION' value=3D'playgenre' /> -<input type=3D'image' alt=3D'$Lang::tr{'play'}' title=3D'$Lang::tr{'play'}' = src=3D'/images/media-playback-start.png' /> -<input type=3D'hidden' name=3D'FRAME' value=3D'$mpfiresettings{'FRAME'}' /> -</form></td> -</tr></table> -END -; - -&Header::closebox(); -} - -if ( $mpfiresettings{'FRAME'} eq "songs" ) -{ -&Header::openbox('100%', 'center', $Lang::tr{'mpfire search'}); -# box to quickly search artist, album or title -print <<END -<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}#$Lang::tr{'mpfire songs'= }'> -<table width=3D'95%' cellspacing=3D'0'> -<tr> -<td align=3D'right' width=3D'33%'>$Lang::tr{'artist'}</td> -<td align=3D'center' width=3D'33%'>$Lang::tr{'title'}</td> -<td align=3D'left' width=3D'33%'>$Lang::tr{'album'}</td> -</tr> -<tr> -<td align=3D'right' width=3D'33%'><input type=3D'radio' name=3D'SEARCH' valu= e=3D'artist' /></td> -<td align=3D'center' width=3D'33%'><input type=3D'radio' name=3D'SEARCH' val= ue=3D'title' checked=3D'checked' /></td> -<td align=3D'left' width=3D'33%'><input type=3D'radio' name=3D'SEARCH' value= =3D'album' /></td> -</tr> -<tr> -<td align=3D'center' colspan=3D'3'><input type=3D'text' name=3D'SEARCHITEM' = value=3D'$mpfiresettings{'SEARCHITEM'}' size=3D"50" /></td> -</tr> -<tr> -<td align=3D'center' colspan=3D'3'><input type=3D'hidden' name=3D'ACTION' va= lue=3D'search' /><input type=3D'image' alt=3D'$Lang::tr{'Scan for Songs'}' ti= tle=3D'$Lang::tr{'Scan for Songs'}' src=3D'/images/edit-find.png' /></td> -</tr> -</table> -<input type=3D'hidden' name=3D'FRAME' value=3D'$mpfiresettings{'FRAME'}' /> -</form> -END -; -&Header::closebox(); - -&Header::openbox('100%', 'center', $Lang::tr{'mpfire songs'}); -print <<END -<a id=3D'$Lang::tr{'mpfire songs'}' name=3D'$Lang::tr{'mpfire songs'}'></a> -<table width=3D'95%' cellspacing=3D'3'> -<tr bgcolor=3D'$color{'color20'}'><td colspan=3D'4' align=3D'left'><b>$Lang:= :tr{'Existing Files'}</b></td></tr> -END -; -if ( $#songs > 100 ){ - print "<tr><td align=3D'center' colspan=3D'4'><br/>$Lang::tr{'Pages'}<br/><= form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'><input type=3D'submit' na= me=3D'PAGE' value=3D'all' /><br/>"; - my $pages =3D(int($#songs/100)+1); - for(my $i =3D 1; $i <=3D $pages; $i++){ - print "<input type=3D'submit' name=3D'PAGE' value=3D'$i' />"; - if (!($i % 205)){ - print"<br/>"; - } - } - print "<input type=3D'hidden' name=3D'FRAME' value=3D'$mpfiresettings{'FRAM= E'}' />"; - print "</form></td></tr>"; -} -print <<END -<tr><td align=3D'center'></td> -<td align=3D'center'><b>$Lang::tr{'artist'}<br/>$Lang::tr{'title'}</b></td> -<td align=3D'center'><b>$Lang::tr{'number'}</b></td> -<td align=3D'center'><b>$Lang::tr{'album'}</b></td> -END -; - -my $lines=3D0;my $i=3D0;my $begin;my $end; -if ( $mpfiresettings{'PAGE'} eq 'all' ){ - $begin=3D0; - $end=3D$#songs; -}else{ - $begin=3D(($mpfiresettings{'PAGE'}-1) * 100); - $end=3D(($mpfiresettings{'PAGE'} * 100)-1); -} - foreach (@songs){ - if (!($i >=3D $begin && $i <=3D $end)){ - #print $begin."->".$i."<-".$end."\n"; - $i++;next; - } - my @song =3D split(/\=3D/,$mpd->collection->song($_)); - @song =3D reverse @song; - - if ($lines % 2) { - print "<tr bgcolor=3D'$color{'color20'}'>"; - }else{ - print "<tr bgcolor=3D'$color{'color22'}'>"; - } - print <<END -<td align=3D'center' style=3D"white-space:nowrap;"> -<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}#$Lang::tr{'mpfire songs'= }'> -<input type=3D'hidden' name=3D'ACTION' value=3D'addtoplaylist' /> -<input type=3D'hidden' name=3D'FILE' value=3D"$_" /> -<input type=3D'hidden' name=3D'PAGE' value=3D'$mpfiresettings{'PAGE'}' /> -<input type=3D'hidden' name=3D'FRAME' value=3D'$mpfiresettings{'FRAME'}' /> -<input type=3D'hidden' name=3D'SEARCH' value=3D'$mpfiresettings{'SEARCH'}' /> -<input type=3D'hidden' name=3D'SEARCHITEM' value=3D'$mpfiresettings{'SEARCHI= TEM'}' /> -<input type=3D'image' alt=3D'$Lang::tr{'add'}' title=3D'$Lang::tr{'add'}' sr= c=3D'/images/list-add.png' /> -</form> -<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}#$Lang::tr{'mpfire songs'= }'> -<input type=3D'hidden' name=3D'ACTION' value=3D'>' /> -<input type=3D'hidden' name=3D'FILE' value=3D"$_" /> -<input type=3D'hidden' name=3D'PAGE' value=3D'$mpfiresettings{'PAGE'}' /> -<input type=3D'hidden' name=3D'FRAME' value=3D'$mpfiresettings{'FRAME'}' /> -<input type=3D'hidden' name=3D'SEARCH' value=3D'$mpfiresettings{'SEARCH'}' /> -<input type=3D'hidden' name=3D'SEARCHITEM' value=3D'$mpfiresettings{'SEARCHI= TEM'}' /> -<input type=3D'image' alt=3D'$Lang::tr{'play'}' title=3D'$Lang::tr{'play'}' = src=3D'/images/media-playback-start.png' /> -</form> -</td> -END -; - print "<td align=3D'center'>".encode('utf-8', $song[0])."<br/>".encode('utf= -8', $song[1])."</td>"; - print "<td align=3D'center'>".encode('utf-8', $song[2])."</td>"; - print "<td align=3D'center'>".encode('utf-8', $song[3])."</td>"; - $lines++; - $i++; -} - -print "</table>"; -&Header::closebox(); -} - -if ( $mpfiresettings{'FRAME'} eq "webradio" ) -{ -&Header::openbox('100%', 'center', $Lang::tr{'mpfire webradio'}); -# box to select some webradio=C2=B4s to be played by one click -open(DATEI, "<${General::swroot}/mpfire/webradio") || die "Could not open pl= aylist"; -my @webradio =3D <DATEI>; -close(DATEI); - -print <<END -<table width=3D'95%' cellspacing=3D'0'> -<tr bgcolor=3D'$color{'color20'}'><td colspan=3D'9' align=3D'left'><b>$Lang:= :tr{'webradio playlist'}</b></td></tr> -<tr><td align=3D'left'>Stream</td><td colspan=3D'2'></td></tr> -END -; - -my $lines=3D0; -foreach (@webradio){ - my @stream =3D split(/\|/,$_); - $lines++; - chomp($stream[2]); - if ($lines % 2) { - print "<tr bgcolor=3D'$color{'color22'}'>"; - }else{ - print "<tr>"; - } - chomp $stream[1];chomp $stream[2]; - print <<END -<td align=3D'left'><a href=3D'$stream[2]' target=3D'_blank'>$stream[1]</a></= td> -<td align=3D'center'><form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'><i= nput type=3D'hidden' name=3D'FILE' value=3D'$stream[0]' /><input type=3D'hidd= en' name=3D'ACTION' value=3D'playweb' /><input type=3D'image' alt=3D'$Lang::t= r{'play'}' title=3D'$Lang::tr{'play'}' src=3D'/images/media-playback-start.pn= g' align=3D'middle' /> -<input type=3D'hidden' name=3D'FRAME' value=3D'$mpfiresettings{'FRAME'}' /> -</form></td> -</tr> -END -; -} - -$lines++; -if ($lines % 2){ - print "<tr bgcolor=3D'$color{'color22'}'>"; -}else{ - print "<tr>"; -} - -print <<END -<td align=3D'center' colspan=3D'2'><form method=3D'post' action=3D'$ENV{'SCR= IPT_NAME'}'><br />http://<input type=3Dtext name=3D'FILE' value=3D'www.meiner= adiourl:1234' size=3D'75' /> -<input type=3D'hidden' name=3D'ACTION' value=3D'playweb' /><input type=3D'im= age' alt=3D'$Lang::tr{'play'}' title=3D'$Lang::tr{'play'}' src=3D'/images/med= ia-playback-start.png' align=3D'top' /> -<input type=3D'hidden' name=3D'FRAME' value=3D'$mpfiresettings{'FRAME'}' /> -</form></td> -</tr> -END -; -print "</table>"; -&Header::closebox(); -} - -&Header::openbox('100%', 'center', $Lang::tr{'mpfire playlist'}); -# box to show the current playlist given from mpc system command -my @playlist =3D `mpc playlist 2>/dev/null`; - -print <<END -<table width=3D'95%' cellspacing=3D'0'> -<tr bgcolor=3D'$color{'color20'}'><td colspan=3D'2' align=3D'left'><b>$Lang:= :tr{'current playlist'}</b></td></tr> -<tr><td align=3D'center' colspan=3D'2' ><textarea cols=3D'100' rows=3D'10' n= ame=3D'playlist' style=3D'font-size:11px;width:650px;' readonly=3D'readonly'> -END -; - -foreach (@playlist){ - $_=3D~s/&/&\;/g;;print $_; -} - -print <<END -</textarea></td></tr><tr> -<td align=3D'right'> -<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'> -<input type=3D'hidden' name=3D'ACTION' value=3D'emptyplaylist' /> -<input type=3D'image' alt=3D'$Lang::tr{'clear playlist'}' title=3D'$Lang::tr= {'clear playlist'}' src=3D'/images/user-trash.png' /> -<input type=3D'hidden' name=3D'FRAME' value=3D'$mpfiresettings{'FRAME'}' /> -</form> -</td> -<td align=3D'left'> -<form method=3D'post' action=3D'$ENV{'SCRIPT_NAME'}'> -<input type=3D'hidden' name=3D'ACTION' value=3D'playlist' /> -<input type=3D'image' alt=3D'$Lang::tr{'play'}' title=3D'$Lang::tr{'play'}' = src=3D'/images/media-playback-start.png' /> -<input type=3D'hidden' name=3D'FRAME' value=3D'$mpfiresettings{'FRAME'}' /> -</form> -</td></tr> -</table> -END -; - -&Header::closebox(); -&Header::closebigbox(); -&Header::closepage(); diff --git a/html/html/images/mpfire/box.png b/html/html/images/mpfire/box.png deleted file mode 100644 index fdf97b343aaa09eaf7fcdd114c3adbe88d28273b..00000000000000000000000000000= 00000000000 GIT binary patch literal 0 HcmV?d00001 literal 4562 zcmYLN2|QGL8$R>RHKKzol{J$RLiQ{vBfBuNTuGt0hKL(u%p_S_tl1^X;1&~Eb1D0{ z+4lwwMKtzhXht`L=3D{tkI(a)Ao@1&Wv-;|9#%~eV+IEPqej_2(a)kg@Hvj-UW~PQV0Pr6o zbZ)Z`0lja(8w`a0zyfSc&I2XA;`7jl-!S@?`T$U#uz%|s2lN@~W@=3D*z0Jl#7K-hf% z_yK(tHU|KK$^fw73IIA!0O0VS&uT8}LjU0U)6_8l0C?ZAU$8d6m+sJ)!dRnASX)02 zY|u6TKLG1%UcT5<Rz`M6oZ2Z>)i+6pLjZvPu$iI09p0IqwP|bjuUOkAE5uSy>%*X3 z<}{BHbZHBd^dt8KDgU*cSnXkgCW_zCu%+uYS$lM93C5wZ(pJ<kux8TOx7jYxHvPK& z)Y39RWmTQ$h%4coQf~usHbDC)VQZZca3>L_ibAvlB1pJ<7?>Ddhe6TI65+yOuwO^` z9W~|W*i(+Lr?L;q|GstA(Q(7GEnb3eoG_aexze!dn=3D@SLeORB(a)6+rAA$b7JUf6(&i zMp<FuLPDCn1FIf8PYLx9q{_7fY%r%oS4Jvkt=3D!xuJ)N9BnVOhHhR##+?4*)R197<9 z9q!3UPGtbTcN}m-baUCJE4f%*t;4_f^YfGRx^Y8v?2X(a)eF_X#EBMJ6{jH2RV9#K(I z<J#KV`rO>y(a)T8=3Dq&+p$~4D#{muD-in6ENAzBjus}mav*{@PB0C9bh}x^uw8`<w|er z?U3=3D66*^twhOckKch=3D_0c((buV>B;1B_}U$dSPN>BFuetZ9H_PA!HLr%{mj59JKP8 zUKg}-WEVCP0gg6?Hm2+ZKBDY;R~EgbidlLbb(=3D^HWo>PI8LJH%559a(ra54!&^~mC zN=3D-1=3Dp~v1{icJx)+zgM#>f*m5_5U9mOjy<u5rH)A)}SarorX&JaFA}6XR}>gTzqV3 zXoydyYxX{Vd8~HrcLxV*Vx(a)W3t@&pMdOMgMKYz;8Zgq2LW>V_jE0(a)H{gJb|CqfQAY zig`W0V%g1Nv6^aXYQ*~Ves2AwFhyc!U;oj?@)nCOxmxX?H$Jmi+eRAV?=3Du_wtYv<p zF`zCMY|Un1s`m4DJc#;wme!WEEb+#7Y~i&=3Dc1YFd)f<kEBQE(a)mqL(l6?zPlNdW5qR zb>t6PMwu5bLfoPYu!%@zFVBu(UR60eLjQ{A_pODYSIZ+6n8=3D$o+X+#4-|>d+T*d!b zj_~5Bp#6TsB&!#KJ6(kQ2S~nHliW0{T2<|V5*xU=3DksrJ~s@<5Mf8rz&2YCMZ<sXi| z?m(a)Fy8KzlVdWq)FGCPZP+ncv^7ty>TLm$$-Z0TmTm-ZWQ`6p_?N1wb^Y1)kk0AGmo z+XdH5W~dC6n7E!(BqpOH#NFQkM%+fCdyh&z1YebtYL4*euQ-IRuv6rgZr4Y^N1|k@ z)@5W=3DoiIwv{DPJ+x>fBkXsTOTZR)M7rbC?9AXZhICKy{tWtr~AggOmcyEngTcdZjy z(a)ewhNCDCuB<E_M{B#D#JcqSsHM+~HrxqgL(a)I?XINYoMcOMsu{cPm?1`NJtQMh`6vj z6b1W$)!($A9EOiRd#k+%1EmW+5EC36oR41~tyW9K^YZaU(!37K?DJPXjF7dH9fSzk z3?%cTJ6uOa)<`1#6idSNTfA`}<Cy~SyN_kFAS3(a)Po9W?>B00l3!_euI!imAz!S+-< zQ9Gb(a)yy~VCw(u&=3D3w?^Yl$6msJba0wprN05&qw6R1x%{<{EK&c1!kxw-Yh(a)LP%p){ zwWw80$}ueRY@%c+mhWL~B3Gz}X$h5TDdXbC&MW7LV52ckPEU1+1F^GnbDk81zz<KY zs>YN{o(FLMqCEg_=3D_6mcZ%^~$v0VE$KfwA>?DX80URhZgF7b7KBr(a)d?x<f{vm)Qhp zX44uslpn?&-N_-(a)0`#2Eud|_5|Izi>v(1*~HLLJ|=3D9Qpno|$)IpMRnff_b#!4m#$z zu&fUvQRp}ag7z+Kx$TB~rb7+Ht_)hWTU$K2sy5ibz##tYXIZbuF?gx*T`ki7BaD_) z77K5UWOPWw1<<RV87-(a)wY4U<JxsBuP`VGSE4w`8z7f46;bns9%tS1L8&^IUANB{JO zvubQC1^;m%Hrb=3D#Mv}l3QU;v5;JncwWUOp`1w_JQmEdtOx3UA^+-C(wssm9cu(PzN zD6WKI5j#6E;VMhS-Lkq5Cm4Oc2I(x42wDpXIb0;;Rh%JyT+oyzDk>_nW_q4Jr)_-y z<j0BYO_pK&Z98MY*oh2fNRyL_J2T14&Tn21>aw#&?+)fknn>0SbnGmdjFKgK6hz4| zd3H*WsD?NYPdUWfn$F1T4ij}?nys3(a)sjhaE=3D(Aw_9q_o0#k$*OmBH5nNnUIVszImt zj!Vt(a)o@AFPgK(a)E>0Opig<6nPC=3D?ppB+6oS9U&zIOlv_3PPLLwD?^1&tp%Mlv#DR$z zX59hs<t^#G_W1}w#<;k+K#<F4X1M&zUV;k0x20uYcq6%&Sz;DU`-MmUbeg55WrjrG z!omW(WcBs+(a)mZ>+ku_a*&`q+S^*8HpO{hB}6Fsbv(a)ud!lYIz|9me1jstuukv%oRG2 zZ~49e7fqt;aJLNbZh~wq`+I;E-j*X^b2=3D>M(fT2=3DxRCir^~=3D*csZxs}E!O1XGxPoj z0QDJSO_X1G({TFo(a)T*(W+3KZW3p8yWy^qJ(+uIK_uuJdu9{ix4d_L&f1_8(a)rmk&Bz zm%$e;tLuzO)<YgK)s}%?$DJrFE(Z%S3>$VY;*NlQ{x-|XNB6dmTvyF$O=3D}+bn{v~~ zClzlTRO$DrO0kT-?2JaEe<jK~5fr*E^O)KU!uAA3_Zo_~Km(a)x(`ZGiU^rz+Jz(a)VTr zxXwCav79ZWXiX|8eM9|yd$fDd6DDr+$U+ePCO5Z9Nl7UoW)|X|0b^-l!GEa?eb&h~ z-+XUMg>zuSS~(v{3d`O_94CJ0$1W}|k`AFi1q#KGB)*HpK;+zY1BdRxL?zYly5_8l z^n*2oyv<L3jT?*9(!M3Uxo%3waauIi7P~hmATc4=3D2}76F`Crj}{xr7AXGCBaw`Q$N zFY9~Zcq0PI+0seAj`dv6z#{hYIN^d&zjvxs7q(a)iDqpjlgYt^!=3DCe9cP$qf^-kh{zk zAue<b-g2_5&X(a)bF@DoXR-Irq_%GO%o+}(WR{5s~``{%5hz{S68=3D}>M0r=3D$hAB&G`@ zYaju&jsu0BE39V9F<o8nf=3DK#m3XW;Q^6v>-_PXKTDG#Zf&QJqkb%u<SAVBT}=3Dd)P* zE2V1IasJ)j`7iH<kE({f?L&`tNN#j-vIWC(a)tv%@&)Ubc!oolci<;5$vtMV<<kenQS z0EYmF6xf^qYd-siW_7Lua}G+w?aR7dot;o{2M-<$r|U2epxvKFz}fA?oyG3YgJN+6 z#-nPF{vP?UcaeOXwlPpMGfz3!%?)Q<fF6A)SYRsWrLgQb%?r+w=3DQ($ZeBkhIzOZwN zjX3&8NSiF5p5_qf+kg0!*2hiX$C=3D1>eHB$ylVQ_7IO96<lpk%2xX)WfC1<ltG-D=3Dh z8JZrXkJ7}d#rDOyxj!M)M{cD;x0I_|$Nd9=3D?!Om~!Gv8u=3DG=3Dmqyed9fY(a)AQX3;sHx zAKH_tagj0l_LiG#ZG7G8Y~Puxf3GHJB^N*udWy*Y?llu=3D`?ZN&p%V61ul8-q8UJ)X z1cgSJAj6_D*us!^4|&2BS>JlI&dd(;9>4mOy`mb5VaQ+y33!E`_LA|NQj`Qe5m$M7 zwl~){UpbV<<8-Bor#bbG5^*ZD=3DsUZUN=3DO1OB*r*-T6pCj3BR74SGn5H(a)x-&iAK0~M zz6do~-an}FAYa0E_qpAk6cU4H>T8x_L%08R2!+fWL~R0r;2Nt}|NT3zt*T*>-{ekW zcycGIz*N1FljA7p-iIo$zqooksmtaXYE4c<bvi9DFpxb3(9t9|hG*K7!ykgO)UzQF z1uE7yCwi0&5bfk55fr5&9qVsY;@=3DU*(vl`JJ8v=3DKaJtk|7s(j*ymWIK52VyJgdsVl zJ5U8&8jXBLQebyCx#(dhhkF<}r4Fx=3D@j{F>4{T4TyKF(O+xQG|@k8-`9|mL=3DKeqh% zPlR~tak!AZP(a)3`qJw##vx4Q5pEd(}U2&@s!gbZQD&ks(1Mr(a)UE+M3Tg7xEFxiH=3Dvp z(a)dxmX{3kmm0k4WG=3DWo1zPsOE9g&Oj^+8nbp`|b~~+YFzZHv(a)eZgJp@oX-A2{_nGNF zxPJ>Xx-+QWfbEil?T{}B-C~&h?9m+WUc!H*p;rbAY~yc+P>;nQKu?M7C}Pf(2ujOe zUVJL$P7ExXw9{>TdRs^aGy(a)gn<slp-Dup5tLvk#<`~q5t1Ac39iMgrzbjM;SC;CA; zG?SK#FS%4Mb&}{!Ey+57J`-Rj)AP#6Jn`PJGAh?7mkZ8tLyr5^-3gsKRRW1Xp>clm z>gGyg_GR6h)FkTY=3D+aJUN)O3F^5yyr#;wAAk?qB0wP+51D$i_428=3D1OD+6tNdP654 zY5wJ{OD%E~94<MwGS!j724uF%PBfW(93k5(YkUpq3|jl7dXzW4oe8}XSUSj7z%#}8 zkI)Ux(Sqz7!m}ZfB9jFXc2WFO0Kz;4mZ_kg;fmCQnz_E9pko^v=3DiAd=3D=3D_Y50-(a)zX8 z%tU=3D_t8p6+IZy8U4GMCC3%*awNSG}h+>a;<>cZ3qVh%kyP6h+pGf(}tAQxoRGEh~` z`JK<%z~G+Se*M4+ng6k&`SC9q(a)ogLJ{c3SU(a)9yZx8^7$IKNd?(f-0T%tFJ?6^^hg1 zJ}p(a)a*AryhWHNaW?C0??{<Yo9$Dq{apaIaMv`uvmRy;{ms{clLem3~~dL*ADu2`{< zzQVN$<)oPiJ9y2O<Gj^H1XKl}1Eqe=3D6^Ed#8Gm|Dv@=3D-kQfllL>T64o)LVORB6+oP zwsI{a3+G5xI|`XA7-)U};(eR(a)ZI58wz3T@L3ME&ItbQAhUl#e$zNCYlvtA)(-_>~y z?J`aLEsfSCjc(qg^L!#;TWW}Bt2$l|;H0FF=3DXexBU2}FXU9sVBJ5Dz$ad?yn_t#Ul z$}1Wg8b0+#N#a-P*IFqhBK+v5zM<=3D1A|>O8%gsYf;>G8ydNCwLZp#-Ob^=3Dg8y;VaU zH9q>wuiC01P0FlDFDkr$vbO78?l6oxiSYzKbH<>IL#cDf+GK*>cY1YZ2q&-joc8T+ zp6Mawhazz&2e~vvq#<w?O<}Czeg2R&>k8Ajt}bQ(a)4cRBns2@ZblT@`rg4YGj;Km;d zuW~apGoPm9sZkgfKksGC)A`P=3DyW&?q*WVN9uc^_Y77eNJ2l5`#6(a)J(=3DA_%n-(a)jCf& zf!1%@yIXmPn9TEpzqH*-&lY%+KLq9%78a_$2w;bpuHYzO=3DiuP-hOo0!C7s)t66|Y; zUK_z=3D6S6~D+H5XxBbMCvCH&f%-*Q9wdd5F_{b=3DD`Esic)x%%bUz~X>arQR5?<%PLe zr3T?)(f$cYhfYA~c6NY8!uaVlhaGBkgLM!XK4<)w2hlP(a)meZ*NI9*chlRiCd7$k0c tCKCDqKsgAJC~GLNBMy6}Nndzf(a)1S@!4r}5)2K|fzm>F3amYjEu_%C!FS*!p6 diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index 61288dddf..2565505a5 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -1793,13 +1793,6 @@ 'most preferred' =3D> 'pr=C3=A4feriert', 'mount' =3D> 'Einbinden', 'mounted on' =3D> 'Mounted auf', -'mpfire' =3D> 'Media Player f=C3=BCr IPFire', -'mpfire controls' =3D> 'MPFire Steuerung', -'mpfire playlist' =3D> 'MPFire Playlist', -'mpfire scanning' =3D> 'Nach neuen Dateien suchen', -'mpfire search' =3D> 'MPFire Suche', -'mpfire songs' =3D> 'MPFire Songliste', -'mpfire webradio' =3D> 'MPFire Webradio', 'mtu' =3D> 'MTU', 'mtu QoS' =3D> 'Diese Einstellung =C3=A4ndert die MTU nicht global sondern n= ur f=C3=BCr das QoS.', 'my new share' =3D> 'Meine neue Freigabe', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index b9f015935..5c8da52be 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -1853,13 +1853,6 @@ 'most preferred' =3D> 'most preferred', 'mount' =3D> 'Mount', 'mounted on' =3D> 'Mounted on', -'mpfire' =3D> 'Media Player for IPFire', -'mpfire controls' =3D> 'MPFire Control', -'mpfire playlist' =3D> 'MPFire Playlist', -'mpfire scanning' =3D> 'Scan for new files', -'mpfire search' =3D> 'MPFire Search', -'mpfire songs' =3D> 'MPFire songlist', -'mpfire webradio' =3D> 'MPFire Webradio', 'mtu' =3D> 'MTU', 'mtu QoS' =3D> 'This does not change the global MTU, it only sets MTU for Qo= S.', 'my new share' =3D> 'My new share', diff --git a/langs/es/cgi-bin/es.pl b/langs/es/cgi-bin/es.pl index 1e1a0d986..27b0e739e 100644 --- a/langs/es/cgi-bin/es.pl +++ b/langs/es/cgi-bin/es.pl @@ -1848,13 +1848,6 @@ 'most preferred' =3D> 'M=C3=A1s preferido', 'mount' =3D> 'Montar', 'mounted on' =3D> 'Montado en', -'mpfire' =3D> 'Media Player para IPFire', -'mpfire controls' =3D> 'Control de MPFire', -'mpfire playlist' =3D> 'Lista de reproducci=C3=B3n de MPFire', -'mpfire scanning' =3D> 'Analiza en busca de nuevos archivos', -'mpfire search' =3D> 'B=C3=BAsqueda MPFire', -'mpfire songs' =3D> 'Lista de canciones de MPFire', -'mpfire webradio' =3D> 'Webradio de MPFire', 'mtu' =3D> 'MTU', 'mtu QoS' =3D> 'Esto no cambia el MTU global, solo establece MTU para QoS', 'my new share' =3D> 'Mi nuevo recurso compartido', diff --git a/langs/fr/cgi-bin/fr.pl b/langs/fr/cgi-bin/fr.pl index 65a0c95fc..21f7b645f 100644 --- a/langs/fr/cgi-bin/fr.pl +++ b/langs/fr/cgi-bin/fr.pl @@ -1849,13 +1849,6 @@ 'most preferred' =3D> 'le pr=C3=A9f=C3=A9r=C3=A9', 'mount' =3D> 'Monter', 'mounted on' =3D> 'Mont=C3=A9 en tant que', -'mpfire' =3D> 'Lecteur de m=C3=A9dias pour IPFire', -'mpfire controls' =3D> 'Contr=C3=B4le MPFire', -'mpfire playlist' =3D> 'Liste de lecture MPFire', -'mpfire scanning' =3D> 'Chercher de nouveaux fichiers', -'mpfire search' =3D> 'Recherche MPFire', -'mpfire songs' =3D> 'Liste des chansons MPFire', -'mpfire webradio' =3D> 'Radio web MPFire', 'mtu' =3D> 'MTU', 'mtu QoS' =3D> 'Ceci ne change pas le MTU global, cela r=C3=A8gle uniquement= le MTU pour la QoS.', 'my new share' =3D> 'Mon nouveau partage', diff --git a/langs/it/cgi-bin/it.pl b/langs/it/cgi-bin/it.pl index 6e3508803..4654813cc 100644 --- a/langs/it/cgi-bin/it.pl +++ b/langs/it/cgi-bin/it.pl @@ -1516,13 +1516,6 @@ 'most preferred' =3D> 'most preferred', 'mount' =3D> 'Mount', 'mounted on' =3D> 'Montato su', -'mpfire' =3D> 'Media Player for IPFire', -'mpfire controls' =3D> 'MPFire Control', -'mpfire playlist' =3D> 'MPFire Playlist', -'mpfire scanning' =3D> 'Scan for new files', -'mpfire search' =3D> 'MPFire Search', -'mpfire songs' =3D> 'MPFire songlist', -'mpfire webradio' =3D> 'MPFire Webradio', 'mtu QoS' =3D> 'This does not change the global MTU, it only sets MTU for Qo= S.', 'my new share' =3D> 'My new share', 'name' =3D> 'Nome', diff --git a/langs/nl/cgi-bin/nl.pl b/langs/nl/cgi-bin/nl.pl index a397680ce..beb1b6e36 100644 --- a/langs/nl/cgi-bin/nl.pl +++ b/langs/nl/cgi-bin/nl.pl @@ -1497,13 +1497,6 @@ 'most preferred' =3D> 'Meeste voorkeur', 'mount' =3D> 'Koppelen', 'mounted on' =3D> 'Gekoppeld op', -'mpfire' =3D> 'Mediaspeler voor IPFire', -'mpfire controls' =3D> 'MPFire Controle', -'mpfire playlist' =3D> 'MPFire afspeellijst', -'mpfire scanning' =3D> 'Zoeken naar nieuwe bestanden', -'mpfire search' =3D> 'MPFire Zoeken', -'mpfire songs' =3D> 'MPFire lijst met nummers', -'mpfire webradio' =3D> 'MPFire Webradio', 'mtu QoS' =3D> 'Dit verandert niet de globale MTU, het zet alleen de MTU voo= r QoS.', 'my new share' =3D> 'Mijn nieuwe share', 'name' =3D> 'Naam', diff --git a/langs/pl/cgi-bin/pl.pl b/langs/pl/cgi-bin/pl.pl index 86364a0a2..4be749041 100644 --- a/langs/pl/cgi-bin/pl.pl +++ b/langs/pl/cgi-bin/pl.pl @@ -1193,13 +1193,6 @@ 'more' =3D> 'wi=C4=99cej', 'mount' =3D> 'Montuj', 'mounted on' =3D> 'Zamontowany w', -'mpfire' =3D> 'Odtwarza=C4=87 medi=C3=B3w dla IPFire', -'mpfire controls' =3D> 'Zarz=C4=85dzanie MPFire', -'mpfire playlist' =3D> 'Playlist\'a MPFire ', -'mpfire scanning' =3D> 'Skanuj w poszukiwaniu nowych plik=C3=B3w', -'mpfire search' =3D> 'MPFire Szukaj', -'mpfire songs' =3D> 'MPFire lista utwor=C3=B3w', -'mpfire webradio' =3D> 'MPFire Webradio', 'mtu QoS' =3D> 'Ta opcja nie zmienia globalnego MTU, a jedynie MTU dla QoS.', 'my new share' =3D> 'M=C3=B3j nowy zas=C3=B3b', 'name' =3D> 'Nazwa', diff --git a/langs/ru/cgi-bin/ru.pl b/langs/ru/cgi-bin/ru.pl index 32f0f2425..32f6f993d 100644 --- a/langs/ru/cgi-bin/ru.pl +++ b/langs/ru/cgi-bin/ru.pl @@ -1185,13 +1185,6 @@ 'more' =3D> '=D0=91=D0=BE=D0=BB=D1=8C=D1=88=D0=B5', 'mount' =3D> '=D0=9C=D0=BE=D0=BD=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82= =D1=8C', 'mounted on' =3D> '=D0=A1=D0=BC=D0=BE=D0=BD=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0= =B0=D0=BD =D0=BD=D0=B0', -'mpfire' =3D> 'Media Player for IPFire', -'mpfire controls' =3D> 'MPFire Control', -'mpfire playlist' =3D> 'MPFire Playlist', -'mpfire scanning' =3D> '=D0=98=D1=81=D0=BA=D0=B0=D1=82=D1=8C =D0=BD=D0=BE=D0= =B2=D1=8B=D0=B5 =D1=84=D0=B0=D0=B9=D0=BB=D1=8B', -'mpfire search' =3D> 'MPFire Search', -'mpfire songs' =3D> 'MPFire songlist', -'mpfire webradio' =3D> 'MPFire Webradio', 'mtu QoS' =3D> '=D0=AD=D1=82=D0=BE =D0=BD=D1=80=D0=B5 =D0=B8=D0=B7=D0=BC=D0= =B5=D0=BD=D0=B8=D1=82 =D0=B3=D0=BB=D0=BE=D0=B1=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B= =D0=B5 =D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8 MTU, =D0=B0 =D1= =82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE =D0=B7=D0=B0=D0=B4=D0=B0=D1=91=D1=82 MTU = =D0=B4=D0=BB=D1=8F QoS.', 'my new share' =3D> '=D0=9C=D0=BE=D1=8F =D0=BD=D0=BE=D0=B2=D0=B0=D1=8F =D1= =88=D0=B0=D1=80=D0=B0', 'name' =3D> '=D0=98=D0=BC=D1=8F', diff --git a/langs/tr/cgi-bin/tr.pl b/langs/tr/cgi-bin/tr.pl index d279309af..f3a37182a 100644 --- a/langs/tr/cgi-bin/tr.pl +++ b/langs/tr/cgi-bin/tr.pl @@ -1652,13 +1652,6 @@ 'most preferred' =3D> 'En =C3=A7ok tercih edilen', 'mount' =3D> 'Ba=C4=9Fla', 'mounted on' =3D> 'Ba=C4=9Fl=C4=B1', -'mpfire' =3D> 'IPFire i=C3=A7in Media Player', -'mpfire controls' =3D> 'MPFire Kontrol', -'mpfire playlist' =3D> 'MPFire =C3=87alma Listesi', -'mpfire scanning' =3D> 'Yeni dosyalar i=C3=A7in tara', -'mpfire search' =3D> 'MPFire Ara', -'mpfire songs' =3D> 'MPFire =C5=9Fark=C4=B1 listesi', -'mpfire webradio' =3D> 'MPFire Webradyo', 'mtu QoS' =3D> 'Bu genel MTU de=C4=9Fi=C5=9Ftirilemez. Sadece QoS i=C3=A7in = MTU ayar=C4=B1 yap=C4=B1l=C4=B1r.', 'my new share' =3D> 'Yeni payla=C5=9F=C4=B1mlar=C4=B1m', 'name' =3D> 'Ad', diff --git a/lfs/mpfire b/lfs/mpfire deleted file mode 100644 index 54551a0b6..000000000 --- a/lfs/mpfire +++ /dev/null @@ -1,75 +0,0 @@ -############################################################################= ### -# = # -# IPFire.org - A linux based firewall = # -# Copyright (C) 2007-2024 IPFire Team <info(a)ipfire.org> = # -# = # -# This program is free software: you can redistribute it and/or modify = # -# it under the terms of the GNU General Public License as published by = # -# the Free Software Foundation, either version 3 of the License, or = # -# (at your option) any later version. = # -# = # -# This program is distributed in the hope that it will be useful, = # -# but WITHOUT ANY WARRANTY; without even the implied warranty of = # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the = # -# GNU General Public License for more details. = # -# = # -# You should have received a copy of the GNU General Public License = # -# along with this program. If not, see <http://www.gnu.org/licenses/>. = # -# = # -############################################################################= ### - -############################################################################= ### -# Definitions -############################################################################= ### - -include Config - -SUMMARY =3D IPFire integration for the Music Player Daemon - -VER =3D ipfire - -THISAPP =3D mpfire-$(VER) -DIR_APP =3D $(DIR_SRC)/$(THISAPP) -TARGET =3D $(DIR_INFO)/$(THISAPP) -PROG =3D mpfire -PAK_VER =3D 17 - -DEPS =3D mpd mpc - -SERVICES =3D - -############################################################################= ### -# Top-level Rules -############################################################################= ### - -objects =3D - -install : $(TARGET) - -check : - -download : - -b2 : - -dist: - @$(PAK) - -############################################################################= ### -# Installation Details -############################################################################= ### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - -mkdir -p /var/ipfire/mpfire/bin - touch /var/ipfire/mpfire/settings - install -v -m 755 $(DIR_SRC)/config/mpfire/mpfire.pl /var/ipfire/mpfire/bin - install -v -m 644 $(DIR_SRC)/config/mpfire/webradio /var/ipfire/mpfire/ - chown nobody.nobody /var/ipfire/mpfire/{settings,webradio} - chmod 755 /srv/web/ipfire/html/images/mpfire - install -v -m 644 $(DIR_SRC)/config/backup/includes/mpfire /var/ipfire/back= up/addons/includes/mpfire - -mkdir -p /usr/lib/perl5/site_perl/5.36.0/Audio/ - cp -vrf $(DIR_SRC)/config/mpfire/perl/Audio/MPD* /usr/lib/perl5/site_perl/5= .36.0/Audio/ - cp -vrf $(DIR_SRC)/config/mpfire/perl/Accessor* /usr/lib/perl5/5.36.0/Class/ - cp -vrf $(DIR_SRC)/config/mpfire/perl/Readonly.pm /usr/lib/perl5/5.36.0/Rea= donly.pm - @$(POSTBUILD) diff --git a/make.sh b/make.sh index 8e980f392..992a6d450 100755 --- a/make.sh +++ b/make.sh @@ -1819,7 +1819,6 @@ build_system() { lfsmake2 perl-NetAddr-IP lfsmake2 dma lfsmake2 alsa - lfsmake2 mpfire lfsmake2 guardian lfsmake2 libid3tag lfsmake2 libmad diff --git a/src/misc-progs/Makefile b/src/misc-progs/Makefile index 7c3ef7529..1ae12b294 100644 --- a/src/misc-progs/Makefile +++ b/src/misc-progs/Makefile @@ -29,7 +29,7 @@ SUID_PROGS =3D squidctrl sshctrl ipfirereboot \ logwatch wioscan wiohelper openvpnctrl firewallctrl \ wirelessctrl getipstat qosctrl \ redctrl syslogdctrl extrahdctrl sambactrl \ - smartctrl clamavctrl addonctrl pakfire mpfirectrl wlanapctrl \ + smartctrl clamavctrl addonctrl pakfire wlanapctrl \ setaliases urlfilterctrl updxlratorctrl fireinfoctrl rebuildroutes \ getconntracktable wirelessclient torctrl ddnsctrl unboundctrl \ captivectrl diff --git a/src/misc-progs/mpfirectrl.c b/src/misc-progs/mpfirectrl.c deleted file mode 100644 index 4ea1fb543..000000000 --- a/src/misc-progs/mpfirectrl.c +++ /dev/null @@ -1,15 +0,0 @@ -/* This file is part of the IPFire Firewall. - * - * This program is distributed under the terms of the GNU General Public - * Licence. See the file COPYING for details. - * - */ - -#include "setuid.h" - -int main(int argc, char** argv) { - if (!initsetuid()) - exit(1); - - return run("/var/ipfire/mpfire/bin/mpfire.pl", argv + 1); -} diff --git a/src/paks/mpfire/install.sh b/src/paks/mpfire/install.sh deleted file mode 100644 index 541a25ca2..000000000 --- a/src/paks/mpfire/install.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007-2024 IPFire-Team <info(a)ipfire.org>. = # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -extract_files -chmod 755 /srv/web/ipfire/html/images/mpfire -restore_backup ${NAME} diff --git a/src/paks/mpfire/uninstall.sh b/src/paks/mpfire/uninstall.sh deleted file mode 100644 index ed7e6a821..000000000 --- a/src/paks/mpfire/uninstall.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007-2024 IPFire-Team <info(a)ipfire.org>. = # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -make_backup ${NAME} -remove_files diff --git a/src/paks/mpfire/update.sh b/src/paks/mpfire/update.sh deleted file mode 100644 index 31d1d77cc..000000000 --- a/src/paks/mpfire/update.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007-2024 IPFire-Team <info(a)ipfire.org>. = # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -extract_backup_includes -./uninstall.sh -./install.sh --=20 2.46.2 --===============2581222176252568866==--