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



所以在Tor的python模块Stem中,我可以添加隐藏服务,替换隐藏服务等!我无法删除所有隐藏的服务。我不知道这样做的魔法...我尝试将"HiddenServiceDir/HiddenServicePort"和"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 连接,我可以看出我的服务从未全部删除。他们只是停留在我设置的最后一个隐藏服务中......

。所以我可以继续旋转我的轮子或在源代码中搜索瓦尔哈拉......或者也许一些开悟的灵魂可以告诉我......如何摆脱 STEM 中的隐藏服务?!

更新

问题似乎是"隐藏服务选项"如何更新自身的错误。

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

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

然后我运行reset_conf,它再次显示良好。

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

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

谢谢,达米安...

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

出于好奇,发布RESETCONF而不是SETCONF可以解决问题吗?你可以通过以下方式做到这一点...

>>> controller.reset_conf('HiddenServiceOptions')

最新更新