1

したがって、Tor の Python モジュールである Stem では、非表示のサービスを追加したり、非表示のサービスを置き換えたりすることができます。非表示のサービスをすべて削除することはできません。これを行う魔法の魔法はわかりません...「HiddenServiceDir/HiddenServicePort」と「HiddenServiceOptions」を空の文字列、空のリスト、およびなしに設定しようとしました。何かを行う唯一のことは、「HiddenServiceOptions」をNoneに設定することです...これは、最後に成功した非表示のサービス設定を戻すだけです....つまり、おそらくその間のすべてが単なる二段設定であり、torコントロールから魔法のようにリセットを切り替えました...

たとえば、ここでは非表示のサービスから始めて、それをさらに 1 つまたは 2 つのサービスに置き換えます...

>>> 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':None} (または parsed_content として、等号などのない 'HiddenServiceOptions' のみ) を使用します。これは予想通りです。

...ここで、別の隠しサービスを設定すると、正しい隠しサービス情報を示す新しい構成イベントが送信されます。この時点で、非表示のサービスは機能しますが、「get_conf_map」で問い合わせてもまだ表示されません。

次に、reset_conf を実行すると、再び正常に表示されます。

要点: 新しいサービスをセットアップする場合は、まず何もないかどうかを確認してください。その場合は、非表示のサービスを設定してから、reset_conf を実行します...

または、event_listeners のみに依存している人にとって、これはまったく影響しません...

ありがとう、ダミアン...

4

1 に答える 1

0

それは確かに奇妙です。set_options() が期待どおりに動作することを期待していますが、tor の HiddenServiceOptions は確かに型にはまらないので、ここにバグがあっても驚かないでしょう。この根本的な原因を突き止めたら、私たちに知らせてください!

好奇心から、SETCONF ではなく RESETCONF を発行するとうまくいきますか? これは次の方法で実行できます...

>>> controller.reset_conf('HiddenServiceOptions')
于 2013-09-16T20:11:54.983 に答える