#!/bin/perl
#############
# 2006-07-06, rol
# Massenkonfiguration von Mozilla-Einstellungen
#
# 1.
# Startverzeichnis in $myRoot eintragen
#
# 2.
# Die gewuenschte Konfiguration wird in das Unterprogramm
# konfigdatei_aendern() eingebaut.
# Dort wird hauptsaechlich der Funktionsaufruf eintrag_aendern()
# verwendet, um Einstellungen vorzunehmen
#
#
#############
use strict;
use File::Find;
use File::Copy;
use File::Temp qw(tempfile); #saubere Temp-Dateien
print "START\n";
[COLOR="Red"][B]my $myRoot= '/startverzeichnis/fuer/mozillaprofile';[/B][/COLOR]
print "starte ab $myRoot \n";
find(\&myFileFilter, $myRoot); # ab Verzeichnis $myRoot suchen
print "ENDE\n";
sub datei_normieren
{
my $datei= $_[0];
my $tempdatei;
my $fhtemp; #erzeugt tempfile, wird hier aber nicht benoetigt
($fhtemp, $tempdatei)= tempfile(); #unique Temp-Datei im /tmp
close $fhtemp;
my $kopfdatei;
my $fhkopf;
($fhkopf, $kopfdatei)= tempfile();
close $fhkopf;
# print "Tempdatei: " . $tempdatei . "\n";
# print "Kopfdatei: " . $kopfdatei . "\n";
# Kopf herauskopieren in $kopfdatei
system("grep -v user_pref < $datei > $kopfdatei");
# in dem Original den Kopf abtrennen und sortieren
system("cat $datei | grep user_pref | sort > $tempdatei");
# Kopf und normierten Koerper wieder zusammenfuegen
system("cat $kopfdatei $tempdatei > $datei");
# Tempdatei entfernen
unlink( $kopfdatei);
unlink( $tempdatei);
}
sub eintrag_aendern
{
my $datei= $_[0]; # der Name der zu aendernden Datei
my $schluessel= $_[1]; # z.B. nur der Schluessel
my $wert= $_[2]; # der Wert, den der Schluessel annehmen muss ACHTUNG: Strings muessen in Gaensefuesschen eingefasst sein
my $tempdatei;
my $fhtemp;
($fhtemp, $tempdatei)= tempfile();
close $fhtemp;
# alten Eintrag entfernen
system("grep -v $schluessel < $datei > $tempdatei");
# Eintrag anhaengen
open(DATEI, ">>$tempdatei"); # Datei zum Schreiben oeffnen, Daten anhaengen
print DATEI 'user_pref("' . $schluessel . '", ' . $wert . ');' . "\r\n"; # Zeile anhaengen
close(DATEI); # Datei schliessen
# Zurueckkopieren
copy($tempdatei, $datei);
# Temp loeschen
unlink($tempdatei);
# Datei normieren, d.h. bis auf die Kopfzeilen sortieren
datei_normieren($datei);
}
sub konfigdatei_aendern
{
# Parameter sinnvolle Namen geben (Perl ist ekelhaft an der Stelle)
my $datei= $_[0];
print "bearbeite: $datei \n";
# Sicherheitskopie anlegen
my $datei_sich= $datei . ".sich";
copy($datei, $datei_sich) or die "konnte Datei $datei_sich nicht anlegen";
######################## Aenderungen hier einfuegen #####################
#########################################################################
[COLOR="Red"][B]
eintrag_aendern($datei, 'network.proxy.autoconfig_url',
'"http://intranetserver/pfad/proxy.pac"'); # Gaensefuesschen hier nicht vergessen
eintrag_aendern($datei, 'network.proxy.type', '2');[/B][/COLOR]
#########################################################################
#########################################################################
}
sub myFileFilter()
{
my $dateiname= $_;
my $voll= $File::Find::name;
# print $voll . "-->" . $dateiname . "\n";
if ( lc $dateiname eq "prefs.js" )
{
konfigdatei_aendern( $voll );
}
}