docker – Rev 47
?pathlinks?
#!/usr/bin/expect -f
###########################################################################
## Copyright (C) Wizardry and Steamworks 2024 - License: MIT ##
###########################################################################
# This is an "expect" script that checks whether tor has established a #
# circuit and sets the return status depending on whether it has or not. #
# #
# In other words, iff. the script returns 0, then tor has an established #
# circuit; otherwise no circuit has been established. #
# #
# Requirements: #
# * expect (TCL program) #
# * tor must expose a control port and must have a control password #
# #
# In order to generate a control password, issue: tor --hash-password PWD #
# where PWD is the desired control port password. After that, amend the #
# tor configuration file to set the control port address, port and pass: #
# #
# ControlPort 0.0.0.0:8050 #
# HashedControlPassword 16:A482ADEAAWF43EE... #
# #
# Running: ./this-script ADDRESS PORT PASSWORD #
# where: #
# * ADDRESS is the tor listening control address, #
# * PORT is the tor listening control port, #
# * PASSWORD is the plaintext control password #
# #
# after which the return status can be checked on the shell with: #
# echo $? #
###########################################################################
log_user 0
set address [lindex $argv 0];
set port [lindex $argv 1];
set password [lindex $argv 2];
set timeout 5
spawn telnet $address $port
send "AUTHENTICATE \"$password\"\n"
expect {
-ex "250 OK\r\n" {}
-ex "515 Authentication failed: Password did not match HashedControlPassword value from configuration\r\n" {
log_user 1
puts "0"
exit 1
}
timeout {
log_user 1
puts "0"
exit 1
}
}
send "GETINFO status/circuit-established\n"
expect {
timeout {
log_user 1
puts "0"
exit 1
}
-ex "250-status/circuit-established=1\r\n250 OK\r\n"
}
log_user 1
puts "100"