"GPRINT:iowaitpct:AVERAGE:%3.2lf%%",
"GPRINT:iowaitpct:MIN:%3.2lf%%",
"GPRINT:iowaitpct:LAST:%3.2lf%%\\j",
- "STACK:irqpct".$color{"color23"}.":$tr{'irq cpu usage'}",
+ "STACK:irqpct".$color{"color23"}.":IRQ CPU ",
"GPRINT:irqpct:MAX:%3.2lf%%",
"GPRINT:irqpct:AVERAGE:%3.2lf%%",
"GPRINT:irqpct:MIN:%3.2lf%%",
"--color", "BACK".$color{"color21"},
"-t $tr{'harddisk temperature'} ($tr{'graph per'} $tr{$period})",
"DEF:temperature=$rrdlog/hddtemp-$disk.rrd:temperature:AVERAGE",
- "AREA:temperature".$color{"color11"}.":$tr{'hdd temperature in'} C\\j",
+ "LINE2:temperature".$color{"color11"}.":$tr{'hdd temperature in'} C\\j",
"COMMENT:$tr{'maximal'}",
"COMMENT:$tr{'average'}",
"COMMENT:$tr{'minimal'}",
"COMMENT:$tr{'current'}\\j",
- "GPRINT:temperature:MAX:%2.0lf Grad C",
- "GPRINT:temperature:AVERAGE:%2.0lf Grad C",
- "GPRINT:temperature:MIN:%2.0lf Grad C",
- "GPRINT:temperature:LAST:%2.0lf Grad C\\j",
+ "GPRINT:temperature:MAX:%3.0lf Grad C",
+ "GPRINT:temperature:AVERAGE:%3.0lf Grad C",
+ "GPRINT:temperature:MIN:%3.0lf Grad C",
+ "GPRINT:temperature:LAST:%3.0lf Grad C\\j",
);
$ERROR = RRDs::error;
print "Error in RRD::graph for hdd-$disk: $ERROR\n" if $ERROR;
--- /dev/null
+#!/usr/bin/perl
+
+use MP3::Tag;
+use MP3::Info;
+
+require '/var/ipfire/general-functions.pl';
+require "${General::swroot}/lang.pl";
+require "${General::swroot}/header.pl";
+
+my $filename = "";
+my %songs = "";
+my $debug = 0;
+
+if ($ARGV[0] eq 'scan') {
+my $command = "find ";
+chomp $ARGV[1];
+$command .= "\"$ARGV[1]\"";
+if ($ARGV[2] eq 'off'){$command .= " -maxdepth 1";}
+$command .= " -name *.mp3";
+my @files = `$command`;
+
+&getExistingSongs();
+
+foreach (@files){
+ $filename = $_;
+ chomp($filename)
+ &getSongInfo();
+ }
+open(DATEI, ">${General::swroot}/mpfire/db/songs.db") || die "Kann Datenbank nicht speichern";
+print DATEI %songs;
+close(DATEI);
+}
+
+if ($ARGV[0] eq 'getdb') {
+ &getExistingSongs();
+ print %songs;
+ }
+
+if ($ARGV[0] eq 'play') {
+ if ($debug){print "Yes we are called and we will play $ARGV[1]\n";}
+ system("/usr/bin/mpg123 -b 1024 --aggressive -q \"$ARGV[1]\" 2>/dev/null >/dev/null &");
+ }
+
+if ($ARGV[0] eq 'stop') {
+ my $PID = `ps -ef | grep mpg123 | grep playlist | head -1 | awk '{ print \$2 }'`;
+ if ($debug){print "Stopping $PID\n";}
+ system("kill -KILL $PID");
+ }
+
+if ($ARGV[0] eq 'volup') {
+ if ($debug){print "Increasing Volume\n";}
+ system("/usr/bin/amixer set Master $ARGV[1]%+ 2>/dev/null >/dev/null");
+ }
+
+if ($ARGV[0] eq 'voldown') {
+ if ($debug){print "Decreasing Volume\n";}
+ system("/usr/bin/amixer set Master $ARGV[1]%- 2>/dev/null >/dev/null");
+ }
+
+if ($ARGV[0] eq 'playall') {
+ if ($debug){print "Playing everything\n";}
+ system("/usr/bin/mpg123 -b 1024 --aggressive -Zq@ /var/ipfire/mpfire/playlist 2>/dev/null >/dev/null &");
+ }
+
+if ($ARGV[0] eq 'pause') {
+ my $PID = `ps -ef | grep mpg123 | grep playlist | head -1 | awk '{ print \$2 }'`;
+ if ($debug){print "Pausing Process $PID\n";}
+ system("kill -STOP $PID");
+ }
+
+if ($ARGV[0] eq 'resume') {
+ my $PID = `ps -ef | grep mpg123 | grep playlist | head -1 | awk '{ print \$2 }'`;
+ if ($debug){print "Resuming Process $PID\n";}
+ system("kill -CONT $PID");
+ }
+
+if ($ARGV[0] eq 'next') {
+ if ($debug){print "Next Song\n";}
+ my $PID = `ps -ef | grep mpg123 | grep playlist | head -1 | awk '{ print \$2 }'`;
+ system("kill -SIGINT $PID");
+ }
+
+sub getSongInfo(){
+ my $mp3 = MP3::Tag->new($filename);
+ my ($title, $track, $artist, $album, $comment, $year, $genre) = $mp3->autoinfo();
+ my $info = get_mp3info($filename);
+ $mp3->close();
+ $songs{$filename} = "|".$artist."|".$title."|".$track."|".$album."|".$year."|".$genre."|".$info->{MM}."|".$info->{SS}."|".$info->{BITRATE}."|".$info->{FREQUENCY}."|".$info->{MODE}."\n";
+ }
+
+sub getExistingSongs(){
+ open(DATEI, "<${General::swroot}/mpfire/db/songs.db") || die "Keine Datenbank vorhanden";
+ my @Zeilen = <DATEI>;
+ close(DATEI);
+ foreach (@Zeilen){
+ my @Zeile = split(/\|/,$_);
+ $songs{$Zeile[0]} = "|".$Zeile[1]."|".$Zeile[2]."|".$Zeile[3]."|".$Zeile[4]."|".$Zeile[5]."|".$Zeile[6]."|".$Zeile[7]."|".$Zeile[8]."|".$Zeile[9]."|".$Zeile[10]."|".$Zeile[11]."\n";
+ }
+ }
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: weekly firewallhits
WARNING: translation string unused: written sectors
WARNING: translation string unused: xtaccess bad transfert
-WARNING: translation string unused: year
WARNING: translation string unused: yearly firewallhits
WARNING: untranslated string: OVPN
WARNING: untranslated string: abort
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: week
WARNING: translation string unused: weekly firewallhits
WARNING: translation string unused: written sectors
-WARNING: translation string unused: year
WARNING: translation string unused: yearly firewallhits
WARNING: untranslated string: OVPN
WARNING: untranslated string: abort
foreach (@disks){
my $disk = $_;
chomp $disk;
- &Graphs::updatehddgraph ($disk,"day");
+ &Graphs::updatehddgraph ($disk,"day");&Graphs::updatehddgraph ($disk,"week");&Graphs::updatehddgraph ($disk,"month");&Graphs::updatehddgraph ($disk,"year");
}
&Graphs::updatetempgraph ("day");
if ($cgigraphs[1] =~ /temp/) {&Graphs::updatetempgraph ("week");&Graphs::updatetempgraph ("month");&Graphs::updatetempgraph ("year");}
if ($cgigraphs[1] =~ /fan/) {&Graphs::updatefangraph ("week");&Graphs::updatefangraph ("month");&Graphs::updatefangraph ("year");}
if ($cgigraphs[1] =~ /volt/) {&Graphs::updatevoltgraph ("week");&Graphs::updatevoltgraph ("month");&Graphs::updatevoltgraph ("year");}
-if ($cgigraphs[1] =~ /hddtemp/){
- my @devices = `kudzu -qps -c HD | grep device: | cut -d" " -f2 | sort | uniq`;
-
- foreach (@devices) {
- my $device = $_;
- chomp($device);
- &Graphs::updatehddgraph ($device,"week");
- &Graphs::updatehddgraph ($device,"month");
- &Graphs::updatehddgraph ($device,"year");}}
my $graph = $cgigraphs[1];
my $graphname = $Lang::tr{"mbmon $cgigraphs[1]"};
if ( $mbmon_settings{'GRAPH_HDD'} == 1 )
{
- hddtempbox("hda");
- hddtempbox("hdb");
- hddtempbox("hdc");
- hddtempbox("hdd");
- hddtempbox("hde");
- hddtempbox("hdf");
- hddtempbox("hdg");
- hddtempbox("hdh");
+ my @devices = `kudzu -qps -c HD | grep device: | cut -d" " -f2 | sort | uniq`;
+ foreach (@devices) {
+ my $device = $_;
+ chomp($device);
+ hddtempbox($device);}
}
&Header::openbox('100%', 'center', $Lang::tr{'settings'});
--- /dev/null
+#!/usr/bin/perl
+#
+# IPFire CGIs
+#
+# This code is distributed under the terms of the GPL
+#
+# (c) The IPFire Team
+
+use strict;
+# enable only the following on debugging purpose
+use warnings;
+use CGI::Carp 'fatalsToBrowser';
+
+require '/var/ipfire/general-functions.pl';
+require "${General::swroot}/lang.pl";
+require "${General::swroot}/header.pl";
+
+my %color = ();
+my %mainsettings = ();
+my %mpfiresettings = ();
+my %checked = ();
+my $message = "";
+my $errormessage = "";
+
+open(DATEI, "<${General::swroot}/mpfire/db/songs.db") || die "No Database found";
+my @songdb = <DATEI>;
+close(DATEI);
+@songdb = sort(@songdb);
+
+&General::readhash("${General::swroot}/main/settings", \%mainsettings);
+&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+
+&Header::showhttpheaders();
+&Header::getcgihash(\%mpfiresettings);
+
+&Header::openpage($Lang::tr{'mpfire'}, 1, '');
+&Header::openbigbox('100%', 'left', '', $errormessage);
+
+sub refreshpage{&Header::openbox( 'Waiting', 1, "<meta http-equiv='refresh' content='1;'>" );}
+
+############################################################################################################################
+######################################## Scanne Verzeichnisse nach Mp3 Dateien #############################################
+
+if ( $mpfiresettings{'ACTION'} eq "scan" )
+{
+delete $mpfiresettings{'__CGI__'};delete $mpfiresettings{'x'};delete $mpfiresettings{'y'};
+&General::writehash("${General::swroot}/mpfire/settings", \%mpfiresettings);
+system("/usr/local/bin/mpfirectrl scan $mpfiresettings{'SCANDIR'} $mpfiresettings{'SCANDIRDEPS'}");
+}
+
+if ( $mpfiresettings{'ACTION'} eq ">" ){system("/usr/local/bin/mpfirectrl play $mpfiresettings{'FILE'}");}
+if ( $mpfiresettings{'ACTION'} eq "x" ){system("/usr/local/bin/mpfirectrl stop");}
+if ( $mpfiresettings{'ACTION'} eq "||" ){system("/usr/local/bin/mpfirectrl pause");}
+if ( $mpfiresettings{'ACTION'} eq "|>" ){system("/usr/local/bin/mpfirectrl resume");}
+if ( $mpfiresettings{'ACTION'} eq ">>" ){system("/usr/local/bin/mpfirectrl next");}
+if ( $mpfiresettings{'ACTION'} eq "+" ){system("/usr/local/bin/mpfirectrl volup 5");}
+if ( $mpfiresettings{'ACTION'} eq "-" ){system("/usr/local/bin/mpfirectrl voldown 5");}
+if ( $mpfiresettings{'ACTION'} eq "++" ){system("/usr/local/bin/mpfirectrl volup 10");}
+if ( $mpfiresettings{'ACTION'} eq "--" ){system("/usr/local/bin/mpfirectrl voldown 10");}
+if ( $mpfiresettings{'ACTION'} eq "playall" )
+{
+my @temp = "";
+foreach (@songdb){
+ my @song = split(/\|/,$_);
+ chomp($song[0]);
+ push(@temp,$song[0]."\n");
+ }
+open(DATEI, ">${General::swroot}/mpfire/playlist") || die "Could not add playlist";
+print DATEI @temp;
+close(DATEI);
+system("/usr/local/bin/mpfirectrl playall");
+}
+if ( $mpfiresettings{'SHOWLIST'} ){delete $mpfiresettings{'__CGI__'};delete $mpfiresettings{'x'};delete $mpfiresettings{'y'};&General::writehash("${General::swroot}/mpfire/settings", \%mpfiresettings);}
+
+############################################################################################################################
+################################### Aufbau der HTML Seite fr globale Sambaeinstellungen ####################################
+
+$mpfiresettings{'SCANDIR'} = "/";
+$mpfiresettings{'SHOWLIST'} = "off";
+
+&General::readhash("${General::swroot}/mpfire/settings", \%mpfiresettings);
+
+############################################################################################################################
+########################################### rekursiv nach neuen Mp3s Scannen ##############################################ä
+
+if ( $message ne "" ) { print "<font color='red'>$message</font>"; }
+
+&Header::openbox('100%', 'center', $Lang::tr{'mpfire scanning'});
+
+print <<END
+<form method='post' action='$ENV{'SCRIPT_NAME'}'>
+<table width='95%' cellspacing='0'>
+<tr bgcolor='$color{'color20'}'><td colspan='2' align='left'><b>$Lang::tr{'Scan for Files'}</b></td></tr>
+<tr><td align='left' width='40%'>$Lang::tr{'Scan from Directory'}</td><td align='left'><input type='text' name='SCANDIR' value='$mpfiresettings{'SCANDIR'}' size="30" /></td></tr>
+<tr><td align='left' width='40%'>$Lang::tr{'deep scan directories'}</td><td align='left'>on <input type='radio' name='SCANDIRDEPS' value='on' checked='checked'/>/
+ <input type='radio' name='SCANDIRDEPS' value='off'/> off</td></tr>
+<tr><td align='center' colspan='2'><input type='hidden' name='ACTION' value='scan' />
+ <input type='image' alt='$Lang::tr{'Scan for Files'}' title='$Lang::tr{'Scan for Files'}' src='/images/edit-find.png' /></td></tr>
+</table>
+</form>
+END
+;
+&Header::closebox();
+
+&Header::openbox('100%', 'center', $Lang::tr{'mpfire controls'});
+print "<form method='post' action='$ENV{'SCRIPT_NAME'}'><table width='95%' cellspacing='0'><tr>";
+print <<END
+ <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='x' /><input type='image' alt='$Lang::tr{'stop'}' title='$Lang::tr{'stop'}' src='/images/media-playback-stop.png' /></form></td>
+ <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='||' /><input type='image' alt='$Lang::tr{'pause'}' title='$Lang::tr{'pause'}' src='/images/media-playback-pause.png' /></form></td>
+ <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='|>' /><input type='image' alt='$Lang::tr{'resume'}' title='$Lang::tr{'resume'}' src='/images/media-resume.png' /></form></td>
+ <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='playall' /><input type='image' alt='$Lang::tr{'play'}' title='$Lang::tr{'play'}' src='/images/media-playback-start.png' /></form></td>
+ <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='>>' /><input type='image' alt='$Lang::tr{'next'}' title='$Lang::tr{'next'}' src='/images/media-skip-forward.png' /></form></td>
+ </tr>
+END
+;
+if ( $mpfiresettings{'SHOWLIST'} eq "on" ){print"<tr><td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='SHOWLIST' value='off' /><input type='image' alt='$Lang::tr{'off'}' title='$Lang::tr{'off'}' src='/images/audio-x-generic.png' /></form></td>";}
+else { print"<tr><td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='SHOWLIST' value='on' /><input type='image' alt='$Lang::tr{'on'}' title='$Lang::tr{'on'}' src='/images/audio-x-generic-red.png' /></form></td>";}
+print <<END
+ <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='--' /><input type='image' alt='$Lang::tr{'voldown10'}' title='$Lang::tr{'voldown10'}' src='/images/audio-volume-low-red.png' /></form></td>
+ <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='-' /><input type='image' alt='$Lang::tr{'voldown5'}' title='$Lang::tr{'voldown5'}' src='/images/audio-volume-low.png' /></form></td>
+ <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='+' /><input type='image' alt='$Lang::tr{'volup5'}' title='$Lang::tr{'volup5'}' src='/images/audio-volume-high.png' /></form></td>
+ <td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='++' /><input type='image' alt='$Lang::tr{'volup10'}' title='$Lang::tr{'volup10'}' src='/images/audio-volume-high-red.png' /></form></td>
+ </tr>
+</table>
+END
+;
+&Header::closebox();
+
+if ( $mpfiresettings{'SHOWLIST'} eq "on" ){
+
+&Header::openbox('100%', 'center', $Lang::tr{'mpfire songs'});
+print <<END
+
+<table width='95%' cellspacing=5'>
+<tr bgcolor='$color{'color20'}'><td colspan='9' align='left'><b>$Lang::tr{'Existing Files'}</b></td></tr>
+<tr><td align='center'></td>
+ <td align='center'><b>$Lang::tr{'artist'}<br/>$Lang::tr{'title'}</b></td>
+ <td align='center'><b>$Lang::tr{'number'}</b></td>
+ <td align='center'><b>$Lang::tr{'album'}</b></td>
+ <td align='center'><b>$Lang::tr{'year'}</b></td>
+ <td align='center'><b>$Lang::tr{'genre'}</b></td>
+ <td align='center'><b>$Lang::tr{'length'}<br/>$Lang::tr{'bitrate'} - $Lang::tr{'frequency'}</b></td>
+ <td align='center'><b>$Lang::tr{'mode'}</b></td></tr>
+END
+;
+my $lines = 0;
+foreach (@songdb){
+ my @song = split(/\|/,$_);
+
+ if ($lines % 2) {print "<tr bgcolor='$color{'color20'}'>";} else {print "<tr bgcolor='$color{'color22'}'>";}
+ $song[0]=~s/\/\//\//g;
+ print <<END
+ <td align='center' style="white-space:nowrap;"><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='>' /><input type='hidden' name='FILE' value='$song[0]' /><input type='image' alt='$Lang::tr{'play'}' title='$Lang::tr{'play'}' src='/images/media-playback-start.png' /></form></td>
+ <td align='center'>$song[1]<br/>$song[2]</td>
+ <td align='center'>$song[3]</td>
+ <td align='center'>$song[4]</td>
+ <td align='center'>$song[5]</td>
+ <td align='center'>$song[6]</td>
+ <td align='center'>$song[7]:$song[8]<br/>$song[9] - $song[10]</td>
+END
+;
+ if ( $song[11] eq "0\n" ) {print "<td align='center'>Stereo</td></tr>"; }
+ elsif ( $song[11] eq "1\n" ) {print "<td align='center'>Joint<br/>Stereo</td></tr>"; }
+ elsif ( $song[11] eq "2\n" ) {print "<td align='center'>Dual<br/>Channel</td></tr>"; }
+ elsif ( $song[11] eq "3\n" ) {print "<td align='center'>Single<br/>Channel</td></tr>"; }
+ else {print "<td align='center'></td></tr>"; }
+ $lines++
+ }
+print "</table></form>";
+&Header::closebox();
+}
+
+&Header::closebigbox();
+&Header::closepage();
@user = <FILE>;
close(FILE);
system('/usr/local/bin/sambactrl locksmbpasswd');
+
+ my $lines = 0;
+
foreach $userentry (sort @user)
{
@userline = split( /\:/, $userentry );
- print "<tr><td align='left'>$userline[0]</td><td align='left'>";
+ if ($lines % 2) {print "<tr bgcolor='$color{'color20'}'>";} else {print "<tr bgcolor='$color{'color22'}'>";}
+ print "<td align='left'>$userline[0]</td><td align='left'>";
if ($userline[4] =~ /N/)
{
print "$Lang::tr{'not set'}</td><td align='left'>";
END
;
}
+ $lines++;
}
print <<END
</table>
;
my @Shares = keys(%shares);
+my $lines = 0;
foreach my $shareentry (sort @Shares)
{
chomp $shareentry;
+ if ($lines % 2) {print "<tr bgcolor='$color{'color20'}'>";} else {print "<tr bgcolor='$color{'color22'}'>";}
print <<END
- <tr><td align='left'>$shareentry</td>
+ <td align='left'>$shareentry</td>
<td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
<input type='hidden' name='NAME' value='$shareentry' />
<input type='hidden' name='ACTION' value='sharechange' />
</form></td></tr>
END
;
+ $lines++;
}
print <<END
'ConnSched time' => 'Zeit:',
'ConnSched up' => 'Hoch',
'ConnSched weekdays' => 'Wochentage:',
+'Existing Files' => 'Dateien in der Datenbank',
'HDD temperature' => 'HDD-Temperatur',
'Local VPN IP' => 'Internes Netzwerk (GREEN)',
'MTU' => 'MTU Size',
'Remote IP' => 'Entfernte IP / Hostname (DynDNS)',
'Remote VPN IP' => 'VPN Subnetz (z.B. 10.0.10.0/255.255.255.0)',
'Resolv' => 'Resolv-Retry',
+'Scan for Files' => 'Nach Dateien suchen',
+'Scan from Directory' => 'Scan Verzeichnis',
'Verbose' => 'Verbose',
'WakeOnLan' => 'Wake On LAN',
'a ca certificate with this name already exists' => 'Ein CA-Zertifikat mit diesem Namen existiert bereits.',
'advproxy web browser' => 'Web-Browser',
'advproxy wednesday' => 'Mit',
'again' => 'Wiederholung:',
+'album' => 'Album',
'alcatelusb help' => 'Um das Speedtouch USB Modem zu verwenden, müssen Sie die Firmware in Ihre IPFire Box hochladen. Bitte laden sie das <b>Embedded Firmware</b> Paket von speedtouch.com herunter, entpacken es und laden dann die passende Datei für Ihr Modem hoch: KQD6_3.xxx für Revisionsnummern <4 oder ZZZL_3.xxx für Rev.=4 mittels des unten angegebenen Formulars.',
'alcatelusb upload' => 'Speedtouch USB Firmware hochladen',
'alias ip' => 'Alias-IP-Adresse',
'archive not exist' => 'Konfigurationsarchiv existiert nicht',
'are you sure' => 'Sind Sie sicher?',
'arp table entries' => 'Einträge der ARP-Tabelle:',
+'artist' => 'Künstler',
'attemps' => 'Versuche',
'august' => 'August',
'authentication' => 'Authentifizierung:',
'basic options' => 'Basisoptionen',
'beep when ppp connects or disconnects' => 'Piepen, wenn IPFire verbindet oder trennt',
'behind a proxy' => 'Hinter einem Proxy:',
+'bitrate' => 'Bitrate',
'bleeding rules' => 'Bleeding Edge Snort Rules',
'blue' => 'BLAU',
'blue access' => 'Zugriff auf Blau',
'deactivate user' => 'Benutzer deaktivieren',
'debugme' => 'Noch nicht implementiert',
'december' => 'Dezember',
+'deep scan directories' => 'rekursiv scannen',
'def lease time' => 'Standardzeit für Zuordnung',
'default lease time' => 'Haltezeit-Voreinstellung in min:',
'default networks' => 'Standard Netzwerke',
'free' => 'Frei',
'free memory' => 'Freier Speicher ',
'free swap' => 'Freier Swap',
+'frequency' => 'Frequenz',
'friday' => 'Freitag',
'fritzdsl help' => 'Um eines der folgenden Fritz!DSL Modems (Fritz!Card DSL=fcdsl / Fritz!CardDSL SL=fcdslsl / Fritz!Card DSL V2.0=fcdsl2 / Fritz!Card DSL USB=fcdslusb / Fritz!Card DSL USB SL=fcdslslusb) nutzen zu können, müssen Sie ein Paket auf Ihre IPFire-Box laden. Bitte laden Sie den tarball entsprechend Ihrer Version von der IPFire-Webseite herunter und laden Sie dann die gesamte <b>fcdsl-(ihre_version).tgz</b> mit dem folgenden Formular hoch.',
'fritzdsl upload' => 'Fritz!DSL-Treiber hochladen',
'generatereport' => 'Neuen Report erstellen',
'generating the root and host certificates may take a long time. it can take up to several minutes on older hardware. please be patient' => 'Die Erzeugung der Root und Host Zertifikate kann lange Zeit dauern. Auf älterer Hardware kann es mehrere Minuten lang dauern. Bitte haben Sie etwas Geduld.',
'genkey' => 'PSK erzeugen',
+'genre' => 'Genre',
'global settings' => 'Globale Einstellungen',
'graph' => 'Diagramm',
'graph per' => 'Diagramm pro',
'lateprompting' => 'Late prompting',
'lease expires' => 'Zuordnung verfällt',
'legend' => 'Legende',
+'length' => 'Länge',
'line' => 'Leitung',
'linkq' => 'Verbindungsqualität',
'load printer' => 'Load Printer',
'misc-options' => 'Sonstige Optionen',
'missing dat' => 'Verschlüsseltes Archiv wurde nicht gefunden',
'missing gz' => 'Nichtverschlüsseltes Archiv wurde nicht gefunden',
+'mode' => 'Modus',
'modem' => 'Modem',
'modem configuration' => 'Modem-Konfiguration',
'modem on com1' => 'Modem an COM1',
'more' => 'weitere',
'mount' => 'Einbinden',
'mounted on' => 'Mounted auf',
+'mpfire' => 'Media Player für IPFire',
+'mpfire controls' => 'MPFire Steuerung',
+'mpfire scanning' => 'Nach neuen Dateien suchen',
+'mpfire songs' => 'MPFire Songliste',
'my new share' => 'Meine neue Freigabe',
'name' => 'Name',
'name is invalid' => 'Name ist ungültig',
'new optionsfw later' => 'Ihre Modifikation(en) wird (werden) beim nächsten Neustart aktiv werden',
'new optionsfw must boot' => 'Sie müssen Ihren IPFire neu starten',
'newer' => 'Neuer',
+'next' => 'Nächster',
'no' => 'Nein',
'no alcatelusb firmware' => 'Keine Alcatel USB ADSL-Firmware vorhanden. Bitte hochladen.',
'no cfg upload' => 'Keine Daten wurden hochgeladen',
'o-no' => 'Inaktiv',
'o-yes' => 'Aktiv',
'october' => 'Oktober',
+'off' => 'off',
'ok' => 'OK',
'older' => 'Älter',
+'on' => 'on',
'online help en' => 'Online-Hilfe (auf Deutsch)',
'only digits allowed in holdoff field' => 'Im Holdoff-Feld sind nur Ziffern erlaubt',
'only digits allowed in max retries field' => 'Im Feld "Maximale Wiederholversuche" sind nur Ziffern erlaubt.',
'passwords do not match' => 'Die Passwörter stimmen nicht überein.',
'passwords must be at least 6 characters in length' => 'Passwörter müssen mind. 6 Zeichen lang sein',
'path to directory' => 'Pfad zur Freigabe',
+'pause' => 'Pause',
'pc' => 'PC',
'pc add' => 'PC hinzufügen',
'pdc options' => 'PDC Optionen',
'phonebook entry' => 'Telefonbuch-Eintrag:',
'ping disabled' => 'Ping Antwort deaktivieren',
'pkcs12 file password' => 'PKCS12 Datei-Passwort',
+'play' => 'Play',
'polfile' => 'Polfile',
'port' => 'Port',
'port forwarding configuration' => 'Konfiguration der Port-Weiterleitung',
'restore defaults' => 'Voreinstellungen wiederherstellen',
'restore hardware settings' => 'Hardware-Einstellungen wiederherstellen',
'restore settings' => 'Einstellungen wiederherstellen',
+'resume' => 'Resume',
'reverse sort' => 'In umgekehrter chronologischer Reihenfolge sortieren',
'root' => 'Root',
'root certificate' => 'Root-Zertifikat',
'status' => 'Status',
'status information' => 'Statusinformationen',
'status ovpn' => 'OpenVPN',
+'stop' => 'Stop',
'stop ovpn server' => 'Stoppe OpenVPN Server',
'stopped' => 'ANGEHALTEN',
'subject' => 'Betreff',
'virtual address' => 'Virtuelle Addresse',
'virtual private networking' => 'Virtuelles Privates Netzwerk',
'visible in browselist' => 'Sichtbar in der Verzeichnisliste',
+'voldown10' => 'Laustärke um 10 verringern',
+'voldown5' => 'Laustärke um 5 verringern',
+'volup10' => 'Laustärke um 10 erhöhen',
+'volup5' => 'Laustärke um 5 erhöhen',
'vpi number' => 'VPI-Nummer:',
'vpn' => 'VPN',
'vpn aggrmode' => 'IKE Aggressive Mode zugelassen. Wenn möglich, vermeiden (preshared Schlüssel wird im Klartext übertragen)!',
'ConnSched time' => 'Time:',
'ConnSched up' => 'Up',
'ConnSched weekdays' => 'Days of the week:',
+'Existing Files' => 'Files in database',
'HDD temperature' => 'HDD temperature',
'Local VPN IP' => 'Internal Network (GREEN):',
'MTU' => 'MTU Size:',
'Remote IP' => 'Remote IP / Hostname (DynDNS):',
'Remote VPN IP' => 'VPN Subnet (e.g. 10.0.10.0/255.255.255.0):',
'Resolv' => 'Resolv-Retry:',
+'Scan for Files' => 'Scan for files',
+'Scan from Directory' => 'Scan from directory',
'Verbose' => 'Verbose:',
'WakeOnLan' => 'Wake On LAN',
'a ca certificate with this name already exists' => 'A CA Certificate with this name already exists.',
'advproxy web browser' => 'Web browser',
'advproxy wednesday' => 'Wed',
'again' => 'Again:',
+'album' => 'Album',
'alcatelusb help' => 'To utilise the Speedtouch 330 or Speedtouch USB modem you must upload the firmware to your IPFire box. Please download the <b>Embedded Firmware</b> package for SpeedTouch 330 from speedtouch.com, unzip and then upload the appropriate file for your modem : KQD6_3.xxx when Rev<4 or ZZZL_3.xxx for Rev=4 using the form below.',
'alcatelusb upload' => 'Upload Speedtouch USB Firmware',
'alias ip' => 'Alias IP',
'archive not exist' => 'Configuration archive does not exist',
'are you sure' => 'Are you sure?',
'arp table entries' => 'ARP Table Entries:',
+'artist' => 'Artist',
'attemps' => 'Attempts',
'august' => 'August',
'authentication' => 'Authentication:',
'behind a proxy' => 'Behind a proxy:',
'bewan adsl pci st' => 'TO BE REMOVED',
'bewan adsl usb' => 'TO BE REMOVED',
+'bitrate' => 'Bitrate',
'bleeding rules' => 'Bleeding Edge Snort Rules',
'blue' => 'BLUE',
'blue access' => 'Blue Access',
'deactivate user' => 'deactivate user',
'debugme' => 'Not yet implemented',
'december' => 'December',
+'deep scan directories' => 'Scan recursive',
'def lease time' => 'Default Lease Time',
'default lease time' => 'Default lease time (mins):',
'default networks' => 'Default networks',
'free' => 'Free',
'free memory' => 'Free Memory ',
'free swap' => 'Free Swap',
+'frequency' => 'Frequency',
'friday' => 'Friday',
'fritzdsl help' => 'To utilise one of Fritz!DSL fcdsl / fcdslsl / fcdsl2 / fcdslusb / fcdslslusb modem, you must upload a package to your IPFire box. Please download the tarball corresponding to your version from the IPFire Website and then upload the entire <b>fcdsl-(your_version).tgz</b> using the form below.',
'fritzdsl upload' => 'Upload Fritz!DSL Driver',
'generatereport' => 'Generate new Report',
'generating the root and host certificates may take a long time. it can take up to several minutes on older hardware. please be patient' => 'Generating the root and host certificates may take a long time. It can take up to several minutes on older hardware. Please be patient.',
'genkey' => 'Generate PSK',
+'genre' => 'Genre',
'global settings' => 'Global settings',
'graph' => 'Graph',
'graph per' => 'Graph per',
'lateprompting' => 'Lateprompting',
'lease expires' => 'Lease expires',
'legend' => 'Legend',
+'length' => 'Length',
'line' => 'Line',
'linkq' => 'Link Quality',
'load printer' => 'Load Printer',
'misc-options' => 'Miscellaneous options',
'missing dat' => 'Encrypted archive not found',
'missing gz' => 'Unencrypted archive not found',
+'mode' => 'Mode',
'modem' => 'Modem',
'modem configuration' => 'Modem configuration',
'modem on com1' => 'Modem on COM1',
'more' => 'more',
'mount' => 'Mount',
'mounted on' => 'Mounted on',
+'mpfire' => 'Media Player for IPFire',
+'mpfire controls' => 'MPFire Control',
+'mpfire scanning' => 'Scan for new files',
+'mpfire songs' => 'MPFire songlist',
'my new share' => 'My new share',
'name' => 'Name',
'name is invalid' => 'Name is invalid',
'new optionsfw later' => 'Your modification(s) will be active on next restart',
'new optionsfw must boot' => 'You must reboot your IPFire',
'newer' => 'Newer',
+'next' => 'next',
'no' => 'No',
'no alcatelusb firmware' => 'No Alcatel USB firmware. Please upload.',
'no cfg upload' => 'No data was uploaded',
'o-no' => 'Inactiv',
'o-yes' => 'Activ',
'october' => 'October',
+'off' => 'off',
'ok' => 'OK',
'older' => 'Older',
+'on' => 'on',
'online help en' => 'Online Help (in English)',
'only digits allowed in holdoff field' => 'Only digits allowed in holdoff field',
'only digits allowed in max retries field' => 'Only digits allowed in max retries field.',
'passwords do not match' => 'Passwords do not match.',
'passwords must be at least 6 characters in length' => 'Passwords must be at least 6 characters in length',
'path to directory' => 'path to share',
+'pause' => 'pause',
'pc' => 'Workstatipon',
'pc add' => 'add workstation',
'pdc options' => 'PDC Options',
'phonebook entry' => 'Phonebook entry:',
'ping disabled' => 'Disable ping response',
'pkcs12 file password' => 'PKCS12 File Password',
+'play' => 'play',
'polfile' => 'Polfile',
'port' => 'Port',
'port forwarding configuration' => 'Port forwarding configuration',
'restore defaults' => 'Restore defaults',
'restore hardware settings' => 'Restore hardware settings',
'restore settings' => 'Reset Settings',
+'resume' => 'resume',
'reverse sort' => 'Sort in reverse chronological order',
'root' => 'Root',
'root certificate' => 'Root Certificate',
'status' => 'Status',
'status information' => 'Status information',
'status ovpn' => '4. OpenVPN Status / Configuration:',
+'stop' => 'stop',
'stop ovpn server' => 'Stop OpenVPN Server',
'stopped' => 'STOPPED',
'subject' => 'Subject',
'virtual address' => 'Virtual Address',
'virtual private networking' => 'Virtual Private Networking',
'visible in browselist' => 'visible in browselist',
+'voldown10' => 'Decrease Volume by 10',
+'voldown5' => 'Decrease Volume by 5',
+'volup10' => 'Increase Volume by 10',
+'volup5' => 'Increase Volume by 5',
'vpi number' => 'VPI Number:',
'vpn' => 'VPN',
'vpn aggrmode' => 'IKE aggressive mode allowed. Avoid if possible (preshared key is transmitted in clear text)!',
--- /dev/null
+###############################################################################
+# This file is part of the IPCop Firewall. #
+# #
+# IPCop 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. #
+# #
+# IPCop 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 IPCop; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+# #
+# Makefiles are based on LFSMake, which is #
+# Copyright (C) 2002 Rod Roard <rod@sunsetsystems.com> #
+# #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER = ipfire
+
+THISAPP = mpfire-$(VER)
+DIR_APP = $(DIR_SRC)/$(THISAPP)
+TARGET = $(DIR_INFO)/$(THISAPP)
+PROG = mpfire
+PAK_VER = 1
+
+DESCDE = "MPFire ist ein CGI Multimediaplayer auf Basis von mpg123."
+DESCEN = "MPFire is a mpg123 based CGI Multimedia-Player."
+DEPS = "mpg123"
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects =
+
+install : $(TARGET)
+
+check :
+
+download :
+
+md5 :
+
+dist:
+ @$(PAK)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+ @$(PREBUILD)
+ -mkdir -p /var/ipfire/mpfire/{bin,db}
+ touch /var/ipfire/mpfire/{settings,playlist}
+ touch /var/ipfire/mpfire/db/songs.db
+ chown nobody.nobody /var/ipfire/mpfire/{settings,playlist}
+ install -v -m 755 $(DIR_SRC)/config/mpfire/mpfire.pl /var/ipfire/mpfire/bin
+ @$(POSTBUILD)
# ipfiremake bristuff
ipfiremake asterisk
ipfiremake mpg123
+ ipfiremake mpfire
ipfiremake libmad
ipfiremake libogg
ipfiremake libvorbis
my $LQ_GATEWAY=`cat /var/ipfire/red/remote-ipaddress`;
chomp($LQ_GATEWAY);
my $NUMPINGS=5;
- my $pingoutput = `ping -c $NUMPINGS -q $LQ_GATEWAY`;
- chomp;
+ my $pingoutput = `/usr/bin/ping -w 10 -c $NUMPINGS -q $LQ_GATEWAY | tail -2`;
my @temp = split (/\/|\%|\s/, $pingoutput);
- $packetloss = $temp[17];
- $roundtrip = $temp[28];
+ $packetloss = $temp[5];
+ $roundtrip = $temp[17];
+
+ print "Paketlos->".$packetloss."<-Roundtrip->".$roundtrip."<-\n";
+
+ if ( $packetloss eq "100" ){
+ my $pingoutput = `/usr/bin/ping -w 10 -c $NUMPINGS -q ping.ipfire.org | tail -2`;
+ my @temp = split (/\/|\%|\s/, $pingoutput);
+ $packetloss = $temp[5];
+ $roundtrip = $temp[17];
+
+ print "Paketlos->".$packetloss."<-Roundtrip->".$roundtrip."<-\n";
+ }
+
RRDs::update ("$rrdlog/lq.rrd", "N:$packetloss:$roundtrip");
$ERROR = RRDs::error;
print "Error in RRD::update for line quality: $ERROR\n" if $ERROR;