Provides tools to communicate with existing network protocols over IPFS tunnels (libp2p streams).
- iphttp: Command-line iphttp client (supports SSL)
- iphttpd: iphttp server (can serve aiohttp apps or just forward to an existing HTTP service)
pip install -U iptt
Checkout the documentation here.
iphttp is the command-line client. To make a simple GET request, pass the PeerId with the HTTP path. Use --ssl (or -s) to use SSL encryption:
iphttp QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/doc.txt
iphttp -s QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/doc.txt
Use --maddr to pass the RPC API multiaddr of your kubo node (the default multiaddr is /ip4/127.0.0.1/tcp/5001) :
iphttp --maddr /dns4/localhost/tcp/5010 \
QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/summary.html
Interactive mode: just pass a PeerId and all requests in the CLI session will be based on that peer.
iphttp -i QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc
The following commands are supported in interactive mode:
- get(path: str, q={}, h={}): HTTP GET request on path path with query q and HTTP headers h (dict)
- post(path: str, q={}, data={}, h={}): HTTP POST request on path with post data data, HTTP query q (dict) and HTTP headers h (dict)
get('/')
get('/', q={'arg1': 4})
get('/', h={'X-Important-Header': 'some-value'})
post('/form', q={'arg1': 2}, data={'message': 'Form field data'})
post('/form', data={'message': 'Form field data'})
iphttpd allows you to register an IPFS P2P service for an already running HTTP server, and can also serve an HTTP application from a Python module (only aiohttp apps are supported right now).
Serve http://localhost:7000 for the P2P protocol /x/ipfs-http/80/1.0
iphttpd -l localhost:80:7080
Serve http://localhost:8080 for the P2P protocol /x/ipfs-http/8000/1.0
iphttpd -l localhost:8000:8080
Serve an aiohttp application from Python module iphttpd_apps.helloworld:
iphttpd --serve-aiohttp iphttpd_apps.helloworld
Your module should implement the coroutine create_app(args) and return an aiohttp.web.Application instance that will be used to run the service (see the helloworld service).
Serve an application with SSL on port 8200:
iphttpd -s --serve-aiohttp iphttpd_apps.helloworld --cert iphttpd.io.pem --key iphttpd.io-key.pem -l localhost:443:8200
God bless HTTP, and God bless IPFS license.