Awesome
Dat-Firefox
This is a prototype browser extension which makes dat://
urls function in Firefox using a slightly
modified dat-gateway as a bridge to the dat network.
It aims to implement native-like dat support possible in Firefox. This means:
- Links to
dat://
addresses and sites should work directly. While Webextensions protocol handlers are limited - we cannot showdat://
in the address bar on a loaded page - we can at least properly process the initial URL or link. - Dat site operate on the correct origin. When using the dat-gateway to bridge to the dat network, all dat addresses look like
http://localhost:3000/{hash}/path
. This has the effect of potentially breaking relative URLs on the page, and also preventing the web's cross-origin policies from preventing data leakage between sites. To fix this we have to make{hash}
the origin.
Usage
-
Install dat-fox-helper
-
Install the extension from the Mozilla Addon Store
-
Visit a
dat://
URL.
Local development
You can also build and run the extension locally. You will need a version of node greather that 7. nvm is recommended for installing node.
git clone https://github.com/sammacbeth/dat-fox.git
cd dat-fox
# install build dependencies
npm install
# build
npm run build
# if you want to watch for file changes
npm run serve
You can now load the addon
folder as a temporary addon in Firefox:
- Go to
about:debugging
in Firefox. - Chose
Load Temporary Addon
. - Browser to the
addon
folder and chose any file in this folder.
What works
- Load content from dat archives with the following URL types:
dat://{hash}
http://{hash}
dat://{hostname}
(using Dat Discovery)
- Toggle between
https
todat
protocol for Dat-enabled sites. - Create and fork archives.
DatArchive
API
How it works
- The protocol handler redirects
dat://
urls to a special handler domain (dat.redirect
), passing the full url. - A webRequest listener intercepts requests to this domain and redirects to a
http://
URL with the dat key or hostname as the origin. - A proxy PAC file intercepts hostnames matching a dat key pattern, or hostnames the user has explicitly ask to load over dat. Requests for these URLs are proxied via the dat-gateway (acting as a HTTP proxy). This allows us to make 'fake' hostnames work, and create the origins we need for dat sites.