Added favicon, shifted if logic to handle default first

This commit is contained in:
Alex Kelly 2020-01-06 11:20:07 -05:00
parent 49acbf38dd
commit a1d67cedb8
2 changed files with 37 additions and 18 deletions

View file

@ -1,25 +1,34 @@
#!/usr/bin/env python
"""Utilize crypto domains DNS and either redirect, or display information."""
from bottle import Bottle, run, response, request
from bottle import Bottle, run, response, request, static_file
import json
import requests
import json2html
VERSION = '0.0.1'
VERSION = '0.1.0'
app = Bottle()
def domainLookup(domain):
"""Return a dictionary from JSON results of API call
or return False if there is an error
"""
try:
apibase = 'https://unstoppabledomains.com/api/v1/'
dnslookup = requests.get(apibase + domain)
domainJSON = json.loads(dnslookup.content)
print(domainJSON)
return domainJSON
if dnslookup.status_code == 200:
domainInfo = json.loads(dnslookup.content)
return domainInfo
else:
return False
except requests.exceptions.ConnectionError:
return False
@app.route("/")
def root():
"""Index page, just displays information about URL formatting"""
host = request.get_header('host')
helptext = f"""
<p>General format is {host}/&lt;domain&gt;/&lt;action&gt;
@ -49,10 +58,22 @@ def root():
@app.route("/<domain>/")
@app.route("/<domain>/<action>")
def redirectDomain(domain, action=None):
"""Handle the actual redirect for the domain queried"""
lookupResult = domainLookup(domain)
if lookupResult:
redirect_url = lookupResult['ipfs']['redirect_domain']
html = lookupResult['ipfs']['html']
if action == 'redir':
ipfs_hash = lookupResult['ipfs']['html']
else:
return f"Unable to get info for {domain}"
if action is None or action == 'html':
response.status = 302
if not ipfs_hash.startswith('/ip'):
ipfshash = "ipfs/" + ipfs_hash
else:
ipfshash = ipfs_hash
response.set_header('Location',
f"https://cloudflare-ipfs.com/{ipfshash}")
elif action == 'redir':
try:
if not redirect_url.startswith('http'):
redirect_url = "http://" + redirect_url
@ -60,17 +81,15 @@ def redirectDomain(domain, action=None):
response.set_header('Location', redirect_url)
except KeyError:
return f'Did not find a redirect for {domain}'
elif action is None or action == 'html':
response.status = 302
if not html.startswith('/ip'):
ipfshash = "ipfs/" + html
else:
ipfshash = html
response.set_header('Location',
f"https://cloudflare-ipfs.com/{ipfshash}")
elif action == 'raw':
return json2html.json2html.convert(json=lookupResult)
@app.route("/favicon.ico")
def favicon():
"""Display a favicon to make the errors go away :)"""
return static_file('favicon.ico', root='images')
if __name__ == "__main__":
run(app, host='0.0.0.0', port='5000', reloader=True)

BIN
images/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB