[tor-commits] [nyx/master] Issue a RESETCONF when a blank value is entered

atagar at torproject.org atagar at torproject.org
Tue Jan 8 18:15:23 UTC 2019


commit 55e71164b9b6b630d5fbda27079ced229a029887
Author: Damian Johnson <atagar at torproject.org>
Date:   Tue Jan 8 09:45:40 2019 -0800

    Issue a RESETCONF when a blank value is entered
    
    We lacked a mechanism for resetting values to their initial value. For
    instance, take the following scenario...
    
      * Our ExcludeNodes torrc is unset. The config panel shows it as '<none>'.
      * We change the value to 'stuff'.
      * We want to change it back to '<none>'.
    
    There wasn't a way of doing so. If we cleared the value and hit enter we'd
    change it to an empty string. I can't think of any scenarios where users would
    *want* to set things to blank strings (and in those edge cases they can always
    do so via the torrc).
    
    Now if a user deletes a config value and hits enter we'll reset it, in the
    above scenario changing the config option back to '<none>'.
---
 nyx/panel/config.py      | 10 ++++++++--
 web/changelog/index.html |  1 +
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/nyx/panel/config.py b/nyx/panel/config.py
index e1eb19c..40d318c 100644
--- a/nyx/panel/config.py
+++ b/nyx/panel/config.py
@@ -240,7 +240,9 @@ class ConfigPanel(nyx.panel.Panel):
 
       if new_value is not None and new_value != initial_value:
         try:
-          if selected.value_type == 'Boolean':
+          if new_value == '':
+            new_value = None  # unset the value
+          elif selected.value_type == 'Boolean':
             # if the value's a boolean then allow for 'true' and 'false' inputs
 
             if new_value.lower() == 'true':
@@ -250,7 +252,11 @@ class ConfigPanel(nyx.panel.Panel):
           elif selected.value_type == 'LineList':
             new_value = new_value.split(',')  # set_conf accepts list inputs
 
-          tor_controller().set_conf(selected.name, new_value)
+          if new_value is None:
+            tor_controller().reset_conf(selected.name)
+          else:
+            tor_controller().set_conf(selected.name, new_value)
+
           self.redraw()
         except Exception as exc:
           show_message('%s (press any key)' % exc, HIGHLIGHT, max_wait = 30)
diff --git a/web/changelog/index.html b/web/changelog/index.html
index 241f788..0ba98c2 100644
--- a/web/changelog/index.html
+++ b/web/changelog/index.html
@@ -111,6 +111,7 @@
             <li>New tor configuration options crashed nyx when shown (<b><a href="https://trac.torproject.org/projects/tor/ticket/24401">ticket</a></b>)</li>
             <li>Errors when saving the configuration could result in a stacktrace (<b><a href="https://trac.torproject.org/projects/tor/ticket/24409">ticket</a></b>)</li>
             <li>Pressing 'esc' when editing values changed their value to 'none' (<b><a href="https://trac.torproject.org/projects/tor/ticket/28334">ticket</a></b>)</li>
+            <li>Reset configuration option if set to an empty value</li>
           </ul>
         </li>
 



More information about the tor-commits mailing list