したがって、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 のみに依存している人にとって、これはまったく影響しません...
ありがとう、ダミアン...