re-structure code slightly; add bin and dist

This commit is contained in:
ohfp 2020-05-02 12:37:14 +02:00
parent bea5fc9837
commit 9beb40b591
No known key found for this signature in database
GPG key ID: 2954CC8585E27A3F
42 changed files with 7613 additions and 133 deletions

13
Makefile Normal file
View file

@ -0,0 +1,13 @@
rebuild_parser:
@echo '(Re-)building parser'
@shards build --production --release --no-debug
generate:
@echo 'Generating librewolf.cfg and docs.'
@./bin/librewolf_parser
clean:
@echo 'Cleaning up dist and bin.'
@shards prune
@rm -rf dist
@rm -rf bin

BIN
bin/librewolf_parser Executable file

Binary file not shown.

64
dist/docs/settings/controversial.md vendored Normal file
View file

@ -0,0 +1,64 @@
---
title: Controversial
---
## `dom.indexedDB.enabled`
Status: **locked**
Value: `true`
## `dom.indexedDB.logging.details`
**Unused Setting**
Status: **locked**
Value: `false`
## `dom.indexedDB.logging.enabled`
**Unused Setting**
Status: **locked**
Value: `false`
## `dom.w3c_pointer_events.enabled`
Status: **locked**
Value: `false`
## `network.http.spdy.enabled`
**Unused Setting**
Status: **locked**
Value: `false`
## `network.http.spdy.enabled.deps`
**Unused Setting**
Status: **locked**
Value: `false`
## `network.http.spdy.enabled.http2`
**Unused Setting**
Status: **locked**
Value: `false`

216
dist/docs/settings/defaulting.md vendored Normal file
View file

@ -0,0 +1,216 @@
---
title: Defaulting
---
## `privacy.spoof_english`
Status: **unlocked**
Value: `2`
## `intl.accept_languages`
**Unused Setting**
Status: **unlocked**
Value: `"en-US, en"`
## `network.http.referer.defaultPolicy`
Status: **unlocked**
Value: `3`
## `network.http.referer.defaultPolicy.pbmode`
Status: **unlocked**
Value: `2`
## `privacy.userContext.ui.enabled`
Status: **unlocked**
Value: `true`
## `privacy.userContext.enabled`
Status: **unlocked**
Value: `true`
## `privacy.userContext.longPressBehavior`
Status: **unlocked**
Value: `2`
## `browser.download.autohideButton`
Status: **unlocked**
Value: `false`
## `accessibility.typeaheadfind`
Status: **unlocked**
Value: `true`
## `clipboard.autocopy`
Status: **unlocked**
Value: `false`
## `layout.spellcheckDefault`
Status: **unlocked**
Value: `2`
## `browser.tabs.closeWindowWithLastTab`
Status: **unlocked**
Value: `false`
## `general.autoScroll`
Status: **unlocked**
Value: `false`
## `network.http.sendRefererHeader`
**Unused Setting**
Status: **unlocked**
Value: `1`
## `pdfjs.disabled`
Status: **unlocked**
Value: `false`
## `dom.disable_open_during_load`
Status: **unlocked**
Value: `true`
## `browser.link.open_newwindow`
Status: **unlocked**
Value: `3`
## `browser.link.open_newwindow.restriction`
Status: **unlocked**
Value: `0`
## `network.proxy.autoconfig_url`
Status: **unlocked**
Value: `""`
## `network.proxy.autoconfig_url.include_path`
Status: **unlocked**
Value: `false`
## `network.proxy.socks_remote_dns`
Status: **unlocked**
Value: `true`
## `network.proxy.socks_version`
Status: **unlocked**
Value: `5`
## `browser.tabs.loadBookmarksInTabs`
Status: **unlocked**
Value: `true`
## `devtools.debugger.remote-enabled`
Status: **unlocked**
Value: `false`
## `devtools.chrome.enabled`
Status: **unlocked**
Value: `false`
## `general.useragent.site_specific_overrides`
Status: **unlocked**
Value: `false`
## `extensions.ui.experiment.hidden`
Status: **unlocked**
Value: `false`
## `extensions.ui.dictionary.hidden`
**Unused Setting**
Status: **unlocked**
Value: `false`
## `extensions.ui.locale.hidden`
**Unused Setting**
Status: **unlocked**
Value: `false`

View file

@ -0,0 +1,2 @@
---
title: Deprecated---

278
dist/docs/settings/deprecated/active.md vendored Normal file
View file

@ -0,0 +1,278 @@
---
title: Active
---
## `browser.onboarding.enabled`
Status: **locked**
Value: `false`
## `devtools.webide.autoinstallADBHelper`
Status: **locked**
Value: `false`
## `dom.mozTCPSocket.enabled`
Status: **locked**
Value: `false`
## `app.update.enabled`
Status: **locked**
Value: `false`
## `browser.bookmarks.max_backups`
Status: **locked**
Value: `2`
## `browser.casting.enabled`
Status: **locked**
Value: `false`
## `browser.newtabpage.activity-stream.enabled`
Status: **locked**
Value: `false`
## `browser.newtabpage.directory.ping`
Status: **locked**
Value: `"data:text/plain,"`
## `browser.newtabpage.directory.source`
Status: **locked**
Value: `"data:text/plain,"`
## `browser.newtabpage.enhanced`
Status: **locked**
Value: `false`
## `browser.pocket.enabled`
Status: **locked**
Value: `false`
## `browser.selfsupport.url`
Status: **locked**
Value: `""`
## `browser.startup.homepage_override.mstone`
Status: **locked**
Value: `"ignore"`
## `camera.control.face_detection.enabled`
Status: **locked**
Value: `false`
## `datareporting.healthreport.about.reportUrl`
Status: **locked**
Value: `"data:,"`
## `datareporting.healthreport.service.enabled`
Status: **locked**
Value: `false`
## `device.sensors.enabled`
Status: **locked**
Value: `false`
## `devtools.webide.autoinstallFxdtAdapters`
Status: **locked**
Value: `false`
## `devtools.webide.adaptersAddonURL`
Status: **locked**
Value: `""`
## `dom.enable_resource_timing`
Status: **locked**
Value: `false`
## `dom.flyweb.enabled`
Status: **locked**
Value: `false`
## `dom.gamepad.enabled`
Status: **locked**
Value: `false`
## `dom.netinfo.enabled`
Status: **locked**
Value: `false`
## `dom.push.udp.wakeupEnabled`
Status: **locked**
Value: `false`
## `dom.telephony.enabled`
Status: **locked**
Value: `false`
## `extensions.shield-recipe-client.enabled`
Status: **locked**
Value: `false`
## `loop.logDomains`
Status: **locked**
Value: `false`
## `media.video_stats.enabled`
Status: **locked**
Value: `false`
## `network.websocket.enabled`
Status: **locked**
Value: `false`
## `reader.parse-on-load.enabled`
Status: **locked**
Value: `false`
## `security.xpconnect.plugin.unrestricted`
Status: **locked**
Value: `false`
## `social.directories`
Status: **locked**
Value: `""`
## `social.remote-install.enabled`
Status: **locked**
Value: `false`
## `social.whitelist`
Status: **locked**
Value: `""`
## `security.ssl3.ecdhe_ecdsa_rc4_128_sha`
Status: **locked**
Value: `false`
## `security.ssl3.ecdhe_rsa_rc4_128_sha`
Status: **locked**
Value: `false`
## `security.ssl3.rsa_rc4_128_md5`
Status: **locked**
Value: `false`
## `security.ssl3.rsa_rc4_128_sha`
Status: **locked**
Value: `false`
## `security.tls.unrestricted_rc4_fallback`
Status: **locked**
Value: `false`

View file

@ -0,0 +1,26 @@
---
title: Inactive
---
## `xpinstall.signatures.required`
Status: **unlocked**
Value: `true`
## `toolkit.legacyUserProfileCustomizations.stylesheets`
Status: **unlocked**
Value: `false`
## `devtools.selfxss.count`
Status: **unlocked**
Value: `0`

39
dist/docs/settings/disabled-on-off.md vendored Normal file
View file

@ -0,0 +1,39 @@
---
title: Disabled On/Off
---
## `network.dns.blockDotOnion`
Status: **locked**
Value: `true`
*Tor settings*
## `network.http.referer.hideOnionSource`
Status: **locked**
Value: `true`
## `network.http.referer.XOriginPolicy`
Status: **locked**
Value: `1`
*CROSS ORIGIN: control when to send a referer*
## `security.tls.version.max`
Status: **locked**
Value: `4`
*Only allow TLS 1.[0-3]*

141
dist/docs/settings/esr-60.md vendored Normal file
View file

@ -0,0 +1,141 @@
---
title: ESR 60
---
## `browser.search.countryCode`
Status: **locked**
Value: `"US"`
*Geolocation*
## `experiments.activeExperiment`
Status: **locked**
Value: `false`
## `experiments.enabled`
Status: **locked**
Value: `false`
*Disable Mozilla telemetry/experiments*
### References
[https://wiki.mozilla.org/Platform/Features/Telemetry](https://wiki.mozilla.org/Platform/Features/Telemetry)
[https://wiki.mozilla.org/Privacy/Reviews/Telemetry](https://wiki.mozilla.org/Privacy/Reviews/Telemetry)
[https://wiki.mozilla.org/Telemetry](https://wiki.mozilla.org/Telemetry)
[https://www.mozilla.org/en-US/legal/privacy/firefox.html#telemetry](https://www.mozilla.org/en-US/legal/privacy/firefox.html#telemetry)
[https://support.mozilla.org/t5/Firefox-crashes/Mozilla-Crash-Reporter/ta-p/1715](https://support.mozilla.org/t5/Firefox-crashes/Mozilla-Crash-Reporter/ta-p/1715)
[https://wiki.mozilla.org/Security/Reviews/Firefox6/ReviewNotes/telemetry](https://wiki.mozilla.org/Security/Reviews/Firefox6/ReviewNotes/telemetry)
[https://gecko.readthedocs.io/en/latest/browser/experiments/experiments/manifest.html](https://gecko.readthedocs.io/en/latest/browser/experiments/experiments/manifest.html)
[https://wiki.mozilla.org/Telemetry/Experiments](https://wiki.mozilla.org/Telemetry/Experiments)
[https://support.mozilla.org/en-US/questions/1197144](https://support.mozilla.org/en-US/questions/1197144)
## `experiments.manifest.uri`
Status: **locked**
Value: `""`
## `experiments.supported`
Status: **locked**
Value: `false`
## `network.jar.block-remote-files`
Status: **locked**
Value: `true`
*Disable remote JAR files being opened, regardless of content type (FF42+)*
### References
[https://bugzilla.mozilla.org/1173171](https://bugzilla.mozilla.org/1173171)
[https://www.fxsitecompat.com/en-CA/docs/2015/jar-protocol-support-has-been-disabled-by-default/](https://www.fxsitecompat.com/en-CA/docs/2015/jar-protocol-support-has-been-disabled-by-default/)
[https://bugzilla.mozilla.org/1427726](https://bugzilla.mozilla.org/1427726)
## `network.jar.open-unsafe-types`
Status: **locked**
Value: `false`
*Disable JAR from opening Unsafe File Types*
### References
[https://bugzilla.mozilla.org/1427726](https://bugzilla.mozilla.org/1427726)
## `plugin.state.java`
Status: **locked**
Value: `0`
*Disable Java NPAPI plugin*
## `services.blocklist.update_enabled`
Status: **locked**
Value: `false`
*Enable Kinto blocklist updates (FF50+)*
### References
[https://wiki.mozilla.org/Firefox/Kinto#Specifications](https://wiki.mozilla.org/Firefox/Kinto#Specifications)
[https://bugzilla.mozilla.org/1458917](https://bugzilla.mozilla.org/1458917)
## `shield.savant.enabled`
Status: **locked**
Value: `false`
*Disable 'Savant' Shield study (FF61+)*
### References
[https://bugzilla.mozilla.org/1457226](https://bugzilla.mozilla.org/1457226)

75
dist/docs/settings/extensions.md vendored Normal file
View file

@ -0,0 +1,75 @@
---
title: Extensions
---
## `extensions.webextensions.restrictedDomains`
Status: **unlocked**
Value: `""`
## `extensions.webextensions.identity.redirectDomain`
Status: **locked**
Value: `""`
## `extensions.webextensions.base-content-security-policy`
Status: **unlocked**
Value: `"script-src 'self' https://* moz-extension: blob: filesystem: 'unsafe-eval' 'unsafe-inline'; object-src 'self' https://* moz-extension: blob: filesystem:;"`
## `security.csp.enable`
Status: **locked**
Value: `true`
## `security.csp.experimentalEnabled`
Status: **locked**
Value: `true`
## `security.csp.enable_violation_events`
Status: **locked**
Value: `false`
## `extensions.webextensions.tabhide.enabled`
Status: **unlocked**
Value: `false`
## `extensions.webcompat-reporter.newIssueEndpoint`
Status: **locked**
Value: `""`
## `extensions.webcompat-reporter.enabled`
Status: **locked**
Value: `false`
## `extensions.webextensions.background-delayed-startup`
Status: **unlocked**
Value: `true`

19
dist/docs/settings/fingerprinting.md vendored Normal file
View file

@ -0,0 +1,19 @@
---
title: Fingerprinting
---
## `privacy.resistFingerprinting`
Status: **unlocked**
Value: `true`
## `privacy.resistFingerprinting.block_mozAddonManager`
Status: **unlocked**
Value: `true`

2384
dist/docs/settings/general.md vendored Normal file

File diff suppressed because it is too large Load diff

439
dist/docs/settings/ghacks-user.md vendored Normal file
View file

@ -0,0 +1,439 @@
---
title: ghacks user.js
---
## `toolkit.coverage.endpoint.base`
Status: **locked**
Value: `""`
## `toolkit.coverage.opt-out`
Status: **locked**
Value: `true`
## `browser.download.manager.addToRecentDocs`
Status: **locked**
Value: `false`
## `browser.download.hide_plugins_without_extensions`
Status: **locked**
Value: `false`
## `webchannel.allowObject.urlWhitelist`
Status: **locked**
Value: `""`
## `browser.cache.offline.insecure.enable`
Status: **locked**
Value: `false`
## `network.http.redirection-limit`
Status: **locked**
Value: `10`
## `offline-apps.allow_by_default`
Status: **locked**
Value: `false`
## `extensions.enabledScopes`
Status: **locked**
Value: `5`
## `extensions.autoDisableScopes`
Status: **locked**
Value: `11`
## `xpinstall.whitelist.required`
Status: **locked**
Value: `true`
## `dom.push.enabled`
Status: **locked**
Value: `false`
## `dom.push.connection.enabled`
Status: **locked**
Value: `false`
## `dom.push.serverURL`
Status: **locked**
Value: `""`
## `dom.push.userAgentID`
Status: **locked**
Value: `""`
## `security.data_uri.block_toplevel_data_uri_navigations`
Status: **locked**
Value: `true`
## `ui.use_standins_for_native_colors`
Status: **locked**
Value: `true`
## `services.blocklist.onecrl.collection`
Status: **locked**
Value: `""`
## `services.blocklist.addons.collection`
Status: **locked**
Value: `""`
## `services.blocklist.plugins.collection`
Status: **locked**
Value: `""`
## `services.blocklist.gfx.collection`
Status: **locked**
Value: `""`
## `browser.startup.blankWindow`
Status: **locked**
Value: `false`
## `dom.event.highrestimestamp.enabled`
Status: **locked**
Value: `true`
## `privacy.trackingprotection.introURL`
Status: **locked**
Value: `""`
## `network.http.altsvc.enabled`
Status: **locked**
Value: `false`
## `network.http.altsvc.oe`
Status: **locked**
Value: `false`
## `network.file.disable_unc_paths`
Status: **locked**
Value: `true`
## `network.gio.supported-protocols`
Status: **locked**
Value: `""`
## `browser.urlbar.usepreloadedtopurls.enabled`
Status: **locked**
Value: `false`
## `browser.urlbar.speculativeConnect.enabled`
Status: **locked**
Value: `false`
## `browser.urlbar.oneOffSearches`
Status: **locked**
Value: `false`
## `network.auth.subresource-img-cross-origin-http-auth-allow`
Status: **locked**
Value: `false`
## `browser.shell.shortcutFavicons`
Status: **locked**
Value: `false`
## `alerts.showFavicons`
Status: **locked**
Value: `false`
## `security.ssl.require_safe_negotiation`
Status: **locked**
Value: `true`
## `security.tls.enable_0rtt_data`
Status: **locked**
Value: `false`
## `browser.xul.error_pages.expert_bad_cert`
Status: **locked**
Value: `true`
## `font.blacklist.underline_offset`
Status: **locked**
Value: `""`
## `gfx.font_rendering.graphite.enabled`
Status: **locked**
Value: `false`
## `network.http.referer.XOriginTrimmingPolicy`
Status: **locked**
Value: `0`
## `network.http.referer.spoofSource`
Status: **locked**
Value: `false`
## `plugin.default.state`
Status: **locked**
Value: `1`
## `plugin.defaultXpi.state`
Status: **locked**
Value: `1`
## `canvas.capturestream.enabled`
Status: **locked**
Value: `false`
## `dom.imagecapture.enabled`
Status: **locked**
Value: `false`
## `gfx.offscreencanvas.enabled`
Status: **locked**
Value: `false`
## `dom.disable_window_open_feature.close`
Status: **locked**
Value: `true`
## `dom.disable_window_open_feature.location`
Status: **locked**
Value: `true`
## `dom.disable_window_open_feature.menubar`
Status: **locked**
Value: `true`
## `dom.disable_window_open_feature.minimizable`
Status: **locked**
Value: `true`
## `dom.disable_window_open_feature.personalbar`
Status: **locked**
Value: `true`
## `dom.disable_window_open_feature.resizable`
Status: **locked**
Value: `true`
## `dom.disable_window_open_feature.status`
Status: **locked**
Value: `true`
## `dom.disable_window_open_feature.titlebar`
Status: **locked**
Value: `true`
## `dom.disable_window_open_feature.toolbar`
Status: **locked**
Value: `true`
## `dom.disable_window_move_resize`
Status: **locked**
Value: `true`
## `dom.IntersectionObserver.enabled`
Status: **locked**
Value: `false`
## `accessibility.force_disabled`
Status: **locked**
Value: `1`
## `browser.uitour.enabled`
Status: **locked**
Value: `false`
## `browser.uitour.url`
Status: **locked**
Value: `""`
## `middlemouse.contentLoadURL`
Status: **locked**
Value: `false`
## `permissions.manager.defaultsUrl`
Status: **locked**
Value: `""`

1111
dist/docs/settings/ijwytsu.md vendored Normal file

File diff suppressed because it is too large Load diff

68
dist/docs/settings/locale-time-ua.md vendored Normal file
View file

@ -0,0 +1,68 @@
---
title: Locale, Time, UA
---
## `dom.forms.datetime`
Status: **locked**
Value: `false`
## `javascript.use_us_english_locale`
Status: **locked**
Value: `true`
## `intl.regional_prefs.use_os_locales`
Status: **locked**
Value: `false`
## `intl.locale.requested`
Status: **unlocked**
Value: `"en-US"`
## `general.useragent.override`
Status: **unlocked**
Value: `"Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0, 45"`
## `general.appname.override`
Status: **unlocked**
Value: `"Netscape"`
## `general.appversion.override`
Status: **unlocked**
Value: `"5.0 (Windows)"`
## `general.platform.override`
Status: **unlocked**
Value: `"Win32"`
## `general.oscpu.override`
Status: **unlocked**
Value: `"Windows NT 6.1"`

268
dist/docs/settings/performance.md vendored Normal file
View file

@ -0,0 +1,268 @@
---
title: Performance
---
## `layout.frame_rate.precise`
Status: **unlocked**
Value: `true`
*Increases animation speed*
## `webgl.force-enabled`
Status: **unlocked**
Value: `true`
*Enable Hardware Acceleration and Off Main Thread Compositing (OMTC)*
## `layers.acceleration.force-enabled`
Status: **unlocked**
Value: `true`
*Enable Hardware Acceleration and Off Main Thread Compositing (OMTC)*
## `gfx.direct2d.disabled`
Status: **unlocked**
Value: `false`
*Disable hardware acceleration to reduce graphics fingerprinting*
### References
[https://wiki.mozilla.org/Platform/GFX/HardwareAcceleration](https://wiki.mozilla.org/Platform/GFX/HardwareAcceleration)
## `layers.acceleration.disabled`
Status: **unlocked**
Value: `false`
*Disable hardware acceleration to reduce graphics fingerprinting*
### References
[https://wiki.mozilla.org/Platform/GFX/HardwareAcceleration](https://wiki.mozilla.org/Platform/GFX/HardwareAcceleration)
## `html5.offmainthread`
Status: **unlocked**
Value: `true`
## `layers.offmainthreadcomposition.enabled`
Status: **unlocked**
Value: `true`
## `layers.offmainthreadcomposition.async-animations`
Status: **unlocked**
Value: `true`
## `layers.async-video.enabled`
Status: **unlocked**
Value: `true`
## `browser.tabs.animate`
Status: **unlocked**
Value: `false`
## `browser.download.animateNotifications`
**Unused Setting**
Status: **unlocked**
Value: `false`
## `dom.maxHardwareConcurrency`
**Unused Setting**
Status: **unlocked**
Value: `8`
*Spoof CPU Core Def 16*
## `javascript.options.mem.high_water_mark`
**Unused Setting**
Status: **locked**
Value: `96`
*Tell garbage collector to start running when javascript is using xx MB of memory.*
## `javascript.options.wasm`
**Unused Setting**
Status: **locked**
Value: `false`
*Disable WebAssembly*
### References
[https://webassembly.org/](https://webassembly.org/)
[https://en.wikipedia.org/wiki/WebAssembly](https://en.wikipedia.org/wiki/WebAssembly)
[https://trac.torproject.org/projects/tor/ticket/21549](https://trac.torproject.org/projects/tor/ticket/21549)
## `browser.display.use_document_fonts`
**Unused Setting**
Status: **locked**
Value: `0`
*Prevent font fingerprinting*
### References
[https://browserleaks.com/fonts](https://browserleaks.com/fonts)
[https://github.com/pyllyukko/user.js/issues/120](https://github.com/pyllyukko/user.js/issues/120)
## `webgl.disabled`
Status: **unlocked**
Value: `false`
## `webgl.enable-webgl2`
Status: **locked**
Value: `false`
*This prevents WebGL data leaks*
## `webgl.min_capability_mode`
Status: **locked**
Value: `true`
*This prevents WebGL data leaks*
## `pdfjs.enableWebGL`
Status: **locked**
Value: `false`
## `webgl.disable-extensions`
Status: **locked**
Value: `true`
## `webgl.disable-fail-if-major-performance-caveat`
Status: **locked**
Value: `true`
## `webgl.enable-debug-renderer-info`
Status: **locked**
Value: `false`
## `javascript.options.asmjs`
**Unused Setting**
Status: **locked**
Value: `false`
*Disable asm.js*
### References
[http://asmjs.org/](http://asmjs.org/)
[https://www.mozilla.org/en-US/security/advisories/mfsa2015-29/](https://www.mozilla.org/en-US/security/advisories/mfsa2015-29/)
[https://www.mozilla.org/en-US/security/advisories/mfsa2015-50/](https://www.mozilla.org/en-US/security/advisories/mfsa2015-50/)
[https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-2712](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-2712)
## `javascript.options.shared_memory`
Status: **locked**
Value: `false`
*JS Shared Memory*
### References
[https://github.com/MrAlex94/Waterfox/issues/356](https://github.com/MrAlex94/Waterfox/issues/356)
## `dom.serviceWorkers.enabled`
Status: **locked**
Value: `false`
*Disable service workers*

12
dist/docs/settings/protection.md vendored Normal file
View file

@ -0,0 +1,12 @@
---
title: Protection
---
## `general.config.filename`
Status: **locked**
Value: `"librewolf.cfg"`

387
dist/docs/settings/security.md vendored Normal file
View file

@ -0,0 +1,387 @@
---
title: Security
---
## `security.insecure_password.ui.enabled`
Status: **locked**
Value: `true`
*Enable insecure password warnings (login forms in non-HTTPS pages)*
### References
[https://blog.mozilla.org/tanvi/2016/01/28/no-more-passwords-over-http-please/](https://blog.mozilla.org/tanvi/2016/01/28/no-more-passwords-over-http-please/)
[https://bugzilla.mozilla.org/show_bug.cgi?id=1319119](https://bugzilla.mozilla.org/show_bug.cgi?id=1319119)
[https://bugzilla.mozilla.org/show_bug.cgi?id=1217156](https://bugzilla.mozilla.org/show_bug.cgi?id=1217156)
## `security.insecure_field_warning.contextual.enabled`
Status: **locked**
Value: `true`
*Show in-content login form warning UI for insecure login fields*
### References
[https://hg.mozilla.org/integration/mozilla-inbound/rev/f0d146fe7317](https://hg.mozilla.org/integration/mozilla-inbound/rev/f0d146fe7317)
## `network.stricttransportsecurity.preloadlist`
Status: **locked**
Value: `false`
*Disable HSTS preload list (pre-set HSTS sites list provided by Mozilla)*
### References
[https://blog.mozilla.org/security/2012/11/01/preloading-hsts/](https://blog.mozilla.org/security/2012/11/01/preloading-hsts/)
[https://wiki.mozilla.org/Privacy/Features/HSTS_Preload_List](https://wiki.mozilla.org/Privacy/Features/HSTS_Preload_List)
[https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security)
## `security.ssl.disable_session_identifiers`
Status: **locked**
Value: `true`
*Disable TLS Session Tickets*
### References
[https://www.blackhat.com/us-13/briefings.html#NextGen](https://www.blackhat.com/us-13/briefings.html#NextGen)
[https://media.blackhat.com/us-13/US-13-Daigniere-TLS-Secrets-Slides.pdf](https://media.blackhat.com/us-13/US-13-Daigniere-TLS-Secrets-Slides.pdf)
[https://media.blackhat.com/us-13/US-13-Daigniere-TLS-Secrets-WP.pdf](https://media.blackhat.com/us-13/US-13-Daigniere-TLS-Secrets-WP.pdf)
[https://bugzilla.mozilla.org/show_bug.cgi?id=917049](https://bugzilla.mozilla.org/show_bug.cgi?id=917049)
[https://bugzilla.mozilla.org/show_bug.cgi?id=967977](https://bugzilla.mozilla.org/show_bug.cgi?id=967977)
## `network.dns.localDomains`
Status: **unlocked**
Value: `"librefox.com"`
*Blocking GD Parking Scam Site*
## `security.tls.version.fallback-limit`
Status: **locked**
Value: `3`
*Disable insecure TLS version fallback*
### References
[https://bugzilla.mozilla.org/show_bug.cgi?id=1084025](https://bugzilla.mozilla.org/show_bug.cgi?id=1084025)
[https://github.com/pyllyukko/user.js/pull/206#issuecomment-280229645](https://github.com/pyllyukko/user.js/pull/206#issuecomment-280229645)
## `security.tls.version.min`
Status: **locked**
Value: `2`
*Only allow TLS 1.[0-3]*
### References
[http://kb.mozillazine.org/Security.tls.version.*](http://kb.mozillazine.org/Security.tls.version.*)
## `security.cert_pinning.enforcement_level`
Status: **locked**
Value: `2`
*Enfore Public Key Pinning*
### References
[https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning](https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning)
[https://wiki.mozilla.org/SecurityEngineering/Public_Key_Pinning](https://wiki.mozilla.org/SecurityEngineering/Public_Key_Pinning)
## `security.pki.sha1_enforcement_level`
Status: **locked**
Value: `1`
*Disallow SHA-1*
### References
[https://bugzilla.mozilla.org/show_bug.cgi?id=1302140](https://bugzilla.mozilla.org/show_bug.cgi?id=1302140)
[https://shattered.io/](https://shattered.io/)
## `security.ssl.treat_unsafe_negotiation_as_broken`
Status: **locked**
Value: `true`
*Warn the user when server doesn't support RFC 5746 ('safe' renegotiation)*
### References
[https://wiki.mozilla.org/Security:Renegotiation#security.ssl.treat_unsafe_negotiation_as_broken](https://wiki.mozilla.org/Security:Renegotiation#security.ssl.treat_unsafe_negotiation_as_broken)
[https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2009-3555](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2009-3555)
## `browser.ssl_override_behavior`
Status: **locked**
Value: `1`
*Pre-populate the current URL but do not pre-fetch the certificate in the 'Add Security Exception' dialog*
### References
[http://kb.mozillazine.org/Browser.ssl_override_behavior](http://kb.mozillazine.org/Browser.ssl_override_behavior)
[https://github.com/pyllyukko/user.js/issues/210](https://github.com/pyllyukko/user.js/issues/210)
## `security.ssl.errorReporting.automatic`
Status: **locked**
Value: `false`
## `security.ssl.errorReporting.url`
Status: **locked**
Value: `""`
## `security.OCSP.enabled`
Status: **locked**
Value: `0`
## `security.OCSP.require`
Status: **locked**
Value: `false`
## `security.ssl.enable_ocsp_stapling`
Status: **locked**
Value: `true`
### References
[https://blog.mozilla.org/security/2013/07/29/ocsp-stapling-in-firefox/](https://blog.mozilla.org/security/2013/07/29/ocsp-stapling-in-firefox/)
## `security.ssl.errorReporting.enabled`
Status: **locked**
Value: `false`
## `security.disable_button.openCertManager`
**Unused Setting**
Status: **locked**
Value: `false`
*Manage certificates button*
## `security.disable_button.openDeviceManager`
**Unused Setting**
Status: **locked**
Value: `false`
*Manage security devices button*
## `security.mixed_content.upgrade_display_content`
Status: **locked**
Value: `true`
## `security.mixed_content.block_object_subrequest`
Status: **locked**
Value: `true`
## `security.mixed_content.block_display_content`
Status: **locked**
Value: `true`
## `security.mixed_content.block_active_content`
Status: **locked**
Value: `true`
## `security.insecure_connection_icon.enabled`
Status: **locked**
Value: `true`
## `security.insecure_connection_icon.pbmode.enabled`
Status: **locked**
Value: `true`
## `security.insecure_connection_text.enabled`
Status: **locked**
Value: `true`
## `security.ssl3.rsa_des_ede3_sha`
Status: **locked**
Value: `false`
## `security.ssl3.rsa_aes_256_sha`
Status: **locked**
Value: `false`
## `security.ssl3.rsa_aes_128_sha`
Status: **locked**
Value: `false`
## `security.ssl3.ecdh_ecdsa_rc4_128_sha`
Status: **locked**
Value: `false`
*Disable RC4*
### References
[https://developer.mozilla.org/en-US/Firefox/Releases/38#Security](https://developer.mozilla.org/en-US/Firefox/Releases/38#Security)
[https://bugzilla.mozilla.org/show_bug.cgi?id=1138882](https://bugzilla.mozilla.org/show_bug.cgi?id=1138882)
[https://rc4.io/](https://rc4.io/)
[https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-2566](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-2566)
## `security.ssl3.ecdh_rsa_rc4_128_sha`
Status: **locked**
Value: `false`
*Disable RC4*
### References
[https://developer.mozilla.org/en-US/Firefox/Releases/38#Security](https://developer.mozilla.org/en-US/Firefox/Releases/38#Security)
[https://bugzilla.mozilla.org/show_bug.cgi?id=1138882](https://bugzilla.mozilla.org/show_bug.cgi?id=1138882)
[https://rc4.io/](https://rc4.io/)
[https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-2566](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-2566)
## `security.ssl3.rsa_seed_sha`
Status: **locked**
Value: `false`
*Disable SEED cipher*
### References
[https://en.wikipedia.org/wiki/SEED](https://en.wikipedia.org/wiki/SEED)

View file

@ -0,0 +1,2 @@
---
title: User Settings---

View file

@ -0,0 +1,12 @@
---
title: Autoplay
---
## `media.autoplay.default`
Status: **locked**
Value: `2`

View file

@ -0,0 +1,65 @@
---
title: Autofill
---
## `extensions.formautofill.addresses.enabled`
Status: **unlocked**
Value: `false`
## `extensions.formautofill.available`
Status: **unlocked**
Value: `"off"`
## `extensions.formautofill.creditCards.enabled`
Status: **unlocked**
Value: `false`
## `extensions.formautofill.heuristics.enabled`
Status: **unlocked**
Value: `false`
## `signon.autofillForms`
Status: **locked**
Value: `false`
## `signon.autofillForms.http`
Status: **locked**
Value: `false`
## `browser.urlbar.autoFill`
**Unused Setting**
Status: **locked**
Value: `false`
## `browser.urlbar.autoFill.typed`
**Unused Setting**
Status: **locked**
Value: `false`

View file

@ -0,0 +1,47 @@
---
title: Cookies
---
## `network.cookie.cookieBehavior`
Status: **unlocked**
Value: `1`
## `network.cookie.lifetimePolicy`
Status: **unlocked**
Value: `2`
## `network.cookie.same-site.enabled`
Status: **locked**
Value: `true`
## `network.cookie.leave-secure-alone`
Status: **locked**
Value: `true`
## `network.cookie.thirdparty.sessionOnly`
Status: **unlocked**
Value: `true`
## `network.cookie.thirdparty.nonsecureSessionOnly`
Status: **locked**
Value: `true`

View file

@ -0,0 +1,12 @@
---
title: Default Browser
---
## `browser.shell.checkDefaultBrowser`
Status: **locked**
Value: `false`

47
dist/docs/settings/user_settings/dns.md vendored Normal file
View file

@ -0,0 +1,47 @@
---
title: DNS
---
## `network.trr.mode`
Status: **locked**
Value: `5`
## `network.trr.bootstrapAddress`
Status: **locked**
Value: `""`
## `network.trr.uri`
Status: **locked**
Value: `""`
## `network.dns.disableIPv6`
Status: **locked**
Value: `true`
## `network.dns.disablePrefetch`
Status: **locked**
Value: `true`
## `network.dns.disablePrefetchFromHTTPS`
Status: **locked**
Value: `true`

19
dist/docs/settings/user_settings/dnt.md vendored Normal file
View file

@ -0,0 +1,19 @@
---
title: Do Not Track
---
## `privacy.donottrackheader.enabled`
Status: **locked**
Value: `true`
## `privacy.donottrackheader.value`
Status: **locked**
Value: `1`

View file

@ -0,0 +1,119 @@
---
title: DRM/CDM
---
## `media.eme.enabled`
Status: **locked**
Value: `false`
## `media.gmp-provider.enabled`
Status: **locked**
Value: `false`
## `media.gmp-manager.url`
Status: **locked**
Value: `"data:text/plain,"`
## `media.gmp-manager.url.override`
Status: **locked**
Value: `"data:text/plain,"`
## `media.gmp-manager.updateEnabled`
Status: **locked**
Value: `false`
## `media.gmp.trial-create.enabled`
Status: **locked**
Value: `false`
## `media.gmp-widevinecdm.visible`
Status: **locked**
Value: `false`
## `media.gmp-widevinecdm.enabled`
Status: **locked**
Value: `false`
## `media.gmp-widevinecdm.autoupdate`
Status: **locked**
Value: `false`
## `media.gmp-gmpopenh264.enabled`
Status: **locked**
Value: `false`
## `media.gmp-gmpopenh264.autoupdate`
Status: **locked**
Value: `false`
## `media.peerconnection.video.enabled`
Status: **unlocked**
Value: `false`
## `media.gmp-eme-adobe.enabled`
Status: **locked**
Value: `false`
## `media.gmp-manager.certs.2.commonName`
Status: **locked**
Value: `""`
## `media.gmp-manager.certs.1.commonName`
Status: **locked**
Value: `""`
## `media.peerconnection.video.h264`
**Unused Setting**
Status: **locked**
Value: `true`

View file

@ -0,0 +1,166 @@
---
title: History
---
## `browser.sessionhistory.max_entries`
Status: **locked**
Value: `20`
## `browser.urlbar.filter.javascript`
Status: **locked**
Value: `true`
## `browser.uiCustomization.state`
Status: **unlocked**
Value: `"{"placements":{"widget-overflow-fixed-list":[],"nav-bar":["home-button","downloads-button","back-button","forward-button","stop-reload-button","urlbar-container","add-ons-button","preferences-button","fxa-toolbar-menu-button"],"toolbar-menubar":["menubar-items"],"TabsToolbar":["tabbrowser-tabs","new-tab-button","alltabs-button"],"PersonalToolbar":["personal-bookmarks"]},"seen":["developer-button"],"dirtyAreaCache":["nav-bar","toolbar-menubar","TabsToolbar","PersonalToolbar"],"currentVersion":16,"newElementCount":3}"`
## `browser.uidensity`
Status: **unlocked**
Value: `2`
## `browser.tabs.drawInTitlebar`
Status: **unlocked**
Value: `true`
## `startup.homepage_override_url`
Status: **unlocked**
Value: `"about:blank"`
## `startup.homepage_welcome_url`
Status: **unlocked**
Value: `"about:blank"`
## `startup.homepage_welcome_url.additional`
Status: **unlocked**
Value: `""`
## `privacy.clearOnShutdown.offlineApps`
Status: **unlocked**
Value: `true`
## `privacy.cpd.offlineApps`
Status: **unlocked**
Value: `true`
*Offline Website Data*
## `privacy.sanitize.timeSpan`
Status: **unlocked**
Value: `0`
## `browser.formfill.enable`
Status: **unlocked**
Value: `false`
## `privacy.sanitize.sanitizeOnShutdown`
Status: **unlocked**
Value: `true`
## `places.history.enabled`
Status: **unlocked**
Value: `false`
## `places.history.expiration.max_pages`
Status: **unlocked**
Value: `2147483647`
## `privacy.history.custom`
Status: **unlocked**
Value: `true`
## `privacy.cpd.openWindows`
**Unused Setting**
Status: **unlocked**
Value: `true`
*Clear session data*
## `privacy.clearOnShutdown.openWindows`
**Unused Setting**
Status: **unlocked**
Value: `true`
## `privacy.sanitize.pending`
**Unused Setting**
Status: **unlocked**
Value: `"[{"id":"shutdown","itemsToClear":["cache","cookies","history","formdata","downloads"],"options":{}}]"`
## `permissions.memory_only`
**Unused Setting**
Status: **locked**
Value: `true`
## `browser.formfill.expire_days`
**Unused Setting**
Status: **locked**
Value: `0`

View file

@ -0,0 +1,19 @@
---
title: Miscellaneous
---
## `dom.disable_beforeunload`
Status: **locked**
Value: `true`
## `permissions.default.geo`
Status: **locked**
Value: `2`

View file

@ -0,0 +1,44 @@
---
title: Password Manager
---
## `signon.rememberSignons`
Status: **locked**
Value: `false`
## `services.sync.prefs.sync.signon.rememberSignons`
Status: **locked**
Value: `false`
## `signon.storeWhenAutocompleteOff`
Status: **locked**
Value: `false`
## `security.ask_for_password`
**Unused Setting**
Status: **locked**
Value: `2`
## `security.password_lifetime`
**Unused Setting**
Status: **locked**
Value: `5`

View file

@ -0,0 +1,23 @@
---
title: Proxy
---
## `network.proxy.autoconfig_url.include_path`
**Unused Setting**
Status: **locked**
Value: `false`
## `network.proxy.socks_remote_dns`
**Unused Setting**
Status: **locked**
Value: `true`

View file

@ -0,0 +1,19 @@
---
title: Session
---
## `browser.sessionstore.privacy_level`
Status: **locked**
Value: `2`
## `browser.sessionstore.interval`
Status: **locked**
Value: `60000`

View file

@ -0,0 +1,40 @@
---
title: Start Page
---
## `browser.newtabpage.activity-stream.feeds.section.highlights`
Status: **locked**
Value: `false`
## `browser.newtabpage.activity-stream.section.highlights.includeBookmarks`
Status: **locked**
Value: `false`
## `browser.newtabpage.activity-stream.section.highlights.includeDownloads`
Status: **locked**
Value: `false`
## `browser.newtabpage.activity-stream.section.highlights.includeVisited`
Status: **locked**
Value: `false`
## `browser.newtabpage.activity-stream.prerender`
Status: **locked**
Value: `false`

View file

@ -0,0 +1,41 @@
---
title: Theming
---
## `widget.content.gtk-theme-override`
**Unused Setting**
Status: **locked**
Value: `"Adwaita:light"`
## `browser.devedition.theme.enabled`
**Unused Setting**
Status: **locked**
Value: `true`
## `devtools.theme`
**Unused Setting**
Status: **locked**
Value: `"dark"`
## `browser.devedition.theme.showCustomizeButton`
**Unused Setting**
Status: **locked**
Value: `true`

View file

@ -0,0 +1,179 @@
---
title: Tracking Protection
---
## `privacy.trackingprotection.enabled`
Status: **locked**
Value: `false`
## `privacy.trackingprotection.annotate_channels`
Status: **locked**
Value: `false`
## `privacy.trackingprotection.lower_network_priority`
Status: **locked**
Value: `false`
## `privacy.trackingprotection.pbmode.enabled`
Status: **locked**
Value: `false`
## `urlclassifier.trackingTable`
Status: **locked**
Value: `""`
## `pref.privacy.disable_button.change_blocklist`
Status: **locked**
Value: `true`
## `browser.contentblocking.reportBreakage.enabled`
Status: **locked**
Value: `false`
## `browser.contentblocking.reportBreakage.url`
Status: **locked**
Value: `""`
## `browser.contentblocking.rejecttrackers.reportBreakage.enabled`
Status: **locked**
Value: `false`
## `browser.contentblocking.rejecttrackers.ui.enabled`
Status: **locked**
Value: `false`
## `browser.contentblocking.trackingprotection.control-center.ui.enabled`
Status: **locked**
Value: `false`
## `browser.contentblocking.trackingprotection.ui.enabled`
Status: **locked**
Value: `false`
## `browser.contentblocking.global-toggle.enabled`
**Unused Setting**
Status: **locked**
Value: `false`
## `browser.contentblocking.rejecttrackers.ui.recommended`
**Unused Setting**
Status: **locked**
Value: `false`
## `browser.contentblocking.fastblock.ui.enabled`
**Unused Setting**
Status: **locked**
Value: `false`
## `browser.contentblocking.fastblock.control-center.ui.enabled`
**Unused Setting**
Status: **locked**
Value: `false`
## `browser.contentblocking.allowlist.annotations.enabled`
**Unused Setting**
Status: **locked**
Value: `false`
## `browser.contentblocking.allowlist.storage.enabled`
**Unused Setting**
Status: **locked**
Value: `false`
## `pref.privacy.disable_button.tracking_protection_exceptions`
**Unused Setting**
Status: **locked**
Value: `false`
## `browser.contentblocking.rejecttrackers.control-center.ui.enabled`
**Unused Setting**
Status: **locked**
Value: `false`
## `browser.contentblocking.ui.enabled`
**Unused Setting**
Status: **locked**
Value: `false`
## `browser.contentblocking.enabled`
**Unused Setting**
Status: **locked**
Value: `false`

View file

@ -0,0 +1,89 @@
---
title: WebRTC
---
## `media.navigator.enabled`
Status: **unlocked**
Value: `false`
## `media.navigator.video.enabled`
Status: **unlocked**
Value: `false`
## `media.getusermedia.browser.enabled`
Status: **unlocked**
Value: `false`
## `media.getusermedia.screensharing.enabled`
Status: **unlocked**
Value: `false`
## `media.getusermedia.audiocapture.enabled`
Status: **unlocked**
Value: `false`
## `media.peerconnection.use_document_iceservers`
Status: **unlocked**
Value: `false`
## `media.peerconnection.identity.enabled`
Status: **unlocked**
Value: `false`
## `media.peerconnection.identity.timeout`
Status: **unlocked**
Value: `1`
## `media.peerconnection.turn.disable`
Status: **unlocked**
Value: `true`
## `media.peerconnection.ice.tcp`
Status: **unlocked**
Value: `false`
## `media.peerconnection.ice.default_address_only`
Status: **unlocked**
Value: `true`
## `media.peerconnection.ice.no_host`
Status: **unlocked**
Value: `true`

116
dist/docs/settings/windows.md vendored Normal file
View file

@ -0,0 +1,116 @@
---
title: Windows
---
## `webgl.dxgl.enabled`
Status: **locked**
Value: `false`
*Other WebGl [WINDOWS]*
## `plugin.scan.plid.all`
Status: **locked**
Value: `false`
*Disable scanning for plugins [WINDOWS]*
## `browser.taskbar.lists.enabled`
Status: **locked**
Value: `false`
*Disable Windows jumplist [WINDOWS]*
## `browser.taskbar.lists.frequent.enabled`
Status: **locked**
Value: `false`
## `browser.taskbar.lists.recent.enabled`
Status: **locked**
Value: `false`
## `browser.taskbar.lists.tasks.enabled`
Status: **locked**
Value: `false`
## `browser.taskbar.previews.enable`
Status: **locked**
Value: `false`
*Disable Windows taskbar preview [WINDOWS]*
## `network.protocol-handler.external.ms-windows-store`
Status: **locked**
Value: `false`
*Disable links launching Windows Store on Windows 8/8.1/10 [WINDOWS]*
### References
[https://www.ghacks.net/2016/03/25/block-firefox-chrome-windows-store/](https://www.ghacks.net/2016/03/25/block-firefox-chrome-windows-store/)
## `app.update.service.enabled`
Status: **locked**
Value: `false`
*Disable background update service [WINDOWS]*
## `toolkit.winRegisterApplicationRestart`
Status: **locked**
Value: `false`
*Disable automatic Firefox start and session restore after reboot [WINDOWS] (FF62+)*
### References
[https://bugzilla.mozilla.org/603903](https://bugzilla.mozilla.org/603903)
## `security.family_safety.mode`
Status: **locked**
Value: `0`
*Disable Windows 8.1's Microsoft Family Safety cert [WINDOWS] (FF50+)*
### References
[https://trac.torproject.org/projects/tor/ticket/21686](https://trac.torproject.org/projects/tor/ticket/21686)

854
dist/librewolf.cfg vendored Normal file
View file

@ -0,0 +1,854 @@
// Locale, Time, UA
lockPref("dom.forms.datetime", "");
lockPref("javascript.use_us_english_locale", "");
lockPref("intl.regional_prefs.use_os_locales", "");
defaultPref("intl.locale.requested", "");
defaultPref("general.useragent.override", "");
defaultPref("general.appname.override", "");
defaultPref("general.appversion.override", "");
defaultPref("general.platform.override", "");
defaultPref("general.oscpu.override", "");
// Disabled On/Off
lockPref("network.dns.blockDotOnion", "");
lockPref("network.http.referer.hideOnionSource", "");
lockPref("network.http.referer.XOriginPolicy", "");
lockPref("security.tls.version.max", "");
// Ijwytsu I just want you to shut up
lockPref("devtools.performance.recording.ui-base-url", "");
lockPref("gecko.handlerService.schemes.irc.0.uriTemplate", "");
lockPref("gecko.handlerService.schemes.ircs.0.uriTemplate", "");
lockPref("toolkit.coverage.enabled", "");
lockPref("extensions.webapi.testing", "");
lockPref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr", "");
lockPref("extensions.htmlaboutaddons.recommendations.enabled", "");
lockPref("browser.newtabpage.activity-stream.asrouter.providers.cfr", "");
lockPref("browser.newtabpage.activity-stream.asrouter.providers.cfr-fxa", "");
lockPref("browser.newtabpage.activity-stream.asrouter.providers.onboarding", "");
lockPref("browser.newtabpage.activity-stream.asrouter.providers.snippets", "");
lockPref("browser.onboarding.notification.tour-ids-queue", "");
lockPref("lightweightThemes.getMoreURL", "");
lockPref("devtools.gcli.lodashSrc", "");
lockPref("media.decoder-doctor.new-issue-endpoint", "");
lockPref("identity.sync.tokenserver.uri", "");
lockPref("devtools.webide.templatesURL", "");
lockPref("browser.ping-centre.production.endpoint", "");
lockPref("browser.translation.engine", "");
lockPref("network.trr.confirmationNS", "");
lockPref("gecko.handlerService.schemes.mailto.1.name", "");
lockPref("gecko.handlerService.schemes.irc.0.name", "");
lockPref("gecko.handlerService.schemes.ircs.0.name", "");
lockPref("gecko.handlerService.schemes.mailto.0.name", "");
lockPref("services.sync.lastversion", "");
lockPref("browser.safebrowsing.provider.mozilla.lists.base", "");
lockPref("browser.safebrowsing.provider.mozilla.lists.content", "");
lockPref("browser.safebrowsing.provider.google.advisoryName", "");
lockPref("browser.safebrowsing.provider.google4.advisoryName", "");
lockPref("browser.safebrowsing.provider.mozilla.lists", "");
lockPref("identity.fxaccounts.remote.root", "");
lockPref("services.settings.server", "");
lockPref("services.sync.fxa.privacyURL", "");
lockPref("services.sync.fxa.termsURL", "");
lockPref("services.blocklist.addons.signer", "");
lockPref("services.blocklist.gfx.signer", "");
lockPref("services.blocklist.onecrl.signer", "");
lockPref("services.blocklist.pinning.signer", "");
lockPref("services.blocklist.plugins.signer", "");
lockPref("services.settings.default_signer", "");
lockPref("accessibility.support.url", "");
lockPref("app.normandy.shieldLearnMoreUrl", "");
lockPref("app.productInfo.baseURL", "");
lockPref("app.support.baseURL", "");
lockPref("browser.chrome.errorReporter.infoURL", "");
lockPref("browser.dictionaries.download.url", "");
lockPref("browser.geolocation.warning.infoURL", "");
lockPref("browser.search.searchEnginesURL", "");
lockPref("browser.uitour.themeOrigin", "");
lockPref("devtools.webide.adbAddonURL", "");
lockPref("extensions.getAddons.compatOverides.url", "");
defaultPref("extensions.getAddons.get.url", "");
defaultPref("extensions.getAddons.langpacks.url", "");
defaultPref("extensions.getAddons.link.url", "");
defaultPref("extensions.getAddons.search.browseURL", "");
lockPref("extensions.getAddons.themes.browseURL", "");
lockPref("services.sync.addons.trustedSourceHostnames", "");
lockPref("toolkit.datacollection.infoURL", "");
lockPref("xpinstall.signatures.devInfoURL", "");
lockPref("browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.searchEngines", "");
lockPref("browser.newtabpage.activity-stream.fxaccounts.endpoint", "");
defaultPref("extensions.update.url", "");
lockPref("browser.newtabpage.activity-stream.feeds.section.topstories.options", "");
lockPref("lightweightThemes.recommendedThemes", "");
lockPref("services.sync.maxResyncs", "");
lockPref("services.sync.telemetry.maxPayloadCount", "");
lockPref("services.sync.addons.ignoreUserEnabledChanges", "");
lockPref("services.sync.engine.addons", "");
lockPref("services.sync.engine.addresses", "");
lockPref("services.sync.engine.bookmarks", "");
lockPref("services.sync.engine.bookmarks.buffer", "");
lockPref("services.sync.engine.creditcards", "");
lockPref("services.sync.engine.creditcards.available", "");
lockPref("services.sync.engine.history", "");
lockPref("services.sync.engine.passwords", "");
lockPref("services.sync.engine.prefs", "");
lockPref("services.sync.engine.tabs", "");
lockPref("services.sync.log.appender.file.logOnError", "");
lockPref("services.sync.log.appender.file.logOnSuccess", "");
lockPref("services.sync.log.cryptoDebug", "");
lockPref("services.sync.sendVersionInfo", "");
lockPref("services.sync.syncedTabs.showRemoteIcons", "");
lockPref("services.sync.prefs.sync.accessibility.blockautorefresh", "");
lockPref("services.sync.prefs.sync.accessibility.browsewithcaret", "");
lockPref("services.sync.prefs.sync.accessibility.typeaheadfind", "");
lockPref("services.sync.prefs.sync.accessibility.typeaheadfind.linksonly", "");
lockPref("services.sync.prefs.sync.addons.ignoreUserEnabledChanges", "");
lockPref("services.sync.prefs.sync.browser.contentblocking.enabled", "");
lockPref("services.sync.prefs.sync.browser.ctrlTab.recentlyUsedOrder", "");
lockPref("services.sync.prefs.sync.browser.download.useDownloadDir", "");
lockPref("services.sync.prefs.sync.browser.formfill.enable", "");
lockPref("services.sync.prefs.sync.browser.link.open_newwindow", "");
lockPref("services.sync.prefs.sync.browser.newtabpage.enabled", "");
lockPref("services.sync.prefs.sync.browser.newtabpage.pinned", "");
lockPref("services.sync.prefs.sync.browser.newtabpage.activity-stream.section.highlights.includePocket", "");
lockPref("services.sync.prefs.sync.browser.newtabpage.activity-stream.section.highlights.includeVisited", "");
lockPref("services.sync.prefs.sync.browser.newtabpage.activity-stream.section.highlights.includeBookmarks", "");
lockPref("services.sync.prefs.sync.browser.offline-apps.notify", "");
lockPref("services.sync.prefs.sync.browser.search.update", "");
lockPref("services.sync.prefs.sync.browser.sessionstore.restore_on_demand", "");
lockPref("services.sync.prefs.sync.browser.startup.homepage", "");
lockPref("services.sync.prefs.sync.browser.startup.page", "");
lockPref("services.sync.prefs.sync.browser.tabs.loadInBackground", "");
lockPref("services.sync.prefs.sync.browser.tabs.warnOnClose", "");
lockPref("services.sync.prefs.sync.browser.tabs.warnOnOpen", "");
lockPref("services.sync.prefs.sync.browser.urlbar.autocomplete.enabled", "");
lockPref("services.sync.prefs.sync.browser.urlbar.matchBuckets", "");
lockPref("services.sync.prefs.sync.browser.urlbar.maxRichResults", "");
lockPref("services.sync.prefs.sync.browser.urlbar.suggest.bookmark", "");
lockPref("services.sync.prefs.sync.browser.urlbar.suggest.history", "");
lockPref("services.sync.prefs.sync.browser.urlbar.suggest.history.onlyTyped", "");
lockPref("services.sync.prefs.sync.browser.urlbar.suggest.openpage", "");
lockPref("services.sync.prefs.sync.browser.urlbar.suggest.searches", "");
lockPref("services.sync.prefs.sync.dom.disable_open_during_load", "");
lockPref("services.sync.prefs.sync.dom.disable_window_flip", "");
lockPref("services.sync.prefs.sync.dom.disable_window_move_resize", "");
lockPref("services.sync.prefs.sync.dom.event.contextmenu.enabled", "");
lockPref("services.sync.prefs.sync.extensions.personas.current", "");
lockPref("services.sync.prefs.sync.extensions.update.enabled", "");
lockPref("services.sync.prefs.sync.intl.accept_languages", "");
lockPref("services.sync.prefs.sync.layout.spellcheckDefault", "");
lockPref("services.sync.prefs.sync.lightweightThemes.selectedThemeID", "");
lockPref("services.sync.prefs.sync.lightweightThemes.usedThemes", "");
lockPref("services.sync.prefs.sync.network.cookie.cookieBehavior", "");
lockPref("services.sync.prefs.sync.network.cookie.lifetimePolicy", "");
lockPref("services.sync.prefs.sync.network.cookie.thirdparty.sessionOnly", "");
lockPref("services.sync.prefs.sync.permissions.default.image", "");
lockPref("services.sync.prefs.sync.pref.advanced.images.disable_button.view_image", "");
lockPref("services.sync.prefs.sync.pref.advanced.javascript.disable_button.advanced", "");
lockPref("services.sync.prefs.sync.pref.downloads.disable_button.edit_actions", "");
lockPref("services.sync.prefs.sync.pref.privacy.disable_button.cookie_exceptions", "");
lockPref("services.sync.prefs.sync.privacy.clearOnShutdown.cache", "");
lockPref("services.sync.prefs.sync.privacy.clearOnShutdown.cookies", "");
lockPref("services.sync.prefs.sync.privacy.clearOnShutdown.downloads", "");
lockPref("services.sync.prefs.sync.privacy.clearOnShutdown.formdata", "");
lockPref("services.sync.prefs.sync.privacy.clearOnShutdown.history", "");
lockPref("services.sync.prefs.sync.privacy.clearOnShutdown.offlineApps", "");
lockPref("services.sync.prefs.sync.privacy.clearOnShutdown.sessions", "");
lockPref("services.sync.prefs.sync.privacy.clearOnShutdown.siteSettings", "");
lockPref("services.sync.prefs.sync.privacy.donottrackheader.enabled", "");
lockPref("services.sync.prefs.sync.privacy.reduceTimerPrecision", "");
lockPref("services.sync.prefs.sync.privacy.resistFingerprinting", "");
lockPref("services.sync.prefs.sync.privacy.resistFingerprinting.reduceTimerPrecision.jitter", "");
lockPref("services.sync.prefs.sync.privacy.resistFingerprinting.reduceTimerPrecision.microseconds", "");
lockPref("services.sync.prefs.sync.privacy.sanitize.sanitizeOnShutdown", "");
lockPref("services.sync.prefs.sync.privacy.trackingprotection.enabled", "");
lockPref("services.sync.prefs.sync.privacy.trackingprotection.pbmode.enabled", "");
lockPref("services.sync.prefs.sync.security.OCSP.enabled", "");
lockPref("services.sync.prefs.sync.security.OCSP.require", "");
lockPref("services.sync.prefs.sync.security.default_personal_cert", "");
lockPref("services.sync.prefs.sync.security.tls.version.max", "");
lockPref("services.sync.prefs.sync.security.tls.version.min", "");
lockPref("services.sync.prefs.sync.services.sync.syncedTabs.showRemoteIcons", "");
lockPref("services.sync.prefs.sync.spellchecker.dictionary", "");
lockPref("services.sync.prefs.sync.xpinstall.whitelist.required", "");
lockPref("browser.chrome.errorReporter.publicKey", "");
lockPref("prio.publicKeyA", "");
lockPref("prio.publicKeyB", "");
// Extensions
defaultPref("extensions.webextensions.restrictedDomains", "");
lockPref("extensions.webextensions.identity.redirectDomain", "");
defaultPref("extensions.webextensions.base-content-security-policy", "");
lockPref("security.csp.enable", "");
lockPref("security.csp.experimentalEnabled", "");
lockPref("security.csp.enable_violation_events", "");
defaultPref("extensions.webextensions.tabhide.enabled", "");
lockPref("extensions.webcompat-reporter.newIssueEndpoint", "");
lockPref("extensions.webcompat-reporter.enabled", "");
defaultPref("extensions.webextensions.background-delayed-startup", "");
// Performance
defaultPref("layout.frame_rate.precise", "");
defaultPref("webgl.force-enabled", "");
defaultPref("layers.acceleration.force-enabled", "");
defaultPref("gfx.direct2d.disabled", "");
defaultPref("layers.acceleration.disabled", "");
defaultPref("html5.offmainthread", "");
defaultPref("layers.offmainthreadcomposition.enabled", "");
defaultPref("layers.offmainthreadcomposition.async-animations", "");
defaultPref("layers.async-video.enabled", "");
defaultPref("browser.tabs.animate", "");
defaultPref("webgl.disabled", "");
lockPref("webgl.enable-webgl2", "");
lockPref("webgl.min_capability_mode", "");
lockPref("pdfjs.enableWebGL", "");
lockPref("webgl.disable-extensions", "");
lockPref("webgl.disable-fail-if-major-performance-caveat", "");
lockPref("webgl.enable-debug-renderer-info", "");
lockPref("javascript.options.shared_memory", "");
lockPref("dom.serviceWorkers.enabled", "");
// Security
lockPref("security.insecure_password.ui.enabled", "");
lockPref("security.insecure_field_warning.contextual.enabled", "");
lockPref("network.stricttransportsecurity.preloadlist", "");
lockPref("security.ssl.disable_session_identifiers", "");
defaultPref("network.dns.localDomains", "");
lockPref("security.tls.version.fallback-limit", "");
lockPref("security.tls.version.min", "");
lockPref("security.cert_pinning.enforcement_level", "");
lockPref("security.pki.sha1_enforcement_level", "");
lockPref("security.ssl.treat_unsafe_negotiation_as_broken", "");
lockPref("browser.ssl_override_behavior", "");
lockPref("security.ssl.errorReporting.automatic", "");
lockPref("security.ssl.errorReporting.url", "");
lockPref("security.OCSP.enabled", "");
lockPref("security.OCSP.require", "");
lockPref("security.ssl.enable_ocsp_stapling", "");
lockPref("security.ssl.errorReporting.enabled", "");
lockPref("security.mixed_content.upgrade_display_content", "");
lockPref("security.mixed_content.block_object_subrequest", "");
lockPref("security.mixed_content.block_display_content", "");
lockPref("security.mixed_content.block_active_content", "");
lockPref("security.insecure_connection_icon.enabled", "");
lockPref("security.insecure_connection_icon.pbmode.enabled", "");
lockPref("security.insecure_connection_text.enabled", "");
lockPref("security.ssl3.rsa_des_ede3_sha", "");
lockPref("security.ssl3.rsa_aes_256_sha", "");
lockPref("security.ssl3.rsa_aes_128_sha", "");
lockPref("security.ssl3.ecdh_ecdsa_rc4_128_sha", "");
lockPref("security.ssl3.ecdh_rsa_rc4_128_sha", "");
lockPref("security.ssl3.rsa_seed_sha", "");
// Protection
lockPref("general.config.filename", "");
// General
lockPref("browser.onboarding.notification.finished", "");
lockPref("browser.onboarding.tour.onboarding-tour-customize.completed", "");
lockPref("browser.onboarding.tour.onboarding-tour-performance.completed", "");
lockPref("devtools.onboarding.telemetry.logged", "");
lockPref("services.sync.engine.addresses.available", "");
lockPref("browser.bookmarks.restore_default_bookmarks", "");
lockPref("pdfjs.previousHandler.alwaysAskBeforeHandling", "");
lockPref("pdfjs.enabledCache.state", "");
lockPref("pref.general.disable_button.default_browser", "");
lockPref("pref.privacy.disable_button.view_passwords", "");
lockPref("identity.mobilepromo.android", "");
lockPref("extensions.systemAddon.update.url", "");
lockPref("datareporting.healthreport.infoURL", "");
lockPref("browser.urlbar.daysBeforeHidingSuggestionsPrompt", "");
lockPref("browser.urlbar.searchSuggestionsChoice", "");
lockPref("browser.urlbar.timesBeforeHidingSuggestionsHint", "");
lockPref("browser.shell.didSkipDefaultBrowserCheckOnFirstRun", "");
lockPref("app.feedback.baseURL", "");
lockPref("app.normandy.enabled", "");
lockPref("app.normandy.api_url", "");
lockPref("app.normandy.first_run", "");
lockPref("app.normandy.user_id", "");
lockPref("app.releaseNotesURL", "");
lockPref("app.update.auto", "");
defaultPref("extensions.update.autoUpdateDefault", "");
lockPref("app.update.staging.enabled", "");
lockPref("app.update.silent", "");
lockPref("app.update.lastUpdateTime.telemetry_modules_ping", "");
lockPref("app.update.url.details", "");
lockPref("app.update.url.manual", "");
lockPref("app.vendorURL", "");
lockPref("breakpad.reportURL", "");
lockPref("browser.chrome.errorReporter.submitUrl", "");
lockPref("browser.chrome.errorReporter.enabled", "");
lockPref("browser.ping-centre.staging.endpoint", "");
lockPref("browser.ping-centre.telemetry", "");
lockPref("browser.safebrowsing.id", "");
lockPref("browser.safebrowsing.provider.google4.pver", "");
lockPref("browser.safebrowsing.provider.mozilla.pver", "");
lockPref("browser.safebrowsing.allowOverride", "");
lockPref("browser.safebrowsing.blockedURIs.enabled", "");
lockPref("browser.safebrowsing.downloads.enabled", "");
lockPref("browser.safebrowsing.downloads.remote.block_dangerous", "");
lockPref("browser.safebrowsing.downloads.remote.block_dangerous_host", "");
lockPref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", "");
lockPref("browser.safebrowsing.downloads.remote.block_uncommon", "");
lockPref("browser.safebrowsing.downloads.remote.enabled", "");
lockPref("browser.safebrowsing.downloads.remote.url", "");
lockPref("browser.safebrowsing.malware.enabled", "");
lockPref("browser.safebrowsing.passwords.enabled", "");
lockPref("browser.safebrowsing.phishing.enabled", "");
lockPref("browser.safebrowsing.provider.google4.advisoryURL", "");
lockPref("browser.safebrowsing.provider.google4.dataSharing.enabled", "");
lockPref("browser.safebrowsing.provider.google4.dataSharingURL", "");
lockPref("browser.safebrowsing.provider.google4.gethashURL", "");
lockPref("browser.safebrowsing.provider.google4.lists", "");
lockPref("browser.safebrowsing.provider.google4.reportMalwareMistakeURL", "");
lockPref("browser.safebrowsing.provider.google4.reportPhishMistakeURL", "");
lockPref("browser.safebrowsing.provider.google4.reportURL", "");
lockPref("browser.safebrowsing.provider.google4.updateURL", "");
lockPref("browser.safebrowsing.provider.google4.lastupdatetime", "");
lockPref("browser.safebrowsing.provider.google4.nextupdatetime", "");
lockPref("browser.safebrowsing.provider.google.advisoryURL", "");
lockPref("browser.safebrowsing.provider.google.gethashURL", "");
lockPref("browser.safebrowsing.provider.google.lastupdatetime", "");
lockPref("browser.safebrowsing.provider.google.lists", "");
lockPref("browser.safebrowsing.provider.google.nextupdatetime", "");
lockPref("browser.safebrowsing.provider.google.pver", "");
lockPref("browser.safebrowsing.provider.google.reportMalwareMistakeURL", "");
lockPref("browser.safebrowsing.provider.google.reportPhishMistakeURL", "");
lockPref("browser.safebrowsing.provider.google.reportURL", "");
lockPref("browser.safebrowsing.provider.google.updateURL", "");
lockPref("browser.safebrowsing.provider.mozilla.gethashURL", "");
lockPref("browser.safebrowsing.provider.mozilla.lastupdatetime", "");
lockPref("browser.safebrowsing.provider.mozilla.nextupdatetime", "");
lockPref("browser.safebrowsing.provider.mozilla.updateURL", "");
lockPref("browser.safebrowsing.reportPhishURL", "");
lockPref("browser.search.suggest.enabled", "");
lockPref("captivedetect.canonicalURL", "");
lockPref("datareporting.policy.firstRunURL", "");
lockPref("devtools.devedition.promo.url", "");
lockPref("devtools.devices.url", "");
lockPref("devtools.gcli.imgurUploadURL", "");
lockPref("devtools.gcli.jquerySrc", "");
lockPref("devtools.gcli.underscoreSrc", "");
lockPref("devtools.telemetry.supported_performance_marks", "");
lockPref("dom.battery.enabled", "");
lockPref("dom.permissions.enabled", "");
lockPref("dom.popup_maximum", "");
lockPref("dom.registerProtocolHandler.insecure.enabled", "");
lockPref("extensions.blocklist.detailsURL", "");
lockPref("extensions.blocklist.itemURL", "");
lockPref("extensions.blocklist.url", "");
defaultPref("extensions.update.background.url", "");
defaultPref("extensions.getAddons.showPane", "");
lockPref("extensions.webservice.discoverURL", "");
lockPref("gecko.handlerService.schemes.mailto.0.uriTemplate", "");
lockPref("gecko.handlerService.schemes.mailto.1.uriTemplate", "");
lockPref("gecko.handlerService.schemes.webcal.0.uriTemplate", "");
lockPref("geo.enabled", "");
lockPref("geo.wifi.uri", "");
lockPref("identity.fxaccounts.auth.uri", "");
lockPref("identity.fxaccounts.remote.oauth.uri", "");
lockPref("identity.fxaccounts.remote.profile.uri", "");
lockPref("identity.mobilepromo.ios", "");
lockPref("layout.css.visited_links_enabled", "");
lockPref("lpbmode.enabled", "");
lockPref("mailnews.messageid_browser.url", "");
lockPref("mailnews.mx_service_url", "");
lockPref("network.predictor.enabled", "");
lockPref("network.predictor.cleaned-up", "");
lockPref("network.predictor.enable-prefetch", "");
lockPref("plugins.crash.supportUrl", "");
lockPref("services.sync.clients.lastSync", "");
lockPref("services.sync.clients.lastSyncLocal", "");
lockPref("services.sync.declinedEngines", "");
lockPref("services.sync.enabled", "");
lockPref("services.sync.globalScore", "");
lockPref("services.sync.jpake.serverURL", "");
lockPref("services.sync.migrated", "");
lockPref("services.sync.nextSync", "");
lockPref("services.sync.prefs.sync.browser.safebrowsing.downloads.enabled", "");
lockPref("services.sync.prefs.sync.browser.safebrowsing.malware.enabled", "");
lockPref("services.sync.prefs.sync.browser.safebrowsing.passwords.enabled", "");
lockPref("services.sync.prefs.sync.browser.safebrowsing.phishing.enabled", "");
lockPref("services.sync.serverURL", "");
lockPref("services.sync.tabs.lastSync", "");
lockPref("services.sync.tabs.lastSyncLocal", "");
lockPref("sync.enabled", "");
lockPref("sync.jpake.serverURL", "");
lockPref("sync.serverURL", "");
lockPref("toolkit.crashreporter.infoURL", "");
lockPref("toolkit.telemetry.archive.enabled", "");
lockPref("toolkit.telemetry.updatePing.enabled", "");
lockPref("toolkit.telemetry.bhrPing.enabled", "");
lockPref("toolkit.telemetry.cachedClientID", "");
lockPref("toolkit.telemetry.enabled", "");
lockPref("toolkit.telemetry.firstShutdownPing.enabled", "");
lockPref("toolkit.telemetry.hybridContent.enabled", "");
lockPref("toolkit.telemetry.infoURL", "");
lockPref("toolkit.telemetry.newProfilePing.enabled", "");
lockPref("toolkit.telemetry.previousBuildID", "");
lockPref("toolkit.telemetry.prompted", "");
lockPref("toolkit.telemetry.rejected", "");
lockPref("toolkit.telemetry.reportingpolicy.firstRun", "");
lockPref("toolkit.telemetry.server", "");
lockPref("toolkit.telemetry.server_owner", "");
lockPref("toolkit.telemetry.shutdownPingSender.enabled", "");
lockPref("toolkit.telemetry.unified", "");
lockPref("toolkit.telemetry.coverage.opt-out", "");
lockPref("webextensions.storage.sync.serverURL", "");
lockPref("extensions.screenshots.upload-disabled", "");
lockPref("network.http.referer.trimmingPolicy", "");
lockPref("browser.tabs.closeTabByDblclick", "");
lockPref("datareporting.healthreport.uploadEnabled", "");
lockPref("datareporting.policy.dataSubmissionEnabled", "");
lockPref("dom.event.contextmenu.enabled", "");
lockPref("dom.event.clipboardevents.enabled", "");
lockPref("network.IDN_show_punycode", "");
lockPref("extensions.pocket.enabled", "");
lockPref("extensions.pocket.site", "");
lockPref("extensions.pocket.oAuthConsumerKey", "");
lockPref("extensions.pocket.api", "");
lockPref("browser.aboutHomeSnippets.updateUrl", "");
lockPref("general.buildID.override", "");
lockPref("browser.startup.homepage_override.buildID", "");
lockPref("browser.send_pings", "");
lockPref("browser.send_pings.require_same_host", "");
lockPref("browser.cache.offline.enable", "");
lockPref("network.prefetch-next", "");
lockPref("network.http.speculative-parallel-limit", "");
lockPref("media.peerconnection.enabled", "");
lockPref("dom.enable_performance", "");
lockPref("dom.enable_performance_navigation_timing", "");
lockPref("dom.enable_user_timing", "");
lockPref("dom.webaudio.enabled", "");
lockPref("geo.wifi.logging.enabled", "");
lockPref("beacon.enabled", "");
lockPref("media.webspeech.recognition.enable", "");
lockPref("dom.vr.enabled", "");
lockPref("dom.vibrator.enabled", "");
lockPref("browser.search.region", "");
lockPref("browser.search.geoip.url", "");
lockPref("browser.search.geoSpecificDefaults.url", "");
lockPref("browser.search.geoSpecificDefaults", "");
lockPref("browser.urlbar.trimURLs", "");
lockPref("browser.fixup.alternate.enabled", "");
lockPref("browser.fixup.hide_user_pass", "");
lockPref("network.manage-offline-status", "");
lockPref("security.fileuri.strict_origin_policy", "");
lockPref("gfx.font_rendering.opentype_svg.enabled", "");
lockPref("network.protocol-handler.warn-external-default", "");
lockPref("network.protocol-handler.external.http", "");
lockPref("network.protocol-handler.external.https", "");
lockPref("network.protocol-handler.external.javascript", "");
lockPref("network.protocol-handler.external.moz-extension", "");
lockPref("network.protocol-handler.external.ftp", "");
lockPref("network.protocol-handler.external.file", "");
lockPref("network.protocol-handler.external.about", "");
lockPref("network.protocol-handler.external.chrome", "");
lockPref("network.protocol-handler.external.blob", "");
lockPref("network.protocol-handler.external.data", "");
lockPref("network.protocol-handler.expose-all", "");
lockPref("network.protocol-handler.expose.http", "");
lockPref("network.protocol-handler.expose.https", "");
lockPref("network.protocol-handler.expose.javascript", "");
lockPref("network.protocol-handler.expose.moz-extension", "");
lockPref("network.protocol-handler.expose.ftp", "");
lockPref("network.protocol-handler.expose.file", "");
lockPref("network.protocol-handler.expose.about", "");
lockPref("network.protocol-handler.expose.chrome", "");
lockPref("network.protocol-handler.expose.blob", "");
lockPref("network.protocol-handler.expose.data", "");
lockPref("security.dialog_enable_delay", "");
defaultPref("extensions.getAddons.cache.enabled", "");
lockPref("lightweightThemes.update.enabled", "");
lockPref("lightweightThemes.persisted.headerURL", "");
lockPref("lightweightThemes.persisted.footerURL", "");
lockPref("plugin.state.flash", "");
lockPref("dom.ipc.plugins.flash.subprocess.crashreporter.enabled", "");
lockPref("dom.ipc.plugins.reportCrashURL", "");
lockPref("shumway.disabled", "");
lockPref("plugin.state.libgnome-shell-browser-plugin", "");
lockPref("plugins.click_to_play", "");
lockPref("plugin.sessionPermissionNow.intervalInMinutes", "");
defaultPref("extensions.update.enabled", "");
lockPref("extensions.blocklist.enabled", "");
lockPref("extensions.systemAddon.update.enabled", "");
lockPref("devtools.webide.enabled", "");
lockPref("devtools.webide.autoinstallADBExtension", "");
lockPref("devtools.remote.adb.extensionURL", "");
lockPref("devtools.remote.adb.extensionID", "");
lockPref("devtools.debugger.force-local", "");
lockPref("network.allow-experiments", "");
lockPref("browser.tabs.crashReporting.sendReport", "");
lockPref("browser.crashReports.unsubmittedCheck.enabled", "");
lockPref("browser.crashReports.unsubmittedCheck.autoSubmit2", "");
lockPref("app.shield.optoutstudies.enabled", "");
lockPref("browser.newtabpage.activity-stream.feeds.section.topstories", "");
lockPref("browser.newtabpage.activity-stream.section.highlights.includePocket", "");
lockPref("browser.newtabpage.activity-stream.showSponsored", "");
lockPref("browser.newtabpage.activity-stream.aboutHome.enabled", "");
lockPref("browser.newtabpage.activity-stream.asrouter.messageProviders", "");
lockPref("browser.newtabpage.activity-stream.asrouter.devtoolsEnableds", "");
lockPref("browser.newtabpage.activity-stream.telemetry", "");
lockPref("browser.newtabpage.activity-stream.telemetry.ping.endpoint", "");
lockPref("browser.newtabpage.activity-stream.feeds.telemetry", "");
lockPref("browser.newtabpage.activity-stream.feeds.snippets", "");
lockPref("browser.newtabpage.activity-stream.disableSnippets", "");
lockPref("browser.newtabpage.activity-stream.default.sites", "");
lockPref("browser.newtabpage.activity-stream.discoverystream.config", "");
lockPref("browser.newtabpage.activity-stream.discoverystream.endpoints", "");
lockPref("browser.newtabpage.activity-stream.feeds.asrouterfeed", "");
lockPref("browser.newtabpage.activity-stream.feeds.discoverystreamfeed", "");
lockPref("browser.newtabpage.activity-stream.feeds.newtabinit", "");
lockPref("browser.newtabpage.activity-stream.feeds.places", "");
lockPref("browser.newtabpage.activity-stream.feeds.systemtick", "");
lockPref("browser.newtabpage.activity-stream.improvesearch.handoffToAwesomebar", "");
lockPref("browser.newtab.preload", "");
lockPref("browser.urlbar.suggest.searches", "");
lockPref("browser.urlbar.userMadeSearchSuggestionsChoice", "");
lockPref("browser.search.update", "");
lockPref("network.captive-portal-service.enabled", "");
lockPref("network.negotiate-auth.allow-insecure-ntlm-v1", "");
lockPref("network.negotiate-auth.allow-insecure-ntlm-v1-https", "");
lockPref("signon.formlessCapture.enabled", "");
lockPref("browser.helperApps.deleteTempFileOnExit", "");
lockPref("browser.pagethumbnails.capturing_disabled", "");
// ghacks user.js
lockPref("toolkit.coverage.endpoint.base", "");
lockPref("toolkit.coverage.opt-out", "");
lockPref("browser.download.manager.addToRecentDocs", "");
lockPref("browser.download.hide_plugins_without_extensions", "");
lockPref("webchannel.allowObject.urlWhitelist", "");
lockPref("browser.cache.offline.insecure.enable", "");
lockPref("network.http.redirection-limit", "");
lockPref("offline-apps.allow_by_default", "");
lockPref("extensions.enabledScopes", "");
lockPref("extensions.autoDisableScopes", "");
lockPref("xpinstall.whitelist.required", "");
lockPref("dom.push.enabled", "");
lockPref("dom.push.connection.enabled", "");
lockPref("dom.push.serverURL", "");
lockPref("dom.push.userAgentID", "");
lockPref("security.data_uri.block_toplevel_data_uri_navigations", "");
lockPref("ui.use_standins_for_native_colors", "");
lockPref("services.blocklist.onecrl.collection", "");
lockPref("services.blocklist.addons.collection", "");
lockPref("services.blocklist.plugins.collection", "");
lockPref("services.blocklist.gfx.collection", "");
lockPref("browser.startup.blankWindow", "");
lockPref("dom.event.highrestimestamp.enabled", "");
lockPref("privacy.trackingprotection.introURL", "");
lockPref("network.http.altsvc.enabled", "");
lockPref("network.http.altsvc.oe", "");
lockPref("network.file.disable_unc_paths", "");
lockPref("network.gio.supported-protocols", "");
lockPref("browser.urlbar.usepreloadedtopurls.enabled", "");
lockPref("browser.urlbar.speculativeConnect.enabled", "");
lockPref("browser.urlbar.oneOffSearches", "");
lockPref("network.auth.subresource-img-cross-origin-http-auth-allow", "");
lockPref("browser.shell.shortcutFavicons", "");
lockPref("alerts.showFavicons", "");
lockPref("security.ssl.require_safe_negotiation", "");
lockPref("security.tls.enable_0rtt_data", "");
lockPref("browser.xul.error_pages.expert_bad_cert", "");
lockPref("font.blacklist.underline_offset", "");
lockPref("gfx.font_rendering.graphite.enabled", "");
lockPref("network.http.referer.XOriginTrimmingPolicy", "");
lockPref("network.http.referer.spoofSource", "");
lockPref("plugin.default.state", "");
lockPref("plugin.defaultXpi.state", "");
lockPref("canvas.capturestream.enabled", "");
lockPref("dom.imagecapture.enabled", "");
lockPref("gfx.offscreencanvas.enabled", "");
lockPref("dom.disable_window_open_feature.close", "");
lockPref("dom.disable_window_open_feature.location", "");
lockPref("dom.disable_window_open_feature.menubar", "");
lockPref("dom.disable_window_open_feature.minimizable", "");
lockPref("dom.disable_window_open_feature.personalbar", "");
lockPref("dom.disable_window_open_feature.resizable", "");
lockPref("dom.disable_window_open_feature.status", "");
lockPref("dom.disable_window_open_feature.titlebar", "");
lockPref("dom.disable_window_open_feature.toolbar", "");
lockPref("dom.disable_window_move_resize", "");
lockPref("dom.IntersectionObserver.enabled", "");
lockPref("accessibility.force_disabled", "");
lockPref("browser.uitour.enabled", "");
lockPref("browser.uitour.url", "");
lockPref("middlemouse.contentLoadURL", "");
lockPref("permissions.manager.defaultsUrl", "");
// ESR 60
lockPref("browser.search.countryCode", "");
lockPref("experiments.activeExperiment", "");
lockPref("experiments.enabled", "");
lockPref("experiments.manifest.uri", "");
lockPref("experiments.supported", "");
lockPref("network.jar.block-remote-files", "");
lockPref("network.jar.open-unsafe-types", "");
lockPref("plugin.state.java", "");
lockPref("services.blocklist.update_enabled", "");
lockPref("shield.savant.enabled", "");
// Windows
lockPref("webgl.dxgl.enabled", "");
lockPref("plugin.scan.plid.all", "");
lockPref("browser.taskbar.lists.enabled", "");
lockPref("browser.taskbar.lists.frequent.enabled", "");
lockPref("browser.taskbar.lists.recent.enabled", "");
lockPref("browser.taskbar.lists.tasks.enabled", "");
lockPref("browser.taskbar.previews.enable", "");
lockPref("network.protocol-handler.external.ms-windows-store", "");
lockPref("app.update.service.enabled", "");
lockPref("toolkit.winRegisterApplicationRestart", "");
lockPref("security.family_safety.mode", "");
// Fingerprinting
defaultPref("privacy.resistFingerprinting", "");
defaultPref("privacy.resistFingerprinting.block_mozAddonManager", "");
// Controversial
lockPref("dom.indexedDB.enabled", "");
lockPref("dom.w3c_pointer_events.enabled", "");
// Defaulting
defaultPref("privacy.spoof_english", "");
defaultPref("network.http.referer.defaultPolicy", "");
defaultPref("network.http.referer.defaultPolicy.pbmode", "");
defaultPref("privacy.userContext.ui.enabled", "");
defaultPref("privacy.userContext.enabled", "");
defaultPref("privacy.userContext.longPressBehavior", "");
defaultPref("browser.download.autohideButton", "");
defaultPref("accessibility.typeaheadfind", "");
defaultPref("clipboard.autocopy", "");
defaultPref("layout.spellcheckDefault", "");
defaultPref("browser.tabs.closeWindowWithLastTab", "");
defaultPref("general.autoScroll", "");
defaultPref("pdfjs.disabled", "");
defaultPref("dom.disable_open_during_load", "");
defaultPref("browser.link.open_newwindow", "");
defaultPref("browser.link.open_newwindow.restriction", "");
defaultPref("network.proxy.autoconfig_url", "");
defaultPref("network.proxy.autoconfig_url.include_path", "");
defaultPref("network.proxy.socks_remote_dns", "");
defaultPref("network.proxy.socks_version", "");
defaultPref("browser.tabs.loadBookmarksInTabs", "");
defaultPref("devtools.debugger.remote-enabled", "");
defaultPref("devtools.chrome.enabled", "");
defaultPref("general.useragent.site_specific_overrides", "");
defaultPref("extensions.ui.experiment.hidden", "");
// User Settings
// User Settings: Proxy
// User Settings: DRM/CDM
lockPref("media.eme.enabled", "");
lockPref("media.gmp-provider.enabled", "");
lockPref("media.gmp-manager.url", "");
lockPref("media.gmp-manager.url.override", "");
lockPref("media.gmp-manager.updateEnabled", "");
lockPref("media.gmp.trial-create.enabled", "");
lockPref("media.gmp-widevinecdm.visible", "");
lockPref("media.gmp-widevinecdm.enabled", "");
lockPref("media.gmp-widevinecdm.autoupdate", "");
lockPref("media.gmp-gmpopenh264.enabled", "");
lockPref("media.gmp-gmpopenh264.autoupdate", "");
defaultPref("media.peerconnection.video.enabled", "");
lockPref("media.gmp-eme-adobe.enabled", "");
lockPref("media.gmp-manager.certs.2.commonName", "");
lockPref("media.gmp-manager.certs.1.commonName", "");
// User Settings: Default Browser
lockPref("browser.shell.checkDefaultBrowser", "");
// User Settings: Autoplay
lockPref("media.autoplay.default", "");
// User Settings: Start Page
lockPref("browser.newtabpage.activity-stream.feeds.section.highlights", "");
lockPref("browser.newtabpage.activity-stream.section.highlights.includeBookmarks", "");
lockPref("browser.newtabpage.activity-stream.section.highlights.includeDownloads", "");
lockPref("browser.newtabpage.activity-stream.section.highlights.includeVisited", "");
lockPref("browser.newtabpage.activity-stream.prerender", "");
// User Settings: History
lockPref("browser.sessionhistory.max_entries", "");
lockPref("browser.urlbar.filter.javascript", "");
defaultPref("browser.uiCustomization.state", "");
defaultPref("browser.uidensity", "");
defaultPref("browser.tabs.drawInTitlebar", "");
pref("startup.homepage_override_url", "");
pref("startup.homepage_welcome_url", "");
pref("startup.homepage_welcome_url.additional", "");
defaultPref("privacy.clearOnShutdown.offlineApps", "");
defaultPref("privacy.cpd.offlineApps", "");
defaultPref("privacy.sanitize.timeSpan", "");
defaultPref("browser.formfill.enable", "");
defaultPref("privacy.sanitize.sanitizeOnShutdown", "");
defaultPref("places.history.enabled", "");
defaultPref("places.history.expiration.max_pages", "");
defaultPref("privacy.history.custom", "");
// User Settings: Do Not Track
lockPref("privacy.donottrackheader.enabled", "");
lockPref("privacy.donottrackheader.value", "");
// User Settings: Theming
// User Settings: Miscellaneous
lockPref("dom.disable_beforeunload", "");
lockPref("permissions.default.geo", "");
// User Settings: Tracking Protection
lockPref("privacy.trackingprotection.enabled", "");
lockPref("privacy.trackingprotection.annotate_channels", "");
lockPref("privacy.trackingprotection.lower_network_priority", "");
lockPref("privacy.trackingprotection.pbmode.enabled", "");
lockPref("urlclassifier.trackingTable", "");
lockPref("pref.privacy.disable_button.change_blocklist", "");
lockPref("browser.contentblocking.reportBreakage.enabled", "");
lockPref("browser.contentblocking.reportBreakage.url", "");
lockPref("browser.contentblocking.rejecttrackers.reportBreakage.enabled", "");
lockPref("browser.contentblocking.rejecttrackers.ui.enabled", "");
lockPref("browser.contentblocking.trackingprotection.control-center.ui.enabled", "");
lockPref("browser.contentblocking.trackingprotection.ui.enabled", "");
// User Settings: Session
lockPref("browser.sessionstore.privacy_level", "");
lockPref("browser.sessionstore.interval", "");
// User Settings: Autofill
defaultPref("extensions.formautofill.addresses.enabled", "");
defaultPref("extensions.formautofill.available", "");
defaultPref("extensions.formautofill.creditCards.enabled", "");
defaultPref("extensions.formautofill.heuristics.enabled", "");
lockPref("signon.autofillForms", "");
lockPref("signon.autofillForms.http", "");
// User Settings: Password Manager
lockPref("signon.rememberSignons", "");
lockPref("services.sync.prefs.sync.signon.rememberSignons", "");
lockPref("signon.storeWhenAutocompleteOff", "");
// User Settings: Cookies
defaultPref("network.cookie.cookieBehavior", "");
defaultPref("network.cookie.lifetimePolicy", "");
lockPref("network.cookie.same-site.enabled", "");
lockPref("network.cookie.leave-secure-alone", "");
defaultPref("network.cookie.thirdparty.sessionOnly", "");
lockPref("network.cookie.thirdparty.nonsecureSessionOnly", "");
// User Settings: WebRTC
defaultPref("media.navigator.enabled", "");
defaultPref("media.navigator.video.enabled", "");
defaultPref("media.getusermedia.browser.enabled", "");
defaultPref("media.getusermedia.screensharing.enabled", "");
defaultPref("media.getusermedia.audiocapture.enabled", "");
defaultPref("media.peerconnection.use_document_iceservers", "");
defaultPref("media.peerconnection.identity.enabled", "");
defaultPref("media.peerconnection.identity.timeout", "");
defaultPref("media.peerconnection.turn.disable", "");
defaultPref("media.peerconnection.ice.tcp", "");
defaultPref("media.peerconnection.ice.default_address_only", "");
defaultPref("media.peerconnection.ice.no_host", "");
// User Settings: DNS
lockPref("network.trr.mode", "");
lockPref("network.trr.bootstrapAddress", "");
lockPref("network.trr.uri", "");
lockPref("network.dns.disableIPv6", "");
lockPref("network.dns.disablePrefetch", "");
lockPref("network.dns.disablePrefetchFromHTTPS", "");
// Deprecated
// Deprecated: Inactive
defaultPref("xpinstall.signatures.required", "");
defaultPref("toolkit.legacyUserProfileCustomizations.stylesheets", "");
defaultPref("devtools.selfxss.count", "");
// Deprecated: Active
lockPref("browser.onboarding.enabled", "");
lockPref("devtools.webide.autoinstallADBHelper", "");
lockPref("dom.mozTCPSocket.enabled", "");
lockPref("app.update.enabled", "");
lockPref("browser.bookmarks.max_backups", "");
lockPref("browser.casting.enabled", "");
lockPref("browser.newtabpage.activity-stream.enabled", "");
lockPref("browser.newtabpage.directory.ping", "");
lockPref("browser.newtabpage.directory.source", "");
lockPref("browser.newtabpage.enhanced", "");
lockPref("browser.pocket.enabled", "");
lockPref("browser.selfsupport.url", "");
lockPref("browser.startup.homepage_override.mstone", "");
lockPref("camera.control.face_detection.enabled", "");
lockPref("datareporting.healthreport.about.reportUrl", "");
lockPref("datareporting.healthreport.service.enabled", "");
lockPref("device.sensors.enabled", "");
lockPref("devtools.webide.autoinstallFxdtAdapters", "");
lockPref("devtools.webide.adaptersAddonURL", "");
lockPref("dom.enable_resource_timing", "");
lockPref("dom.flyweb.enabled", "");
lockPref("dom.gamepad.enabled", "");
lockPref("dom.netinfo.enabled", "");
lockPref("dom.push.udp.wakeupEnabled", "");
lockPref("dom.telephony.enabled", "");
lockPref("extensions.shield-recipe-client.enabled", "");
lockPref("loop.logDomains", "");
lockPref("media.video_stats.enabled", "");
lockPref("network.websocket.enabled", "");
lockPref("reader.parse-on-load.enabled", "");
lockPref("security.xpconnect.plugin.unrestricted", "");
lockPref("social.directories", "");
lockPref("social.remote-install.enabled", "");
lockPref("social.whitelist", "");
lockPref("security.ssl3.ecdhe_ecdsa_rc4_128_sha", "");
lockPref("security.ssl3.ecdhe_rsa_rc4_128_sha", "");
lockPref("security.ssl3.rsa_rc4_128_md5", "");
lockPref("security.ssl3.rsa_rc4_128_sha", "");
lockPref("security.tls.unrestricted_rc4_fallback", "");

View file

@ -1,133 +0,0 @@
require "json"
require "ecr"
require "file_utils"
module LibrewolfParser
class LibrewolfSettings
include JSON::Serializable
property name : String
property subcategory : String
property notes : String
property section : Array(SettingsSection)
end
class SettingsSection
include JSON::Serializable
property comments : String
property notes : String?
@[JSON::Field(key: "type")]
property setting_type : String
property key : String
property value : ValueUnion
property enabled : Bool?
property references : Array(String)?
end
alias ValueUnion = Int32 | Bool | String
def self.parse_json_files(config_directory)
config_jsons = Dir.glob(config_directory.path + "/*.json")
config_directory.each_child do |child|
child_path = Path[config_directory.path].join(child)
next unless File.directory?(child_path) && !Dir.empty?(child_path.to_s)
config_jsons += Dir.glob("#{child_path}/*.json")
end
settings = {} of String => LibrewolfSettings
config_jsons.each { |config| settings[Path[config].basename.chomp(".json")] = LibrewolfSettings.from_json(File.read(config)) }
# settings = config_jsons.map { |config| [LibrewolfSettings.from_json(File.read(config)), Path[config].basename.chomp(".json")] }
# settings = settings_with_filenames.map { |config| config.last }
main_settings = settings.select { |_fname, setting| setting.subcategory.blank? }
sub_settings = settings.reject { |_fname, setting| setting.subcategory.blank? }
subcategories = sub_settings.map { |_fname, setting| setting.subcategory }.uniq
subcategory_settings = {} of String => typeof(sub_settings)
subcategories.each do |category|
subcategory_settings[category] = sub_settings.select { |_fname, setting| setting.subcategory == category }
end
[main_settings, subcategory_settings]
end
def self.build_cfg(main_settings, subcategory_settings)
main_settings = main_settings.map { |_fname, setting| setting }
sub_settings = {} of String => Array(LibrewolfSettings)
subcategory_settings.each do |category, settings|
sub_settings[category] = settings.map { |_fname, setting| setting }
end
subcategory_settings = sub_settings
tempfile = File.tempfile("librewolf.cfg")
path = tempfile.path
ecr = ECR.render("templates/librewolf.cfg.ecr")
tempfile.puts(ecr)
tempfile.close
path
end
def self.build_docs(main_settings, subcategory_settings)
tempdir = Dir.tempdir
docs_dir = Path[tempdir].join("docs")
settings_docs_dir = Path[tempdir].join("docs", "settings")
Dir.mkdir_p(settings_docs_dir.to_s)
main_settings.each do |filename, setting_json|
filename = filename + ".md"
File.open(settings_docs_dir.join(filename).to_s, "w") do |file|
file.puts(ECR.render("templates/doc.md.ecr"))
end
end
subcategory_settings.each do |category, sub_settings|
title = category
category_dir = settings_docs_dir.join(title.downcase.split(" ").join("_"))
Dir.mkdir_p(category_dir.to_s)
File.open(category_dir.join("_index.md").to_s, "w") do |file|
file.puts(ECR.render("templates/doc_index.md.ecr"))
end
sub_settings.each do |filename, setting_json|
filename = filename + ".md"
File.open(category_dir.join(filename).to_s, "w") do |file|
file.puts(ECR.render("templates/doc.md.ecr"))
end
end
end
docs_dir.to_s
end
end
config_directory = Dir.new("./librewolf.cfg")
main_settings, subcategory_settings = LibrewolfParser.parse_json_files(config_directory)
exit unless main_settings.is_a?(Hash(String, LibrewolfParser::LibrewolfSettings)) && subcategory_settings.is_a?(Hash(String, Hash(String, LibrewolfParser::LibrewolfSettings)))
tempfile = LibrewolfParser.build_cfg(main_settings, subcategory_settings)
tempdir = LibrewolfParser.build_docs(main_settings, subcategory_settings)
FileUtils.rm_rf("./dist") if Dir.exists?("./dist")
Dir.mkdir_p("./dist")
dist_directory = Dir.new("./dist")
dist_file = Path[dist_directory.path].join("librewolf.cfg")
FileUtils.cp(tempfile, dist_file.to_s)
FileUtils.rm(tempfile)
# chmod!
FileUtils.cp_r(tempdir, Path[dist_directory.path].join("docs").to_s)
FileUtils.rm_r(tempdir)

19
shard.yml Normal file
View file

@ -0,0 +1,19 @@
name: librewolf_parser
version: 0.1.0
authors:
- ohfp <1813007-ohfp@users.noreply.gitlab.com>
# dependencies:
# markd:
# github: icyleaf/markd
# tablo:
# github: hutou/tablo
targets:
librewolf_parser:
main: src/librewolf_parser.cr
crystal: 0.34.0
license: MPL2

64
src/librewolf_parser.cr Normal file
View file

@ -0,0 +1,64 @@
require "json"
require "ecr"
require "file_utils"
require "./librewolf_parser/parse_json_files.cr"
require "./librewolf_parser/builders.cr"
module LibrewolfParser
VERSION = "0.1.0"
class LibrewolfSettings
include JSON::Serializable
property name : String
property subcategory : String
property notes : String
property section : Array(SettingsSection)
end
class SettingsSection
include JSON::Serializable
property comments : String
property notes : String?
@[JSON::Field(key: "type")]
property setting_type : String
property key : String
property value : ValueUnion
property enabled : Bool?
property references : Array(String)?
end
alias ValueUnion = Int32 | Bool | String
end
config_directory = Dir.new("./librewolf.cfg")
main_settings, subcategory_settings = LibrewolfParser.parse_json_files(config_directory)
# help the compiler with inferring some types
exit unless main_settings.is_a?(Hash(String, LibrewolfParser::LibrewolfSettings)) && subcategory_settings.is_a?(Hash(String, Hash(String, LibrewolfParser::LibrewolfSettings)))
cfg_tempfile = LibrewolfParser.build_cfg(main_settings, subcategory_settings)
docs_tempdir = LibrewolfParser.build_docs(main_settings, subcategory_settings)
# TODO: should the Makefile do this?
FileUtils.rm_rf("./dist") if Dir.exists?("./dist")
Dir.mkdir_p("./dist")
dist_directory = Dir.new("./dist")
dist_file = Path[dist_directory.path].join("librewolf.cfg")
FileUtils.cp(cfg_tempfile, dist_file.to_s)
FileUtils.rm(cfg_tempfile)
File.chmod(dist_file.to_s, 0o644)
FileUtils.cp_r(docs_tempdir, Path[dist_directory.path].join("docs").to_s)
FileUtils.rm_r(docs_tempdir)

View file

@ -0,0 +1,50 @@
module LibrewolfParser
def self.build_cfg(main_settings, subcategory_settings)
main_settings = main_settings.map { |_fname, setting| setting }
sub_settings = {} of String => Array(LibrewolfSettings)
subcategory_settings.each do |category, settings|
sub_settings[category] = settings.map { |_fname, setting| setting }
end
subcategory_settings = sub_settings
tempfile = File.tempfile("librewolf.cfg")
path = tempfile.path
ecr = ECR.render("templates/librewolf.cfg.ecr")
tempfile.puts(ecr)
tempfile.close
path
end
def self.build_docs(main_settings, subcategory_settings)
tempdir = Dir.tempdir
docs_dir = Path[tempdir].join("docs")
settings_docs_dir = Path[tempdir].join("docs", "settings")
Dir.mkdir_p(settings_docs_dir.to_s)
main_settings.each do |filename, setting_json|
filename = filename + ".md"
File.open(settings_docs_dir.join(filename).to_s, "w") do |file|
file.puts(ECR.render("templates/doc.md.ecr"))
end
end
subcategory_settings.each do |category, sub_settings|
title = category
category_dir = settings_docs_dir.join(title.downcase.split(" ").join("_"))
Dir.mkdir_p(category_dir.to_s)
File.open(category_dir.join("_index.md").to_s, "w") do |file|
file.puts(ECR.render("templates/doc_index.md.ecr"))
end
sub_settings.each do |filename, setting_json|
filename = filename + ".md"
File.open(category_dir.join(filename).to_s, "w") do |file|
file.puts(ECR.render("templates/doc.md.ecr"))
end
end
end
docs_dir.to_s
end
end

View file

@ -0,0 +1,25 @@
module LibrewolfParser
def self.parse_json_files(config_directory)
config_jsons = Dir.glob(config_directory.path + "/*.json")
config_directory.each_child do |child|
child_path = Path[config_directory.path].join(child)
next unless File.directory?(child_path) && !Dir.empty?(child_path.to_s)
config_jsons += Dir.glob("#{child_path}/*.json")
end
settings = {} of String => LibrewolfSettings
config_jsons.each { |config| settings[Path[config].basename.chomp(".json")] = LibrewolfSettings.from_json(File.read(config)) }
main_settings = settings.select { |_fname, setting| setting.subcategory.blank? }
sub_settings = settings.reject { |_fname, setting| setting.subcategory.blank? }
subcategories = sub_settings.map { |_fname, setting| setting.subcategory }.uniq
subcategory_settings = {} of String => typeof(sub_settings)
subcategories.each do |category|
subcategory_settings[category] = sub_settings.select { |_fname, setting| setting.subcategory == category }
end
[main_settings, subcategory_settings]
end
end