【发布时间】:2013-09-13 03:30:24
【问题描述】:
所以在 Tor 的 python 模块 Stem 中,我可以添加隐藏服务、替换隐藏服务等。但是!我无法删除所有隐藏的服务。我不知道这样做的神奇魔力...我尝试将“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...或者也许一些开明的灵魂可以告诉我...我如何摆脱我在 stem 中的隐藏服务?!
更新
问题似乎是“HiddenServiceOptions”如何更新自身的错误。
启用隐藏服务后,当我将 HiddenServiceDir 和 HiddenServicePort 都设置为 None(或设置为空字符串;两者具有完全相同的效果)时,它会显示在我的 conf_map 中,并且我看到发送了一个 conf 事件(来自监听器我的控制器)具有配置 {'HiddenServiceOptions':None} (或作为 parsed_content,只是 'HiddenServiceOptions' 没有等号或任何东西)。这符合预期。
...现在,如果我设置另一个隐藏服务,我会收到一个新的配置事件发送给我,显示正确的隐藏服务信息。此时,隐藏服务工作,但如果我用“get_conf_map”询问它仍然不会显示。
然后我运行 reset_conf 并再次显示正常。
要点:如果您设置了新服务,请先检查是否没有。如果是,设置隐藏服务,然后运行reset_conf...
或者对于只依赖 event_listeners 的人来说,这根本不会影响他们...
谢谢,达米安...
【问题讨论】:
-
原来是bug with stem。 Now fixed.
标签: python networking python-2.7 tor