7 changed files with 98 additions and 1 deletions
Binary file not shown.
Binary file not shown.
@ -1,3 +1,28 @@
|
||||
# passthroughbrowser |
||||
|
||||
Waydroid Passthrough Browser - Open links in host browser |
||||
Waydroid Passthrough Browser - Open links in host browser |
||||
|
||||
Passthrough Browser has two components --- a server and a client. The server is |
||||
a Python program written with Flask, while the client is an Android app written |
||||
using [MIT App Inventor](https://appinventor.mit.edu). The server listens for |
||||
HTTP POST connections on TCP port 8888 on an IP address only accessible to |
||||
programs running on the host or in the Waydroid container. When it receives a |
||||
properly formatted request, it opens the host's browser to the URL specified in |
||||
the request. The client, when installed in Waydroid, is intended to be set as |
||||
the default browser. After this is done, whenever an Android app attempts to |
||||
open a Web page, it will open the Passthrough Browser client just as it would |
||||
launch any other browser. The client then sends the URL to the server, which |
||||
causes the host browser to open. |
||||
|
||||
## Installation |
||||
|
||||
Run `./install_both.sh`. (Make sure Waydroid is running first.) Installing the |
||||
client requires running a command as root; the script uses `sudo`. You may need |
||||
to enter your password during installation. |
||||
|
||||
## Credits |
||||
|
||||
The client app uses the |
||||
[CustomWebView](https://github.com/vknow360/CustomWebView/tree/beta) (beta |
||||
version) App Inventor extension by Sunny Gupta. CustomWebView is used under the |
||||
MIT licese. |
||||
|
@ -0,0 +1,4 @@
|
||||
#!/bin/bash |
||||
./install_server.sh |
||||
echo "----------" |
||||
./install_client.sh |
@ -0,0 +1,12 @@
|
||||
#!/bin/bash |
||||
echo "Running 'sudo waydroid app install PassThroughBrowser.apk'. Please enter your" |
||||
echo "password if prompted:" |
||||
sudo waydroid app install PassThroughBrowser.apk |
||||
cat << HERE |
||||
To set up the Passthrough Browser client: |
||||
1. Open Settings in Waydroid. |
||||
2. Click/tap "Apps and Notifications." |
||||
3. Click/tap "Default apps." |
||||
4. Click/tap "Browser app." |
||||
5. Click/tap "Passthrough Browser." |
||||
HERE |
@ -0,0 +1,12 @@
|
||||
#!/bin/bash |
||||
mkdir -p ~/.config/autostart |
||||
mkdir -p ~/.local/bin/ |
||||
cat > ~/.config/autostart/passthrough_browser_server.desktop << HERE |
||||
[Desktop Entry] |
||||
Type=Application |
||||
Name=Passthrough Browser Server |
||||
Exec=$HOME/.local/bin/passthrough_browser_server |
||||
HERE |
||||
cp server.py ~/.local/bin/passthrough_browser_server |
||||
echo "To start the Passthrough Browser server, log out and log back in. (Wait until" |
||||
echo "you have set the client up, if it isn't already installed.)" |
@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env python3 |
||||
from flask import Flask |
||||
from flask import request, Response |
||||
import webbrowser |
||||
import time |
||||
|
||||
app = Flask(__name__) |
||||
|
||||
@app.route('/', methods = ['GET', 'POST']) |
||||
def page(): |
||||
if request.method == 'GET': |
||||
return """\ |
||||
<!DOCTYPE html> |
||||
<html> |
||||
<head> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
<title>Passthrough Browser Server</title> |
||||
</head> |
||||
<body> |
||||
<h1>Passthrough Browser Server</h1> |
||||
<p>This is the server for <a href=https://git.kj7rrv.com/kj7rrv/passthroughbrowser>Passthrough Browser</a>. Passthrough Browser is an Android app that, when set as the default browser in Waydroid, causes links to open in the host computer's browser.</p> |
||||
<p>If you have not yet installed the client app in Waydroid, follow these steps to install it:</p> |
||||
<ul> |
||||
<li>Open Waydroid</li> |
||||
<li>Open a terminal</li> |
||||
<li><code>cd</code> to the directory where you downloaded Passthrough Browser</li> |
||||
<li><code>./install_client.sh</code></li> |
||||
<li>Follow the instructions on the command line</li> |
||||
</ul> |
||||
</body> |
||||
</html> |
||||
""" |
||||
elif request.method == 'POST': |
||||
webbrowser.open(request.form['url']) |
||||
return Response('', 203) |
||||
|
||||
if __name__ == '__main__': |
||||
while True: |
||||
try: |
||||
app.run(host='192.168.250.1', port=8888) |
||||
except OSError as e: |
||||
print(e) |
||||
time.sleep(3) |
||||
|
Loading…
Reference in new issue