|
1 | 1 | # DatPart |
2 | | -Proof of concept Dat site viewer for Chrome. |
| 2 | +Proof of concept [Dat](https://datproject.org/) site viewer for Chrome. |
3 | 3 |
|
4 | 4 | Sites can be loaded via the .dat_site. top-level domain. |
5 | 5 |
|
6 | 6 | For example you can load the Acrylic Style Dat site at http://1c7639eedaf8f7533f92e7c34f5a6d2b43645347836ab5e9f2489e89d3b08306.dat_site/ |
7 | 7 |
|
8 | 8 | Oh also, Chrome's Omnibar treats all non-standard TLDs as searches, so you'll have to type the inital HTTP:// or put a slash at the end of the URL for it to load the site. |
9 | 9 |
|
10 | | -(BitTorrent/WebTorrent support coming soon, it's already coded into the extension) |
| 10 | +(BitTorrent/WebTorrent support coming soon, it's already coded into the extension just not the server app. Also it'll load the same torrent sites as [PeerCloud](https://github.com/jhiesey/peercloud)) |
| 11 | + |
| 12 | +### How this works |
| 13 | + |
| 14 | +Basically all this does is use the Chrome Extension WebRequest API and Proxy API to intercept any requests to the top level domain .dat_site. When that TLD is requested, Chrome uses the Proxy API to redirect the request to the local Electron server at http://127.0.0.1:9989/ and from there the server loads the Dat (using sparse mode) and returns the page or file that was requested. |
| 15 | + |
| 16 | +### To-Do |
| 17 | + |
| 18 | +* Firefox support (this is trouble as [the Firefox WebExtension Proxy API](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/proxy) is different). |
| 19 | + * Firefox for Android support. |
| 20 | +* Opera support. |
| 21 | +* Chrome OS support. |
| 22 | +* dat:// link support. |
| 23 | + * This'll require coming up with a way to simply parse Dat URLs in a regular web browser, as [parse-dat-url](https://github.com/pfrazee/parse-dat-url "parse-dat-url") doesn't work very well on the web (there's likely a fix that can be done with regular expressions but I suck at them so... yeah). |
| 24 | +* Provide the dat:// URL to the current site via the extension popup. |
| 25 | +* Have the extension automatically open the app in the background when a .dat_site is requested via the [Native Messaging API](https://developer.chrome.com/apps/nativeMessaging). |
| 26 | +* Polyfill [the Beaker Browser APIs](https://beakerbrowser.com/docs/apis/) (don't necessarily need all of them, just the ones to make sure the sites are viewable, e.g. Rotonde sites). |
| 27 | +* Notifications! For everything possible (optional of course). |
| 28 | +* Options! (A real options page) |
| 29 | + * Let the user set the port of the local server via options using the [Native Messaging API](https://developer.chrome.com/apps/nativeMessaging). |
| 30 | +* Use the [omnibox API](https://developer.chrome.com/extensions/omnibox) to let users just type the dat:// URL or the hash itself as a search to load the site. |
| 31 | + * Come up with a fallback for when the dat can't be found (Maybe a "Did you mean?" page or something). |
| 32 | +* Optional background functionality. |
| 33 | +* WebRTC support (for Chrome OS and providing a web proxy). |
| 34 | +* UDP support on Chrome OS. |
| 35 | +* Maybe support regular domain names [the way Beaker Browser does](https://beakerbrowser.com/2017/02/22/beaker-0-6-1.html), I don't know how this would be done via a browser extension but I feel like it might be possible (if well executed this could be useful for easing bandwidth/data use on certain sites). |
| 36 | +* Edge support? (Not possible yet, needs the Proxy API, if it ever gets it) |
| 37 | +* Safari support? (I'm unsure if this is possible) |
| 38 | +* Internet Explorer support? (I'm being ridiculous here, but again unsure if this is possible) |
0 commit comments