(Firefox) Globale Einstellungen Popupblocker
Hallo Community,
und zwar stehe ich vor dem folgenden Rätsel:
Ich würde gerne global einige Ausnahmen im Popupblocker von Firefox generieren, welche hier im Unternehmen genutzt werden.
Generell soll der Popupblocker aber aktiviert bleiben.
Bislang steuern wir die Einstellungen wie Cache/Proxy/Sicherheitsfeatueres über eine .cfg Datei im Programmverzeichnis.
Beispiel aus dieser Datei:
Deaktiviert den internen PDF-Viewer
pref("pdfjs.disabled", true);
Browsercache auf 8MB limitieren + Haken setzen
pref("browser.cache.disk.capacity", 8192);
pref("browser.cache.disk.smart_size.enabled", false);
Nun konnte ich bislang keine pref-Einstellung finden, welche für die Ausnahmen des Popupblockers zuständig sind.
Jedoch konnte ich eine permissions.sqlite in folgendem Ordner finden, in welchem die Ausnahmen offensichtlich eingetragen werden:
C:\Users\Username\AppData\Roaming\Mozilla\Firefox\Profiles\Profilname.default
Dort stehen auch die neu generierten Ausnamen des Popupblockers.
Leider ist es mir bislang nicht geglückt diese Datei bei einem Aufruf von Firefox automatisch zu modifizieren (um die Ausnahmen zu erweitern), noch konnte ich eine user-pref Einstellung finden mit welcher ich die .cfg Datei bestücken könnte.
Ich würde mich freuen, wenn jemand schon mal vor einem ähnlichen Problem stand, und mir verrät wie er vorgegangen ist.
Dankeschön vorab.
ScriptingDAU
und zwar stehe ich vor dem folgenden Rätsel:
Ich würde gerne global einige Ausnahmen im Popupblocker von Firefox generieren, welche hier im Unternehmen genutzt werden.
Generell soll der Popupblocker aber aktiviert bleiben.
Bislang steuern wir die Einstellungen wie Cache/Proxy/Sicherheitsfeatueres über eine .cfg Datei im Programmverzeichnis.
Beispiel aus dieser Datei:
Deaktiviert den internen PDF-Viewer
pref("pdfjs.disabled", true);
Browsercache auf 8MB limitieren + Haken setzen
pref("browser.cache.disk.capacity", 8192);
pref("browser.cache.disk.smart_size.enabled", false);
Nun konnte ich bislang keine pref-Einstellung finden, welche für die Ausnahmen des Popupblockers zuständig sind.
Jedoch konnte ich eine permissions.sqlite in folgendem Ordner finden, in welchem die Ausnahmen offensichtlich eingetragen werden:
C:\Users\Username\AppData\Roaming\Mozilla\Firefox\Profiles\Profilname.default
Dort stehen auch die neu generierten Ausnamen des Popupblockers.
Leider ist es mir bislang nicht geglückt diese Datei bei einem Aufruf von Firefox automatisch zu modifizieren (um die Ausnahmen zu erweitern), noch konnte ich eine user-pref Einstellung finden mit welcher ich die .cfg Datei bestücken könnte.
Ich würde mich freuen, wenn jemand schon mal vor einem ähnlichen Problem stand, und mir verrät wie er vorgegangen ist.
Dankeschön vorab.
ScriptingDAU
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 287031
Url: https://administrator.de/contentid/287031
Ausgedruckt am: 26.11.2024 um 22:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo ScriptingDAU,
die SQLite Datenbanken lassen sich z.B. mit AutoIT bearbeiten:
Beispiel:
Für das kompilieren sind zum einen die Library SQLite.au3 nötig welche ins AutoIt-Include-Verzeichnis kopiert werden muss, sowie eine SQLite3.dll. Die in diesem Beispiel im Skript-Pfad liegen muss.
https://www.autoitscript.com/forum/topic/17099-sqlite-semi-embedded-data ...
Das Beispiel öffnet die permissions.sqlite und fügt die in Zeile 2 mit Komma voneinander getrennten URLs in die SQLite DB ein.
Das ganze lässt sich natürlich auch so schreiben das man es als exe kompiliert der man die URLs als Parameter übergibt.
Vielleicht hilft dir das
Grüße Uwe
-edit- für einen Test habe ich dir mal eine EXE kompiliert die du so nutzen kannst:
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Bei der Nutzung bitte nun den Domains http:// bzw. https:// voranstellen
die SQLite Datenbanken lassen sich z.B. mit AutoIT bearbeiten:
Beispiel:
; VARIABLES ---------
$exclusion = "test1.de,test2.de,test3.de"
;----------------
#include <SQLite.au3>
$search = FileFindFirstFile(@AppDataDir & "\Mozilla\Firefox\Profiles\*.default")
if $search <> -1 Then
$firefoxprofile = @AppDataDir & "\Mozilla\Firefox\Profiles\" & FileFindNextFile($search)
FileClose($search)
Else
msgbox(16,"Fehler","Default-Profile nicht gefunden!")
exit 1
endif
$db = $firefoxprofile & "\permissions.sqlite"
_SQLite_Startup(@ScriptDir & "\SQLite3.dll",1)
If @error Then
MsgBox(16, "SQLite Error", "SQLite3.dll kann nicht geladen werden")
Exit 1
EndIf
$db = _SQLite_Open($db)
If @error Then
MsgBox(16, "SQLite Error", "Kann Datenbank nicht öffnen")
Exit 1
EndIf
; get max id from table --------------
$query = "Select Max(id) from moz_hosts;"
Local $results, $aRow, $max_ID
_SQLite_Query($db,$query,$results)
While _SQLite_FetchData($results, $aRow) = $SQLITE_OK
$max_ID = $aRow
WEnd
$urls = StringSplit($exclusion,",")
for $i = 1 to $urls
_SQLite_Exec($db, "INSERT INTO moz_hosts(id,host,type,permission,expireType,expireTime,appId,isInBrowserElement,modificationTime) VALUES (" & ($max_ID + $i) & ",'" & $urls[$i] & "','popup',1,0,0,0,0,0);") ; INSERT Data
Next
_SQLite_Close($db)
_SQLite_Shutdown()
https://www.autoitscript.com/forum/topic/17099-sqlite-semi-embedded-data ...
Das Beispiel öffnet die permissions.sqlite und fügt die in Zeile 2 mit Komma voneinander getrennten URLs in die SQLite DB ein.
Das ganze lässt sich natürlich auch so schreiben das man es als exe kompiliert der man die URLs als Parameter übergibt.
Vielleicht hilft dir das
Grüße Uwe
-edit- für einen Test habe ich dir mal eine EXE kompiliert die du so nutzen kannst:
add_popup_exclusion.exe "domain1.de,domain2.de,domain3.de"
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Skript-Update für aktuellen Firefox:
add_popup_exclusion_update_11.01.2017.exeBei der Nutzung bitte nun den Domains http:// bzw. https:// voranstellen
add_popup_exclusion.exe "http://domain1.de,https://domain2.de,https://domain3.de"
Zitat von @ScriptingDAU:
die von dir kompilierte Exe funktioniert wunderbar, allerdings prüft sie nicht ab, ob bereits ein Eintrag in der permissions.sqlite besteht, sondern fügt bei jedem Aufruf einen Eintrag hinzu.
Wäre es möglich das Programm um diese Abfrage zu erweitern?
Die EXE ist oben um diesen Punkt erweitert worden, Download unter der selben Adresse.die von dir kompilierte Exe funktioniert wunderbar, allerdings prüft sie nicht ab, ob bereits ein Eintrag in der permissions.sqlite besteht, sondern fügt bei jedem Aufruf einen Eintrag hinzu.
Wäre es möglich das Programm um diese Abfrage zu erweitern?
Grüße Uwe
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.
Hier nur als Ergänzung der aktualisierte Code für den momentan aktuellen Firefox 50.1.0 (Datenbanktabelle hatte sich geändert)
Grüße Uwe
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <SQLite.au3>
#include <Date.au3>
Global $exclusion
Global $firefoxprofile = ""
; SQL DLL in die EXE inkludieren
FileInstall("C:\Program Files (x86)\AutoIt3\Include\SQlite3.dll",@TempDir & "\sqlite3.dll",1)
; Übergebene Parameter überprüfen
if $CmdLine = 1 then
$exclusion = $CmdLine[1]
$urls = StringSplit($exclusion,",")
Else
ConsoleWriteError("Falsche Parameterangabe! => add_popup_exclusion.exe ""http://www.domain.de,https://www.domain2.de"" " & @CRLF)
Exit 1
Endif
; Default-Profilordner ermitteln
$inipath = @AppDataDir & "\Mozilla\Firefox\profiles.ini"
for $section in IniReadSectionNames($inipath)
if IniRead($inipath,$section,"Default","") = 1 then
$profilename = StringSplit(IniRead($inipath,$section,"Path",""),"/")[2]
$firefoxprofile = @AppDataDir & "\Mozilla\Firefox\Profiles\" & $profilename
ExitLoop
Endif
next
if $firefoxprofile = "" Then
ConsoleWriteError("FEHLER: Firefox Default-Profil nicht gefunden!" & @CRLF)
exit 1
endif
; SQL-Datenbank-Pfad zusammensetzen
$db = $firefoxprofile & "\permissions.sqlite"
; SQLIte Bibliothek initialisieren
_SQLite_Startup(@TempDir & "\sqlite3.dll",1)
If @error Then
ConsoleWriteError("FEHLER: <SQLite Error> SQLite3.dll kann nicht geladen werden" & @CRLF)
Exit 1
EndIf
; Datenbank öffnen
$db = _SQLite_Open($db)
If @error Then
ConsoleWriteError("FEHLER: <SQLite Error> Kann Datenbank nicht öffnen!" & @CRLF)
Exit 1
EndIf
; größte ID der Tabelle moz_hosts ermitteln
$query = "Select Max(id) from moz_perms;"
Local $results, $aRow, $max_ID
_SQLite_Query($db,$query,$results)
While _SQLite_FetchData($results, $aRow) = $SQLITE_OK
$max_ID = $aRow
WEnd
; Zeit in Millisekunden seit 01/01/1970
$now_time_milli = _DateDiff("s","1970/01/01 00:00:00",_NowCalc())*1000
; Für jede übergebene URL
for $i = 1 to $urls
; checken ob die URL schon in der Tabelle vorhanden ist
$query = "Select id from moz_perms where origin = '" & $urls[$i]& "' and type = 'popup';"
if not _SQLite_QuerySingleRow($db,$query,$results) = $SQLITE_OK then
; wenn kein Eintrag vorhanden, füge die URL als Popup Ausßnahme hinzu
$max_ID = $max_ID + 1
if _SQLite_Exec($db, "INSERT INTO moz_perms(id,origin,type,permission,expireType,expireTime,modificationTime) VALUES (" & $max_ID & ",'" & $urls[$i] & "','popup',1,0,0," & $now_time_milli & ");") = $SQLITE_OK then
ConsoleWrite("URL: '" & $urls[$i] & "' wurde erfolgreich eingetragen." & @CRLF)
Else
ConsoleWriteError("FEHLER: <URL:> '" & $urls[$i] & "' konnte wegen eines unbekannten Fehlers nicht eingetragen werden" & @CRLF)
endif
Else ; URL schon vorhanden
ConsoleWrite("URL: '" & $urls[$i] & "' ist schon vorhanden." & @CRLF)
endif
Next
; SQL DB-Close/Dispose
_SQLite_Close($db)
_SQLite_Shutdown()
exit 0