mrubyで逆引きしてみる 手抜き編

今日は短いネタ。

どこかで

mruby では gethostbyaddr 相当のことが出来ない

と聞いた気がしたので実装してみよか、と思った。

が、しかし、、、

iij/mruby-socket で実装されている Addrinfo クラスを使えば解決するようだ。

こんな感じ。

1
2
3
4
5
6
7
$ ./mruby/build/host/bin/mirb
mirb - Embeddable Interactive Ruby Shell

> Addrinfo.ip('216.58.220.195').getnameinfo()[0]
=> "nrt13s36-in-f3.1e100.net"
> Addrinfo.ip('2404:6800:4004:815::2003').getnameinfo()[0]
=> "nrt13s38-in-x03.1e100.net"

IPv4だけではなくIPv6でも特に気にすることなく使える様だ。

ちなみに、逆引きレコードが複数設定されているIPアドレスの場合どうなるかというと、

1
2
3
4
5
6
> Addrinfo.ip('10.0.53.1').getnameinfo()
=> ["dns028.hawks.ne.jp", "0"]
> Addrinfo.ip('10.0.53.1').getnameinfo()
=> ["dns003.hawks.ne.jp", "0"]
> Addrinfo.ip('10.0.53.1').getnameinfo()
=> ["dns036.hawks.ne.jp", "0"]

ランダムに名前の一つが返るようである。

ここの挙動も ruby の Socket.gethostbyaddr とほぼ同じですね。

このエントリーをはてなブックマークに追加