From 579a39d0ba66b05767eacef0841e61b715429f20 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 27 Dec 2010 15:44:24 +0100 Subject: [PATCH] Add webinterface frontend for fireinfo. --- config/menu/10-system.menu | 6 + config/rootfiles/common/apache2 | 1 + config/rootfiles/common/initscripts | 2 + config/rootfiles/core/44/filelists/files | 3 + doc/language_issues.de | 2 - doc/language_issues.en | 2 - doc/language_issues.es | 19 ++- doc/language_issues.fr | 17 ++- doc/language_missings | 30 ++++ html/cgi-bin/credits.cgi | 7 - html/cgi-bin/fireinfo.cgi | 168 +++++++++++++++++++++++ html/cgi-bin/index.cgi | 6 +- langs/de/cgi-bin/de.pl | 16 ++- langs/en/cgi-bin/en.pl | 16 ++- langs/es/cgi-bin/es.pl | 2 +- langs/fr/cgi-bin/fr.pl | 2 +- lfs/initscripts | 1 + src/initscripts/init.d/fireinfo | 32 +++++ 18 files changed, 312 insertions(+), 20 deletions(-) create mode 100644 html/cgi-bin/fireinfo.cgi create mode 100755 src/initscripts/init.d/fireinfo diff --git a/config/menu/10-system.menu b/config/menu/10-system.menu index 692f133f8..9248663bd 100644 --- a/config/menu/10-system.menu +++ b/config/menu/10-system.menu @@ -28,6 +28,12 @@ 'title' => "$Lang::tr{'backup'}", 'enabled' => 1, }; + $subsystem->{'41.fireinfo'} = { + 'caption' => $Lang::tr{'system information'}, + 'uri' => '/cgi-bin/fireinfo.cgi', + 'title' => "$Lang::tr{'system information'}", + 'enabled' => 1, + }; $subsystem->{'99.credits'} = { 'caption' => $Lang::tr{'credits'}, 'uri' => '/cgi-bin/credits.cgi', diff --git a/config/rootfiles/common/apache2 b/config/rootfiles/common/apache2 index 3d041c5c7..c7262a5ae 100644 --- a/config/rootfiles/common/apache2 +++ b/config/rootfiles/common/apache2 @@ -1323,6 +1323,7 @@ srv/web/ipfire/cgi-bin/ddns.cgi srv/web/ipfire/cgi-bin/dhcp.cgi srv/web/ipfire/cgi-bin/dmzholes.cgi srv/web/ipfire/cgi-bin/extrahd.cgi +srv/web/ipfire/cgi-bin/fireinfo.cgi srv/web/ipfire/cgi-bin/gui.cgi srv/web/ipfire/cgi-bin/hardwaregraphs.cgi srv/web/ipfire/cgi-bin/hosts.cgi diff --git a/config/rootfiles/common/initscripts b/config/rootfiles/common/initscripts index 3bd4142cc..7a860a845 100644 --- a/config/rootfiles/common/initscripts +++ b/config/rootfiles/common/initscripts @@ -27,6 +27,7 @@ etc/rc.d/init.d/dhcp etc/rc.d/init.d/dnsmasq etc/rc.d/init.d/fcron #etc/rc.d/init.d/fetchmail +etc/rc.d/init.d/fireinfo etc/rc.d/init.d/firewall etc/rc.d/init.d/firstsetup etc/rc.d/init.d/functions @@ -211,6 +212,7 @@ etc/rc.d/rcsysinit.d/S70console etc/rc.d/rcsysinit.d/S75firstsetup etc/rc.d/rcsysinit.d/S80localnet etc/rc.d/rcsysinit.d/S90sysctl +etc/rc.d/rcsysinit.d/S99fireinfo #etc/sysconfig etc/sysconfig/createfiles etc/sysconfig/firewall.local diff --git a/config/rootfiles/core/44/filelists/files b/config/rootfiles/core/44/filelists/files index f41dd5dfa..09eb18458 100644 --- a/config/rootfiles/core/44/filelists/files +++ b/config/rootfiles/core/44/filelists/files @@ -7,6 +7,8 @@ etc/rc.d/init.d/squid etc/rc.d/init.d/networking/dhcpcd.exe etc/rc.d/init.d/networking/red etc/rc.d/init.d/networking/red.up/99-fireinfo +etc/rc.d/rcsysinit.d/S99fireinfo +srv/web/ipfire/cgi-bin/fireinfo.cgi srv/web/ipfire/cgi-bin/extrahd.cgi srv/web/ipfire/cgi-bin/credits.cgi srv/web/ipfire/cgi-bin/index.cgi @@ -35,6 +37,7 @@ var/ipfire/langs/de.pl var/ipfire/langs/en.pl var/ipfire/langs/fr.pl var/ipfire/langs/es.pl +var/ipfire/menu.d/10-system.menu usr/local/bin/timectrl usr/local/bin/rebuild-initrd usr/local/bin/scanhd diff --git a/doc/language_issues.de b/doc/language_issues.de index 75205b455..a482dceee 100644 --- a/doc/language_issues.de +++ b/doc/language_issues.de @@ -230,7 +230,6 @@ WARNING: translation string unused: max outgoing size WARNING: translation string unused: max size WARNING: translation string unused: mbmon fan in WARNING: translation string unused: mbmon graphs -WARNING: translation string unused: mbmon temp WARNING: translation string unused: mbmon temp in WARNING: translation string unused: mbmon value WARNING: translation string unused: min size @@ -463,4 +462,3 @@ WARNING: untranslated string: cpu frequency per WARNING: untranslated string: new WARNING: untranslated string: outgoing firewall reserved groupname WARNING: untranslated string: qos add subclass -WARNING: untranslated string: sensors temp diff --git a/doc/language_issues.en b/doc/language_issues.en index bbde5bc0b..c95749bcb 100644 --- a/doc/language_issues.en +++ b/doc/language_issues.en @@ -257,7 +257,6 @@ WARNING: translation string unused: max outgoing size WARNING: translation string unused: max size WARNING: translation string unused: mbmon fan in WARNING: translation string unused: mbmon graphs -WARNING: translation string unused: mbmon temp WARNING: translation string unused: mbmon temp in WARNING: translation string unused: mbmon value WARNING: translation string unused: min size @@ -495,4 +494,3 @@ WARNING: untranslated string: bytes WARNING: untranslated string: cpu frequency per WARNING: untranslated string: new WARNING: untranslated string: outgoing firewall reserved groupname -WARNING: untranslated string: sensors temp diff --git a/doc/language_issues.es b/doc/language_issues.es index 345e8475e..a91996dd2 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -257,7 +257,6 @@ WARNING: translation string unused: max outgoing size WARNING: translation string unused: max size WARNING: translation string unused: mbmon fan in WARNING: translation string unused: mbmon graphs -WARNING: translation string unused: mbmon temp WARNING: translation string unused: mbmon temp in WARNING: translation string unused: mbmon value WARNING: translation string unused: min size @@ -496,9 +495,24 @@ WARNING: untranslated string: Scan for Songs WARNING: untranslated string: Set time on boot WARNING: untranslated string: bytes WARNING: untranslated string: cpu frequency per +WARNING: untranslated string: fireinfo ipfire version +WARNING: untranslated string: fireinfo is disabled +WARNING: untranslated string: fireinfo is enabled +WARNING: untranslated string: fireinfo is submitted +WARNING: untranslated string: fireinfo is submitted button +WARNING: untranslated string: fireinfo kernel version +WARNING: untranslated string: fireinfo not submitted +WARNING: untranslated string: fireinfo not submitted button +WARNING: untranslated string: fireinfo pakfire version +WARNING: untranslated string: fireinfo please enable +WARNING: untranslated string: fireinfo settings +WARNING: untranslated string: fireinfo system version +WARNING: untranslated string: fireinfo your profile id WARNING: untranslated string: new WARNING: untranslated string: outgoing firewall add ip group WARNING: untranslated string: outgoing firewall add mac group +WARNING: untranslated string: outgoing firewall edit ip group +WARNING: untranslated string: outgoing firewall edit mac group WARNING: untranslated string: outgoing firewall group error WARNING: untranslated string: outgoing firewall groups WARNING: untranslated string: outgoing firewall ip groups @@ -510,4 +524,5 @@ WARNING: untranslated string: outgoing firewall p2p description 2 WARNING: untranslated string: outgoing firewall p2p description 3 WARNING: untranslated string: outgoing firewall reserved groupname WARNING: untranslated string: outgoing firewall view group -WARNING: untranslated string: sensors temp +WARNING: untranslated string: pakfire ago +WARNING: untranslated string: system information diff --git a/doc/language_issues.fr b/doc/language_issues.fr index 76ea06e3f..8107ab9b6 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -258,7 +258,6 @@ WARNING: translation string unused: max outgoing size WARNING: translation string unused: max size WARNING: translation string unused: mbmon fan in WARNING: translation string unused: mbmon graphs -WARNING: translation string unused: mbmon temp WARNING: translation string unused: mbmon temp in WARNING: translation string unused: mbmon value WARNING: translation string unused: min size @@ -498,12 +497,26 @@ WARNING: untranslated string: bytes WARNING: untranslated string: cpu frequency per WARNING: untranslated string: dns address deleted txt WARNING: untranslated string: extrahd detected drives +WARNING: untranslated string: fireinfo ipfire version +WARNING: untranslated string: fireinfo is disabled +WARNING: untranslated string: fireinfo is enabled +WARNING: untranslated string: fireinfo is submitted +WARNING: untranslated string: fireinfo is submitted button +WARNING: untranslated string: fireinfo kernel version +WARNING: untranslated string: fireinfo not submitted +WARNING: untranslated string: fireinfo not submitted button +WARNING: untranslated string: fireinfo pakfire version +WARNING: untranslated string: fireinfo please enable +WARNING: untranslated string: fireinfo settings +WARNING: untranslated string: fireinfo system version +WARNING: untranslated string: fireinfo your profile id WARNING: untranslated string: new WARNING: untranslated string: ntp common settings WARNING: untranslated string: ntp sync WARNING: untranslated string: outgoing firewall reserved groupname -WARNING: untranslated string: sensors temp +WARNING: untranslated string: pakfire ago WARNING: untranslated string: snort working +WARNING: untranslated string: system information WARNING: untranslated string: upload new ruleset WARNING: untranslated string: urlfilter file ext block WARNING: untranslated string: urlfilter mode block diff --git a/doc/language_missings b/doc/language_missings index ababc7936..e72d7d663 100644 --- a/doc/language_missings +++ b/doc/language_missings @@ -12,9 +12,23 @@ ############################################################################ < dns address deleted txt < extrahd detected drives +< fireinfo ipfire version +< fireinfo is disabled +< fireinfo is enabled +< fireinfo is submitted +< fireinfo is submitted button +< fireinfo kernel version +< fireinfo not submitted +< fireinfo not submitted button +< fireinfo pakfire version +< fireinfo please enable +< fireinfo settings +< fireinfo system version +< fireinfo your profile id < ntp common settings < ntp sync < snort working +< system information < upload new ruleset < urlfilter file ext block < urlfilter mode block @@ -45,8 +59,23 @@ # Checking cgi-bin translations for language: es # ############################################################################ < Async logging enabled +< fireinfo ipfire version +< fireinfo is disabled +< fireinfo is enabled +< fireinfo is submitted +< fireinfo is submitted button +< fireinfo kernel version +< fireinfo not submitted +< fireinfo not submitted button +< fireinfo pakfire version +< fireinfo please enable +< fireinfo settings +< fireinfo system version +< fireinfo your profile id < outgoing firewall add ip group < outgoing firewall add mac group +< outgoing firewall edit ip group +< outgoing firewall edit mac group < outgoing firewall group error < outgoing firewall groups < outgoing firewall ip groups @@ -58,3 +87,4 @@ < outgoing firewall p2p description 3 < outgoing firewall view group < Set time on boot +< system information diff --git a/html/cgi-bin/credits.cgi b/html/cgi-bin/credits.cgi index ff56efa84..60b5b909b 100644 --- a/html/cgi-bin/credits.cgi +++ b/html/cgi-bin/credits.cgi @@ -35,13 +35,6 @@ require "${General::swroot}/header.pl"; &Header::openbigbox('100%', 'center'); -&Header::openbox('100%', 'left', 'Version'); -print "This is ".`cat /etc/system-release`; -print " - Pakfire ".`cat /opt/pakfire/etc/pakfire.conf | grep "version =" | cut -d\\" -f2`; -print "
".`uname -a`; -print "



"; -&Header::closebox(); - &Header::openbox('100%', 'left', $Lang::tr{'donation'}); print <. # +# # +############################################################################### + +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 $configfile = "/var/ipfire/main/send_profile"; + +my %fireinfosettings=(); +my $errormessage=''; + +&Header::showhttpheaders(); + +$fireinfosettings{'ENABLE_FIREINFO'} = 'off'; +$fireinfosettings{'ACTION'} = ''; + +&Header::getcgihash(\%fireinfosettings); + +if ( -e "$configfile" ) { + $fireinfosettings{'ENABLE_FIREINFO'} = 'on'; +} + +if ("$fireinfosettings{'ACTION'}" eq "trigger") { + if ($fireinfosettings{'ENABLE_FIREINFO'} eq 'off') { + &General::log($Lang::tr{'fireinfo is enabled'}); + system ('/usr/bin/touch', $configfile); + $fireinfosettings{'ENABLE_FIREINFO'} = 'on'; + } else { + &General::log($Lang::tr{'fireinfo is disabled'}); + unlink "$configfile"; + $fireinfosettings{'ENABLE_FIREINFO'} = 'off'; + } +} + +&Header::openpage('Fireinfo', 1, ''); + +if ($fireinfosettings{'ENABLE_FIREINFO'} ne "on") { + &Header::openbox("100%", "left", "Why should I enable fireinfo?"); + + print < +

+ It is very important for the development of IPFire that you enable this + service. Read more about the reasons. +

+ +END + + &Header::closebox(); +} + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', "$Lang::tr{'error messages'}"); + print "$errormessage \n"; + &Header::closebox(); +} + +my $ipfire_version = `cat /etc/system-release`; +my $pakfire_version = `cat /opt/pakfire/etc/pakfire.conf | grep "version =" | cut -d\\" -f2`; +my $kernel_version = `uname -a`; + +&Header::openbox('100%', 'left', $Lang::tr{'fireinfo system version'}); +print < + + $Lang::tr{'fireinfo ipfire version'}: + $ipfire_version + + + $Lang::tr{'fireinfo pakfire version'}: + $pakfire_version + + + $Lang::tr{'fireinfo kernel version'}: + $kernel_version + + +END +&Header::closebox(); + +# Read pregenerated profile data +my $profile = `cat /var/ipfire/fireinfo/profile`; + +print "
\n"; + +# Read profile ID from file +my $profile_id = `cat /var/ipfire/fireinfo/public_id`; +chomp($profile_id); + +&Header::openbox('100%', 'left', $Lang::tr{'fireinfo settings'}); +print < + + + + + + + + + + + + + + + + + + +
$Lang::tr{'fireinfo your profile id'}: + $profile_id +
 
+END + +if ($fireinfosettings{'ENABLE_FIREINFO'} eq "on") { + print "$Lang::tr{'fireinfo is submitted'}"; +} else { + print "$Lang::tr{'fireinfo not submitted'}"; +} + +print ""; + +if ($fireinfosettings{'ENABLE_FIREINFO'} eq "on") { + print ""; +} else { + print ""; +} + +print < +
 
+ +
+END +; +&Header::closebox(); +print "\n"; + +&Header::closebigbox(); +&Header::closepage(); diff --git a/html/cgi-bin/index.cgi b/html/cgi-bin/index.cgi index 268ab7e3e..6a93b6837 100644 --- a/html/cgi-bin/index.cgi +++ b/html/cgi-bin/index.cgi @@ -388,6 +388,11 @@ END END } +# Fireinfo +if ( ! -e "/var/ipfire/main/send_profile") { + $warnmessage .= "
  • $Lang::tr{'fireinfo please enable'}
  • "; +} + # Memory usage warning my @free = `/usr/bin/free`; $free[1] =~ m/(\d+)/; @@ -436,7 +441,6 @@ foreach my $file (@files) { } } - if ($warnmessage) { print "$warnmessage"; } diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index 35650da5a..dca8f44a2 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -781,6 +781,19 @@ 'fetch ip from' => 'Schätze die echte öffentliche IP-Adresse mit Hilfe eines externen Servers', 'filename' => 'Dateiname', 'filesystem full' => 'Dateisystem voll', +'fireinfo ipfire version' => 'IPFire-Version', +'fireinfo is disabled' => 'Fireinfo ist ausgeschaltet', +'fireinfo is enabled' => 'Fireinfo ist eingeschaltet', +'fireinfo is submitted' => 'Der Dienst ist eingeschaltet.', +'fireinfo is submitted button' => 'Nein, ich möchte mein Profil nicht mehr veröffentlichen', +'fireinfo kernel version' => 'Kernel-Version', +'fireinfo not submitted' => 'Der Dienst ist ausgeschaltet.', +'fireinfo not submitted button' => 'Ja, ich möchte mein Profil veröffentlichen', +'fireinfo pakfire version' => 'Pakfire-Version', +'fireinfo please enable' => 'Bitte schalten Sie den Fireinfo-Dienst ein.', +'fireinfo settings' => 'Fireinfo-Einstellungen', +'fireinfo system version' => 'Systemversionen', +'fireinfo your profile id' => 'Profil-ID', 'firewall' => 'Firewall', 'firewall graphs' => 'Firewall Diagramme', 'firewall hits' => 'Gesamtanzahl der Firewall-Treffer für', @@ -831,8 +844,8 @@ 'genkey' => 'PSK erzeugen', 'genre' => 'Genre', 'global settings' => 'Globale Einstellungen', -'gpl license agreement' => 'Lizenz Vereinbarung', 'gpl i accept these terms and conditions' => 'Ich akzeptiere diese Bedingungen und Konditionen', +'gpl license agreement' => 'Lizenz Vereinbarung', 'gpl please read carefully the general public license and accept it below' => 'Bitte die General Public License genau lesen und diese unten akzeptiere', 'gpl unofficial translation of the general public license v3' => 'Inoffizielle Übersetzung der General Public License v3', 'graph' => 'Diagramm', @@ -1641,6 +1654,7 @@ 'swap usage per' => 'Nutzung von Auslagerungsspeicher (Swap) pro', 'system' => 'System', 'system graphs' => 'System-Diagramme', +'system information' => 'Systeminformationen', 'system log viewer' => 'Betrachter der System-Logdateien', 'system logs' => 'System-Logdateien', 'system status information' => 'System-Statusinformationen', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 86044330d..ad16ec2bd 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -805,6 +805,19 @@ 'fetch ip from' => 'Guess the real public IP with help of an external server', 'filename' => 'Filename', 'filesystem full' => 'Filesystem full', +'fireinfo ipfire version' => 'IPFire version', +'fireinfo is disabled' => 'Fireinfo is disabled', +'fireinfo is enabled' => 'Fireinfo is enabled', +'fireinfo is submitted' => 'Your profile is submitted to the fireinfo service.', +'fireinfo is submitted button' => 'No, I do not want to send my profile anymore', +'fireinfo kernel version' => 'Kernel version', +'fireinfo not submitted' => 'Your profile is not submitted to the fireinfo service.', +'fireinfo not submitted button' => 'Yes, I want to send my profile', +'fireinfo pakfire version' => 'Pakfire version', +'fireinfo please enable' => 'Please enable the fireinfo service.', +'fireinfo settings' => 'Fireinfo settings', +'fireinfo system version' => 'System versions', +'fireinfo your profile id' => 'Your profile ID', 'firewall' => 'Firewall', 'firewall graphs' => 'Firewall Graphs', 'firewall hits' => 'Total number of firewall hits for', @@ -857,8 +870,8 @@ 'genkey' => 'Generate PSK', 'genre' => 'Genre', 'global settings' => 'Global settings', -'gpl license agreement' => 'License Agreement', 'gpl i accept these terms and conditions' => 'I accept these terms and conditions', +'gpl license agreement' => 'License Agreement', 'gpl please read carefully the general public license and accept it below' => 'Please read carefully the General Public License and accept it below', 'gpl unofficial translation of the general public license v3' => 'Unofficial translation of the General Public License v3', 'graph' => 'Graph', @@ -1674,6 +1687,7 @@ 'swap usage per' => 'Swap usage per', 'system' => 'System', 'system graphs' => 'System Graphs', +'system information' => 'System information', 'system log viewer' => 'System Log Viewer', 'system logs' => 'System Logs', 'system status information' => 'System Status Information', diff --git a/langs/es/cgi-bin/es.pl b/langs/es/cgi-bin/es.pl index 7ed5f5409..f5640cf53 100644 --- a/langs/es/cgi-bin/es.pl +++ b/langs/es/cgi-bin/es.pl @@ -855,8 +855,8 @@ 'genkey' => 'Generar PSK', 'genre' => 'Género', 'global settings' => 'Configuraciones globales', -'gpl license agreement' => 'License Agreement', 'gpl i accept these terms and conditions' => 'I accept these terms and conditions', +'gpl license agreement' => 'License Agreement', 'gpl please read carefully the general public license and accept it below' => 'Please read carefully the General Public License and accept it below', 'gpl unofficial translation of the general public license v3' => 'Unofficial translation of the General Public License v3', 'graph' => 'Gráfico', diff --git a/langs/fr/cgi-bin/fr.pl b/langs/fr/cgi-bin/fr.pl index 160bb1ba8..6ccb4d507 100644 --- a/langs/fr/cgi-bin/fr.pl +++ b/langs/fr/cgi-bin/fr.pl @@ -856,8 +856,8 @@ 'genkey' => 'Générer PSK', 'genre' => 'Genre', 'global settings' => 'Configuration générale', -'gpl license agreement' => 'License Agreement', 'gpl i accept these terms and conditions' => 'J\'accepte les termes et les conditions', +'gpl license agreement' => 'License Agreement', 'gpl please read carefully the general public license and accept it below' => 'Merci de lire attentivement la Licence et de l\'accepter', 'gpl unofficial translation of the general public license v3' => 'Traduction non officielle de la Licence v3', 'graph' => 'Graphique', diff --git a/lfs/initscripts b/lfs/initscripts index bc11ce201..0564f1e93 100644 --- a/lfs/initscripts +++ b/lfs/initscripts @@ -172,6 +172,7 @@ $(TARGET) : ln -sf ../init.d/firstsetup /etc/rc.d/rcsysinit.d/S75firstsetup ln -sf ../init.d/localnet /etc/rc.d/rcsysinit.d/S80localnet ln -sf ../init.d/sysctl /etc/rc.d/rcsysinit.d/S90sysctl + ln -sf ../init.d/fireinfo /etc/rc.d/rcsysinit.d/S99fireinfo ln -sf ../../dnsmasq /etc/rc.d/init.d/networking/red.up/05-RS-dnsmasq ln -sf ../../firewall /etc/rc.d/init.d/networking/red.up/20-RL-firewall diff --git a/src/initscripts/init.d/fireinfo b/src/initscripts/init.d/fireinfo new file mode 100755 index 000000000..bedf3a548 --- /dev/null +++ b/src/initscripts/init.d/fireinfo @@ -0,0 +1,32 @@ +#!/bin/sh +######################################################################## +# Begin $rc_base/init.d/fireinfo +# +# Description : Fireinfo profile generator +# +# Authors : IPFire Team +# +# Notes : This script saves the fireinfo profile to a file which +# is needed to show that information on the webinterface. +# No data is sent to the server. +# +######################################################################## + +. /etc/sysconfig/rc +. ${rc_functions} + +case "${1}" in + start) + mkdir -p /var/ipfire/fireinfo 2>/dev/null + + sendprofile --public-id > /var/ipfire/fireinfo/public_id + sendprofile --dump > /var/ipfire/fireinfo/profile + ;; + + *) + echo "Usage: ${0} {start}" + exit 1 + ;; +esac + +# End $rc_base/init.d/fireinfo -- 2.39.2