$ git clone https://socialnetwork.ion.nu/socialnetwork.git
commit 684e47c5d3d4c55bc60505af9a16743a4852fb4d
Author: Alicia <...>
Date:   Thu Jun 14 06:01:42 2018 +0000

    socialtest: added a 'whoami' command, listing ID and socket address.

diff --git a/socialtest.c b/socialtest.c
index 9ba0792..9556b56 100644
--- a/socialtest.c
+++ b/socialtest.c
@@ -258,6 +258,18 @@ int main(int argc, char** argv)
       {
         peer_bootstrap(sock, &buf[10]);
       }
+      else if(!strcmp(buf, "whoami"))
+      {
+        printf("ID: "PEERFMT"\n", PEERARG(peer_id));
+        struct sockaddr_storage sockaddr;
+        socklen_t addrlen=sizeof(sockaddr);
+        getsockname(sock, (struct sockaddr*)&sockaddr, &addrlen);
+        char addr[INET6_ADDRSTRLEN];
+        char port[64];
+        if(getnameinfo((struct sockaddr*)&sockaddr, addrlen, addr, INET6_ADDRSTRLEN, port, 64, NI_NUMERICHOST|NI_NUMERICSERV|NI_DGRAM)){continue;}
+        const char* fmt=((sockaddr.ss_family==AF_INET6)?"Address: [%s]:%s\n":"Address: %s:%s\n");
+        printf(fmt, addr, port);
+      }
       else if(!strcmp(buf, "help"))
       {
         printf("Available commands:\n"
@@ -273,7 +285,8 @@ int main(int argc, char** argv)
                "privacy flag \n"
                "privacy circle \n"
                "setcircle <circle ID>\n"
-               "bootstrap <host>:<port>\n");
+               "bootstrap <host>:<port>\n"
+               "whoami\n");
       }
       else{printf("Unknown command '%s'\n", buf);}
     }