Firefox-Konfiguration via MPR-Skript

Moderator: MVogt

Post Reply
User avatar
Theo_Gottwald
Posts: 367
Joined: 03. Oct 2009, 08:57
Location: Herrenstr.11 * 76706 Dettenheim
Contact:

Firefox-Konfiguration via MPR-Skript

Post by Theo_Gottwald » 18. Mar 2017, 16:45

Ein Kunde zeigte mir letzte Woche wie er den Firefox via Package Robot "konfiguriert".
Allerdings fand er das Verfahren via Oberfläche zu langatmig.
Zudem ändert der Firefox bei jedem Update die Dialoge, daher war die Frage wie man das anders lösen kann.

Ein Forumskollege von unserer neuen "Empirum Slack Gruppe" hatte auch gleich eine Lösung (Code nur als Beispiel).
Das macht er so:

Code: Select all

ReplaceTextFile ('%APPDATA%\Mozilla\Firefox\Data\profile\prefs.js', 'user_pref("network.proxy.autoconfig_url", "http://scripts4web.xy.com/proxy.pac', "user_pref("network.proxy.autoconfig_url", "http://scripts4web.xy.com/proxy.pac");, 0)

Ein Blick in diese Datei zeigt, dass der Firefox dort die Settings ablegt, in einem bestimmten Format.
Hier zum Beispiel die Zeilen, die einen Proxy des Kunden einschalten (die IP-Addressen habe ich aus Sicherheitsgründen verfälscht).

Code: Select all

user_pref("network.proxy.backup.ftp", "");
user_pref("network.proxy.backup.ftp_port", 0);
user_pref("network.proxy.backup.socks", "");
user_pref("network.proxy.backup.socks_port", 0);
user_pref("network.proxy.backup.ssl", "");
user_pref("network.proxy.backup.ssl_port", 0);
user_pref("network.proxy.ftp", "192.168.11.209");
user_pref("network.proxy.ftp_port", 2098);
user_pref("network.proxy.http", "192.168.11.209");
user_pref("network.proxy.http_port", 2098);
user_pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1, 192.168.11.0/22, 192.168.18.0/22,192.168.3.0/22, 192.168.8.0/22, 192.168.9.0/22, 192.168.12.0/22, 192.168.21.0/22");
user_pref("network.proxy.share_proxy_settings", true);
user_pref("network.proxy.socks", "192.168.11.209");
user_pref("network.proxy.socks_port", 2098);
user_pref("network.proxy.ssl", "192.168.11.209");
user_pref("network.proxy.ssl_port", 2098);
user_pref("network.proxy.type", 1);
Wenn man da etwas ändern will gibt es also 3 Fälle:
1. Die Zeile ist schon da, dann will man nur den Wert ändern (bzw. die Zeile austauschen gegen die man möchte).
2. Die Zeile fehlt, dann möchte man die Zeile an die Datei anhängen
3. Die Zeile ist vorhanden und soll gelöscht werden

Diese 3 Fälle deckt mein folgendes MPR-Skript ab. Um das Skript zu verwenden muß man sich zunächst jedoch die Einträge besorgen, die geändert - also hinzugefügt, geändert oder gelöscht - werden sollen.
Diese Einträge kommen in eine Textdatei die dem Skript beigelegt wird.
Das Skript arbeitet nun Zeile für Zeiledieser Textdatei ab, und ändert entsprechend die Einträge in der "prefs.js" Datei.

1. Firefox starten, Backup der "prefs.js"-Datei machen
2. Gewünschte Änderungen im FF vornehmen.
3. sich die nun geänderte "prefs.js" Datei holen, und durch einen Abgleich mit der zuvor gesicherten Datei feststellen,
welche Teile relevant für die Änderung sind.
4. Diese Teile in eine Textdatei kopieren.

Nun gibt es zwei Möglichkeiten:
A) Man will einen Eintrag setzen - dann kopiert man einfach diese Zeile in die Textdatei
Dieser Eintrag wird dann entsprechend geändert - falls schon vorhanden - oder neu hinzugefügt - falls er noch nicht da war.
B) Man will diesen Eintrag löschen. In dem Fall schreibt man ein "DEL:" davor. So etwa:

Code: Select all

DEL:user_pref("network.proxy.backup.ftp", "");
DEL:user_pref("network.proxy.backup.ftp_port", 0);
DEL:user_pref("network.proxy.backup.socks", "");
In diesem Fall entfernt das Skript diese Zeilen aus der "prefs.js" Datei.
Dabei ist der Wert der da drinsteht egal, denn das Skript such nur nach dem Zeilenanfang bis zum ersten ",".
Die Zeile wird dann entfernt.

Da die "prefs.js" Datei erst nach einem Start des Firefox angelegt wird, startet das Skript den FF zunächst und schliesst den dann wieder. Sodann wird aus der entsprechenden INI-Datei der Pfad zu der "Prefs.js" ermittelt.
Und diese dann angepasst.

Es wird eine Commandline akzeptiert, mit der man zwischen zwei Zuständen umschalten kann. In dem Fall wäre das "Proxy-an und Proxy-Aus. Der User hat dann zwei Shortcuts auf dem Desktop, einer davon hat einen Commandline-Parameter "ON", der andere nicht. Mit diesen Shortcuts kann er dann den Proxy an und aus schalten.

Code: Select all

' +++ main_Firefox-Config.rem +++
' Zweck: 
' erstellt am: 18.03.2017
' von: Theo Gottwald
'========================
'#EXE:?path
'#SPI:ForceWrite
'#SPI:VBRun
'#SPI:NoAuto
'#SPI:x64
'#MAN:ra
'#INC:?path\Proxy_on.txt
'#INC:?path\Proxy_off.txt
DWP\5
VAR\$$EMP=
' Select Proxies on or off here using commandline-Argument
VAR\$$CMD=$ev2$
VBT\$$CMD
VTU\$$CMD
IVC\$$CMD|ON
   VAR\$$PXA=?path\Proxy_on.txt
ELSE
   VAR\$$PXA=?path\Proxy_off.txt
EVC\
' Zuerst FF straten und Schliessen
NAI\Mozilla Firefox 52.0 ESR (x64 de)
   GOTO enx
ELSE
  ' Muss einmal gestartet sein damit Config-Datei existiert, Installationspfad ist dank NAI\ bereits in $v5$
   VAR\$$PAT=$v5$\firefox.exe
   EXE\$$PAT
   STW\mozillawindowclass\- mozilla firefox|w30
   CLW\1 
   CAW\mozillawindowclass\- mozilla firefox
EAI\
' Pfad zu %APPDATA% besorgen
SFP\(user)\Application Data
VAR\$$APP=$v4$
VAR\$$FIF=\Data\profile\prefs.js
' Beispiel: C:\Users\Admin\AppData\Roaming\Mozilla\Firefox
VAR\$$FIA=$$APPMozilla\Firefox
VAR\$$FIB=$$FIA\profiles.ini

NEF\$$PXA
   GOTO enx
ELSE
   CFF\$$PXA>$$TEX
EEF\

NEF\$$FIB
   GOTO enx
EEF\

FOR\$$LOP|0|99
   VAR\$$SEC=Profile$$LOP
   VAR\$$KEY=Path
   CFI\$$FIB|$$SEC|$$KEY>$$RES
' Falls Profil nicht existiert
   IVV\$$RES=
      GOTO enx
   EVV\
   VAR\$$FID=$$RES
  ' Testen ob relativer Pfad
   VAR\$$KEY=IsRelative
   CFI\$$FIB|$$SEC|$$KEY>$$RES
   IVV\$$RES=1
      VAR\$$FIC=$$FIA\$$FID
   ELSE
      VAR\$$FIC=$$FID
   EVV\ 
   VAR\$$FIL=$$FIE  
   VAR\$$FIE=$$FIC\prefs.js  
   NEF\$$FIE
      VAR\$$FIE=$$FIL
      GOTO enx 
   ELSE
      CFF\$$FIE>$$PRF
   EEF\
   GSB\DoProfile 
NXT\
:enx
CTF\$$FIE<$$PRF
MBX\OK
@
'-----------------------------------------------------------

'-----------------------------------------------------------
' Eingabe ist
' $$FIC - Pfad des Profils, darinnen ist die prefs.js
' $$FIE - Pfade der prefs.js
:DoProfile
FEL\$$TEX|DoPatch|$$LIN
RET\
'-----------------------------------------------------------
:DoPatch
VBT\$$LIN
GSL\$$LIN>$$LEN
JIZ\$$LEN|enz
GSS\1,4|$$LIN>$$DEL
VTU\$$DEL
VBT\$$DEL
IVV\$$DEL=DEL:
   VAR\$$DEL=1
   GSS\5,0|$$LIN>$$LIN
ELSE
   VAR\$$DEL=0    
EVV\
' Alles links vom ersten "," holen
BLC\$$LIN|,
VAR\$$PAA=$v1$
IVV\$$DEL=1
   RPL\$$PRF|$$PAA|$$EMP
ELSE  
   IVC\$$PRF|$$PAA
      RPL\$$PRF|$$PAA|$$LIN
   ELSE
 ' Not exist append to file
      VAR\$$PRF=$$PRF$crlf$$$LIN
   EVC\
EVV\  
:enz
@
'-----------------------------------------------------------
PS: In der Dateianlage zu diesem Post ist das Skript in einer Version für den MPR und einer Version für den SPR.
Attachments
Firefox-Config.zip
Firefox-Config
(3.22 KiB) Downloaded 261 times

User avatar
Theo_Gottwald
Posts: 367
Joined: 03. Oct 2009, 08:57
Location: Herrenstr.11 * 76706 Dettenheim
Contact:

Re: Firefox-Konfiguration via MPR-Skript

Post by Theo_Gottwald » 27. Mar 2017, 18:19

Hier noch ein ergänzender Tipp für Firefox-Administratoren.
Wer zum Beispiel seine Passwörter verloren hat, die aber im FF gespeichert sind kann diese sich mit dem Tool
Firefox Credential Viewer
anzeigen lassen.

Image

Post Reply

Return to “Package Robot”

Who is online

Users browsing this forum: No registered users and 1 guest