summaryrefslogtreecommitdiff
path: root/src/or
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2009-12-13 19:21:06 -0500
committerRoger Dingledine <arma@torproject.org>2009-12-13 19:21:06 -0500
commitf7d99b62a3357f71e653bd5c39fa083336d82a8e (patch)
tree75368c0f93cc3dec8657cf1527cc1341d3c46bc7 /src/or
parentd086c9a7f73ce5b9b7cf4add07fa7d071b829081 (diff)
downloadtor-f7d99b62a3357f71e653bd5c39fa083336d82a8e.tar.gz
tor-f7d99b62a3357f71e653bd5c39fa083336d82a8e.zip
New controller command "getinfo config-text"
It returns the contents that Tor would write if you send it a SAVECONF command, so the controller can write the file to disk itself.
Diffstat (limited to 'src/or')
-rw-r--r--src/or/config.c2
-rw-r--r--src/or/control.c6
-rw-r--r--src/or/networkstatus.c2
-rw-r--r--src/or/or.h1
4 files changed, 7 insertions, 4 deletions
diff --git a/src/or/config.c b/src/or/config.c
index deeda163b6..bf897dfae8 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -2843,7 +2843,7 @@ config_dump(config_format_t *fmt, void *options, int minimal,
* the configuration in <b>options</b>. If <b>minimal</b> is true, do not
* include options that are the same as Tor's defaults.
*/
-static char *
+char *
options_dump(or_options_t *options, int minimal)
{
return config_dump(&options_format, options, minimal, 0);
diff --git a/src/or/control.c b/src/or/control.c
index 3674b0f35a..2152e18605 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -114,8 +114,6 @@ static int handle_control_setevents(control_connection_t *conn, uint32_t len,
static int handle_control_authenticate(control_connection_t *conn,
uint32_t len,
const char *body);
-static int handle_control_saveconf(control_connection_t *conn, uint32_t len,
- const char *body);
static int handle_control_signal(control_connection_t *conn, uint32_t len,
const char *body);
static int handle_control_mapaddress(control_connection_t *conn, uint32_t len,
@@ -1301,6 +1299,8 @@ getinfo_helper_misc(control_connection_t *conn, const char *question,
*answer = tor_strdup(get_version());
} else if (!strcmp(question, "config-file")) {
*answer = tor_strdup(get_torrc_fname());
+ } else if (!strcmp(question, "config-text")) {
+ *answer = options_dump(get_options(), 1);
} else if (!strcmp(question, "info/names")) {
*answer = list_getinfo_options();
} else if (!strcmp(question, "events/names")) {
@@ -1802,6 +1802,8 @@ typedef struct getinfo_item_t {
static const getinfo_item_t getinfo_items[] = {
ITEM("version", misc, "The current version of Tor."),
ITEM("config-file", misc, "Current location of the \"torrc\" file."),
+ ITEM("config-text", misc,
+ "Return the string that would be written by a saveconf command."),
ITEM("accounting/bytes", accounting,
"Number of bytes read/written so far in the accounting interval."),
ITEM("accounting/bytes-left", accounting,
diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c
index f3925f1b89..1b5aff282f 100644
--- a/src/or/networkstatus.c
+++ b/src/or/networkstatus.c
@@ -2084,7 +2084,7 @@ networkstatus_get_flavor_name(consensus_flavor_t flav)
}
/** Return the consensus_flavor_t value for the flavor called <b>flavname</b>,
- * or -1 if the flavor is not recongized. */
+ * or -1 if the flavor is not recognized. */
int
networkstatus_parse_flavor_name(const char *flavname)
{
diff --git a/src/or/or.h b/src/or/or.h
index 2e575f5ef9..f4b00683fa 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -3219,6 +3219,7 @@ int resolve_my_address(int warn_severity, or_options_t *options,
uint32_t *addr, char **hostname_out);
int is_local_addr(const tor_addr_t *addr) ATTR_PURE;
void options_init(or_options_t *options);
+char *options_dump(or_options_t *options, int minimal);
int options_init_from_torrc(int argc, char **argv);
setopt_err_t options_init_from_string(const char *cf,
int command, const char *command_arg, char **msg);