mirror of
https://github.com/RGBCube/serenity
synced 2025-05-14 09:34:59 +00:00
netstat: Add hostname resolution
This commit is contained in:
parent
a4d84a76e1
commit
07c2c86314
1 changed files with 44 additions and 1 deletions
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
#include <AK/HashMap.h>
|
||||
#include <AK/IPv4Address.h>
|
||||
#include <AK/JsonArray.h>
|
||||
#include <AK/JsonObject.h>
|
||||
#include <AK/QuickSort.h>
|
||||
|
@ -20,11 +21,12 @@
|
|||
|
||||
ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||
{
|
||||
TRY(Core::System::pledge("stdio rpath"));
|
||||
TRY(Core::System::pledge("stdio rpath unix"));
|
||||
TRY(Core::System::unveil("/proc/net", "r"));
|
||||
TRY(Core::System::unveil("/proc/all", "r"));
|
||||
TRY(Core::System::unveil("/etc/passwd", "r"));
|
||||
TRY(Core::System::unveil("/etc/services", "r"));
|
||||
TRY(Core::System::unveil("/tmp/portal/lookup", "rw"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
||||
bool flag_all = false;
|
||||
|
@ -161,7 +163,18 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
|
||||
auto bytes_in = if_object.get("bytes_in").to_string();
|
||||
auto bytes_out = if_object.get("bytes_out").to_string();
|
||||
|
||||
auto peer_address = if_object.get("peer_address").to_string();
|
||||
if (!flag_numeric) {
|
||||
auto from_string = IPv4Address::from_string(peer_address);
|
||||
auto addr = from_string.value().to_in_addr_t();
|
||||
auto* hostent = gethostbyaddr(&addr, sizeof(in_addr), AF_INET);
|
||||
if (hostent != nullptr) {
|
||||
auto host_name = StringView(hostent->h_name);
|
||||
if (!host_name.is_empty())
|
||||
peer_address = host_name;
|
||||
}
|
||||
}
|
||||
|
||||
auto peer_port = if_object.get("peer_port").to_string();
|
||||
if (!flag_numeric) {
|
||||
|
@ -175,6 +188,16 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
auto formatted_peer_address = String::formatted("{}:{}", peer_address, peer_port);
|
||||
|
||||
auto local_address = if_object.get("local_address").to_string();
|
||||
if (!flag_numeric) {
|
||||
auto from_string = IPv4Address::from_string(local_address);
|
||||
auto addr = from_string.value().to_in_addr_t();
|
||||
auto* hostent = gethostbyaddr(&addr, sizeof(in_addr), AF_INET);
|
||||
if (hostent != nullptr) {
|
||||
auto host_name = StringView(hostent->h_name);
|
||||
if (!host_name.is_empty())
|
||||
local_address = host_name;
|
||||
}
|
||||
}
|
||||
|
||||
auto local_port = if_object.get("local_port").to_string();
|
||||
if (!flag_numeric) {
|
||||
|
@ -228,6 +251,16 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
auto& if_object = value.as_object();
|
||||
|
||||
auto local_address = if_object.get("local_address").to_string();
|
||||
if (!flag_numeric) {
|
||||
auto from_string = IPv4Address::from_string(local_address);
|
||||
auto addr = from_string.value().to_in_addr_t();
|
||||
auto* hostent = gethostbyaddr(&addr, sizeof(in_addr), AF_INET);
|
||||
if (hostent != nullptr) {
|
||||
auto host_name = StringView(hostent->h_name);
|
||||
if (!host_name.is_empty())
|
||||
local_address = host_name;
|
||||
}
|
||||
}
|
||||
|
||||
auto local_port = if_object.get("local_port").to_string();
|
||||
if (!flag_numeric) {
|
||||
|
@ -240,6 +273,16 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
}
|
||||
|
||||
auto peer_address = if_object.get("peer_address").to_string();
|
||||
if (!flag_numeric) {
|
||||
auto from_string = IPv4Address::from_string(peer_address);
|
||||
auto addr = from_string.value().to_in_addr_t();
|
||||
auto* hostent = gethostbyaddr(&addr, sizeof(in_addr), AF_INET);
|
||||
if (hostent != nullptr) {
|
||||
auto host_name = StringView(hostent->h_name);
|
||||
if (!host_name.is_empty())
|
||||
peer_address = host_name;
|
||||
}
|
||||
}
|
||||
|
||||
auto peer_port = if_object.get("peer_port").to_string();
|
||||
if (!flag_numeric) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue