【问题标题】:Tor's stem module (python) loading but not unloading configTor的stem模块(python)加载但不卸载配置
【发布时间】: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 的人来说,这根本不会影响他们...

谢谢,达米安...

【问题讨论】:

标签: python networking python-2.7 tor


【解决方案1】:

这当然很奇怪。我希望 set_options() 的行为方式符合您的预期,但 tor 的 HiddenServiceOptions 肯定是非常规的,所以如果这里有错误,我不会感到惊讶。如果您确定了此问题的根本原因,请let us know

出于好奇,发出 RESETCONF 而不是 SETCONF 能解决问题吗?您可以通过...

>>> controller.reset_conf('HiddenServiceOptions')

【讨论】:

    猜你喜欢
    • 2014-09-08
    • 2010-10-01
    • 2023-04-02
    • 2015-12-14
    • 2020-10-21
    • 2011-03-07
    相关资源
    最近更新 更多