Ipfire offers some Addons, which provide their own web interface for configuration. These are for example:
- Cups
- Openmailadmin - (Not in IPFire since 2018)
- Mediatomb - (Not in IPFire since 2017)
- BackupPC - (Does not look to have been in IPFire - no tarball in source file directory)
They are by default not linked to the IPFire surface. A manual link on IPFire´s sidemenu is possible and will be explained here.
/var/ipfire
contains a directory called menu.d
. There are the menus of the IPFire located. In this directory we create a file named EX-external.menu
with the following steps:
touch /var/ipfire/menu.d/EX-external.menu
chown nobody.nobody /var/ipfire/menu.d/EX-external.menu
chmod 644 /var/ipfire/menu.d/EX-external.menu
This file becomes the following content (you can use vi or nano):
filename = /var/ipfire/menu.d/EX-external.menu
$subipfire->{'backuppc'} = {'caption' => BackupPC,
'uri' => '/cgi-bin/external.cgi?backuppc',
'title' => BackupPC,
'enabled' => 1,
};
$subipfire->{'cups'} = {'caption' => Cups,
'uri' => '/cgi-bin/external.cgi?cups',
'title' => Cups,
'enabled' => 1,
};
$subipfire->{'mediatomb'} = {'caption' => MediaTomb,
'uri' => '/cgi-bin/external.cgi?mediatomb',
'title' => Mediatomb,
'enabled' => 1,
};
$subipfire->{'openmailadmin'} = {'caption' => OpenMailAdmin,
'uri' => '/cgi-bin/external.cgi?openmailadmin',
'title' => Mediatomb,
'enabled' => 1,
};
For this we need also a Perl-script in the CGI-directory of the Webserver.
We create the script with the following steps:
touch /srv/web/ipfire/cgi-bin/external.cgi
chown root.root /srv/web/ipfire/cgi-bin/external.cgi
chmod 755 /srv/web/ipfire/cgi-bin/external.cgi
and put the following content into it:
filename = /srv/web/ipfire/cgi-bin/external.cgi
#!/usr/bin/perl
# Menüerweiterung für Ipfire
# Menu extension for IPFire
use strict;
use Switch;
switch ($ENV{'QUERY_STRING'}) {
case "backuppc" {
print "Content-type: text/html\n\n";
print <<EOF
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta http-equiv="refresh" content="0; URL=http://$ENV{'SERVER_ADDR'}:1009/cgi-bin/BackupPC_Admin">
</head>
EOF
;
}
case "cups" {
print "Content-type: text/html\n\n";
print <<EOF
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta http-equiv="refresh" content="0; URL=https://$ENV{'SERVER_ADDR'}:631">
</head>
EOF
;
}
case "openmailadmin" {
print "Content-type: text/html\n\n";
print <<EOF
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta http-equiv="refresh" content="0; URL=http://$ENV{'SERVER_ADDR'}:1001">
</head>
EOF
;
}
case "mediatomb" {
print "Content-type: text/html\n\n";
print <<EOF
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta http-equiv="refresh" content="0; URL=http://$ENV{'SERVER_ADDR'}:49152">
</head>
EOF
;
}
#############################################################################
#Hier weitere Einträge ergänzen!
#Add further entries here!
#############################################################################
else {
print "Content-type: text/html\n\n";
print <<EOF
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<Body>
<h2>Für diesen Menüeintrag existiert keine Zuordnung in /srv/web/ipfire/cgi-bin/external.cgi!</h2>
<h3>Ergänze einen Block $ENV{QUERY_STRING}:</h3>
<p>
<textarea readonly cols="120" rows="13">
case "$ENV{QUERY_STRING}" {
print "Content-type: text/html\\n\\n";
print <<EOF
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta http-equiv="refresh" content="0; URL=http://\$ENV{'SERVER_ADDR'}: Hier die Portnummer und Verzeichnis angeben">
</head>
\EEOF
;
}
</textarea>
</Body>
EOF
;
}
}
You should now see a new side menu with more items in IPFire (in the tab -> ipfire) and the Addons can now be invoked directly by IPFire web interface. To open them in a extra tab, simply hold down the Strg-key while clicking the link.