42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
import sys
|
|
import asyncio
|
|
from urllib.parse import urlparse
|
|
|
|
import i2plib
|
|
|
|
async def wget(sam_address, loop, url):
|
|
session_name = "wget"
|
|
url = urlparse(url)
|
|
buflen, resp = 4096, b""
|
|
|
|
async with i2plib.Session(session_name, sam_address=sam_address, loop=loop):
|
|
async with i2plib.StreamConnection(session_name, url.netloc, loop=loop,
|
|
sam_address=sam_address) as c:
|
|
c.write("GET {} HTTP/1.0\nHost: {}\r\n\r\n".format(
|
|
url.path, url.netloc).encode())
|
|
|
|
while 1:
|
|
data = await c.read(buflen)
|
|
if len(data) > 0:
|
|
resp += data
|
|
else:
|
|
break
|
|
try:
|
|
print(resp.split(b"\r\n\r\n", 1)[1].decode())
|
|
except IndexError:
|
|
print(resp.decode())
|
|
|
|
if __name__ == "__main__":
|
|
if len(sys.argv) == 2:
|
|
url = sys.argv[1]
|
|
if not url.startswith("http://"):
|
|
url = "http://" + url
|
|
|
|
loop = asyncio.get_event_loop()
|
|
loop.run_until_complete(wget(i2plib.get_sam_address(), loop, url))
|
|
loop.stop()
|
|
loop.close()
|
|
else:
|
|
print("""Fetch I2P URL. Usage:
|
|
python wget.py http://site.i2p/""")
|