piholeのAPIを調べた
UPSのバッテリー交換から、LANケーブルの差し替えなどを経て、久しぶりにルーターを初期化した。
その過程で普段使っていたpiholeを初期化せざるを得なかった。
Nginx Proxy Managerを利用しているのだが、これらのドメインをpiholeの画面上で設定するのは少々面倒に思った。
個々のドメインを追加するのであれば手作業でも構わないのだが、たまたま休日ということもあったのでREST経由で設定してみることにした。
まずはNginx Proxy Manager側だ。
/api/schema
というエンドポイントが存在しており、そこにアクセスすればJSON形式でスキーマファイルを取得できる。
さすがにこれを見て理解するのは難しいので、ReDocというツールを使ってHTML形式に生成できるらしい。 これはChatGPTに教えてもらった。
最初はいつもの感覚でRubyを使うつもりだったが、今回はNode.JSにした。
本当に久しぶりだったので、文法を忘れかけていた。
エンドポイントの見間違いなどもあって実装までに時間はかかったが、なんとかドメインの一覧の取得に成功した。
続いてpiholeもREST経由でアクセスする必要があった。
piholeのバージョン6系からREST APIが提供されるというような記述があり、てっきり今は使えないのかと思ったが、5系でも使えるようだった。
ただ先程のNginx Proxy Managerとは異なって、ほとんどドキュメント化されておらずに、かつてAPI通信をした形跡のあるような書き込みを元になんとか接続に成功した。
私はまともにPHPという言語を学習したことはなかったが、なんとなくの雰囲気でpiholeのソースコードを読んでカスタムルールの取得と追加まではできた。
これは我ながらなかなか興味深い経験であった。
もともとこの自動化作業はいつか着手してみたいと思っていたので、今後はこのコードを自分のアプリケーション上で操作できるようにできたら理想だ。