[tor-commits] [tor/master] Add GETINFO current-time/{local, utc} command to ControlPort

nickm at torproject.org nickm at torproject.org
Mon Apr 23 13:14:38 UTC 2018


commit e72742d693827a747ad405eb81422d6ee9fd691b
Author: Neel Chauhan <neel at neelc.org>
Date:   Mon Apr 16 20:16:37 2018 -0400

    Add GETINFO current-time/{local,utc} command to ControlPort
---
 src/or/control.c | 28 ++++++++++++++++++++++++++++
 src/or/control.h |  4 ++++
 2 files changed, 32 insertions(+)

diff --git a/src/or/control.c b/src/or/control.c
index 0539ddaca..72122eaaf 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -1931,6 +1931,31 @@ getinfo_helper_listeners(control_connection_t *control_conn,
   return 0;
 }
 
+/** Implementation helper for GETINFO: answers requests for information about
+ * the current time in both local and UTF forms. */
+STATIC int
+getinfo_helper_current_time(control_connection_t *control_conn,
+                         const char *question,
+                         char **answer, const char **errmsg)
+{
+  (void)control_conn;
+  (void)errmsg;
+
+  struct timeval now;
+  tor_gettimeofday(&now);
+  char timebuf[ISO_TIME_LEN+1];
+
+  if (!strcmp(question, "current-time/local"))
+    format_local_iso_time_nospace(timebuf, (time_t)now.tv_sec);
+  else if (!strcmp(question, "current-time/utc"))
+    format_iso_time_nospace(timebuf, (time_t)now.tv_sec);
+  else
+    return 0;
+
+  *answer = tor_strdup(timebuf);
+  return 0;
+}
+
 /** Implementation helper for GETINFO: knows the answers for questions about
  * directory information. */
 STATIC int
@@ -3073,6 +3098,9 @@ static const getinfo_item_t getinfo_items[] = {
   DOC("config/defaults",
       "List of default values for configuration options. "
       "See also config/names"),
+  PREFIX("current-time/", current_time, "Current time."),
+  DOC("current-time/local", "Current time on the local system."),
+  DOC("current-time/utc", "Current UTC time."),
   PREFIX("downloads/networkstatus/", downloads,
          "Download statuses for networkstatus objects"),
   DOC("downloads/networkstatus/ns",
diff --git a/src/or/control.h b/src/or/control.h
index 2fd3c553f..2f312a663 100644
--- a/src/or/control.h
+++ b/src/or/control.h
@@ -311,6 +311,10 @@ STATIC int getinfo_helper_dir(
     control_connection_t *control_conn,
     const char *question, char **answer,
     const char **errmsg);
+STATIC int getinfo_helper_current_time(
+    control_connection_t *control_conn,
+    const char *question, char **answer,
+    const char **errmsg);
 
 #endif /* defined(CONTROL_PRIVATE) */
 





More information about the tor-commits mailing list