no-ipの自動更新

no-ip.comからツールが提供されてるので、特に問題はないのですが、光回線となるとIPアドレスもそれほど変わることがありません。ツールはIPアドレスの変更がないと更新しません。no-ip.comは一定期間更新が無いと、そろそろ消すぞメールを送ってきます。これまた面倒なのでこれを回避したくて模索してました。

方針としては、IPアドレスが変わってなくても一定期間で更新を行えばいいのですが、提供ツールでは駄目っぽかった・・・と思ったら、#defineの指定で強制更新が可能なことがわかりました。
Webを調べてると大抵の人はシェルスクリプトを作ったりしてそれをcronで実行してるという事例が多くてそれに従うしかないのか?と思ってたのですが、ソースを調べてみたら機能があったという。最悪、共有メモリを持ってるので、それを何とかすればと思いましたが、共有メモリはIPアドレスの変更には参照してないので駄目だった。

で、何を指定したら強制更新が出来るかというと、FORCE_UPDATEを指定すれば可能となります。コンパイル時に-DFORCE_UPDATE=1とすれば機能が動きます。デフォルトは30日後です・・・って長いよね。そこで、-DFORCE_INTERVAL=タイマ値(分単位で指定。1440で一日です)を指定すれば、この時間がExpireすると強制更新するというわけです。念の為、gdbで当該機能がちゃんと有効になってるか確認したら問題なさそうでした。また、当然IPアドレスが変われば更新されるので、万事解決となりました。めでたしめでたし。

・・・のはずでしたが、うちのサーバはGentooなのでこれまた悩むことに。
ツールはemergeで追加できるのですが、コンパイルオプションの指定は全く出来ません。なので、自前のebuildを作成してアップデートする必要がありました。まあ、自分でバイナリを作って上書きしてしまうのが楽なのですけど、万が一パッケージが更新された場合にアップデートしたのを忘れてると思うので、正攻法でいきました。
自分用のebuildを作成し、コンパイルオプション指定と思われるところに上記の指定を行い、emergeしてインストール完了です。