Posted at

CloudflareのDNS情報をコマンドラインから見られるツール「cf-ip」を作りました

鉛筆握ってる時間よりキーボード叩いてる時間の方が長い、意識の低すぎる受験生です。

日曜日の数時間で、「cf-ip」というツールを作りました。

このツールは、CloudflareのAPIを叩いて、コマンドラインからドメインのDNSレコードを見られると言うツールです。


使いどころ

CloudflareでDNSをプロキシしていると、SSHなどHTTP(S)リクエスト以外が、ドメインからでは行えないため、SSHやMySQLの接続をするのにダッシュボードにログインしてDNSを見に行くという作業が必要になります。

SSHなら、SSHのconfig作れよって感じですが、面倒くさがりな私には腰が上がりません。また、複数マシンで開発したりするのでconfigを移動させるのも面倒です。

プライベートDNS建てるって手もありますが面倒です。

ということで、コマンドラインからCloudflareのDNS情報見られたら便利じゃね!?!って思って「cf-ip」を作りました!


インストール方法

GitHubのReleasesに、コンパイル済みのバイナリを置いているので、そこからダウンロードしPathの通っている所にでも置いてください。

https://github.com/YukiKitagata/cf-ip/tree/master

(Macしか検証していないので、LinuxとWindowsで動かなかったらごめんなさい....NodeJSの環境があればコンパイル出来ます....)


準備

cf-ip はCloudflareのAPIを叩くので、CloudflareのAPI Tokenが必要です。

CloudflareのAPI Tokenは、 https://dash.cloudflare.com/profile/api-tokens から作成してください。

Permissionは以下のものが必要です。


使い方

シンプルさを追求したので、オプションは有りません。


cf-ip

cf-ip のように単体で起動した場合は、Cloudflareからドメインリストを取得します。

キャッシュされるのは、ドメインリストで、 DNSではありません。

新規ドメインの追加・削除時に行ってください。


cf-ip [domain]

cf-ip [domain] のように、ドメインを引数として起動した場合は、該当ドメインのDNSレコードを全て表示します。

$ cf-ip yuki-kitagata.dev

A yuki-kitagata.dev ***.***.***.***
TXT yuki-kitagata.dev hoge=hoge


トラブルシューティング

~/.cf-ip.config (Windowsは C:¥Users¥[User name]¥.cf-ip.config のはず)に全ての設定が記入されているため、こちらを削除するとリセットされます。


最後に

メチャメチャな英語だったり、ソースにLintが入っていなかったり、エラーハンドリングが雑なので、受験終わったら綺麗にしようと思っています。

今回は、Typescript + pkgでバイナリ化しているのですが、Nodeのバイナリも一緒にバンドルされるため、無駄に重いです。

Golangでも良かったのですが、最近書いていなくて時間がかかりそうなので、Typescriptにしました。

時間が出来たら、Golangにしても良いかなと思っていたり...(Rustも気になっています...)

気になるところや、こんな機能が欲しい!!って言うのがあれば、GitHubの方にPRやIssueをバンバン送って頂けると嬉しいです!

http://github.com/YukiKitagata/cf-ip