KOTET'S PERSONAL BLOG

#ipfs体験記 20:curlは8.4.0からIPFSに対応している

Created: , Last modified:
#ipfs体験記 #ipfs #tech

curl 8.4.0がリリースされた。Arch Linuxとかなら既にパッケージマネージャからインストールできる。

Release 8.4.0 · curl/curl

$ curl --version
curl 8.4.0 (x86_64-pc-linux-gnu) libcurl/8.4.0 OpenSSL/3.1.3 zlib/1.3 brotli/1.1.0 zstd/1.5.5 libidn2/2.3.4 libpsl/0.21.2 (+libidn2/2.3.4) libssh2/1.11.0 nghttp2/1.57.0
Release-Date: 2023-10-11
Protocols: dict file ftp ftps gopher gophers http https imap imaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd

このリリースでは重大なヒープバッファオーバーフローの脆弱性が修正されている。 どうも「過去最悪」の脆弱性と呼ばれるほどのものだったらしい1ので、他のディストリビューションでも近いうちにアップデートされるだろう。

今回はそれとは関係なくこのリリースで入った新機能を試す。

ipfsプロトコルのサポート

今回のリリースで、curlはipfsプロトコルをサポートした。 ipfs://ipns://で始まるようなURLを認識してくれる。

ただし、curlがIPFSのノードになったわけではない。 ゲートウェイを利用してくれるようになっただけだ。 デフォルトではhttp://localhost:8080を利用するので、ローカルでデーモンを動かしているなら特にオプションを指定しなくても動く。

他のゲートウェイを指定したい場合、--ipfs-gatewayオプションを使う。

$ curl --ipfs-gateway https://ipfs.io ipfs://QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
hello world

また、IPFS_GATEWAY環境変数や、設定ファイル~/.ipfs/gatewayにゲートウェイのURLを書いておくと、それを利用してくれる。

$ IPFS_GATEWAY="https://ipfs.io" curl ipfs://QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
hello world
$ echo "https://ipfs.io" > ~/.ipfs/gateway
# curl ipfs://QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
hello world

正直、IPFSデーモンが動いているならipfsコマンドも使えるだろうし、あまり意味がない気もする。 まあ、IPFSによるファイルの取得をcurlの統一されたインターフェースで行えることで何かしらのメリットがあるのかもしれない。

参考資料