1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
#!/usr/bin/env python3
"""
Simple tab server for remote newsbeuter. Opens tabs on local desktop from a
newsbeuter running elsewhere. Expected to be port forwarded to the remote
server and then used over curl as newsbeuter"s browser command.
1. RemoteForward 1424 localhost:1424
2. browser "curl -F"a=%u" http://localhost:1424"
3. Profit?!
"""
import os
import sys
import subprocess
import webbrowser
from cgi import FieldStorage
from argparse import ArgumentParser
from wsgiref.simple_server import make_server
at_work = os.environ.get("AT_WORK", "false").lower() == "true"
parser = ArgumentParser()
parser.add_argument("-b", "--browser", help="Browser to use")
parser.add_argument("-a", "--addr", default="127.0.0.1", help="Bind address")
parser.add_argument("-p", "--port", help="Bind port", type=int,
default="1425" if at_work else "1424")
args = parser.parse_args()
opener = webbrowser.get(args.browser).open_new_tab
try:
with open("/dev/null", "w") as fp:
subprocess.call(["open"], stderr=fp)
use_open = True
except OSError:
use_open = False
def simple_app(environ, start_response):
if environ["REMOTE_ADDR"] != "127.0.0.1":
start_response("403 Forbidden", [("Content-type", "text/plain")])
return "Go away."
else:
start_response("200 OK", [("Content-type", "text/plain")])
url = FieldStorage(fp=environ["wsgi.input"], environ=environ).getvalue("a")
if use_open:
subprocess.call(['open', url], shell=False)
return ""
else:
return opener(url) and ""
try:
print("Listening on {}:{}...".format(args.addr, args.port))
make_server(args.addr, args.port, simple_app).serve_forever()
except KeyboardInterrupt:
print("Shutting down...")
sys.exit(0)
|