🌐
DenoでグローバルIPを確認できるサイトを作った
Deno Advent Calendar 2023 11日目の記事です。
作ったもの
ブラウザやcurlでアクセスすると、アクセスした端末のグローバルIP(パブリックIP)を返してくれるサイトです。Deno Deploy上で動いています。
https://checkip.deno.dev
curl https://checkip.deno.dev
実装
接続時のホスト名を返しているだけです。Denoだとワンライナーで書けます。
Deno.serve((_req, info) => new Response(info.remoteAddr.hostname));
作った背景
開発環境によってはIP制限回避のためにCIのグローバルIPを知る必要があるケースがあります。グローバルIPを確認できるサイトはいくつか存在しています。
- ipinfo.io/ip
- api.ipify.org
- checkip.amazonaws.com
上記の確認サイトを使うことも出来ますが、
万が一、偽のIPを返されてしまうとセキュリティ上の問題が発生します。
checkip.amazonaws.com
など、比較的信頼できる企業のサイトもありますが、そのサイトがダウンしていたり、アクセス制限されていたりすると困ります(ないと思いますが...)。
自前で用意しておくと安心なので作っておきました。
Deno Deploy上で作るメリット
Deno Deployには、簡単にプロジェクトを始められるプレイグラウンドが備わっています。数十行程度で構築できるアプリで動作確認しながら使うのに都合が良いです。
今回でいえば、ローカル環境ではグローバルIPを確認できないため丁度良かったです(どこからIPが拾えるか分からなかったため)。また、プレイグラウンドはパブリックにして共有することも出来るので、サイトの透明性も確保できるメリットがあります。
今回のサイトのプレイグラウンド
おわりに
DenoでIP返してくれるサーバーを簡単に作れるよってだけの話でした。
Denoは最近Deno KVやDeno Cronなど、Deno Deployで使える便利な機能を増やしているので、次はその辺りを使って何か作ってみたいです。
Discussion