Bagaimana saya bisa mendapatkan FQDN (Fully Qualified Domain Name) dari mesin yang menjalankan node?
os.gethostname()
tidak cukup, karena biasanya hanya mengembalikan DN yang tidak memenuhi syarat. Hal yang sama untuk dns.reverse(ip, callback)
- dengan asumsi ip adalah yang terkait dengan nama host, misalnya diperoleh dengan menggunakan dns.lookup(os.gethostname()[, options], callback)
.
Juga melakukan a shell.exec("hostname -f", { silent: true }, cb)
bukanlah suatu pilihan, karena itu tidak sesuai dengan POSIX dan dengan demikian akan gagal misalnya pada Solaris et. al., dan ini adalah hack yang sangat buruk, karena exec () adalah panggilan telepon yang sangat, sangat mahal . sumber daya seperti RAM dan CPU (menyebabkan pengalihan konteks).
$(hostname).$(domainname)
akan bekerja pada Solaris dan Linux. Tapi, Solaris POSIX bukan saja, tapi juga bersertifikat POSIX! Ini lebih POSIX daripada Linux.Jawaban:
Caranya adalah dengan memanfaatkan
getnameinfo(...)
fungsi yang disediakan oleh OS biasanya melalui libc.so atau libsocket.so, karena ia melakukan pencarian FQDN secara default! Karenadns.lookupService(address, port, callback)
tampaknya satu-satunya fungsi inti nodeJS yang terdokumentasi, yang "membungkusnya", kita perlu menggunakan yang ini. Misalnya:Port 0 digunakan dalam contoh untuk menunjukkan bahwa ini tidak mempengaruhi hasil (secara default tidak ada layanan yang ditentukan untuk port ini).
sumber