Tor的干模块(python)加载但不卸载配置

时间:2013-09-13 03:30:25

标签: python networking python-2.7 tor

所以在Tor的python模块中,我可以添加隐藏的服务,替换隐藏的服务等等。但是!我无法删除所有隐藏的服务。我不知道这样做的神奇魔力......我已经尝试将'HiddenServiceDir / HiddenServicePort'和'HiddenServiceOptions'设置为空字符串,空列表和无。唯一能做的就是将'HiddenServiceOptions'设置为None ...这只会带回最后一个成功的隐藏服务设置....这意味着它们之间的所有东西都只是一个下铺设置而我从魔法上翻转了一个来自tor控件的重置...

例如,我在这里开始使用隐藏服务,然后用一两个替换它......

>>> controller.is_authenticated()
True

>>> controller.get_conf_map('HiddenServiceOptions')
{'HiddenServiceDir': ['/tmp/hiddenservice1/'],
 'HiddenServicePort': ['1234 127.0.0.1:1234']}

>>> controller.set_options([('HiddenServiceDir','/tmp/hiddenservice2/'),('HiddenServicePort','1235 127.0.0.1:1235'),('HiddenServiceDir','/tmp/hiddenservice3/'),('HiddenServicePort','1236 127.0.0.1:1236')])

>>> controller.get_conf_map('HiddenServiceOptions')
{'HiddenServiceDir': ['/tmp/hiddenservice2/', '/tmp/hiddenservice3/'],
 'HiddenServicePort': ['1235 127.0.0.1:1235', '1236 127.0.0.1:1236']}

>>> controller.set_options([('HiddenServiceDir','/tmp/hiddenservice3/'),('HiddenServicePort','1236 127.0.0.1:1236')])

>>> controller.get_conf_map('HiddenServiceOptions')
{'HiddenServiceDir': ['/tmp/hiddenservice3/'],
 'HiddenServicePort': ['1236 127.0.0.1:1236']}

...现在好玩......我试图摆脱所有隐藏的服务......

>>> controller.set_options([('HiddenServiceDir',None),('HiddenServicePort',None)])
### *OR*
>>> controller.set_options([('HiddenServiceDir',''),('HiddenServicePort','')])

### .... and the result is....
>>> controller.get_conf_map('HiddenServiceOptions')
{'HiddenServiceOptions': []}
### ... nothing, as expected... but then...

>>> controller.set_options([('HiddenServiceDir','/tmp/hiddenservice3/'),('HiddenServicePort','1236 127.0.0.1:1236')])
>>> controller.get_conf_map('HiddenServiceOptions')
{'HiddenServiceOptions': []}
### ... hidden service not showing again... until...

>>> controller.set_options([('HiddenServiceOptions',None)])
>>> controller.get_conf_map('HiddenServiceOptions')
{'HiddenServiceDir': ['/tmp/hiddenservice3/'],
 'HiddenServicePort': ['1236 127.0.0.1:1236']}
### ... suprise! It's back!

有趣的是,虽然......从其他方面检查我的TOR连接,我可以说我的服务从未全部删除过。他们只是呆在我设置的最后隐藏的服务中......

...所以我可以继续旋转我的轮子或在源代码中搜索valhalla ...或者也许一些开明的灵魂可以通知我......我如何摆脱我在干中隐藏的服务?!

更新

问题似乎是“HiddenServiceOptions”如何自我更新的错误。

启用隐藏服务后,当我将HiddenServiceDir和HiddenServicePort都设置为None(或者为空字符串;两者都具有完全相同的效果)时,它会显示在我的conf_map中,并且我看到发送出来的conf事件(来自侦听器)我的控制器)配置{'HiddenServiceOptions':无}(或作为parsed_content,只是'HiddenServiceOptions'没有等号或任何东西)。这是预期的。

...现在,如果我设置另一个隐藏服务,我会收到一个新的配置事件发送给我,显示正确的隐藏服务信息。此时,隐藏的服务工作,但如果我用“get_conf_map”询问它,它仍然不会显示。

然后我运行reset_conf,它再次显示正常。

外卖:如果您设置了新服务,请首先检查是否没有。如果是,请设置隐藏服务,然后运行reset_conf ...

或者对于那些只依赖event_listeners的人来说,这根本不会影响他们......

谢谢,达米安......

1 个答案:

答案 0 :(得分:0)

这当然很奇怪。我希望set_options()的行为与你期望的一样,但是tor的HiddenServiceOptions肯定是非常规的,所以如果这里有一个bug,我也不会感到惊讶。如果您确定了根本原因,请let us know

出于好奇,发出RESETCONF而不是SETCONF的做法是什么?你可以通过...

来做到这一点
>>> controller.reset_conf('HiddenServiceOptions')