From f29e5ede4c4d3f388e79076f3f680dbf1954533b Mon Sep 17 00:00:00 2001 From: idk Date: Sat, 6 Mar 2021 19:15:47 +0000 Subject: [PATCH] Create an installer which will work on Linux --- .gitignore | 1 + Makefile | 14 +- src/app-profile/bookmarks.html | 19 +++ src/app-profile/chrome/userChrome.css | 26 +++ src/app-profile/prefs.js | 48 ++++++ src/app-profile/storage-sync.sqlite | Bin 0 -> 131072 bytes src/app-profile/user.js | 217 ++++++++++++++++++++++++++ src/app-profile/version.txt | 1 + src/unix/i2pbrowser.sh | 19 ++- src/unix/i2pbrowserrc | 3 + src/unix/i2pconfig.sh | 38 +++++ 11 files changed, 384 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 src/app-profile/bookmarks.html create mode 100644 src/app-profile/chrome/userChrome.css create mode 100644 src/app-profile/prefs.js create mode 100755 src/app-profile/storage-sync.sqlite create mode 100644 src/app-profile/user.js create mode 100644 src/app-profile/version.txt mode change 100644 => 100755 src/unix/i2pbrowser.sh create mode 100644 src/unix/i2pbrowserrc create mode 100755 src/unix/i2pconfig.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..378eac2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build diff --git a/Makefile b/Makefile index 8b36450..bfbc23e 100644 --- a/Makefile +++ b/Makefile @@ -54,7 +54,7 @@ app-profile: build/app-profile/user.js build/app-profile/prefs.js build/app-prof app-profile.tgz: app-profile $(eval PROFILE_VERSION := $(shell cat src/app-profile/version.txt)) @echo "building app-profile tarball $(PROFILE_VERSION)" - install -m755 src/unix/i2pbrowser.sh build/app-profile/i2pbrowser.sh + install -m755 src/unix/i2pconfig.sh build/app-profile/i2pconfig.sh cd build && tar -czf app-profile-$(PROFILE_VERSION).tgz app-profile && cp app-profile-$(PROFILE_VERSION).tgz ../ build/app-profile/user.js: build/app-profile src/app-profile/user.js @@ -100,3 +100,15 @@ build/app-profile/extensions: build/app-profile build/app-profile: build mkdir -p build/app-profile + +install: + rm -rfv /etc/i2pbrowser \ + /var/lib/i2pbrowser + mkdir -p /etc/i2pbrowser \ + /var/lib/i2pbrowser + install -m644 src/unix/i2pbrowserrc /etc/i2pbrowser/i2pbrowserrc + install -m755 build/profile/i2pbrowser.sh /usr/local/bin/i2pbrowser + install -m755 build/app-profile/i2pconfig.sh /usr/local/bin/i2pconfig + cp -vr build/profile /var/lib/i2pbrowser/profile + cp -vr build/app-profile /var/lib/i2pbrowser/profile + diff --git a/src/app-profile/bookmarks.html b/src/app-profile/bookmarks.html new file mode 100644 index 0000000..23e7fce --- /dev/null +++ b/src/app-profile/bookmarks.html @@ -0,0 +1,19 @@ + + + +Bookmarks +

Bookmarks Menu

+ +

+

Recent Tags +
Search YaCy 'legwork': Search Page +
Software HTTP Freeware Home Page +

Bookmarks Toolbar

+

+

Most Visited +
I2P Anonymous Network +
Anonymous peer-to-peer distributed communication layer built with open source tools and designed to run any traditional Internet service such as email, IRC or web hosting. +

+

diff --git a/src/app-profile/chrome/userChrome.css b/src/app-profile/chrome/userChrome.css new file mode 100644 index 0000000..4f1a013 --- /dev/null +++ b/src/app-profile/chrome/userChrome.css @@ -0,0 +1,26 @@ + +@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* only needed once */ +@namespace html url("http://www.w3.org/1999/xhtml"); + +#PersonalToolbar, #PanelUI-Button, #PanelUI-menu-button, #star-button, #forward-button, #home-button, #bookmarks-toolbar-button, #library-button, #sidebar-button, #pocket-button, #fxa-toolbar-menu-button, #reader-mode-button, #identity-icon { + visibility: collapse; +} + +#urlbar-background {background-color: black !important;} + +/* Remove back button circle */ +#back-button:not(:hover), +#back-button:not(:hover) > .toolbarbutton-icon { +background: transparent !important; +border: none !important; +box-shadow: none !important; +} + +#back-button:hover, +#back-button:hover > .toolbarbutton-icon { +border: none !important; +border-radius: 2px !important; +} + +#urlbar-container, #nav-bar { visibility: collapse !important } +} diff --git a/src/app-profile/prefs.js b/src/app-profile/prefs.js new file mode 100644 index 0000000..4b932b4 --- /dev/null +++ b/src/app-profile/prefs.js @@ -0,0 +1,48 @@ +user_pref("extensions.https_everywhere._observatory.enabled", false); +user_pref("extensions.https_everywhere.options.autoUpdateRulesets", false); +user_pref("extensions.https_everywhere.globalEnabled", false); +user_pref("extensions.https_everywhere._observatory.submit_during_tor", false); +user_pref("extensions.https_everywhere._observatory.submit_during_nontor", false); +user_pref("extensions.https_everywhere._observatory.use_custom_proxy", true); +user_pref("extensions.https_everywhere._observatory.proxy_host", "127.0.0.1"); +user_pref("extensions.https_everywhere._observatory.proxy_port", 4444); + +user_pref("extensions.torbutton.use_nontor_proxy", true); + +//For socket conversion: in the future, I'll need to make TBB communicate with +//i2p over a unix socket. Fortunately, this is how you do that. It will be +//configurable in a similar way to the host:port configuration when that happens. +//user_pref("extensions.torlauncher.socks_port_use_ipc", ); +//user_pref("extensions.torlauncher.socks_ipc_path", ""); + +user_pref("extensions.torlauncher.start_tor", false); +//user_pref("extensions.torlauncher.default_bridge_type", ""); +user_pref("extensions.torlauncher.prompt_at_startup", false); + +// Resist-fingerprinting and first-party isolation enable + +user_pref("privacy.resistFingerprinting", true); +user_pref("privacy.firstparty.isolate", true); + +// Use i2p http proxy for all connections and set homepage to safe local form. + +// DON'T allow access to the admin panel from the profile we browse i2p with. +user_pref("network.proxy.no_proxies_on", "127.0.0.1:7657,localhost:7657,127.0.0.1:7662,localhost:7662,127.0.0.1:7669,localhost:7669"); +user_pref("network.proxy.type", 1); +user_pref("network.proxy.http", "127.0.0.1"); +user_pref("network.proxy.http_port", 4444); +user_pref("network.proxy.ssl", "127.0.0.1"); +user_pref("network.proxy.ssl_port", 4444); +user_pref("network.proxy.ftp", "127.0.0.1"); +user_pref("network.proxy.ftp_port", 4444); +user_pref("network.proxy.socks", "127.0.0.1"); +user_pref("network.proxy.socks_port", 4444); +user_pref("network.proxy.share_proxy_settings", true); +user_pref("browser.startup.homepage", "about:blank"); +user_pref("dom.security.https_only_mode", false); +user_pref("keyword.enabled", false); +user_pref("extensions.allowPrivateBrowsingByDefault", true); +user_pref("extensions.PrivateBrowsing.notification", false); + +user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); + diff --git a/src/app-profile/storage-sync.sqlite b/src/app-profile/storage-sync.sqlite new file mode 100755 index 0000000000000000000000000000000000000000..8089b51d5e6f36a137927af2c1815522ff1fdc24 GIT binary patch literal 131072 zcmeI*Z*SW~9Ki8(ZJ0E~1B77WS>`7UQHL&Ry0ufK7MelD*dR*;XhPA|KBu=izF=S4 zn$ni=2=R!gJmD$tfk%j^NQjrfOW|BMi952R4Wn?AL zabK89z4T>iZmzUZsgz2kWxFrfeZ0-vlVW+!mb3j?+j6OTUA z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0;9n{* zdU^ix)%7>#M)y_Z%Y$L0J{!uer^8TsM(L;a!m7T#_(H`~oh=ic^*on~eG z-d6MD%G26jshn>2?^T}Y<$9qUiN0K{d?;(yw*Btge0gnJ)t|49%N|H|t_0ko6mGW3}PC%PUJeu2`)t zxq;^`1-EW3*K76K(PNpq105`stU1$wvzQfZD6hB0?31j{+M%=6ytCQ4+s;ls zF%UZ{R7T0fS$pUNvHgUsy)=-<+qFk+c4h2*y670$A2@4)2org<=(Jm%2kqw8tR50C zRs)kY-FalcyK7JS(pMtubKJL%vhcp#>4jPN*+X^iJ$1$pS) zsNJkC*}ogvZ49GA&CfrqiQu5xPiz+1`6F>q?P=W$r5LEB>gj%=LL`I8X6i@N_>R^l zF|in&iy9TBeNR?B;qA&GOslq8-cO+7#AFX)+Ql>!?&TNt3K`|eOs~$%d&-x(5KN3P z%9{puwdo5LP6M9yW%ZH$7;>CWgQ429IgW4fv@}VyF9yj>iN5|^g`t?UCDn0U z$G!Y6Y*#_34yFS{L3kh!%=v)o_s$3MTbtw&>3lX##~X+w8R)psj~<#(>&Mf6CYMaQ z8AnuK^km_=4n#T-1*g26&)dRfiS&lqM~W@t#4C>_Lp$H5$t8tHw;vwFg+5ZTs|(NU zw0M4!rROkGdt1Yu!hoq6*V|d_*~x96+}h!heHUdE=-A8Vx}Dl`(Gf$VH^Wfxw{_u- z?PjxNXx|OTi>1h3jiWEh<<4uPSH}y^t}%nem3wxU?Aw=Kx-tkh>|V7GHCt7NiHuvr zP$q?yW)ibcJzs2!k$k;*XcL|>`bls8*Z;@T&Rrt#Ul$m?@_e~-d$fAd#Ux21uUp&d zCemaF`>SmV%gT(}$pVwrxwe^`wXxBBk;#|78OzM*#rbllF=|{ivDmI~o1U>hjt}gD zd2X?LvTBmjjEb{=we0ddE2meVD|gmM>le+buX?fliPurLai?q7=fs{Cv}RRLa+_A3 zHJp&uX69xm>UaOh$$BNr>dSv*Y9xgK0tg_000IagfB*srAbLzLAb!%JQM4IeiWMZCQS?IiW z;SPq0j9bG{Cgt@7b#2n@@Mc}C1hRg^ZLBtYcX?%L#}%u!B{%TArQp`B<$A4NJIXQ` z=umlSeSM+Rn6&<@tYbUirf1Zid|-sld46-Dvwq>$ebtMFQ99~2?sTn8Vo#s5lp8ZS HFBtp-wGWSx literal 0 HcmV?d00001 diff --git a/src/app-profile/user.js b/src/app-profile/user.js new file mode 100644 index 0000000..83332c9 --- /dev/null +++ b/src/app-profile/user.js @@ -0,0 +1,217 @@ +# Overrides for Extension Preferences +# Tor Browser Bundle +# Do not edit this file. +# +# This file is modified from a file included in the Tor Browser Bundle. +# +# Copyright 2017 The Tor Project. See LICENSE.tor for licensing information. + +# HTTPS Everywhere Preferences: +user_pref("extensions.https_everywhere._observatory.popup_shown", true); +user_pref("extensions.https_everywhere.toolbar_hint_shown", true); + +# NoScript Preferences: +# In order to disable all scripts by default, uncomment the following line... +# user_pref("capability.policy.maonoscript.javascript.enabled", "noAccess"); +# and comment out the following line +user_pref("capability.policy.maonoscript.javascript.enabled", "allAccess"); +user_pref("capability.policy.maonoscript.sites", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache"); +user_pref("noscript.default", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache"); +user_pref("noscript.mandatory", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache"); +user_pref("noscript.ABE.enabled", false); +user_pref("noscript.ABE.notify", false); +user_pref("noscript.ABE.wanIpAsLocal", false); +user_pref("noscript.confirmUnblock", false); +user_pref("noscript.contentBlocker", true); +user_pref("noscript.firstRunRedirection", false); +user_pref("noscript.global", true); +user_pref("noscript.gtemp", ""); +user_pref("noscript.opacizeObject", 3); +user_pref("noscript.forbidWebGL", true); +user_pref("noscript.forbidFonts", true); +user_pref("noscript.options.tabSelectedIndexes", "5,0,0"); +user_pref("noscript.policynames", ""); +user_pref("noscript.secureCookies", true); +user_pref("noscript.showAllowPage", false); +user_pref("noscript.showBaseDomain", false); +user_pref("noscript.showDistrust", false); +user_pref("noscript.showRecentlyBlocked", false); +user_pref("noscript.showTemp", false); +user_pref("noscript.showTempToPerm", false); +user_pref("noscript.showUntrusted", false); +user_pref("noscript.STS.enabled", false); +user_pref("noscript.subscription.lastCheck", -142148139); +user_pref("noscript.temp", ""); +user_pref("noscript.untrusted", ""); +user_pref("noscript.forbidMedia", true); +user_pref("noscript.allowWhitelistUpdates", false); +user_pref("noscript.fixLinks", false); +// Now handled by plugins.click_to_play // Not in this one. +user_pref("noscript.forbidFlash", true); +user_pref("noscript.forbidSilverlight", true); +user_pref("noscript.forbidJava", true); +user_pref("noscript.forbidPlugins", true); +// Usability tweaks +user_pref("noscript.showPermanent", false); +user_pref("noscript.showTempAllowPage", true); +user_pref("noscript.showRevokeTemp", true); +user_pref("noscript.notify", false); +user_pref("noscript.autoReload", true); +user_pref("noscript.autoReload.allTabs", false); +user_pref("noscript.cascadePermissions", true); +user_pref("noscript.restrictSubdocScripting", true); +user_pref("noscript.showVolatilePrivatePermissionsToggle", false); +user_pref("noscript.volatilePrivatePermissions", true); +user_pref("noscript.clearClick", 0); + +user_pref("intl.locale.matchOS", false); + +user_pref("extensions.https_everywhere._observatory.enabled", false); +user_pref("extensions.https_everywhere.options.autoUpdateRulesets", false); +user_pref("extensions.https_everywhere.globalEnabled", false); +user_pref("extensions.https_everywhere._observatory.submit_during_tor", false); +user_pref("extensions.https_everywhere._observatory.submit_during_nontor", false); +user_pref("extensions.https_everywhere._observatory.use_custom_proxy", true); +user_pref("extensions.https_everywhere._observatory.proxy_host", "127.0.0.1"); +user_pref("extensions.https_everywhere._observatory.proxy_port", 4444); + +user_pref("extensions.torbutton.use_nontor_proxy", true); + +//For socket conversion: in the future, I'll need to make TBB communicate with +//i2p over a unix socket. Fortunately, this is how you do that. It will be +//configurable in a similar way to the host:port configuration when that happens. +//user_pref("extensions.torlauncher.socks_port_use_ipc", ); +//user_pref("extensions.torlauncher.socks_ipc_path", ""); + +user_pref("extensions.torlauncher.start_tor", false); +//user_pref("extensions.torlauncher.default_bridge_type", ""); +user_pref("extensions.torlauncher.prompt_at_startup", false); + +// Resist-fingerprinting and first-party isolation enable + +user_pref("privacy.resistFingerprinting", true); +user_pref("privacy.firstparty.isolate", true); + +// Use i2p http proxy for all connections and set homepage to safe local form. + +// DON'T allow access to the admin panel from the profile we browse i2p with. +user_pref("network.proxy.no_proxies_on", "127.0.0.1:7657,localhost:7657,127.0.0.1:7662,localhost:7662,127.0.0.1:7669,localhost:7669"); +user_pref("network.proxy.type", 1); +user_pref("network.proxy.http", "127.0.0.1"); +user_pref("network.proxy.http_port", 4444); +user_pref("network.proxy.ssl", "127.0.0.1"); +user_pref("network.proxy.ssl_port", 4444); +user_pref("network.proxy.ftp", "127.0.0.1"); +user_pref("network.proxy.ftp_port", 4444); +user_pref("network.proxy.socks", "127.0.0.1"); +user_pref("network.proxy.socks_port", 4444); +user_pref("network.proxy.share_proxy_settings", true); +user_pref("browser.startup.homepage", "about:blank"); + +// Privacy-harden and disable irrelevant features. +user_pref("app.normandy.api_url", ""); +user_pref("app.normandy.enabled", false); +user_pref("app.update.auto", false); +user_pref("app.update.enabled", false); +user_pref("beacon.enabled", false); +user_pref("browser.aboutHomeSnippets.updateUrl", ""); +user_pref("browser.cache.disk_cache_ssl", false); +user_pref("browser.cache.disk.enable", false); +user_pref("browser.cache.offline.enable", false); +user_pref("browser.disableResetPrompt", true); +user_pref("browser.display.use_document_fonts", 0); +user_pref("browser.fixup.alternate.enabled", false); +user_pref("browser.formfill.enable", false); +user_pref("browser.library.activity-stream.enabled", false); +user_pref("browser.newtabpage.activity-stream.disableSnippets", true); +user_pref("browser.newtabpage.activity-stream.enabled", false); +user_pref("browser.newtabpage.activity-stream.feeds.section.highlights", false); +user_pref("browser.newtabpage.activity-stream.feeds.snippets", false); +user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false); +user_pref("browser.newtabpage.activity-stream.feeds.topsites", false); +user_pref("browser.newtabpage.activity-stream.prerender", false); +user_pref("browser.newtabpage.activity-stream.showSearch", false); +user_pref("browser.newtabpage.enhanced", false); +user_pref("browser.newtabpage.introShown", true); +user_pref("browser.newtab.preload", false); +user_pref("browser.onboarding.enabled", false); +user_pref("browser.pagethumbnails.capturing_disabled", true); +user_pref("browser.safebrowsing.appRepURL", ""); +user_pref("browser.safebrowsing.blockedURIs.enabled", false); +user_pref("browser.safebrowsing.downloads.enabled", false); +user_pref("browser.safebrowsing.downloads.remote.enabled", false); +user_pref("browser.safebrowsing.downloads.remote.url", ""); +user_pref("browser.safebrowsing.enabled", false); +user_pref("browser.safebrowsing.malware.enabled", false); +user_pref("browser.safebrowsing.phishing.enabled", false); +user_pref("browser.search.geoip.timeout", 1); +user_pref("browser.search.suggest.enabled", false); +user_pref("browser.selfsupport.url", ""); +user_pref("browser.send_pings", false); +user_pref("browser.shell.checkDefaultBrowser", false); +user_pref("browser.startup.homepage_override.mstone", "ignore"); +user_pref("browser.startup.page", 0); +user_pref("browser.toolbarbuttons.introduced.pocket-button", true); +user_pref("browser.urlbar.speculativeConnect.enabled", false); +user_pref("browser.urlbar.trimURLs", false); +user_pref("datareporting.healthreport.uploadEnabled", false); +user_pref("datareporting.policy.dataSubmissionEnabled", false); +user_pref("dom.battery.enabled", false); +user_pref("dom.enable_performance", false); +user_pref("dom.enable_performance_navigation_timing", false); +user_pref("dom.enable_resource_timing", false); +user_pref("dom.event.clipboardevents.enabled", false); +user_pref("dom.gamepad.enabled", false); +user_pref("dom.indexedDB.enabled", false); +user_pref("dom.min_timeout_value", 400); +user_pref("dom.push.connection.enabled", false); +user_pref("dom.push.enabled", false); +user_pref("dom.serviceWorkers.enabled", false); +user_pref("dom.serviceWorkers.interception.enabled", false); +user_pref("dom.storage.enabled", false); +user_pref("dom.webaudio.enabled", false); +user_pref("extensions.autoDisableScopes", 14); +user_pref("extensions.getAddons.cache.enabled", false); +user_pref("extensions.getAddons.showPane", false); +user_pref("extensions.pocket.enabled", false); +user_pref("extensions.screenshots.disabled", true); +user_pref("extensions.webservice.discoverURL", ""); +user_pref("geo.enabled", false); +user_pref("geo.wifi.uri", ""); +user_pref("gfx.downloadable_fonts.disable_cache", true); +user_pref("javascript.options.shared_memory", false); +user_pref("layout.css.visited_links_enabled", false); +user_pref("media.autoplay.enabled", false); +user_pref("media.cache_size", 0); +user_pref("media.navigator.enabled", false); +user_pref("media.peerconnection.enabled", false); +user_pref("media.video_stats.enabled", false); +user_pref("captivedetect.canonicalURL", ""); +user_pref("network.captive-portal-service.enabled", false); +user_pref("network.cookie.cookieBehavior", 1); +user_pref("network.cookie.lifetimePolicy", 2); +user_pref("network.dns.disablePrefetch", true); +user_pref("network.http.referer.spoofSource", true); +user_pref("network.http.referer.trimmingPolicy", 2); +user_pref("network.http.referer.XOriginPolicy", 2); +user_pref("network.prefetch-next", false); +user_pref("privacy.donottrackheader.enabled", true); +user_pref("privacy.donottrackheader.value", 1); +user_pref("toolkit.telemetry.archive.enabled", false); +user_pref("toolkit.telemetry.coverage.opt-out", true); +user_pref("toolkit.telemetry.enabled", false); +user_pref("toolkit.telemetry.server", ""); +user_pref("toolkit.telemetry.unified", false); +user_pref("webgl.disabled", true); +user_pref("browser.chrome.errorReporter.infoURL", ""); +user_pref("breakpad.reportURL", ""); +user_pref("browser.newtabpage.activity-stream.default.sites", ""); +//user_pref("browser.newtabpage.activity-stream.default.sites", "http://planet.i2p/,http://legwork.i2p/,http://i2pwiki.i2p/,http://i2pforums.i2p/,http://zzz.i2p/"); +user_pref("dom.security.https_only_mode", false); +user_pref("keyword.enabled", false); +user_pref("extensions.allowPrivateBrowsingByDefault", true); +user_pref("extensions.PrivateBrowsing.notification", false); +// PREF: re-enable crome/userChrome.css +user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); + +// pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); diff --git a/src/app-profile/version.txt b/src/app-profile/version.txt new file mode 100644 index 0000000..be58634 --- /dev/null +++ b/src/app-profile/version.txt @@ -0,0 +1 @@ +0.3 diff --git a/src/unix/i2pbrowser.sh b/src/unix/i2pbrowser.sh old mode 100644 new mode 100755 index 6e9afa2..ee8bdcd --- a/src/unix/i2pbrowser.sh +++ b/src/unix/i2pbrowser.sh @@ -1,5 +1,22 @@ #! /usr/bin/env sh +if [ -f "/etc/i2pbrowser/i2pbrowserrc" ]; then + . /etc/i2pbrowser/i2pbrowserrc +fi + +if [ -z $BROWSING_PROFILE ]; then + BROWSING_PROFILE="." +fi + +if [ ! -d "$BROWSING_PROFILE" ]; then + mkdir -p "$BROWSING_PROFILE" + cp -vr /var/lib/i2pbrowser/profile/* "$BROWSING_PROFILE" +fi + +if [ ! -f "$BROWSING_PROFILE/user.js" ]; then + exit 1 +fi + if [ -z $FIREFOX ]; then if [ -f "firefox/firefox" ]; then FIREFOX="./firefox/firefox" @@ -18,4 +35,4 @@ if [ -z $FIREFOX ]; then exit 1 fi -$FIREFOX --profile . $@ +$FIREFOX --profile "$BROWSING_PROFILE" $@ diff --git a/src/unix/i2pbrowserrc b/src/unix/i2pbrowserrc new file mode 100644 index 0000000..0657c21 --- /dev/null +++ b/src/unix/i2pbrowserrc @@ -0,0 +1,3 @@ + +CONFIGURING_PROFILE=$HOME/i2p/firefox/webapps +BROWSING_PROFILE=$HOME/i2p/firefox/browsing diff --git a/src/unix/i2pconfig.sh b/src/unix/i2pconfig.sh new file mode 100755 index 0000000..f1d7a86 --- /dev/null +++ b/src/unix/i2pconfig.sh @@ -0,0 +1,38 @@ +#! /usr/bin/env sh + +if [ -f "/etc/i2pbrowser/i2pbrowserrc" ]; then + . /etc/i2pbrowser/i2pbrowserrc +fi + +if [ -z $CONFIGURING_PROFILE ]; then + CONFIGURING_PROFILE="." +fi + +if [ ! -d "$CONFIGURING_PROFILE" ]; then + mkdir -p "$CONFIGURING_PROFILE" + cp -vr /var/lib/i2pbrowser/app-profile/* "$CONFIGURING_PROFILE" +fi + +if [ ! -f "$CONFIGURING_PROFILE/user.js" ]; then + exit 1 +fi + +if [ -z $FIREFOX ]; then + if [ -f "firefox/firefox" ]; then + FIREFOX="./firefox/firefox" + fi + FIREFOX=$(which firefox-esr) + if [ -z $FIREFOX ]; then + FIREFOX=$(which firefox) + fi +fi + +if [ -z $FIREFOX ]; then + echo "Firefox does not appear to be in your \$PATH." + echo "Please install Firefox via a package manager, or" + echo "or set the FIREFOX variable in your shell to the" + echo "location of a Firefox executable." + exit 1 +fi + +$FIREFOX --profile "$CONFIGURING_PROFILE" $@