A Handshake enabled Chromium web browser and reference client; works with HSD and the HNSD light client. Use our example to build or integrate Handshake into any browser.
First, install frontend client dependencies
npm install -g bower
bower install
npm install
./nwjs.app/Contents/Resources/app.nw
./nwjs.app/Contents/Resources/
package.nw
HandyBrowser (aka "Handy") is using node-webkit nw.js under the hood. Nw.js packages the latest chromium with the latest node.js and allows us granular security, html and many other features. Since we did not want users to manually have to modify system level configurations and run HNSD/HNS resolvers locally themselves, we rely on Docker. Docker allows us to create a lightweight linux virtual machine that installs HNS resolvers, and is pre-configured to use the HNS resolver. We simply proxy all web traffic from the Chromium browser into the Docker machine via another community procject, Godane, which resolves via HSD and returns content securely with it's own Root CA Certificate! Godane generates a root CA certificate on container creation which allows the user to proxy https traffic to the browser securely. During installation Docker runs a one-time install process, after that it won't need to be run again, and you'll be able to start browsing/resolving names immediately (even as the HSD fullnodes syncs in Docker).
Why Nw.js over Electron? The lead-dev of this project has used Nw.js extensively in enterprise-class application for many years and knows the inside/outs of every piece of the framework. In addition, the window manager (urlbar) we wrote needed to control all windows (tabs) created within the application and IPC is not fun. Nw.js allowed us more flexibility for the task of building a web-browser while offering the security we needed: No browser windows have access to Node.js, just the window manager.
More reasons here, including: "Even better, you can run Chrome Apps/extensions using NW.js"
localhost:5301
, more in the quick reference quide
It would be great to not need Docker's overhead. If there were a way to tell the browser which DNS to use locally that would be ideal. We're going work with the community and see if there's a more elegant solution in time. If a VM is neccessary, hyperkit or HyperV could be ideal alternatives to Docker.
Re-enable the HandyMiner GUI that's built in already. Shell script/workflow to install HandyStratum onto the dockerized HSD machine needs to be made.
Figure out how to get Chrome extensions working. They are most certainly supported in nw.js.
Add native-styled close menu buttons for most linux variants. Right now its styled like Ubuntu 16.
Addition auto-updating option so it's easier to upgrade to the latest version of Handy.
MacOS - https://docs.docker.com/docker-for-mac/release-notes/
Windows - https://docs.docker.com/docker-for-windows/release-notes/
Linux - https://docs.docker.com/engine/install/
$ docker stop HandyBrowserHNSD
$ docker rm HandyBrowserHNSD
$ docker image rm handybrowserhnsd
docker exec -it HandyBrowserHNSD bash
HNS: hs1qwfpd5ukdwdew7tn7vdgtk0luglgckp3klj44f8
BTC: bc1qk3rk4kgek0hzpgs8qj4yej9j5fs7kcnjk7kuvt
HandyBrowser - a Chromium Browser powered by a Handshake Resolver.
Copyright (C) 2020
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA