ncat を使用する (curl の代わり・サーバー)

curl コマンドは現在 gemini: をサポートしていませんが、

ncat を用いて近い動作を行う事ができます。

ncat は nc コマンドに SSL 等をサポートしたものです。

Ncat | nmap.org

OS によってはパッケージで ncat が含まれていて、

容易にインストールできるでしょう。

関連資料として、次をリンクします。

Twins | MakerSpace (https:)

- - - 🎈 - - -

Gemini クライアント

例えば次のようにします。

ステータスコードも含めて表示されます。

表示のみなので、30・31 の転送は考慮されません。

openssl を用いてもできるのですが、ncat だとよりシンプルで使いやすくできます。

オプション -quiet を含めるといくらか出力は短くなります。

- - - 🎈 - - -

Gemini サーバー

ncat は簡易な Gemini サーバーも実現します。

ncat 自身で一時的な SSL 証明書と暗号鍵を生成できるのですが、

承認されていないため、クライアントによっては表示できません。

まだ作成していなければ openssl を用いて作成します。.pem 形式である必要があります。

ここでは localhost で期限を約 1000 年にして作成する例です。

日数の代わりに期限日時を指定する方法もあります。

9999年12月31日23時59分59秒を期限とする場合は次のとおりです。

Agate だと .der 形式が使われているので .pem 形式への変換が必要です。

.pem 形式はテキストエディタで開くと

-----BEGIN CERTIFICATE----- や -----BEGIN PRIVATE KEY----- ではじまる

テキストファイルになっています。

.der はバイナリーファイルなので文字化けした内容になっています。

cert.pem と key.prm があるディレクトリにいる状態で、次のようにします。

クライアントで gemini://localhost/ を参照して

Hello Gemini! と表示されるのを確認します。

ターミナル・端末をもう一つ開き(タブまたはウインドウなど)

確認する事も可能です。

CGI として server.sh を作成し、サーバー応答するのも簡単です。

chmod +x server.sh で実行権限を付けておきます。

CGI に対応した Gemini サーバーを用いるよりもオーバーヘッドが減り、

レスポンスも素早くなる事我で期待できますが、

バーチャルホストには対応していないので、サーバー名に関係なく応答し、

ドメイン毎に異なる証明書を使用する事もできません。

また、公開されている Gemini サーバーでは PATH_INFO や QUERY_STRING を渡しますが、

ここでの方法では全く入っていない事にもご注意下さい。

サーバースペックや出力内容によっては ncat を用いるサーバー運用も有効でしょう。

- - - 🎈 - - -

🎈 fusen.nya.je

- - - 🎈 - - -

😺 Powered by nya.je

Proxied content from gemini://fusen.nya.je/ncat.gmi (external content)

Gemini request details:

Original URL
gemini://fusen.nya.je/ncat.gmi
Status code
Success
Meta
text/gemini
Proxied by
kineto

Be advised that no attempt was made to verify the remote SSL certificate.