onamae_ddnsを更新しました。とは言っても大きな更新でもないのですが、バグ報告が無いですし、2年の間使えないという話も出てこないので、メジャーアップデートということで少しだけ使いやすく更新を行いました。それに伴って紹介記事の内容を変更する必要があるので、どのような更新をするかの差分の記事になります。
また、Windows用のDDNSクライアントが更新されたため、従来との互換性が無くなるかもという話を以前に書き、その時点では動作することを確認していました。
こういったものは突然の変更に対応できない場合があるので、しばらくは旧クライアントが使用できたりすることもあります。なので、この場でも改めて新しい環境下でも動作確認できていることをこの場で報告することで生存報告的な意味合いもあります。
以下は変更点やその意図を説明します。
始めに、上記で記したようにWindows版のクライアント変更後に伴って方式に変更があるかを確認しましたが、この記事執筆段階(2023/01/11)でも問題なく動作することを確認しています。そのため、移行後も問題なく使えるというのは確定で間違いないでしょう。
レポジトリも念のためここに書いておきます。
GitHub -onamae_ddns-
https://github.com/T-H-Un/onamae_ddns
次に、更新内容としてはコード内5-8行目に以下の変数を追加しました。
const char* USER_ID= "xxxxxxxx";
const char* PASS= "Pass1234";
const char* HOSTNAME="hostname";
const char* DOMNAME="example.com";
この変数は以前は直接書き換えていたログイン、ドメイン情報のための変数です。変更する内容としては以前のバージョンと対応しています。
項目 | 内容 |
USER_ID | お名前ドットコムのログインID |
PASS | お名前ドットコムのログインパスワード |
HOSTNAME | 更新するドメインのホスト名 |
DOMNAME | 更新するドメイン名 |
これに合わせてfprintfの部分も変更しています。変更後は以下のようになっています。
fprintf(file,"LOGIN\nUSERID:%s\nPASSWORD:%s\n.\n",USER_ID,PASS);
sleep(1);
fprintf(file,"MODIP\nHOSTNAME:%s\nDOMNAME:%s\nIPV4:%s\n.\n",HOSTNAME,DOMNAME,buffer);
以前はこの部分の変数を直接変更して使用する形でしたが、v1.00からはconst char*の中身を変更することで使用できるようになります。そのため、この部分を触る必要は無くなりました。
このような変更した理由は利便性の向上という点です。元々マクロや変数での実装をしていなかった理由としては、メモリの使用を最小限に抑えるというのが主な目的でした。マクロは大きなプログラムに組み込む際のバグを減らす程度の理由で渋っていました。
しかし、コンパイラが最近は賢く、const char*型で定義しておけば、以前と同じメモリ使用量で使用できる場合が多いのでこのような変更をしました。そもそも最近のマシンが数バイト程度の差は気にするものでもないのですが、自分専用の限界を突き詰めるために書いたコードだったためという背景もあります。
ただし、この実装はコンパイラの影響を受けるので、安定して最小のコードを利用したい場合は、直接変更する必要があるv0.03のコードを使用することをおすすめします。releaseからダウンロードできます。
更新内容は以上です。バグや機能についてのリクエストが在りましたらGitHubのプルリクなりコメントでいただければ検討します。